Выражение является первичной составной частью программ. Оно обеспечивает определение некоторого результата соответствующего типа (арифметического, логического, строкового или в виде множества) и показывает что для этого надо взять и какие действия и в каком порядке произвести. Фактически выражения задают правила получения новых значений. Для этого в них используются константы, переменные и указатели функций, скрепленные знаками операций и скобками.
Как правило, выражение образуют один или несколько операндов, связанных операциями и скрепленных знаками операций.
Операнд – это самостоятельная часть выражения, с которой производятся какие-то действия. При записи выражения операнды должны следовать в линейной последовательности, в строчку, на одном уровне. Операндами могут быть константы, переменные и указатели функций.
Операции определяют действия над операндами и результат. Они могут быть одноместными (с одним операндом справа) и двухместными (с двумя операндами, слева и справа).Выполняются операции в порядке своего приоритета, от высшего (первого) к низшему. Внутри же приоритета, если нет скобок, операции выполняются слева направо в порядке их написания.
Для задания требуемой последовательности выполнения операций могут использоваться круглые скобки.
Тип операндов и вид операций определяют тип результата выражения.
При записи выражений:
допускается: - делать пробелы между операндами, знаками операций
и скобками;
- переносить выражения на следующую строку (но без
разрыва операндов !);
- применять лишние парные круглые скобки;
- опускать «+» в одноместный операции.
запрещается: - дважды повторять знак операции при переносе
операнда на следующую строку;
- опускать знак умножения «*».
Последовательность вычисления выражений:
1. выражения в скобках, начиная с самых внутренних;
2. значения функций;
3. одноместные операции;
4. двухместные операции согласно их приоритетам. Операции одного
приоритета выполняются слева направо.
В языке Турбо-Паскаль имеют место следующие выражения:
А) арифметические. Это один операнд или их последовательность, связанных знаками арифметических операций.
Операндом арифметических выражений может быть:
- целое или вещественное число без знака;
- переменная (простая, с индексами, элемент записи, указатель) целого или вещественного типов;
- функция, возвращающая арифметический результат;
- произвольное арифметическое выражение в круглых скобках.
Составные части арифметических выражений должны иметь целый или вещественный типы.
Пример:
A[I]+ISH.SUM*(3.14+SQRT(X))/SQR(X-Y)
Операции в арифметических выражениях выполняются слева направо исходя из их приоритета:
Операции одинакового приоритета выполняются в порядке их написания в выражении: слева направо.
В границах выражения с помощью круглых скобок можно добиться желаемой последовательности выполнения операций.
Б) строковые. Задача подобных выражений – формирование строк, как правило, имеющих какой-то смысл. Поэтому в них используются операнды символьного (CHAR) и строкового (STRING) типов, представленные константами, переменными или указателями функций.
Операнды соединяются знаками операции сцепления (конкатенации) – «+». В результате сцепления формируется строка из левого и, последовательно, правого операнда, длина которой сложится из соответствующих длин этих операндов (строк или символов). При этом итоговая строка не может быть больше 255 символов (байтов).
Примеры:
`Студенты ` + ` ИЭФа`
`2345` + `.` + `075`
`МИИТ` + ` - ` + `наша` + ` alma mater`
Помимо операций сцепления в строковых выражениях допустимы операции отношения. Они выполняются посимвольно и, при разной длине сравниваемых строк, короткая строка дополняется пробелами.
Примеры:
VAR STR1, STR2: STRING[12];
…
WHILE STR1 > STR2 DO …
В) сравнения (отношения). Такие выражения используются в условных операторах, операторах присваивания и цикла, в процедурах вывода, в других процедурах и функциях в качестве фактических параметров.
По форме – это два операнда, связанных операцией отношения:
= - равно
<> - не равно
< - меньше
<= - меньше или равно
> - больше
>= - больше или равно
IN – принадлежность к множеству.
Эти операции обладают самым низким, пятым приоритетом, что следует учитывать при конструировании выражений.
Примеры:
L:=A>B; WRITE(A>B); С:=K IN [1,3,5,7,9,11,13];
WHILE I<=25 DO …
IF MES IN [1..12] THEN …
PROC(MAS,FL<>0);
Примечание: при использовании операции IN следует учитывать, что
первый (левый) операнд в ней должен быть порядкового
типа, а второй – множественного. Если левый операнд
принадлежит множеству, то формируется результат
TRUE, если нет – FALSE.
Г) логические.
По определению, логическое выражение – это один или несколько логических операндов, разделенных знаками логических операций:
Логические выражения используются для определения истинности или ложности каких-либо ситуаций в программе, и поэтому фактически они задают правила вычисления одного из двух возможных логических значений: TRUE и FALSE. Область их применения – та же, что и у выражений сравнения (отношения).
Значения результатов логических операций устанавливается в соответствии со следующей таблицей истинности:
Операнды
Результат логического выражения
А
В
NOT A
A AND B
A OR B
A XOR B
Т
-
F
-
-
-
F
-
T
-
-
-
T
T
F
T
T
F
F
F
T
F
F
F
T
F
F
F
T
T
F
T
T
F
T
T
Здесь: Т – TRUE, F – FALSE.
Примечание: если операндами являются целые числа, то результатом
логического выражения будет тоже целое число. Оно
формируется побитно в соответствии с приведенной
выше таблицей истинности, но с заменой TRUE на «1», а
FALSE на «0».
Примеры логических выражений:
NOT FL
(MES IN [1..12]) OR (FL<>0)
FALSE XOR (X + Y*2 = C)
(0<I) AND (I>B)
2 1 3
Но не: 0<I AND I>B , т.к. в соответствии с приоритетом сначала
выполняется побитное умножение, а затем
другие операции по старшинству, слева
направо (см. цифры над выражением)
Д) над множествами (см. в разделе «Множества и выражения над ними»).
Е) смешанные.
В них используются различные типы операций и операндов.
Порядок выполнения операций определяется их приоритетом. Т.к. операции отношения являются операциями с самым низким приоритетом, то их рекомендуется обрамлять круглыми скобками (см. пример выше).
Тип результата всего смешанного выражения определяется типом результата последней операции (!!!).