Глава 7. Немного математики

Программирование и математика неразрывно связаны между собой, хотя конечно же это не значит, что ее нужно знать на очень высоком уровне. Вполне достаточно уверенно разбираться с основными математическими операциями, такими как сложение, вычитание, умножение, деление и т.д. Ну и конечно же логика, логика и еще раз логика. На ней то все и строиться в программировании. Ее мы и будем с вами развивать.

Итак, разбираем основные математические операции в программировании. Некоторые из них мы уже знаем из предыдущих глав, сейчас же мы на них остановимся подробнее. Разбирать будем на примере. Давайте напишем с вами программу, которая будет у пользователя запрашивать значения двух катетов прямоугольного треугольника, а выдавать значение его гипотенузы. Все мы знаем, что для этого используется теорема Пифагора.

//Программа находит значение гипотенузы прямоугольного треугольника

#include <iostream>
#include <math.h>

using namespace std;
int main()
{
float ab, bc; //объявляем переменные типа float, для хранения значений катетов
float ac;     //для хранения значения гипотенузы

cout << "Vvedite katet 1: " << endl; //печатаем на экране подсказку о вводе
cin >> ab;                           //запоминаем введенное значение в переменную ab
cout << "Vvedite katet 2: " << endl; //печатаем на экране подсказку о вводе
cin >> bc;                           //запоминаем введенное значение в переменную bc

ac = sqrt((ab * ab) + (bc * bc));    //считаем гипотенузу по формуле

cout << "Gipotenuza ravna: " << ac << endl; //выводим результат на экран

return 0;
}

Здесь внимания заслуживает только строка

ac = sqrt((ab * ab) + (bc * bc));

Итак, здесь мы переменной ac присваиваем значение, полученное в правой части. Все мы знаем, что квадрат гипотенузы равен сумме квадратов катетов прямоугольного треугольника. Для того, чтобы в левой части избавиться от квадрата, мы извлекаем квадратный корень из выражения в правой части. Для этого мы используем библиотечную функцию sqrt, описанную в заголовочном файле math.h, который мы подключили с помощью директивы препроцессора в начале программы.

#include <math.h>

А теперь давайте подробнее остановимся на математических функциях библиотеки math.h. Такое понятие как функция мы еще с вами не рассматривали, поэтому скажу кратко, что функция - это как бы небольшая законченная программа, которая выполняет свою задуманную задачу (например, находит корень числа). Для того, чтобы его выполнять, функция обычно принимает какие-либо данные в качестве аргументов и возвращает результат своей работы (бывает и так, что функция не принимает аргументов и не возвращает значение - подробнее рассматриваем функции в последующих главах учебника). Сейчас вы это сами увидите на примере математических функций библиотеки math.h языка программирования С++.

Еще одно замечание: все математические функции принимают в качестве аргументов и возвращают числа с плавающей точкой двойной точности double. Иными словами, принимают дробные числа, которые могут содержать после запятой 15 - 16 разрядов. Но это не значит, что вам при использовании данных функций нужно обязательно пользоваться дробными числами - вы можете использовать любые числа. В данном случае, программа сама выполнит необходимые приведения типов.

Math.h - математические функции
Функция Описание работы функции
double sqrt (double x); Данная математическая функция вычисляет и возвращает корень из положительного числа, принимая его в качестве аргумента х
double pow (double x, double y); Возводит число, принимаемое в качестве аргумента х, в степень, принимаемую в качестве аргумента y.
double fabs (double x); Вычисляет абсолютное значение числа х (иными словами, его модуль)
double fmod (double x, double y); Вычисляет остаток от деления х на y.
double ceil (double x); Вычисляет наименьшее целое, значение которого не будет меньшим, чем х. Например, функция ceil (4.68) вернет значение 5.00.
double floor (double x); В отличии от предыдущей функции эта функция вычисляет наибольшее целое, по значению не превосходящее х. Например, функция floor (4.68) вернет значение 4.00.
double modf (double value, double *ptr); Разбивает значение аргумента value на целую и дробные части. Целую часть функция сохраняет в объекте на который указывает указатель *ptr, а дробную возвращает.
double cos (double x); Вычисляет косинус аргумента х, который задается в радианах
double sin (double x); То же, но синус
double tan (double x); То же, но тангенс
double acos (double x); Вычисляет главное значение арккосинуса х. Аргумент х должен быть из интервала [-1 ; +1]. Функция возвращает значение в радианах из интервала [0; p]
double asin (double x); Вычисляет главное значение арксинуса х. Аргумент х должен быть из интервала [-1 ; +1]. Функция возвращает значение в радианах из интервала [- p/2; + p/2]
double atan (double x); Вычисляет главное значение арктангенса х.
double exp (double x); Вычисляет значение показательной функции аргумента х.
double log (double x); Вычисляет натуральный логарифм аргумента х.
double log10 (double x); Вычисляет десятичный логарифм аргумента х.

Можете поэксперементировать с данными функциями в среде программирования. Не забывайте о вводе допустимых значений в качестве аргументов данных функций, иначе компилятор будет выдавать ошибки выхода за пределы значений и т.д.