Національний технічний університет України
«Київський політехнічний інститут імені Ігоря Сікорського»
Алгоритмізація та програмування 1: Базові концепції програмування
ЗВІТ
до лабораторної роботи № 3
«Математичні функції та управляючі конструкції»
Варіант № 16
Дата «19» жовтня 2021
Завдання на роботу1.Ознайомитись з математичними операторами та управляючими конструкціями.2. Дослідити особливості їхнього застосування для розв’язання складних математичних виразів.3. Написати програму, що виконує математичні розрахунки за заданим рівнянням. Врахувати можливі математичні особливості рівняння.4. Реалізувати ініціалізацію розрахункових змінних (x, a, b, …) початковими значеннями або з використанням додаткових параметрів командного рядка, або з консолі (клавіатури), або звикористанням значень за замовчуванням.
Теоретичні відомості
Для здійснення маніпуляцій над даними С++ має широкий набір операцій. Операції представляють собою деякі дії, які виконуються над одним (унарна) або кількома(бінарна) операндами, в результаті якої повертається значення. Арифметичні операції. До базових арифметичних операцій можна віднести операції додавання (+), віднімання (-), множення (*), ділення (/) та взяття за модулем (%), тобто обчислення залишку від ділення лівого операнду на правий. Для ефективного використання повертаємого операціями значення застосовується оператор присвоєння (=) та його модифікації: додавання з присвоєнням (+=), віднімання з присвоєнням (-=), множення з присвоєнням (*=), ділення з присвоєнням (/=), модуль з присвоєнням (%=) та інші.
Логічні операції
Не потрібно плутати порозрядні логічні операції з просто логічними операціями && - логічне І, || - логічне АБО, ! – логічне НІ. Їх результатом може бути 0 або 1 і вони в основному використовуються в умовних виразах операторів if, while або for.
Умовний вираз
Більшість операторів управління програмою в будь-яких комп'ютерних мовах, включаючи С++, грунтуються на перевірці умов, що визначають, якого роду дію необхідно виконати. В результаті перевірки умов можна отримати істину або хибу. На противагу іншим мовам, де вводиться спеціальний тип для зберігання істини(true) і хиби(false), в С++ істині відповідає будь-яке ненульове значення, включаючи від'ємні числа. Хибному твердженню (брехні, false) відповідає нуль. Найпростіший вигляд умовного виразу має
if ( b ) stmt де b є логічним виразом, а stmt - звичайним.
Математична бібліотека мов C і C ++
У стандартну математичну бібліотеку мови Сі (а, значить, і C ++) входить безліч спеціальних математичних функцій, які потрібно знати і вміти використовувати. Для того, щоб використовувати ці функції в своїй програмі, необхідно підключити заголовний файл, який містить опису цих функцій, що робиться рядком на початку програми:
#include <math.h>
Математична бібліотека math.h
Функция
Описание
Округление
round
Округлює число за правилами арифметики, тобто round(1.5) == 2, round(-1.5) == -2
floor
Округлює число вниз ( "додолу"), при цьому
floor(1.5) == 1, floor(-1.5) == -2
ceil
Округлює число вгору ( "догори"), при цьому ceil(1.5) == 2, ceil(-1.5) == -1
trunc
Округлення в сторону нуля (відкидання дробової частини), при цьому trunc(1.5) == 1, trunc(-1.5) == -1
fabs
Модуль (абсолютна величина)
Корні, ступеня, логарифми
sqrt
Квадратний корінь. Використання: sqrt(x)
cbrt
Кубичний корінь. Використання: cbrt(x)
pow
Піднесення до степеня, повертає ab. Використання: pow(a,b)
exp
Экспонента, повертає ex. використання: exp(x)
log
Натуральний логарифм
log10
Десятичний логарифм
Тригонометрія
sin
Синус вугла, задаваємого у радіанах
cos
Косинус вугла, задаваємого у радіанах
tan
Тангенс вугла, задаваємого у радіанах
asin
Арксинус, повертає значення у радіанах
acos
Арккосинус, повертає значение у радіанах
atan
Арктангенс, повертає значение у радіанах
Оператор switch
Спочатку пишемо ключове слово switch за яким слід вираз, з яким ми хочемо працювати. Зазвичай цей вислів є тільки одну змінну, але це може бути і щось більш складне, наприклад, nX + 2 або nX - nY. Єдине обмеження до цього висловом - воно повинно бути інтегрального типу даних (тобто типу char, short, int, long, long long або enum). Змінні типу з плаваючою крапкою або неінтегральние типи використовуватися не можуть.
Після висловлення switch ми оголошуємо блок. Усередині блоку ми використовуємо лейбли (англ. «Labels») для визначення всіх значень, які ми хочемо перевіряти на відповідність висловом. Існують два типи лейблів.
Лейбли case
Перший вид лейбла - це case (або просто «кейс»), який оголошується з використанням ключового слова case і має константний вираз. Константне вираз - це те, яке генерує константне значення, іншими словами: або літерал (наприклад, 5), або перерахування (наприклад, COLOR_RED), або константу (наприклад, змінну x, яка була оголошена з ключовим словом const).
Константне вираз, що знаходиться після ключового слова case, перевіряється на рівність з виразом, що знаходяться біля ключового слова switch. Якщо вони збігаються, то тоді виконується код під відповідним кейсом.
switch и оператор break
Оператор break (объявленный с использованием ключевого слова break) сообщает компилятору, что мы уже сделали всё, что хотели с определенным switch (или циклом while, do while или for) и больше не намерены с ним работать. Когда компилятор встречает оператор break, то выполнение кода переходит из switch на следующую строку после блока switch.
Завдання для обчислювання для мого варіанту:
/
Блок-схема
/
Код реалізованної програми та посилання на Repl.it:
https://replit.com/join/zoreawrlos-tr-15khavkin
Для реалізації програми ініцілюзовано введення коефіцієнтів a та змінної x з клавіатури за допомогою процедурної функції ввода scanf().
Було викорастано умовний вираз If з підпункатми elif.
Також була ініціалюзована бібіліотека math.h викорастані бібліотечні функціі abs та tg у формулах.
Вивід програми:
/
Код:
///
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(int args, char *argv[]) {
float x, a, y;
printf("Використання змінних за замувчуванням:");
x = 7;
a = 3;
printf("\nx = %.4f; a = %.4f ", x, a);
if(x > 5)
printf("\nРезультату немає");
else if(x == 5)
y = tan(a*x);
else
y = fabs(a+x);
printf("\nРезультат: %.4f", y);
printf("\n\nВвод зміних за допомогою консолі:");
printf("\nВведіть значення змінної х: ");
scanf("%f", &x);
printf("Введіть значення константи a: ");
scanf("%f", &a);
printf("x = %.4f; a = %.4f ", x, a);
if(x > 5)
printf("\nРезультату немає");
else if(x == 5)
y = tan(a*x);
else
y = fabs(a+x);
printf("\nРезультат: %.4f", y);
return 0;
}
Висновок:
Під час лабораторної роботи ознайомилися з бібліотекою math.h та деякими математичними операторами бібліотеки. Навчилися використовувати умовні вирази. Для роботи було взято систему рівняння згідно до варіанту лабораторної роботи.