7. Операции

7. Операции

 

“Неверная операция приносит двойной вред: ошибку в программу и головную боль программисту.”
 Учебник “Азбука программирования”

Что такое операция

Из курса математики мы знаем, что существуют различные операции: сложения, вычитания, умножения, деления и т.п.

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

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

Например, при сложении двух положительных чисел мы должны получить положительное число, большее, чем любое из исходных. Например:

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, потому что сначала будет выполнено сложение, а потом – умножение.

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

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

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

  1. Взять первую числовую константу.
  2. Взять вторую числовую константу.
  3. Выполнить сложение двух чисел, заданных этими константами.
  4. Запомнить результат, возвращенный операцией сложения.
  5. Передать результат сложения в качестве параметра команде вывода на экран.
  6. Выполнить вывод на экран результата операции сложения.

Теперь можно посмотреть примеры этой команды на различных языках программирования:

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 – исключающее “ИЛИ”.

Логические операции в некоторых языках также могут быть побитовыми:

  • & – побитовое “И”
  • | – побитовое “ИЛИ”
  • ^ – побитовое исключающее “ИЛИ”
  • << – побитовый сдвиг влево
  • >> – побитовый сдвиг вправо
  • ~ – побитовое “НЕ”

Неарифметические операции тоже имеют свои ранги. Практически в каждом языке программирования есть своя иерархия рангов операций.

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

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

Итак:

  1. Кроме констант, которые содержат неизменяемую информацию, в языках программирования существуют операции, позволяющие обрабатывать (измнять) эту информацию.
  2. Для выполнения каких-либо действий над различными данными можно использовать различные операции.
  3. В результате выполнения каждой операции “появляются” новые данные – результат выполнения этой операции.
  4. Новые данные называются “возвращаемыми”. Говорят что операция возвращает результат.
  5. Везде в тексте программы, где может быть записана константа, может быть записана и операция, возвращающая значение соответствующего типа.
  6. Операции могут быть сколь угодно сложными.
  7. Операции выполняются либо слева направо, либо в соответствии с рангом (старшинством) операций.
  8. При записи сложных операций можно использовать скобки, которые могут менять порядок выполнения операций.

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


  8. Понятие переменной. Присваивание →


Оглавление


Поделиться: 

Мы используем cookie-файлы для наилучшего представления нашего сайта. Продолжая использовать rubasic.ru, вы соглашаетесь на использование файлов cookie.
Понятно