Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТЕКСТЫ для лабработы 3 / вариант №26.rtf
Скачиваний:
21
Добавлен:
02.04.2015
Размер:
330.04 Кб
Скачать

B.Pascal 7 & Objects/LR - 93 -

───────────────────────────────────────────────────────────────────────

Глава 6. Выражения

─────────────────────────────────────────────────────────────────

Выражения состоят из операций и операндов. Большинство опе-

раций в языке Паскаль являются бинарными, то есть содержат два

операнда. Остальные операции являются унарными и содержат только

один операнд. В бинарных операциях используется обычное алгебраи-

ческое представление, например: a+b. В унарных операциях операция

всегда предшествует операнду, например: -b.

В более сложных выражениях порядок, в котором выполняются

операции, соответствует приоритету операций (см. Таблицу 6.1).

Старшинство операций Таблица 6.1

┌────────────────────┬─────────────────────┬────────────────────┐

│ Операция │ Приоритет │ Вид операции │

├────────────────────┼─────────────────────┼────────────────────┤

│ @, not │ первый (высший) │ унарная операция │

├────────────────────┼─────────────────────┼────────────────────┤

│ *, /, div, mod, │ второй │ операция умножения,│

│ and, shl, shr │ │ деления, сдвига... │

├────────────────────┼─────────────────────┼────────────────────┤

│ +, -, or, xor │ третий │ операция сложения │

├────────────────────┼─────────────────────┼────────────────────┤

│ =, <>, <, >, │ четвертый (низший) │ операция отношения │

│ <=, >=, in │ │ │

└────────────────────┴─────────────────────┴────────────────────┘

Для определении старшинства операций имеется три основных

правила:

1. Во-первых, операнд, находящийся между двумя операциями с

различными приоритетами, связывается с операцией, имею-

щей более высокий приоритет.

2. Во-вторых, операция, находящаяся между двумя операциями

с равными приоритетами, связывается с той операцией, ко-

торая находится слева от него.

3. В-третьих, выражение, заключенное в скобки, перед выпол-

нением вычисляется, как отдельный операнд.

Операции с равным приоритетом обычно выполняются слева-нап-

раво, хотя иногда компилятор при генерации оптимального кода мо-

жет переупорядочить операнды.

B.Pascal 7 & Objects/LR - 94 -

Синтаксис выражений

─────────────────────────────────────────────────────────────────

Правила, определяющие порядок выполнения операций, вытекают

из синтаксиса выражений, которые строятся из множителей, термов и

простых выражений.

Множитель имеет следующий синтаксис:

┌───────────────┐

множитель ───┬──────────────>│ ссылка на ├───────────>

│ │ переменную │ ^

│ └───────────────┘ │

│ ┌─────────┐ │

├────>│константа├──────────────────────┤

│ │без знака│ │

│ └─────────┘ │

│ ┌───┐ ┌─────────┐ ┌───┐ │

├────>│ ( ├────>│выражение│───>│ ) ├───┤

│ └───┘ └─────────┘ └───┘ │

│ ┌───┐ ┌─────────┐ │

├────>│not├────>│множитель├────────────┤

│ └───┘ └─────────┘ │

│ ┌────┐ ┌─────────┐ │

├────>│знак├───>│множитель├────────────┤

│ └────┘ └─────────┘ │

│ ┌─────────┐ │

├────>│ вызов ├──────────────────────┤

│ │ функции │ │

│ └─────────┘ │

│ ┌───────────┐ │

├────>│конструктор├────────────────────┤

│ │ множества │ │

│ └───────────┘ │

│ ┌───────────┐ │

├────>│ адресный ├────────────────────┤

│ │ множитель │ │

│ └───────────┘ │

│ ┌──────────────┐ │

└────>│ приведение ├─────────────────┘

│типа значения │

└──────────────┘

Вызов функции активизирует функцию и представляет собой зна-

чения, возвращаемые функцией (см. далее в этой главе раздел "Вы-

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

множественного типа (см. раздел, озаглавленный, как "Описание

множеств"). Приведение типа изменяет тип значения (см. "Приведе-

ние типа").

Адресный множитель вычисляет адрес переменной, процедуры,

функции или метода. См. раздел "Операция @".

B.Pascal 7 & Objects/LR - 95 -

Беззнаковая константа имеет следующий синтаксис:

┌─────────┐

константа без знака ───┬────>│ число ├─────────────>

│ │без знака│ ^

│ └─────────┘ │

│ ┌──────────┐ │

├────>│символьная├────────┤

│ │ строка │ │

│ └──────────┘ │

│ ┌─────────────┐ │

├────>│идентификатор├─────┤

│ │ константы │ │

│ └─────────────┘ │

│ ┌───┐ │

└────>│nil├───────────────┘

└───┘

Некоторые примеры множителей могут включать в себя:

Х { ссылка на переменную }

@Х { указатель на переменную }

Соседние файлы в папке ТЕКСТЫ для лабработы 3