Выражения и операции языка Паскаль
Основными элементами, из которых конструируется исполняемая часть программы, являются константы, переменные и обращения к функциям. Каждый из этих элементов характеризуется своим значением и принадлежит к какому-либо типу данных. С помощью знаков операций и скобок из них можно составлять выражения, которые представляют собой правила получения новых значений.
Частным случаем выражения может быть просто одиночная константа, переменная или обращение к функции. Значение такого выражения имеет тот же тип, что и сам элемент. В более общем случае выражение состоит из нескольких элементов (операндов) и знаков операций, а тип его значения определяется типом операндов и видом примененных к ним операций.
Примеры:
Y
(a + b) / c
sin (t)
a > 2
not Flag and (a = b)
NIL
Операции
В Турбо Паскале определены следующие операции:
– унарные not, @;
– мультипликативные *, /, div, mod, and, shl, shr;
– аддитивные +, -, or, xor;
– отношения =, <>, <, >, <=, >=, in.
Приоритет операций убывает в указанном порядке, т.е. наивысшим приоритетом обладают унарные операции, низшим – операции отношения. Порядок выполнения нескольких операций равного приоритета устанавливается компилятором из условия оптимизации кода программы и не обязательно слева направо.
Правила использования операций с операндами различного типа приводятся в табл. 3.
Таблица 3
Правила использования операций
Операция | Действие | Тип операндов | Тип результата |
not | Отрицание | Логический | Логический |
not | То же | Любой целый | Тип операнда |
@ | Адрес | Любой | Указатель |
* | Умножение | Любой целый | Наименьший целый |
* | То же | Любой вещественный | Extended (или Real) |
Продолжение табл. 3
* | Пересечение множеств | Множественный | Множественный |
/ | Деление | Любой вещественный | Extended (или Real) |
div | Целочисленное деление | Любой целый | Наименьший целый |
mod | Остаток от деления | То же | То же |
and | Логическое И | Логический | Логический |
and | То же | Любой целый | Наименьший целый |
shl | Левый сдвиг | То же | То же |
shr | Правый сдвиг | То же | То же |
+ | Сложение | То же | То же |
+ | То же | Любой вещественный | Extended (или Real) |
+ | Объединение множеств | Множественный | Множественный |
+ | Сцепление строк | Строковый | Строковый |
- | Вычитание | Любой целый | Наименьший целый |
- | То же | Любой вещественный | Extended (или Real) |
or | Логическое ИЛИ | Логический | Логический |
or | То же | Любой целый | Наименьший целый |
= | Равно | Любой простой или строковый | Логический |
<> | Не равно | То же | То же |
< | Меньше | Логический | Логический |
<= | Меньше или равно | То же | То же |
Окончание табл. 3
> | Больше | То же | То же |
>= | Больше или равно | То же | То же |
При действии с вещественным типом одним из операндов может быть значение любого целого типа. Результат операций имеет указанный в таблице тип Extended только для установленного в среде Турбо Паскаля режима генерации кода, рассчитанного на арифметический сопроцессор или на его эмуляцию. Если этот режим не установлен, результат будет иметь значение типа Real.
В Турбо Паскале имеются следующие логические операции:
not – логическое НЕ;
and – логическое И;
or – логическое ИЛИ;
xor – исключающее ИЛИ.
Логические операции применимы к операндам целого и логического типов. Если операнды – целые числа, то результат логической операции есть тоже целое число, биты которого (двоичные разряды), формируются из битов операндов по правилам, приведенным в табл. 4.
Таблица 4
Логические операции над данными типа INTEGER
Операнд 1 | Операнд 2 | not | and | or | xor |
- | - | - | - | ||
- | - | - | - | ||
- | |||||
- | |||||
- | |||||
- |
К логическим также относятся операции сдвига, применяемые к целым числам:
i shl j – сдвиг содержимого i на j разрядов влево – освободившиеся младшие разряды заполняются нулями;
i shr j – сдвиг содержимого i на j разрядов вправо – освободившиеся старшие разряды заполняются нулями.
i и j – выражения целого типа.
Логические операции над логическими данными дают результат логического типа согласно правилам, указанным в табл. 5.
Таблица 5
Логические операции над данными логического типа
Операнд 1 | Операнд 2 | not | and | or | xor |
True | - | False | - | - | - |
False | - | True | - | - | - |
False | False | - | False | False | False |
False | True | - | False | True | True |
True | False | - | False | True | True |
True | True | - | True | True | False |
Операция отношения in применяется к двум операндам. Первым (левым) операндом должно быть выражение любого порядкового типа, вторым – множество, состоящее из элементов того же типа, или идентификатор множественного типа. Операция дает true, если левый операнд принадлежит множеству.
Дата добавления: 2017-01-29; просмотров: 1106;