Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Паскаль / tp3 / tp3 / 6.doc
Скачиваний:
19
Добавлен:
10.12.2013
Размер:
110.59 Кб
Скачать

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

Выражения состоят из операций и операндов. Большинство операций в языке Паскаль являются бинарными, то есть содержат два операнда. Остальные операции являются унарными и содержат только один операнд. В бинарных операциях используется обычное алгебраическое представление, например: a+b. В унарных операциях операция всегда предшествует операнду, например: -b.

В более сложных выражениях порядок, в котором выполняются операции, соответствует приоритету операций (см. Таблицу 6.1).

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

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

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

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

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

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

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

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

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

<=, >=, in

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

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

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

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

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

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

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

Правила, определяющие порядок выполнения операций, вытекают из синтаксиса выражений, которые строятся из множителей, термов и простых выражений.

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

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

множитель─┬───────┬─────────┤ ссылка на переменную ├────────────

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

│ │ ╒═══╕ │ ┌─────────────────────────┐ │ │

│ └│ @ ├─┼│ идентификатор процедуры ├─┤ │

│ ╘═══╛ │ └─────────────────────────┘ │ │

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

│ └│ идентификатор функции ├───┘ │

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

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

├─│ константа без знака ├─────────────────────│

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

│ ╒═══╕ ┌───────────────┐ ╒═══╕ │

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

│ ╘═══╛ └───────────────┘ ╘═══╛ │

│ ╒═══╕ ┌───────────┐ │

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

│ ╘═══╛ └───────────┘ │

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

├─│ вызов функции ├───────────────────────────│

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

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

├─│ конструктор множества ├───────────────────│

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

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

└─│ приведение типа значения ├─────────────────┘

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

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

Конструктор множества представляет собой значение множественного типа (см. раздел, озаглавленный, как "Описание множеств"). Приведение типа изменяет тип значения (см. "Приведение типа"). Беззнаковая константа имеет следующий синтаксис:

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

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

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

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

├──│ символьная строка ├────────┤

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

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

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

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

│ ╒═══╕ │

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

╘═══╛

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

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

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

Соседние файлы в папке tp3