“Неверная операция приносит двойной вред: ошибку в программу и головную боль программисту.”
Учебник “Азбука программирования”
Что такое операция
Из курса математики мы знаем, что существуют различные операции: сложения, вычитания, умножения, деления и т.п.
Операция – это запись какого-то действия над исходными данными, в результате которого эти данные как-то преобразуются в результат операции. В математике исходные данные любой операции это числа или математические переменные.
Каждая математическая операция получает какие-то данные, производит соответствующие действия с этими данными и возвращает нам значение, получившееся в результате выполнения этих действий. При этом каждая операция сама по себе однозначно определяет, какие именно действия будут выполнены с данными и какого типа результат может получиться.
Например, при сложении двух положительных чисел мы должны получить положительное число, большее, чем любое из исходных. Например:
2 + 3 = 5
Здесь + – знак операции, обозначающий операцию сложения
2 и 3 – исходные данные операции
= – знак, обозначающий, что за ним последует результат операции
5 – сам результат операции
Точно так же возможна ситуация, когда операнд в операции только один, например:
– 7 – получение числа, противоположного исходному (изменение знака числа),
| -4 | – получение модуля числа.
также это может быть взятие корня, факториал и т.п. Количество операндов может быть любым – один или больше.
Теперь ответьте на вопрос: чему разно значение данной операции:
3 + 7
Разумеется, 10.
И это нам понятно даже без записи знака “=” и результата в виде числа.
Точно так же любая операция с какими-то конкретными данными в математике всегда может быть отождествлена со своим результатом, который однозначно зависит от исходных данных и самой операции.
Таким образом, нам совершенно все равно, как записать какое-либо конкретное число, например 7, если мы хотим чтобы оно было результатом операции:
так: 10 – 3
или так: 4 + 3
или вот так: 49 / 7
С точки зрения получающегося в итоге результата все эти операции одинаковы – они все дают один и тот же результат, равный 7. При этом, разумеется, что вот так:
3 * 5
Мы никогда не получим 7.
Можно записать любое сколь угодно сложное арифметическое выражение, содержащее в себе много различных операций, но в итоге их выполнения мы все равно получим только одно конкретное число:
( 3 + 5 ) * 4 – 7
Здесь результат всего выражения будет равен 25. То есть, в принципе, всю эту запись можно заменить одним числом 25, и только им. Ничего другого получиться в данном случае просто не может.
Те данные, с которыми выполняется операция в математике называют операндами. А то, что получается в результате – результатом операции.
Таким образом, у любой операции в математике, и не только в математике, есть простой, но очень удобный и эффективный интерфейс:
- Вход – операнды (данные для выполнения) операции;
- Выход – результат выполнения операции.
В зависимости от типа операции она может быть проведена с различным количеством параметров: от 1 до любого произвольного числа. Например, операция сложения требует только двух операндов – двух слагаемых, а операции взятия факториала – только одного.
Но если у нас есть, например, операция поиска максимального числа или операция подсчета суммы чисел, то этой операции мы в принципе можем передать произвольное число параметров, большее 2: и 3, и 5, и даже 1000 параметров (все зависит только от того, как у данной операции сделан интерфейс), которые она будет складывать, или среди которых она будет искать самое большое число.
Операции в программировании
На прошлых занятиях мы познакомились с такими элементами языков программирования как команды вывода и комментарии. Кроме различных команд и комментариев многие языки программирования также используют различные операции. Операции тоже можно считать командами, просто с точки зрения нашего восприятия и записи они выглядят иногда несколько проще чем команды. По большому счёту всё это – команды для того чтобы процессор что-то сделал.
Операция в программировании – это действие или команда выполнить какое-то действие, как правило, над переданными этой операции данными (операндами или параметрами).
В результате выполнения операции всегда получаются новые данные, которые после выполнения операции возвращаются в то место в программе, где было обращение к этой операции. То есть вместо выполненной операции появляются какие-то данные, как правило, только одна единица данных – одно значение, полученное в результате выполнения операции. Говорят, что операция “возвращает” это значение.
В отличие от операций, команды в программировании могут не иметь параметров и обычно ничего не возвращают, а операции всегда нуждаются в параметрах и почти всегда возвращают какой-то результат. Этот результат принято называть “возвращаемым значением”.
В первую очередь в программировании используются обычные математические операции, которые могут расширяться и дополняться другими, более сложными операциями – в зависимости от языка программирования. Это очень удобно: например, нам не нужно самим вычислять какие-либо математические выражения – программа всегда может сделать это за нас.
Типы операций
Давайте начнем со стандартных арифметических операций, которые присутствуют во всех языках программирования:
- + — сложение,
- – — вычитание,
- * — умножение,
- / — деление,
которые почти во всех языках программирования записываются абсолютно так же, как в математике:
2 + 3
7 – 5
100 * 2
50 / 4.5
Порядок выполнения операций, как правило, всегда слева направо, с учетом старшинства (или ранга) операций – так же как в математике.
3 + 4 – 5
Здесь сначала будет выполнено сложение, а потом – вычитание. В результате получится 2.
Операции сами могут выступать в качестве операндов для других операций. Фактически результатом выполнения операции является значение, которое также можно использовать в другой операции. Здесь сначала операция сложения возвращает число 7, а затем из него уже вычитается число 5.
2 + 3 * 5
Итоговый результат всей операции будет равен 17, так как первой по старшинству будет выполнена операция умножения, а затем – операция сложения – со значением, возвращенным операцией умножения.
Точно так же как в математике, операции в программировании допускают использование скобок. Скобки используют для того, чтобы обозначить, что все, заключенное в скобки имеет более высокий приоритет, чем то, что снаружи скобок. Правда, в программировании скобки используются более широко, однако, во всех возможных операциях (именно операциях) скобки означают то же, что и в математике – то, что заключено в скобки, имеет более высокий приоритет и выполняется в первую очередь.
( 2 + 3 ) * 5
Здесь результат всей операции будет равен 25, потому что сначала будет выполнено сложение, а потом – умножение.
Так как скобки могут быть вложенными, то в данном случае самый высокий приоритет будет у операций, записанных в самых внутренних скобках.
Нетрудно заметить, что так как любая операция может быть фактически заменена её результатом, то на месте любой константы в командах языка программирования может стоять операция, возвращающая значение подходящего типа.
Давайте рассмотрим, например, как выполняется команда вывода на экран результата операции сложения двух чисел. То, что написано в одну строку, на самом деле представляет собой последовательность команд которую мы можем записать в виде алгоритма:
- Взять первую числовую константу.
- Взять вторую числовую константу.
- Выполнить сложение двух чисел, заданных этими константами.
- Запомнить результат, возвращенный операцией сложения.
- Передать результат сложения в качестве параметра команде вывода на экран.
- Выполнить вывод на экран результата операции сложения.
Теперь можно посмотреть примеры этой команды на различных языках программирования:
RUbasic
Консоль.ПечатьСтроки(153 + 112)
MS Small Basiс
TextWindow.WriteLine(153 + 112)
С++
std::cout << 153 + 112 << std::endl;
C#
Console.WriteLine(153 + 112);
Java
System.out.println(153 + 112);
Java Script
console.log(153 + 112);
PHP
echo 153 + 112;
Python
print(153 + 112)
Обратите внимание, мы с вами сейчас поняли, как заставить компьютер считать и выводить результаты вычислений на экран. Это пока немного, но всё начинается с малого.
Кроме четырех, описанных выше, стандартных арифметических операций некоторые языки программирования используют также следующие арифметические операции:
- % — получение остатка от деления (при целочисленном делении),
- ^ или ** – возведение в степень.
Также, кроме арифметических операций некоторые современные языки программирования имеют в своём арсенале простейшие операции для работы с текстовыми строками:
- + – “склейка” (конкатенация) двух строк (в результате получается одна строка, в начале которой идет первая строка, а в конце – вторая),
- * – умножение строки на целое число (в результате получается одна строка, состоящая из повторенной исходной строки).
Ещё во многих языках программирования присутствуют операции сравнения:
- = или == – равно,
- != или <> – не равно,
- > – больше,
- >= – больше или равно,
- < – меньше,
- <= – меньше или равно.
Каждая из этих операций осуществляет сравнение значений двух своих параметров и возвращает значение, подтвержающее истинность или ложность данного сравнения.Фактически, производится проверка, верно или не верно то, что означает данная операция сравнения для её параметров.
Также существуют логические операции, позволяющие оперировать с логическими значениями типа “истина” или “ложь” по законал булевой алгебры:
- && или AND – логическое “И”,
- || или OR – логическое “ИЛИ”,
- ! или NOT – логическое “НЕ”,
- XOR – исключающее “ИЛИ”.
Логические операции в некоторых языках также могут быть побитовыми:
- & – побитовое “И”
- | – побитовое “ИЛИ”
- ^ – побитовое исключающее “ИЛИ”
- << – побитовый сдвиг влево
- >> – побитовый сдвиг вправо
- ~ – побитовое “НЕ”
Неарифметические операции тоже имеют свои ранги. Практически в каждом языке программирования есть своя иерархия рангов операций.
Разумеется, мы рассмотрели здесь только основные группы операций, похожие для большинства языков программирования. На самом деле, каждый язык программирования в соответствии со своими особенностями имеет свой набор различных операций. Подобная информация всегда есть в справочниках по конкретному языку программирования или в соответствующих учебных курсах.
Следует иметь ввиду, что в различных языках программирования существуют различные механизмы для выполнения одинаковых действий, это связано, в первую очередь, с особенностями области применения каждого конкретного языка программирования. Кроме того, в программировании, как и в математике, один и тот же результат может быть получен различными способами.
Итак:
- Кроме констант, которые содержат неизменяемую информацию, в языках программирования существуют операции, позволяющие обрабатывать (измнять) эту информацию.
- Для выполнения каких-либо действий над различными данными можно использовать различные операции.
- В результате выполнения каждой операции “появляются” новые данные – результат выполнения этой операции.
- Новые данные называются “возвращаемыми”. Говорят что операция возвращает результат.
- Везде в тексте программы, где может быть записана константа, может быть записана и операция, возвращающая значение соответствующего типа.
- Операции могут быть сколь угодно сложными.
- Операции выполняются либо слева направо, либо в соответствии с рангом (старшинством) операций.
- При записи сложных операций можно использовать скобки, которые могут менять порядок выполнения операций.
Кроме вышеперечисленных операций, важнейшей операцией в программировании является присваивание. Присваивание – это процесс записи данных в отведенное место в памяти компьютера. Следует однако заметить,что присваивание – далеко не во всех языках программирования является операцией, чаще это – просто команда. Но об этом мы поговорим уже на следующем занятии. Также на следующем занятии мы познакомимся с одним из очень удобных и эффективных элементов языков программирования, который, в отличие от констант, позволяет хранить изменяющиеся данные.
Поделиться: