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

Общее представление

Арифметический оператор - символ или сочетание символов в языке программирования и математике, которое задаёт элементарную арифметическую операцию над одним или несколькими операндами.

В школьной информатике под арифметическими операторами обычно понимают операции сложения, вычитания, умножения и деления, а также операции целочисленного деления и остатка от деления. Примеры обыкновенных вычислений выглядят как 2+22 + 2 или более общая запись a+ba + b.

Операторы бывают бинарными — когда требуется два операнда (например, a+ba + b или aba - b), и унарными — когда только один операнд (например, a-a). Знание семантики каждого оператора важно для написания корректных алгоритмов и программ.

Основные арифметические операторы

Сложение - операция объединения величин, дающая суммарное значение.

Операция сложения в общем виде записывается как a+ba + b, где a и b — числовые значения или выражения. На практике часто встречается простая числовая иллюстрация: 2+22 + 2.

Вычитание - операция нахождения разности между двумя величинами.

Вычитание записывают как aba - b. Эта операция используется для уменьшения величины, сравнения разностей и при вычислении приращений в задачах информатики.

Умножение и деление

Умножение - операция повторного сложения одного числа указанное число раз.

Умножение обозначается как a×ba \times b. Оно играет фундаментальную роль при вычислениях площадей, масштабировании и при работе с массивами чисел.

Деление - операция распределения одной величины на равные части.

Обычное (вещественное) деление записывают как ab\dfrac{a}{b}. В разных языках программирования один и тот же оператор может возвращать вещественный результат или, при целочисленном делении, отбрасывать дробную часть.

Остаток от деления и целочисленное деление

Оператор остатка (модуль) - вычисляет остаток от деления одного целого числа на другое.

Оператор остатка часто обозначают как amodba \bmod b. Он полезен для проверки чётности (деление на 2), циклических операций и работы с индексами в структуре данных по модулю размера.

Целочисленное деление - операция деления с усечением дробной части (обычно к целой части вниз).

Целочисленное деление можно записать формально как ab\left\lfloor \dfrac{a}{b} \right\rfloor. В разных языках оно может реализовываться по-разному (округление вниз, округление к нулю), поэтому важно знать семантику конкретного языка.

Унарные операторы и инкремент/декремент

К унарным операторам относятся операции вроде отрицания числа a-a, а также операторы увеличения и уменьшения на единицу. В языках низкого уровня и C-подобных есть формы инкремента и декремента с префиксной и постфиксной семантикой: постфиксная запись i++i++ и префиксная ++i++i.

Семантика префиксных и постфиксных форм отличается: ++i++i сначала увеличивает значение переменной, а затем возвращает новое значение; i++i++ возвращает старое значение, а затем увеличивает переменную. Эквивалентная более явная запись инкремента — i=i+1i = i + 1.

Пример: если i равно 1, то операция i++i++ возвращает 1, но после неё i станет равным 2; операция ++i++i вернёт 2 сразу.

Приоритет операций и скобки

При записи сложных выражений важно учитывать приоритет (преимущество) операций и ассоциативность. Как правило, умножение и деление выполняются раньше сложения и вычитания. Например запись 2+3×42 + 3 \times 4 выполняется как умножение перед сложением.

Если нужно изменить естественный порядок вычислений, используют скобки. В выражении (a+b)×c\left(a + b\right) \times c сначала выполняется сложение в скобках, затем результат умножается на c.

Различие видно на примере: 2+3×42 + 3 \times 4 даёт другой результат, чем скобочная форма (a+b)×c\left(a + b\right) \times c при тех же числах.

Модуль и примеры целочисленных операций

Оператор взятия остатка полезен в задачах, где нужно определить остаток от деления целого числа. Например, вычисление 17mod517 \bmod 5 даст остаток, равный 22.

Если при делении возникает нулевой делитель, то вычисление не имеет смысла и ведёт к ошибке. В формальной записи проблема выглядит так: если выполняется деление с условием b=0b = 0, то нужна проверка перед вычислением, иначе программа выдаст ошибку времени выполнения.

Пример вещественного и целочисленного деления: 52\dfrac{5}{2} — вещественный результат, в то время как целочисленное деление даст 52\left\lfloor \dfrac{5}{2} \right\rfloor и остаток 5mod25 \bmod 2.

Составные операторы присваивания

Для удобства многие языки поддерживают составные операторы присваивания, которые объединяют арифметическую операцию с присваиванием. Например, операция x+=1x += 1 эквивалентна более явной записи x=x+1x = x + 1.

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

Возведение в степень и дополнительные операции

Хотя возведение в степень иногда рассматривается отдельно, его тоже удобно понимать как арифметическую операцию: например квадрат числа записывают как a2a^{2}. Эта операция чаще всего реализуется специальными функциями или операторами в конкретных языках.

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

Практические советы и ошибки

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

Следите за порядком вычислений и используйте скобки там, где это делает код понятнее. Для наглядности в учебных задачах полезно сопровождать вычисления комментариями или промежуточными шагами, а там, где требуется визуализация, можно вставлять рисунок или диаграмму {IMAGE_0}.