- •1 Введение
- •2 Сравнительный анализ языков высокого уровня Си и Паскаль
- •2.1 Алфавит и лексическая структура языков
- •2.2 Служебные слова
- •2.3 Идентификаторы
- •2.4 Комментарии
- •2.5 Структура программ
- •2.6 Типы данных
- •2.7 Массивы
- •2.8 Строки
- •2.9 Множества
- •2.10 Записи
- •2.11 Операции
- •2.12 Операторы ветвления
- •2.13 Операторы цикла
- •2.14 Заключение
- •3 Постановка задачи
- •3.1. Алгоритм решения поставленной задачи
- •4 Реализация проекта
- •4.1 Кнопка «Новая игра»
- •4.2 Кнопка «Демонстрация игры»
- •4.3 Кнопка «Рекорды»
- •4.4 Кнопка «о программе»
- •4.5 Кнопка «Выход»
- •4.6 Пользовательская библиотека «drawing.H»
- •5 Заключение
- •Список использованных источников
- •Приложение а (справочное)
2.11 Операции
В соответствии с типом операндов и результатом операции в языке Паскаль классифицируются как арифметические, логические, множественные и операции отношения [4].
Как показано в таблице 2.11.1, результат операции сложения, вычитания и умножения будет целого типа, если оба операнда – целого типа, в других случаях результат – вещественного типа. Операции div и mod определены только для целочисленных операндов.
Таблица 2.11.1 – Основные математические операции в языке Паскаль
Приоритет |
Символ операции |
Название операции |
Тип операнда |
Тип результата |
1 |
* |
умножение |
Integer или Real |
Integer или Real |
/ |
деление |
Integer или Real |
Real |
|
div |
целочисленное деление |
Integer |
Integer |
|
mod |
остаток от деления |
Integer |
Integer |
|
2 |
+ |
сложение |
Integer или Real |
Integer или Real |
- |
вычитание |
Integer или Real |
Integer или Real |
Над логическими аргументами в языке Паскаль определены следующие операции:
- not – логическое отрицание ("не");
- and – логическое умножение ("и");
- or – логическое сложение ("или");
- xor – логическое "исключающее или".
Результаты выполнения этих операций над переменными А и В логического типа приведены в таблице 2.11.2.
Таблица 2.11.2 – Таблица истинности логических операций
A |
B |
not A |
A and B |
A or B |
A xor B |
true |
true |
false |
true |
true |
false |
true |
false |
false |
false |
true |
true |
false |
true |
true |
false |
true |
true |
false |
false |
true |
false |
false |
false |
Операции над множествами суммированы в таблице 2.11.3. Оба операнда должны всегда относиться к совместимым типам.
Таблица 2.11.3 – Операции над множествами в языке Паскаль
Операция |
Действие |
Тип операнда |
Тип результата |
+ |
Обьединение множеств |
set of T |
set of T |
- |
Разность множеств |
set of T |
set of T |
* |
Пересечение множеств |
set of T |
set of T |
Операции отношения приведены в таблице 2.11.4. За исключением операции in типы операндов либо должны быть совместимыми, либо один должен быть real, а другой – integer. Для операции in первый (левый) операнд должен относиться к ординальному типу, совместимому с базовым типом того множественного типа, к которому относится второй операнд. Упорядоченность совместимых строк определяется упорядоченностью значений типа char.
Таблица 2.11.4 – Операции отношения в языке Паскаль
Операция |
Действие |
Тип операндов |
Тип результата |
= |
Равенство |
Простой, ссылочный, множественный, строковый |
Boolean |
<> |
Неравество |
Простой, ссылочный, множественный, строковый |
Boolean |
<= |
Меньше или равно |
Простой, строковый |
Boolean |
<= |
Включение множеств |
Множественный |
Boolean |
>= |
Больше или равно |
Простой, строковый |
Boolean |
>= |
Включение множеств |
Множественный |
Boolean |
< |
Меньше |
Простой, строковый |
Boolean |
> |
Больше |
Простой, строковый |
Boolean |
In |
Принадлежность множеству |
Ординальный и множественный |
Boolean |
Порядок вычисления выражения определяется старшинством содержащихся в нем операций. В языке Паскаль принят следующий приоритет операций:
- not, @;
- *, / , and, div, mod;
- +, -, or;
- =, <>, <,>, <=, >=, in.
Операции языка Си показаны в таблице 2.11.5 [3].
Таблица 2.11.5 – Операции языка Си, в порядке снижения приоритета
Знак |
Операция |
Класс |
Приоритет |
Ассоциативность |
Имена, литералы |
Простые лексемы |
Первичный |
16 |
Нет |
A[k] |
Индексы |
Постфиксный |
16 |
Слева направо |
F(…) |
Вызов функции |
Постфиксный |
16 |
Слева направо |
. |
Прямой выбор |
Постфиксный |
16 |
Слева направо |
-> |
Опосредованный выбор |
Постфиксный |
16 |
Слева направо |
++ -- |
Положительное и отрицательное приращение |
Постфиксный |
16 |
Слева направо |
++ -- |
Положительное и отрицательное приращение |
Префиксный |
15 |
Справа налево |
sizeof |
Размер |
Унарный |
15 |
Справа налево |
~ |
Побитовое логическое отрицание |
Унарный |
15 |
Справа налево |
! |
Логическое отрицание |
Унарный |
15 |
Справа налево |
- + |
Изменение знака, плюс |
Унарный |
15 |
Справа налево |
& |
Вычисление адреса |
Унарный |
15 |
Справа налево |
Продолжение таблицы 2.11.5
* |
Разадресация (косвенная адресация) |
Унарный |
15 |
Справа налево |
(имя типа) |
Приведение типа |
Унарный |
14 |
Справа налево |
* |
Умножение |
Бинарный |
13 |
Слева направо |
/ |
Деление |
Бинарный |
13 |
Слева направо |
% |
Остаток от деления |
Бинарный |
13 |
Слева направо |
+ |
Сложение |
Бинарный |
12 |
Слева направо |
- |
Вычитание |
Бинарный |
12 |
Слева направо |
<< |
Сдвиг влево |
Бинарный |
11 |
Слева направо |
>> |
Сдвиг вправо |
Бинарный |
11 |
Слева направо |
< |
Меньше |
Бинарный |
10 |
Слева направо |
> |
Больше |
Бинарный |
10 |
Слева направо |
<= |
Меньше или равно |
Бинарный |
10 |
Слева направо |
>= |
Больше или равно |
Бинарный |
10 |
Слева направо |
== |
Равно |
Бинарный |
9 |
Слева направо |
!= |
Не равно |
Бинарный |
9 |
Слева направо |
& |
Побитовое и |
Бинарный |
8 |
Слева направо |
^ |
Побитовое исключающее или |
Бинарный |
7 |
Слева направо |
| |
Побитовое или |
Бинарный |
6 |
Слева направо |
&& |
Логическое и |
Бинарный |
5 |
Слева направо |
|| |
Логическое или |
Бинарный |
4 |
Слева направо |
? : |
Условие |
Тернарный |
3 |
Слева направо |
Окончание таблицы 2.11.5
= += -= *= /= %= <<= >>= &= ^= |= |
Присваивание |
Бинарный |
2 |
Слева направо |
, |
Последовательная оценка |
Бинарный |
1 |
Слева направо |