Меню
Главная
Случайная статья
Настройки
|
Операция — конструкция в языках программирования, аналогичная по записи математическим операциям, то есть специальный способ записи некоторых действий.
Наиболее часто применяются арифметические, логические и строковые операции. В отличие от функций, операции часто являются базовыми элементами языка и обозначаются различными символами пунктуации, а не алфавитно-цифровыми; они имеют специальный инфиксный синтаксис и нестандартные правила передачи аргументов. Терминология, однако, несколько отличается от языка к языку.
Содержание
Операция и инструкция
Английское слово operator, соответствующее термину «операция», иногда ошибочно переводят как «оператор». На самом деле (по историческим причинам) русский термин «оператор» обозначает то же, что и «инструкция», которой соответствует английское statement[1]. Путаница усугубилась тем, что в C присваивание и инкремент/декремент являются и операторами, и операциями.
Операция и функция
Фактически, операция — это та же функция, но записываемая особым образом. По этой причине логично иметь возможность определять операции для произвольных типов таким же образом, как и методы — чтобы можно было работать с ними точно так же, как и с элементарными типами. Эта возможность называется «перегрузка операций» и присутствует в большинстве языков 4—5 поколений. В таких языках транслятор фактически подставляет вместо выполнения операции вызов соответствующей ей функции.
Типы операций
Операции делятся по количеству принимаемых аргументов на:
- унарные — один аргумент (отрицание, унарный минус);
- бинарные — два аргумента (сложение, вычитание, умножение и т. д.);
- тернарные — три аргумента («условие ? выражение1 : выражение2»).
Синтаксис операций
Поскольку операции аналогичны по записи алгебраическим выражениям, для них, как и для последних, существует 3 варианта синтаксиса:
Для бинарных и тернарных (с 3 операндами) операций в подавляющем большинстве случаев используют инфиксную нотацию — по той простой причине, что она принята в математике и наиболее привычна большинству людей. Для унарных операций инфиксной нотации не существует, и, как правило, используется префиксная.
Список типовых операций
Операции обычно переходят из языков в родственные — например, операции языка С присутствуют в языках C++, Java, JavaScript и многих других.
Знак
|
Выполняемая операция
|
Языки программирования
|
a = b или a := b
|
присваивание
|
практически все
|
Арифметические
|
a + b
|
сложение аргументов
|
практически все
|
a - b
|
вычитание
|
практически все
|
-a
|
изменение знака
|
практически все
|
a / b , a div b
|
деление
|
практически все
|
a % b , a mod b
|
остаток от деления (деление по модулю)
|
практически все
|
a++ a--
|
увеличение на 1 с присваиванием (инкремент) уменьшение на 1 с присваиванием (декремент)
|
С, Java, PHP
|
a ^ b или a ^^ b или a ** b
|
возведение в степень
|
BASIC, Fortran, Ruby, Python, Haskell (все 3)
|
Логические
|
a & b , или a && b , или a and b
|
конъюнкция (логическое умножение)
|
практически все
|
a | b , или a || b , или a or b
|
дизъюнкция (логическое сложение)
|
~a , или !a , или not a
|
инверсия (логическое отрицание)
|
a = b или a == b
a <> b или a /= b или a != b
|
проверка на равенство
проверка на неравенство
|
a > b , a >= b
a < b , a <= b
|
больше, больше или равно
меньше, меньше или равно
|
a ? b : c
|
тернарная условная операция (если условие a истинно, всё выражение равно b, иначе c)
|
С, C++, Java, PHP
|
Строковые
|
a + b или a & b или a.b (PHP) или a..b (Lua) или a ++ b (Haskell)
|
конкатенация (слияние)
|
практически все
|
Битовые
|
a & b, a and b (Pascal, Kotlin), a /\ b (Prolog), a .&. b (Haskell)
|
Побитовая конъюнкция
|
C/C++, Java, C#, Ruby, Python, Pascal, Kotlin, Prolog, Haskell
|
a | b, a or b (Pascal, Kotlin), a \/ b (Prolog), a .|. (Haskell)
|
Побитовая дизъюнкция
|
~a, not a (Pascal), inv a (Kotlin), \a (Prolog)
|
Побитовое отрицание
|
C/C++, Java, C#, Ruby, Python, Pascal, Kotlin, Prolog
|
a ^ b, xor (Pascal, Kotlin)
|
Исключающее ИЛИ
|
C/C++, Java, C#, Ruby, Python, Pascal, Kotlin
|
a << b, a shl b (Pascal, Kotlin)
a >> b, a shr b (Pascal, Kotlin)
|
Побитовый сдвиг влево
Побитовый сдвиг вправо
|
См. также
Примечания
- Перевод компьютерных терминов. Часть 1. Процессор (неопр.). Дата обращения: 7 декабря 2010. Архивировано 23 сентября 2013 года.
|
|