
- •2 Сравнительный анализ языков программирования высокого уровня Си и Паскаль
- •2.1 Структура программы
- •2.2.2 Пользовательские типы
- •2.3 Арифметические операции
- •Окончание таблицы 2.3.1
- •Окончание таблицы 2.3.2
- •2.4 Указатели и векторные типы данных
- •2.5.2 Операторы-переключатели
- •2.6.2 Безусловный переход
- •2.7 Пользовательские подпрограммы
- •2.8 Итоги анализа сравнения языков программирования Паскаль и Си
- •3.2 Реализация задания
- •3.3 Алгоритмы, реализованные в процессе решения задачи
2.3 Арифметические операции
Арифметическая операция - вычислительная операция над числами. Во многих языках программирования определены двуместные арифметические операции: сложения, вычитания, умножения, деления, деления нацело, вычисление остатка от деления. Допустимые операции в языке Паскаль представлены в таблице 2.3.1 [9].
Таблица 2.3.1 Операции в Паскале
Приоритет операции |
Символ |
Выражение |
Название операции |
Тип переменных |
Логические операции |
||||
1 |
Not |
Not A |
«не» |
Логический, целый |
2 |
And |
A and B |
«и» |
|
3 |
Or |
A or B |
«или» |
|
3 |
Xor |
A xor B |
«искл. или» |
|
Математические операции |
||||
2 |
* |
A*B |
Умножение |
Целый, вещественный |
2 |
/ |
A/B |
Деление |
|
2 |
Div |
A div B |
Деление без остатка |
Целый |
2 |
Mod |
A mod B |
Остаток от деления |
|
3 |
+ |
A+B |
Сложение |
Целый, вещественный, строки |
3 |
- |
A-B |
Вычитание |
Целый, вещественный |
Окончание таблицы 2.3.1
Приоритет операции |
Символ |
Выражение |
Название операции |
Тип переменных |
Операции сравнения |
||||
4 |
= |
A=B |
Равно |
Целый, вещественный, логический, строки |
4 |
<> |
A<>B |
Не равно |
|
4 |
> |
A>B |
Больше |
|
4 |
< |
A<B |
Меньше |
|
4 |
>= |
A>=B |
Больше либо равно |
|
4 |
<= |
A<=B |
Меньше либо равно |
|
Специфические операции |
||||
1 |
@ |
@A |
Адрес |
Любой |
1 |
^ |
A^ |
Разыменование |
Указатель |
2 |
Chl |
A chl B |
Сдвиг влево |
Целый |
2 |
Shr |
A shr B |
Сдвиг вправо |
|
2 |
* |
A*B |
Пересечение |
Множество |
3 |
+ |
A+B |
Объединение |
|
3 |
- |
A-B |
Вычитание |
|
4 |
In |
A in B |
Вхождение в множество |
Элементы множества |
Для строк операция сложения выступает как конкатенация – присоединение второй строки к «хвосту» первой. Как правило, для большинства операций характерно неявное приведение типов, поэтому они являются в некотором роде универсальными.
Операции в языке Си более универсальны из-за отсутствия логических типов и упразднения типов строк и символов, однако и они имеют свои особенности. Список допустимых операций в Си приведен в таблице 2.3.2 [10]. В языке существует жесткая иерархия по приоритету выполнения операций, что позволяет более детально прорабатывать структуру программ. Также введено понятие ассоциативности – приоритет выполнения операций может быть как слева направо, так и справа налево. Большинство операций допустимы для всех типов, исключения составляют побитовые и логические операции, а так же операции деления без остатка и остаток от деления для вещественных типов. Особенностью языка Си является тернарный оператор условия (x?y;z), который представляет простейший условный переход.
Таблица 2.3.2 – Операции языка Си
Оператор |
Название |
Класс |
Приоритет |
Ассоциативность |
++/-- |
Инкремент, декремент |
Постфиксный |
16 |
Слева направо |
++/-- |
Инкремент, декремент |
Префиксный |
15 |
Справа налево |
~ |
Побитовое НЕ |
Унарный |
15 |
Справа налево |
! |
Логическое НЕ |
Унарный |
15 |
Справа налево |
- + |
Изменение знака, плюс |
Унарный |
15 |
Справа налево |
& |
Адрес |
Унарный |
15 |
Справа налево |
* |
Разыменование |
Унарный |
15 |
Справа налево |
(имя типа) |
Приведение типа |
Унарный |
14 |
Справа налево |
* / % |
Мультипликативные операции |
Бинарный |
13 |
Слева направо |
+ - |
Аддитивные операции |
Бинарные |
12 |
Слева направо |