Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Типы данных и операторы языка Delphi и Pascal.doc
Скачиваний:
4
Добавлен:
20.12.2018
Размер:
211.46 Кб
Скачать

3.3. Выражения

Выражение состоит из констант, переменных, указателей функций, знаков операций и скобок. Выражение задает правило вычисления некоторого значения. Порядок вычисления определяется старшинством (приоритетом) содержащихся в нем операций. В языке принят следующий приоритет операций:

  • унарные операции: унарная операция not, унарный минус –, взятие адреса @;

  • мультипликативные операции (операции типа умножения): * / div mod and shl shr;

  • аддитивные операции (операции типа сложения) + – or xor;

  • операции отношения: = <> < > <= >= in.

Выражения входят в состав многих операторов, а также могут быть аргументами встроенных функций.

Перечисленные операции можно разделить на следующие группы:

  1. Арифметические.

  2. Логические. Логические операции применимы к целым и логическим операндам. Если операнды – целые числа, то результат логической операции – тоже целое число. Битовая или поразрядная арифметика введена для обеспечения возможности работы с двоичными разрядами (битами). Первая группа операций – логические операции not, and, or и xor. Операция not является одноместной, она изменяет каждый бит целого числа на обратный. Операции and, or и xor – двуместные, операнды этих операций – целые величины одинаковой длины. Операции выполняются попарно над всеми двоичными разрядами операндов. Вторая группа операций – это операции сдвига влево shl и сдвига вправо shr: I shl N, I shr N. Эти операции сдвигают двоичную последовательность значения I влево или вправо на N двоичных разрядов. При этом биты, уходящие за пределы разрядной сетки, теряются, а освободившиеся двоичные разряды заполняются нулями. При сдвиге вправо отрицательных значений освободившиеся разряды заполняются единицами. К булевским операндам применимы следующие логические операции: not, and, or, xor.

  3. Операция получения адреса операнда @. Эта операция применяется к операнду любого типа и возвращает результат типа Pointer, в котором содержится адрес операнда. Если эта операция применяется к процедуре или функции, ее результатом будет адрес точки входа в эту подпрограмму. Этот адрес можно использовать в подпрограмме, написанной на ассемблере, или во встраиваемых фрагментах (inline-подпрограммах).

  4. Операция in, используемая для работы с множествами. У этой операции два операнда. Первый (левый) операнд – выражение любого порядкового типа, второй – множество из элементов того же типа, или идентификатор множественного типа. Если элемент (первый операнд) входит в указанное множество (второй операнд), то результат операции равен true.

3.4. Составной оператор

Это совокупность последовательно выполняемых операторов, заключенных в операторные скобки begin и end:

begin

<оператор 1>;

<оператор 2>;

<оператор N>;

end;

Он может потребоваться в тех случаях, когда в соответствии с правилами построения конструкций языка можно использовать один оператор, а требуется выполнить несколько действий.

Отдельные операторы внутри составного оператора отделяются друг от друга точкой с запятой. Так как завершающее оператор слово end не является отдельным предложением, то перед ним точку с запятой можно не ставить. В противном случае компилятор будет считать, что перед словом end стоит пустой оператор.

Составные операторы задают порядок выполнения операторов, являющихся их элементами. Они должны выполняться в том порядке, в котором они записаны. Составные операторы обрабатываются, как один оператор. Операторы заключаются в ограничители begin и end и отделяются друг от друга точкой с запятой.

Пример составного оператора:

begin

Z := X;

X := Y;

Y := Z;

end;