Выражения
Логические операции
В алгебре логики значение логических переменных принято обозначать как 0 или 1. Иллюстрацией логических операций может быть следующая таблица. В ней показаны различные логические операции с переменными А и В.
А | В | && | | | | НЕ | |
А | В | ||||
Выражение – это совокупность нескольких операций и операндов. Примеры выражений:
;
k = ax2 + bx – c;
a = b + (c= d + 3).
В алгоритмических языках все выражения записываются в строку. Если же выражение не помещается в одной строке, то его можно переносить на другую строку и т. д. Разрывать выражения при переносе следует на знаке операции. В этом случае знак операции не дублируется, то есть он помещается или на предыдущей строке или на последующей. Если в выражениях используются разнотипные операнды, то по умолчанию все низшие типы операндов приводятся к самому высшему типу в данном выражении.
В С++ имеется библиотека математических функций, размещенных в файле с именем math.h. В нем представлены различные функции. Основные из них приведены в таблице 10.3. В соответствии с правилами языка первое из приведенных выражений будет записано как
F = (exp(x) – log(x – 2*y))/sqrt(a + b*y*y);
Выражения вида (а < x < b) записывается через логическую операцию И как (x > a) && (x < b).
Внимание! В С++ регистры символов различаются. Это означает, что символы А и а будут восприниматься как различные, а имена стандартных функций в С++ пишутся прописными (маленькими) буквами, при этом аргумент всегда заключается в круглые скобки. Запись имен функций строчными буквами будет ошибочным.
Ряд функций в библиотеке math.h не представлены, но они могут вычисляться с помощью имеющихся функций. Например,
ctg(x) = cos(x) / sin(x).
Часто при записи выражений возникает трудность вычисления корней отличных от квадратного (для вычисления квадратного корня имеется функция sqrt(x)). В этом случае следует выражение корня представлять как степенную функцию и затем вычислять ее с помощью функции pow(a,x). Например, для вычисления корня вида его необходимо представить как , а затем использовать функцию pow(x,2./3). При записи показателя степени в виде дроби 2/3 часто допускается характерная ошибка. Дело в том, что при делении чисел 2 и 3 целого типа результат деления 0.3333 также приводится к целому типу путем отбрасывания дробной части. В итоге получается вместо 0.3333 число 0. Конечно, это приводит к ошибке вычисления. Чтобы исключить такую ошибку, следует хотя бы один операнд 2 или 3 представить дробным числом. Для этого достаточно после него поставить точку, что будет означать дробное число с нулевой дробной частью. В этом случае нули в дробной части не обязательно показывать. После такого представления результат деления тоже будет представлен дробным числом на основании того, что все операнды выражения приводятся к типу с наивысшим статусом, то есть float. Поэтому запись pow(x,2./3) будет правильной, а запись pow(x,2/3) будет неправильной. Степенное выражение вида х3 проще записать в виде х*х*х, чем использовать степенную функцию pow(x ,3). В первом случае используется пять символов, а во втором – восемь. При этом надо помнить, что для каждого символа выделяется одна однобайтовая ячейка памяти. А это значит, что в перовом случае расходуется пять байтов памяти, а во втором – восемь. При составлении программ всегда надо стремиться к минимальному расходу памяти. Конечно там, где это логически оправдано.
Таблица 10.3 Функции
Название функции | Вид вычисления |
sin(x) | sinx |
cos(x) | cosx |
tan(x) | tgx |
asin(x) | arcsinx |
Acos(x) | arccosx |
Atan(x) | arctgx |
exp(x) | ex |
log(x) | lnx |
log10(x) | lgx |
sqrt(x) | |
fabs(x) | /x/ |
pow(x,a) | |
ceil(x) | Ближайшее целое больше x |
Floor(x) | Ближайшее целое меньше x |
Запрещается в выражениях записывать подряд два знака операции. Пример,
;
Запись у = а /- b – неверна,
Запись у = а /(-b) – верна.
Следует помнить, что при записи выражений используются только символы латинского алфавита, из которых состоит алфавит алгоритмического языка С++. Поэтому символы греческого алфавита, которые часто используются в математических выражениях, должны записываться с помощью символов латинского алфавита. Например:
α – alfa, β – beta, γ – gamma.