9. Выражения
Вычислительная
система выполняет вычислительные и управляющие
операции по командам, которые представлены в
программе с помощью операторов. Большинство
таких операторов строится с использованием выражений,
которые в практике программирования играют
большую роль, определяя способ и порядок
преобразования данных. Выражения состоят из операндов
(значений, констант, переменных, функций),
соединенных с помощью операций. Для
изменения порядка выполнения операций могут
быть использованы круглые скобки. Наиболее
важную роль играют арифметические, логические и
строковые выражения .
9.1.
Арифметические выражения
При описании
арифметических выражений для простоты типом Integer обозначен любой целый
тип, а типом Real – любой
вещественный тип. Выражение строится с помощью
арифметических значений,
констант, переменных, функций, арифметических
операций. В выражениях можно применять круглые
открывающие и закрывающие скобки. При этом
количество открывающих скобок должно быть равно
количеству закрывающих скобок.
При вычислении выражения операции
выполняются в строго определенной
последовательности в соответствии с их
приоритетом. Порядок выполнения операций можно
изменить применением блоков, включающих
подвыражения, заключенные в круглые скобки.
В языке Object Pascal существует
шесть арифметических операций. Учитывая, что
арифметические операции образуют подмножество
множества всех операций языка, в табл. 7 показано абсолютное
значение приоритета каждой операции.
Таблица 7
Операция |
Наименование |
Приоритет |
+
-
*
/
div
mod |
Сложение
Вычитание
Умножение
Деление
Деление нацело
Остаток от деления |
2
2
1
1
1
1 |
При
вычислении выражения его тип определяется
типами операндов. Операндом называется любая
компонента, к которой применяется операция.
Операндом может быть, например, значение,
константа, переменная или выражение, заключенное
в скобки. Типы элементарных выражений показаны в
табл. 8.
Таблица 8
Операция |
Тип
операндов |
Тип
результата |
Пример |
+
–
*
/
div
mod |
Integer, real
Integer, real
Integer, real
Integer, real
Integer
Integer |
integer, real
integer, real
integer, real
real
integer
integer |
X + Y
Result - 1
P * InterestRate
X / 2
Total div UnitSize
Y mod 6 |
Примеры :
4*5 = 20, 6/5 = 1.2, 8+7 =
15, 7-3 = 4, 16 div 5 = 3, 16 mod 5 = 2.
Порядок
выполнения операций определяется приоритетом
операций и расположением внутренних выражений,
заключенных в круглые скобки. Все
операции в арифметическом выражении выполняются
слева направо.
Пример :
Выражение : |
15 *
((25/5-5*9 + (j-8) * 7.55) / 8.67) |
Порядок
выполнения операций : |
8 2 5 3
6 1 4
7 |
9.2. Логические
выражения
Результатом
вычисления логического выражения может быть
одно из двух логических значений : True
(истина ) или False (ложь).
Логическое выражение строится с
помощью других выражений, (арифметических,
строковых и др.), значений, констант, переменных,
функций, логических операций и логических
отношений.
В языке существует четыре
логических операций. Приоритет операций показан
в табл. 9.
Таблица 9
Операция |
Наименование |
Приоритет |
Not
And
Or
Xor |
Отрицание
Конъюнкция
Дизъюнкция
Спец. дизъюнкция
|
3
4
5
6 |
Значения
элементарных логических выражений, поясняющих
назначе-ние этих операций, приведены в табл. 10.
Таблица 10
A |
B |
not A |
A and B |
A or B |
A xor B |
True
True
False
False |
True
False
True
False |
False
False
True
True |
True
False
False
False |
True
True
True
False |
False
True
True
False |
В табл. 11
представлены логические отношения.
Таблица 11
Отношение |
Наименование |
>
<
>=
<=
=
<> |
Больше
Меньше
Больше или равно
Меньше или равно
Равно
Не равно |
Все
отношения равноприоритетны.
Порядок выполнения операций при
вычислении логического выра-жения следующий:
- сначала вычисляются арифметические выражения
;
затем – отношения;
в последнюю очередь вычисляются логические
операции.
Примеры (для x=12, z = 0, y=1):
Таблица 12
Выражение |
Результат |
5 > 8
(5 < 3) and (z = 0)
((4 + 8) < 0) or not (y = 0)
not ((x < y) and (z > y))
('ab' = 'ac') and (x=z)
(4 in [ 2 .. 23 ])
|
True
False
True
True
False
True |
Пример,
демонстрирующий порядок выполнения операций при
вычислении логического выражения :
Выражение : |
Not
((x > 6 + 8 * 2) and (y < 7) or (z > 7)) and
(x <> y) |
Порядок : |
9 3
2 1
6
4
7 5
10
8 |
9.3. Строковые
выражения
Строковые
выражения, частными случаями которых могут быть
пустой символ '' или
одиночный символ (например 'A'),
строятся из строковых или символьных значений,
констант, переменных и строковых функций при
помощи строковой операции конкатенации
(присоединения). Эта операция обозначена
символом + (плюс). Скобки в
строковых выражениях не применяются.
Пример :
Выражение : |
'Object '+'Pascal '+' для Delphi' |
Результат : |
'Object Pascal для Delphi'
|
|
|