Зарегистрируйтесь, чтобы продолжить обучение

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

На базовом уровне компьютеры оперируют только числами. Для сложения двух чисел в математике мы пишем, например, 3 + 4. В программировании — то же самое. В этом уроке разберем, как проводить арифметические операции в коде.

Арифметика в программировании

Рассмотрим пример программы, которая складывает два числа:

<?php

// Не забываем точку с запятой в конце, так как каждая строчка в коде — инструкция
3 + 4;

Арифметика в программировании практически не отличается от школьной. Инструкция 3 + 4; заставит интерпретатор сложить числа и узнать результат. Эта программа будет работать, но в ней нет смысла, потому что по сути мы не даем команду интерпретатору, мы просто говорим ему «смотри, сумма трех и четырех».

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

Нам нужно попросить интерпретатор сложить 3 + 4 и дать команду сделать что-то с результатом. Например, вывести его на экран:

<?php

// Снова не забываем точку с запятой в конце строчки
print_r(3 + 4); // => 7

Кроме сложения доступны следующие операции:

  • * — умножение
  • / — деление
  • - — вычитание
  • %остаток от деления
  • ** — возведение в степень

Эти знаки операций называют операторами. Поговорим о них подробнее.

Операторы

Знак операции, например, +, называют оператором. Операторы обычно представлены одним или несколькими символами, реже — словом. Обычно они соответствуют математическим операциям.

Операторы выполняют операции над определенными значениями, которые называются операндами.

Рассмотрим пример:

<?php

print_r(8 + 2);

Здесь + — это оператор, а числа 8 и 2 — это операнды.

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

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

Символы + и - используются не только как операторы. Когда речь идет про отрицательные числа, то знак минуса становится частью числа:

<?php

print_r(-3); // => -3

Выше пример применения унарной операции к числу 3. Оператор - перед тройкой говорит интерпретатору взять число 3 и найти противоположное, то есть -3. Это может сбить с толку, потому что -3 — это одновременно и число, и оператор с операндом. Но у языков программирования такая структура:

<?php

// То же самое, что и 4 - 3
print_r(4 + -3); // => 1

То же самое касается и плюса:

<?php

print_r(+3); // => 3
print_r(1 + +3); // => 4

Коммутативная операция

В программировании используется базовый закон арифметики: от перемены мест слагаемых сумма не меняется. Он называется коммутативным законом. Если поменять местами операнды в бинарной операции, и получится тот же результат, такая операция будет коммутативной. Получается, что сложение — коммутативная операция: 3 + 2 = 2 + 3.

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

Композиция операций

Разберем пример композиции операций:

<?php

print_r(2 * 4 * 5 * 10); // 2 * 4 * 5 * 10 = 8 * 5 * 10 = 40 * 10 => 400

Операции можно соединять друг с другом. Это дает возможность вычислять более сложные составные выражения. Такое свойство операций называется композицией.

Композиция арифметических операций в программировании аналогична композиции из школьной программы. Она распространяется на все операции, а не только на арифметические.

Чтобы представить, как происходят вычисления внутри интерпретатора, разберем пример: 2 * 4 * 5 * 10.

  1. Сначала вычисляется 2 * 4 и получается выражение 8 * 5 * 10
  2. Затем 8 * 5. В итоге имеем 40 * 10
  3. В конце происходит последнее умножение, и получается результат 400

Приоритет операций

В школьной математике есть понятие «приоритет операции». Приоритет определяет, в какой последовательности должны выполняться операции.

Допустим, нам нужно вычислить такое выражение: 2 + 2 * 2:

<?php

print_r(2 + 2 * 2); // => 6

Интерпретатор производит арифметические вычисления в правильном порядке: сначала деление и умножение, потом сложение и вычитание, а приоритет возведения в степень выше всех остальных арифметических операций: 2 ** 3 * 2 вычислится в 16.

Иногда вычисления должны происходить в другом порядке. В этом случае приоритет задают круглыми скобками, например: (2 + 2) * 2. Скобки можно ставить вокруг любой операции. Они могут вкладываться друг в друга сколько угодно раз. Вот пара примеров:

<?php

print_r(3 ** (4 - 2)); // => 9
print_r(7 * 3 + (4 / 2) - (8 + (2 - 1))); // => 14

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

Сейчас большинство редакторов кода делают это автоматически. Например, мы ставим открывающую скобку, а он автоматически ставит закрывающую. Это касается и других парных символов, например, кавычек. О них — в будущих уроках.

Иногда выражение сложно воспринимать визуально. Тогда можно расставить скобки, не повлияв на приоритет. Код пишется для людей, а машины будут только исполнять его. Для машин код — или корректный, или не корректный. Для них нет «более» понятного или «менее» понятного кода. Явная расстановка приоритетов упрощает чтение кода другими разработчиками.


Дополнительные материалы

  1. Операторы в PHP

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы
профессия
Программирование на PHP, Разработка веб-приложений и сервисов используя Laravel, проектирование и реализация REST API
10 месяцев
с нуля
Старт 26 декабря

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»