Арифметические операции и их приоритет (PascalABC.NET)

Материал из Информационная безопасностя
Перейти к навигации Перейти к поиску

Арифметические операции

Числовые литералы и переменные в арифметическом выражении могут связываться между собой при помощи знаков арифметических операций. При этом образуются конструкции вида:

A ЗнакОперации В
ЗнакОперации В

Здесь A и B называются операндами, а знак операции принято называть операцией. Если операция используется с двумя операндами, она называется бинарной. Существуют также операции с одним операндом, называемые унарными. Есть также операция с тремя операндами, она называется тернарной, но в PascalABC.NET используется термин условная операция.

К бинарным арифметическим операциям относятся сложение, вычитание, умножение, деление, возведение в степень, деление нацело и получение остатка от целочисленного деления. Арифметическая унарная операция фактически одна – изменение знака числа, для чего перед операндом указывается знак минус. Может быть также указан и плюс, но он не выполняет никаких действий. Рассмотрим пример.

1 ##
2 var (a, b) := (30, 8);
3 var c := a + b;
4 var d := c * a + 2 * b;
5 var (e, f) := (a div b, a mod b);
6 var g := -e + f;
7 Print(a, b, c, d, e, f, g)

Приоритет арифметических операций

Когда мы вычисляли значение выражения c * a + 2 * b, то не задумываясь нашли значений произведений c * a и 2 * b, а только затем их сложили между собой. Почему так? Ведь если последовательно выполнить эти операции на калькуляторе, результат будет совсем иным. Дело в том, что мы еще в начальной школе усвоили правило арифметики: умножение делается раньше сложения. Чтобы не путаться во множестве правил, в программировании введено понятие приоритета операций.

Приоритет операции – это некоторое целое число. Чем оно меньше, тем приоритет выше, тем раньше выполняется операция. Операции, имеющие одинаковый приоритет, выполняются в естественном порядке следования, слева направо. Для изменения порядка выполнения операций служат круглые скобки, имеющие наивысший приоритет. Знание приоритета операций позволяет избежать нагромождений из скобок и обеспечить правильный порядок выполнения операций.

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

  • унарные операции + и – , и операция возведения в степень ** имеют приоритет 1;
  • операции *, /, div, mod имеют приоритет 2;
  • бинарные операции + и – имеют приоритет 3.

Если приоритет нескольких подряд идущих операций одинаков, они выполняются в порядке слева направо. Об этом часто забывают.