Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Контрольные вопросы экзамену программирование.doc
Скачиваний:
6
Добавлен:
16.04.2019
Размер:
264.19 Кб
Скачать
  1. Выражения и их использование.

-------------------------------------------------

  1. Операции и операнды, приоритет и классификация операций.

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

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

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

---------------------T---------------------T-------------------¦

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

+--------------------+---------------------+--------------------+

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

+--------------------+---------------------+--------------------+

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

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

+--------------------+---------------------+--------------------+

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

+--------------------+---------------------+--------------------+

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

¦ <=, >=, in ¦ ¦ ¦

L--------------------+---------------------+---------------------

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

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

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

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

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

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

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

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

---------------

множитель ---T-------------->¦ ссылка на +----------->

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

¦ L---------------- ¦

¦ ---------- ¦

+---->¦константа+----------------------+

¦ ¦без знака¦ ¦

¦ L---------- ¦

¦ ---- ---------- ---- ¦

+---->¦ ( +---->¦выражение¦--->¦ ) +---+

¦ L---- L---------- L---- ¦

¦ ---- ---------- ¦

+---->¦not+---->¦множитель+------------+

¦ L---- L---------- ¦

¦ ----- ---------- ¦

+---->¦знак+--->¦множитель+------------+

¦ L----- L---------- ¦

¦ ---------- ¦

+---->¦ вызов +----------------------+

¦ ¦ функции ¦ ¦

¦ L---------- ¦

¦ ------------ ¦

+---->¦конструктор+--------------------+

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

¦ L------------ ¦

¦ ------------ ¦

+---->¦ адресный +--------------------+

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

¦ L------------ ¦

¦ --------------- ¦

L---->¦ приведение +-----------------

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

L---------------

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

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

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

---------

константа без знака ---T---->¦ число +------------->

¦ ¦без знака¦ ^

¦ L---------- ¦

¦ ----------- ¦

+---->¦символьная+--------+

¦ ¦ строка ¦ ¦

¦ L----------- ¦

¦ -------------- ¦

+---->¦идентификатор+-----+

¦ ¦ константы ¦ ¦

¦ L-------------- ¦

¦ ---- ¦

L---->¦nil+---------------

L----

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

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

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

15 { константа без знака }

(Х+Y+Z) { подвыражение }

SIN(Х/2) { вызов функции }

['0..''9','А'..'Z'] { описатель множества }

not Done { отрицание булевской переменной }

сhar(Digit+48) { назначение типа }

Термы используются в операциях умножения на множитель:

---------

терм ------->¦множитель+---T------>

^ L---------- ¦

¦ ---- ¦

+-----+ * ¦<--------+

¦ L---- ¦

¦ ---- ¦

+-----+ / ¦<--------+

¦ L---- ¦

¦ ---- ¦

+-----+div¦<--------¦

¦ L---- ¦

¦ ---- ¦

+-----+mod¦<--------¦

¦ L---- ¦

¦ ---- ¦

+-----+and¦<--------¦

¦ L---- ¦

¦ ---- ¦

+-----+shl¦<--------¦

¦ L---- ¦

¦ ---- ¦

L-----+shr¦<--------

L----

Приведем несколько примеров термов:

Х * Y

Z / (1 - Z)

Done or Error

(Х <= Y) and (Y < Z)

В простых выражениях к термам применяются операции сложения и присваивания знака:

-------

простое выражение -------->¦ терм +---T---->

^ L-------- ¦

¦ ---- ¦

+-----+ + ¦<------+

¦ L---- ¦

¦ ---- ¦

+-----+ - ¦<------+

¦ L---- ¦

¦ ---- ¦

+-----+ or¦<------¦

¦ L---- ¦

¦ ---- ¦

L-----+xor¦<------

L----

Приведем несколько примеров простых выражений:

Х + Y

Hue1 + Hue2

I * J + 1

В выражениях к простым выражениям применяются операции отношения.

--------- выражение ---->¦ простое +--T------------------------------->

¦выражение¦ ¦ ^

L---------- ¦ ---- ---------- ¦

+->¦ < +------>¦ простое +--

¦ L---- ^ ¦выражение¦

¦ ---- ¦ L---------

+->¦<= +--+

¦ L---- ¦

¦ ---- ¦

+->¦ > +--+

¦ L---- ¦

¦ ---- ¦

+->¦>= +--+

¦ L---- ¦

¦ ---- ¦

+->¦ = +--+

¦ L---- ¦

¦ ---- ¦

+->¦<> +--+

¦ L---- ¦

¦ ---- ¦

L->¦in +--

L----

Приведем некоторые примеры выражений:

Х = 1.5

Done <> Error

(I < J) = (J < К)

C in Huel