![](/user_photo/2706_HbeT2.jpg)
- •Контрольные вопросы экзамену
- •2 Семестр
- •Группы символов языка Паскаль.
- •Структура языка Паскаль.
- •Понятие лексемы языка, категории лексем.
- •Зарезервированных слова в языке Паскаль.
- •Понятие идентификатора, допустимая длина идентификаторов, разновидности идентификаторов, стандартные идентификаторы.
- •Формы записи чисел в языке паскаль.
- •Использование комментариев.
- •Символы используемые в качестве разделителей лексем.
- •Разделы описаний и объявлений языка Паскаль.
- •Раздел операторов.
- •Виды констант.
- •Стандартные типы языка паскаль.
- •Интервальный и перечисляемый типы данных.
- •Порядковые типы и их свойства.
- •Совместимость типов данных.
- •Выражения и их использование.
- •Операции и операнды, приоритет и классификация операций.
- •Синтаксис выражений
- •Операции
- •Арифметические операции
- •Унарные арифметические операции
- •Логические операции
- •Булевские операции
- •Операция со строками
- •Операции над символьными указателями
- •Операции над множествами
- •Операции отношения
- •Сравнение простых типов
- •Сравнение строк
- •Сравнение упакованных строк
- •Сравнение указателей
- •Сравнение символьных указателей
- •Сравнение множеств
- •Проверка на принадлежность к множеству
- •Операция @
- •Использование операции @ для переменной
- •Использование операции @ для процедуры или функции или метода
- •Стандартные функции языка Паскаль. Арифметические функции
- •Функции преобразования типов
- •Функции для величорядкового типа
- •Функция ord
- •Функция chr
- •Функции succ и pred
- •3 Семестр
Выражения и их использование.
-------------------------------------------------
Операции и операнды, приоритет и классификация операций.
Выражения состоят из операций и операндов. Большинство операций в языке Паскаль являются бинарными, то есть содержат два операнда. Остальные операции являются унарными и содержат только один операнд. В бинарных операциях используется обычное алгебраическое представление, например: 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