Автоматное программирование
- 1 year ago
- 0
- 0
Опера́ция — конструкция в языках программирования , аналогичная по записи математическим операциям, то есть специальный способ записи некоторых действий.
Наиболее часто применяются арифметические, логические и строковые операции. В отличие от функций, операции часто являются базовыми элементами языка и обозначаются различными символами пунктуации, а не алфавитно-цифровыми; они имеют специальный инфиксный синтаксис и нестандартные правила передачи аргументов. Терминология, однако, несколько отличается от языка к языку.
Английское слово operator , соответствующее термину «операция» , иногда ошибочно переводят как «оператор». На самом деле (по историческим причинам) русский термин «оператор» обозначает то же, что и « инструкция » , которой соответствует английское statement . Путаница усугубилась тем, что в C присваивание и инкремент/декремент являются и операторами, и операциями.
Фактически, операция — это та же функция , но записываемая особым образом. По этой причине логично иметь возможность определять операции для произвольных типов таким же образом, как и методы — чтобы можно было работать с ними точно так же, как и с элементарными типами. Эта возможность называется « перегрузка операций » и присутствует в большинстве языков 4—5 поколений . В таких языках транслятор фактически подставляет вместо выполнения операции вызов соответствующей ей функции.
Операции делятся по количеству принимаемых аргументов на:
Поскольку операции аналогичны по записи алгебраическим выражениям , для них, как и для последних, существует 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++
|
увеличение на 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 : 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)
|
Побитовый сдвиг влево
|