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 равно нулю, то результатом будет фатальная ошибка.