Операция (программирование)
Опера́ция — конструкция в языках программирования, аналогичная по записи математическим операциям, то есть специальный способ записи некоторых действий. Наиболее часто применяются арифметические, логические и строковые операции. В отличие от функций, операции часто являются базовыми элементами языка и обозначаются различными символами пунктуации, а не алфавитно-цифровыми; они имеют специальный инфиксный синтаксис и нестандартные правила передачи аргументов. Терминология, однако, несколько отличается от языка к языку.
Операция и инструкция
Английское слово operator, соответствующее термину «операция», иногда ошибочно переводят как «оператор». На самом деле (по историческим причинам) русский термин «оператор» обозначает то же, что и «инструкция», которой соответствует английское statement [1] . Путаница усугубилась тем, что в C присваивание и инкремент/декремент являются и операторами, и операциями.
Операция и функция
Фактически, операция — это та же функция, но записываемая особым образом. По этой причине логично иметь возможность определять операции для произвольных типов таким же образом, как и методы — чтобы можно было работать с ними точно так же, как и с элементарными типами. Эта возможность называется «перегрузка операций» и присутствует в большинстве языков 4—5 поколений. В таких языках транслятор, фактически, подставляет вместо выполнения операции вызов соответствующей ей функции.
Типы операций
Операции делятся по количеству принимаемых аргументов на:
- унарные — один аргумент (отрицание, унарный минус)
- бинарные — два аргумента (сложение, вычитание, умножение и т.д.)
- тернарные — три аргумента («условие ? выражение1 : выражение2»)
Синтаксис операций
Поскольку операции аналогичны по записи алгебраическим выражениям, для них, как и для последних, существует 3 варианта синтаксиса:
- префиксная (польская) (+ab) нотация;
- инфиксная (a+b) нотация;
- постфиксная (обратная польская) (ab+) нотация;
Для бинарных и тернарных (с 3 операндами) операций в подавляющем большинстве случаев используют инфиксную нотацию — по той простой причине, что она принята в математике и наиболее привычна большинству людей. Для унарных операций инфиксной нотации не существует, и, как правило, используется префиксная.
Список типовых операций
Операции обычно переходят из языков в родственные — например, операции языка С присутствуют в языках C++, Java, JavaScript и многих других.
Оператор | Выполняемая операция | Языки программирования |
---|---|---|
a = b или a := b | присваивание | практически все |
Арифметические | ||
a + b | сложение аргументов | практически все |
a — b | вычитание | практически все |
-a | изменение знака | практически все |
a / b , a div b | деление | практически все |
a % b , a mod b | деление по модулю | С, Java, PHP, Pascal |
a++ a— |
увеличение на 1 с присваиванием (инкремент) уменьшение на 1 с присваиванием (декремент) |
С, Java, PHP |
a ^ b или a ** b | возведение в степень | BASIC, Fortran, Ruby |
Логические | ||
a & b , или a && b , или a and b | И | практически все |
a | b , или a || b , или a or b | ИЛИ | |
~a , или !a , или not a | НЕ | |
a = b или a == b |
проверка на неравенство
меньше, меньше или равно
См. также
- Логическое выражение
- Операнд
Информация должна быть проверяема, иначе она может быть поставлена под сомнение и удалена.
Вы можете отредактировать эту статью, добавив ссылки на авторитетные источники.
Эта отметка установлена 14 мая 2011.
Ссылки
- ↑Перевод компьютерных терминов. Часть 1. Процессор
Операции
Операция — конструкция в языках программирования, аналогичная по записи математическим операциям, то есть специальный способ записи некоторых действий. Наиболее часто применяются арифметические, логические и строковые операции. В отличие от функций, операции часто являются базовыми элементами языка и обозначаются различными символами пунктуации, а не алфавитно-цифровыми. Они имеют специальный инфиксный синтаксис и нестандартные правила передачи аргументов.
Минутка юмора
Приходит программист к пианисту посмотреть на новый рояль. Долго ходит вокруг, хмыкает, потом заявляет: Клавиатура неудобная: всего 84 клавиши, половина функциональных, ни одна не подписана, хотя. shift нажимать ногой — это оригинально!
Самое интересное
- Log – натуральный логарифм
- ShellExecute – открыть папку или приложение
- Pow – возведение числа в степени
- Chart – графики и диаграммы
- StringGrid – таблица строк и столбцов
Операции
Арифметические операции и присваивание
Следует различать термины «операция» (выполняемое действие) и «оператор» (обозначение для операции). Во-первых, в разных языках программирования для одной и той же операции могут применяться разные обозначения, например, деление нацело в Python обозначается «//«, а в Pascal — «div«. Во-вторых, одно обозначение может использоваться для разных операций в зависимости от типа аргументов, например, в С++ «<<`` может означать операцию сдвига битов для целых чисел или операцию вывода для потоков ввода-вывода. В С такая неоднозначность только одна: символ ``/`` может обозначать обычное деление или деление нацело, если оба аргумента операции -- целые числа.
Операция присваивания позволяет поместить в переменную новое значение. При необходимости происходит преобразование, при помещении вещественного значения в целую переменную отбрасывается дробная часть, а также возможно переполнение, обработка которого зависит от настроек компилятора.
«`c
int a; // a=?
a=5; // a=5
a=7.5; // a=7
a=1e10; // переполнение a=INT_MAX
«`
Можно присвоить значение нескольким переменным:
«`c
int a,b,c;
a=b=c=1; // a=1, b=1, c=1
double x;
x=a=7.5; // эквивалентно a=7.5; x=a;
«`
Для выполнения арифметических действий используются операции «x+y«, «x-y«, «x*y« и «x/y«. Операции умножения и деления имеют более высокий приоритет, чем сложение и вычитание, при необходимости используются скобки. Арифметические операции выполняются слева направо. Для смены знака используется операция «-x«.
Тип результата арифметической операции определяется максимумом из размеров аргументов, поэтому при вычислениях с целыми возможно переполнение. Если один из аргументов имеет вещественный тип, то второй аргумент тоже преобразуется к вещественному типу.
«`c
double a;
a = 2+2*2; // a=6
a = -a; // a=-6
a=10000*1000000; // переполнение a=1410065408
a=10000.0*1000000; // a=1e10
«`
Если оба аргумента операции «x/y« являются целыми, то выполняется деление нацело. Для выполнения обычного деления один из аргументов операции нужно преобразовать в вещественное. Для этого нужно использовать операцию преобразования: «(тип)e«.
Для нахождения остатка от деления используются операция «x%y«, оба аргумента операции должны иметь целый тип.
Часто при выполнении вычислений требуется выполнить одно арифметическое действие на переменной и результат вычислений поместить в ту же переменную. Для этого в языке С были добавлены специальные операции «x+=y«, «x-=y«, «x*=y«, «x/=y« и «x%=y«.
«`c
int a=5;
a+=6; // эквивалентно a=a+6; результат a=11
a*=a+1; // эквивалентно a=a*(a+1); результат a=132
«`
Пи выполнении циклов часто нужно изменять значение переменной на 1. Для этих целей в С используются операции «++x« (инкремент) и «—x« (декремент).
«`
int a=1;
++a; // эквивалентно a+=1; результат a=2
—a; // эквивалентно a-=1; результат a=1
«`
Кроме префиксной формы инкремента и декремента в С иногда используется постфиксные формы этих операций: «x++« и «x—«. Отличаются они возвращаемым значением, результатом постфиксной формы является значение изменяемой переменной до изменения.
«`
int a, b=1;
a=++b; // результат a=2, b=2
// эквивалентно оператору a=(b=b+1);
a=b++; // результат a=2, b=3
// эквивалентно операторам int temp=b; b=b+1; a=temp;
«`
Порядок вычисления аргументов большинства бинарных операций в языке С определяется компилятором и может зависеть от его настроек. Поэтому не рекомендуется использовать в одном выражении несколько операций, изменяющих одну и ту же переменную, например «++i — ++i«.
Операцию присваивания можно использовать внутри выражения, чтобы запомнить промежуточные результаты. С помощью операции «x,y« можно сделать несколько последовательных вычислений, сначала вычисляется левый аргумент операции, затем правый и его значение является результатом этой операции.
Этой операцией лучше не злоупотреблять, так как программа становится менее понятной, и невозможно при отладке посмотреть промежуточные результаты вычислений, так как шагом отладки является выполнение одного оператора программы.
Операция (программирование)
Опера́ция — конструкция в языках программирования, аналогичная по записи математическим операциям, то есть специальный способ записи некоторых действий.
Наиболее часто применяются арифметические, логические и строковые операции. В отличие от функций, операции часто являются базовыми элементами языка и обозначаются различными символами пунктуации, а не алфавитно-цифровыми; они имеют специальный инфиксный синтаксис и нестандартные правила передачи аргументов. Терминология, однако, несколько отличается от языка к языку.
Oops something went wrong: