Interested Article - Операция (программирование)

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

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

Операция и инструкция

Английское слово operator , соответствующее термину «операция» , иногда ошибочно переводят как «оператор». На самом деле (по историческим причинам) русский термин «оператор» обозначает то же, что и « инструкция » , которой соответствует английское statement . Путаница усугубилась тем, что в 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 года.
Источник —

Same as Операция (программирование)