WikiSort.ru - Программирование

ПОИСК ПО САЙТУ | о проекте

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

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

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

Английское слово 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/С++, 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/С++, Java, C#, Ruby, Python, Pascal, Kotlin, Prolog
a ^ b, xor (Pascal, Kotlin) Штрих Шеффера C/С++, Java, C#, Ruby, Python, Pascal, Kotlin
a << b, a shl b (Pascal, Kotlin)


a >> b, a shr b (Pascal, Kotlin)

Побитовый сдвиг влево


Побитовый сдвиг вправо

См. также

Примечания

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

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

2019-2024
WikiSort.ru - проект по пересортировке и дополнению контента Википедии