Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программ-языке-выс-уровня-ЗФ.doc
Скачиваний:
40
Добавлен:
10.05.2015
Размер:
348.67 Кб
Скачать

3.4. Операторы

Оператор – это определенный в языке символ, при помощи которого подвыражения (называемые операндами) комбинируются в более сложные выражения. Большинство операторов обозначаются специальными символами, такими как *, +, -, &, / и т.п. Простейшим оператором является оператор сложения: x+y.

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

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

Арифметическиеоператоры, действующие на целочисленные и вещественные (действительные) операнды, включают в себя унарные и бинарные операторы. К унарным относятся унарный плюс (+) и унарный минус (-). К бинарным – операторы сложения (+), вычитания(-), умножения (*), деления (/), деления на цело (div), остатка от целочисленного деления (mod). При операциях с целочисленными операндами результат имеет типInteger. Если операнды имеют тип поддиапазона целочисленного типа, то действия над ними выполняются как над целыми числами.

Булевыоператоры манипулируют с операндами любого булева типа и возвращают значение типаBoolean. К этому классу относятся следующие операторы: отрицание (not), конъюнкция (and), дизъюнкция (or) и исключающая дизъюнкция (xor). Операции, выполняемые с помощью булевых операторов, подчиняются правилам булевой логики. Например, выражениеXand Yимеет значениеTrue (истина), в том и только в том случае, если иXиYимеют значениеTrue.

Компилятор Delphiподдерживает два режима оценки для операторовandиor: режим полного вычисления и режим сокращенного вычисления (по умолчанию).

Логическиеоператоры выполняют поразрядные операции с целочисленными операндами: поразрядное отрицание (not), поразрядная конъюнкция (and), поразрядная дизъюнкция (or), поразрядная исключающая дизъюнкция (xor), поразрядный сдвиг влево (shl), поразрядный сдвиг вправо (shr). Здесь имеют место следующие базисные правила:

- результат операций notи поразрядного сдвига имеет тот же тип, что и операнд;

- результат операций and,orилиxorимеет целочисленный тип с минимальным диапазоном, включающим все возможные значения типов обоих операндов.

К строковымоператорам относятся оператор конкатенации (+), соединяющий две строки, и операторы сравнения (=, <>, <, >, <=, >= ). Результат операции конкатенации совместим с любым строковым типом.

Операторы сравненияявляются бинарными операторами. Они позволяют выполнить соотношение операндов. В качестве операндов можно использовать любые выражения целого или действительного типа, указатели или множества. Результатом выполнения оператора сравнения является булево значение: если выражение верно, тоTrue, иначе –False. При этом операнды должны быть одного типа или быть совместимы. Исключение из этого правила – сравнение значений целых и вещественных типов. Сравнение строк осуществляется посимвольно, в точном соответствии с расширенным набором символовASCII[1-3].

Вопросы для самопроверки:

1. Приведите примеры выполнения всех операторов.

2. Почему при записи формул их «вытягивают» в линию? Почему знак умножения всегда указывают явно (a*k, но не ak)?

3. Определить значение X после выполнения операторов:

x := 10; x := x+3;

4. Вычислить значения выражений: 20 div 6; 20 mod 6; round(6.9);