III. Выражения
Выражения - это вычисляемые конструкции языка. По типам получаемых результатов и составным частям выражений выражения подразделяются на три вида:
1. Арифметические выражения;
2. Выражения отношения;
3. Логические выражения.
Состав выражения
В общем случае в выражение могут входить:
- константы (задаются своим изображением);
- переменные (задаются именами);
- вызовы функций (представляют собой следующую конструкцию
< имя функции >[ (список аргументов, перечисленных через запятую ) ];
- знаки операций;
- круглые скобки, изменяющие порядок выполнения действий.
Правила записи выражений в текстах:
- при записи выражение не выходит за верхнюю и нижнюю границы строки (нет "многоэтажных" формул, как в математике);
- переносить выражение со строки на строку можно только на месте знака операции или скобки;
- при переносе выражений знаки не повторяются;
- знаки математических операций не опускаются.
Порядок вычисления выражений
1. В оперативной памяти выделяется свободный участок памяти – стек для вычисления выражения (для простоты изложения механизм работы стека раскрывать не будем);
2. В стек из выражения переносятся все значения; знаки операций; круглые скобки, изменяющие порядок выполнения действий. Значением констант являются сами константы. Значениями переменных являются те величины, которые хранятся в оперативной памяти под именами переменных. Значениями вызовов функций являются результаты вычисления функций;
3. По правилам математики выполняются действия;
4. Получается единственное значение и стек освобождается.
Математические правила вычисления выражений:
- сначала выполняются действия в круглых скобках, не содержащих других;
- вычисление ведется слева направо;
- операции, имеющие более высокий приоритет (ранг), выполняются вперед (например, умножение выполняется вперед сложения, если та и другая операция присутствуют в формуле и отсутствуют скобки).
В языке Паскаль принята следующая система приоритетов (рангов) операций (самый высокий ранг 1, самый низкий - 4):
1 - унарные операции. Знаки операций +|-|NOT|@;
2 - бинарные мультипликативные операции (операции типа умножение). Знаки операций *|/|DIV|MOD|AND|SHL|SHR;
3 - бинарные аддитивные операции (операции типа сложения).
Знаки операций +|-|OR|XOR;
4 - операции сравнения (отношения). Знаки операций <|>|=|<>|<=|>=|IN.
III.1. Арифметические выражения
Арифметические выражения при вычислении дают результат численного типа (любого целого или вещественного).
В состав арифметического выражения могут входить:
- константы любого из численных типов;
- переменные, любого численного типа;
- функции, дающие результат любого численного типа;
- знаки арифметических операций (+|-|*|/|DIV|MOD);
- для целочисленных операндов: знаки поразрядных логических операций (NOT|AND|OR|XOR) и знаки операций сдвига (SHL|SHR);
- круглые скобки () для изменения порядка выполнения операций.
Таблица III.1. Примеры записи арифметических выражений
Математическая запись | Запись на Паскале |
sin 1,57 | SIN(1.57) |
(5*a+b)/2 |
Пример
Задание. Записать и вычислить выражение при а=1, b=3,c=2.
На языке Паскаль выражение записывается так
(-b+sqrt(sqr(b)-4*a*c)/(2*a)
При вычислении
0) В оперативной памяти располагаются переменные, имеющие значения, которые определены в задании
a | |
b | |
c |
1) В свободной памяти выделяется участок под стек (выделяемые участки памяти будем изображать в виде прямоугольников);
2) В стек переносятся значения, знаки операций и круглые скобки, изменяющие порядок выполнения действий
( | - | + | ) | / | ( | * | ) | ||||
( | - | b | + | sqrt(sqr(b)-4*a*c) | ) | / | ( | * | a | ) |
3) По правилам математики выполняются действия
1. – 3 = -3;
2. –3+1 = -2;
3. 2*1 = 2;
4. –2/2 = -1;
4) Результат вычисления: - 1
III.2. Выражения отношения
Выражение отношения представляет собой отдельную операцию сравнения (отношения). Результат такого выражения всегда логического типа BOOLEAN.
Таким образом, в состав выражения отношения могут входить
- один из знаков операций сравнения (отношения) (<|>|=|<>|<=|>=|IN);
- два операнда.
В качестве операндов могут выступать:
- два любых арифметических выражения;
- две величины (заданные переменными или константами) одного порядкового типа.
Напоминаем, сравнение выполняется после того, как будут вычислены значения операндов.