9.1. Базовые операции
Математические выражения в алгоритмической записи состоят из операций и операндов. Большинство операций в языке Турбо Паскаль являются бинарными, т.е. содержат два операнда. Некоторые операции являются унарными и содержат только один операнд. В бинарных операциях используется обычное двухместное алгебраическое представление. В унарных операциях операция всегда предшествует операнду, например: -b.
В сложных выражениях порядок, в котором выполняются операции, соответствует приоритету операций (табл. 9.1).
Таблица 9.1
Первый (высший) приоритет
Унарные операции
Название
Тип операндов
Тип результата
@
Взятие адреса
Любой
Pointer
-
+
Унарный минус
Унарный плюс
Целый Вещественный
Целый Вещественный
Целый Вещественный
Целый Вещественный
not
not
Логическое 'НЕ'
Поразрядное 'НЕ'
Логический
Целый
Логический
Целый
- 162 -
Второй приоритет
Бинарные операции
*
Операция умножения
Целый*Целый
Целый*Вещественный
Вещественный*Целый
Вещественный*Вещественный
Целый
Вещественный
Вещественный
Вещественный
/
Операция деления
Целый/Целый
Целый/Вещественный
Вещественный/Целый
Вещественный/Вещественный
Вещественный
Вещественный
Вещественный
Вещественный
div
Целочисленное деление
Целый div Целый
Целый
mod
Остаток от деления нацело
Целый mod Целый
and
and
Логическое 'И'
Поразрядное 'И'
Логический
Целый
Логический
Целый
shl
shr
Циклический сдвиг влево
Циклический сдвиг вправо
Целый
Целый
Целый
Целый
Третий приоритет
Бинарные операции
+
Операция сложения
Целый+Целый
Целый+Вещественный
Вещественный+Целый
Вещественный+Вещественный
Целый
Вещественный
Вещественный
Вещественный
- 163 -
–
Операция вычитания
Целый–Целый
Целый–Вещественный
Вещественный-Целый
Вещественный– Вещественный
Целый
Вещественный
Вещественный
Вещественный
or
or
Логическое 'ИЛИ'
Поразрядное 'ИЛИ'
Логический
Целый
Логический
Целый
xor
xor
Логическое исключающее 'ИЛИ'
Поразрядное исключающее 'ИЛИ'
Логический
Целый
Логический
Целый
Четвертый (низший) приоритет
Бинарные операции
=
<>
<
>
<=
>=
Операции отношения
Число и число
Строка и число
Строка и литера
Pointer и Pointer
Множества
Логический
in
Вхождение в множество
Элементарный и множество
Логический
Примечания:
1. Под вещественными понимаются тип Real и вещественные типы, поддерживаемые математическим сопроцессором (типы с повышенной точностью).
2. Под целыми понимаются целочисленные типы языка.
3. В таблице указан оператор @, не имеющий никакого отношения к математике. Он включен только для показа его приоритета.
При вычислениях сначала применяются операции наивысшего порядка, затем более низкого. Операции равного приоритета вычисляются слева направо:
2*3/4/5 = ((2 * 3)/4)/5
Применение скобок позволяет явно расставлять приоритеты и менять порядок вычислений.
Значение выражения X/Y всегда будет вещественного типа, независимо от типов операндов. Если Y равно 0, то произойдет фатальная ошибка (номер 200) и останов программы.
- 164 -
Значение выражение i div j представляет собой математическое частное i/j, округленное в меньшую сторону до значения целого типа. Если j равно 0, то результатом будет фатальная ошибка.
Операция деления по модулю mod возвращает остаток, полученный путем деления двух ее операндов, т.е.
i mod j = i - (i div j) * j
Знак результата операции mod будет тем же, что и знак i. Если j равно нулю, то результатом будет фатальная ошибка.