Выражения

Логические операции

В алгебре логики значение логических переменных принято обозначать как 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.