Учебники

Паскаль — Операторы

Оператор — это символ, который указывает компилятору выполнять определенные математические или логические манипуляции. Паскаль допускает следующие типы операторов —

  • Арифметические операторы
  • Реляционные операторы
  • Булевы операторы
  • Битовые операторы
  • Операторы множества
  • Строковые операторы

Давайте обсудим один за другим арифметические, реляционные, булевы и битовые операторы. Мы обсудим операторы множеств и строковые операции позже.

Арифметические Операторы

В следующей таблице приведены все арифметические операторы, поддерживаемые Паскалем. Предположим, что переменная A содержит 10, а переменная B содержит 20, тогда —

Показать примеры

оператор Описание пример
+ Добавляет два операнда А + Б даст 30
Вычитает второй операнд из первого A — B даст -10
* Умножает оба операнда А * Б даст 200
/ Делит числитель на знаменатель Б / у даст 2
% Оператор модуля и остаток от целочисленного деления B% A даст 0

Операторы отношений

Следующая таблица показывает все реляционные операторы, поддерживаемые Pascal. Предположим, что переменная A содержит 10, а переменная B содержит 20, тогда —

Показать примеры

оператор Описание пример
знак равно Проверяет, равны ли значения двух операндов или нет, если да, то условие становится истинным. (A = B) не соответствует действительности.
<> Проверяет, равны ли значения двух операндов или нет, если значения не равны, тогда условие становится истинным. (A <> B) верно.
> Проверяет, больше ли значение левого операнда, чем значение правого операнда, если да, то условие становится истинным. (A> B) не соответствует действительности.
< Проверяет, меньше ли значение левого операнда, чем значение правого операнда, если да, то условие становится истинным. (A <B) верно.
> = Проверяет, больше ли значение левого операнда или равно значению правого операнда, если да, то условие становится истинным. (A> = B) не соответствует действительности.
<= Проверяет, меньше ли значение левого операнда или равно значению правого операнда, если да, то условие становится истинным. (A <= B) верно.

Булевы операторы

В следующей таблице приведены все логические операторы, поддерживаемые языком Паскаль. Все эти операторы работают с булевыми операндами и дают булевы результаты. Предположим, что переменная A имеет значение true, а переменная B содержит значение false, тогда —

Показать примеры

оператор Описание пример
а также Вызывается логическим оператором AND. Если оба операнда истинны, тогда условие становится истинным. (А и В) ложно.
а потом Он аналогичен оператору AND, однако гарантирует порядок, в котором компилятор вычисляет логическое выражение. Слева направо и правые операнды оцениваются только при необходимости. (A, а затем B) ложно.
или же Вызывается логическим оператором ИЛИ Если любой из двух операндов является истинным, тогда условие становится истинным. (А или В) это правда.
или еще Он похож на логическое ИЛИ, однако он гарантирует порядок, в котором компилятор вычисляет логическое выражение. Слева направо и правые операнды оцениваются только при необходимости. (A или иначе B) верно.
не Вызывается логическое НЕ оператор. Используется для изменения логического состояния своего операнда. Если условие истинно, то оператор Логический НЕ сделает его ложным. не (А и В) верно.

Битовые операторы

Битовые операторы работают с битами и выполняют побитовые операции. Все эти операторы работают с целочисленными операндами и дают целочисленные результаты. Таблица истинности для побитового и (&), побитового или (|) и побитового не (~) выглядит следующим образом:

п Q P & Q р | Q ~ р ~ д
0 0 0 0 1 1
0 1 0 1 1 0
1 1 1 1 0 0
1 0 0 1 0 1

Предположим, если А = 60; и B = 13; теперь в двоичном формате они будут выглядеть следующим образом —

A = 0011 1100

B = 0000 1101

——————

A & B = 0000 1100

A ^ B = 0011 0001

~ A = 1100 0011

Побитовые операторы, поддерживаемые Pascal, перечислены в следующей таблице. Предположим, что переменная A содержит 60, а переменная B содержит 13, тогда:

Показать примеры

оператор Описание пример
& Двоичный оператор AND немного копирует результат, если он существует в обоих операндах. (A & B) даст 12, что составляет 0000 1100
| Оператор двоичного ИЛИ копирует немного, если он существует в любом из операндов. (A | B) даст 61, что составляет 0011 1101
! Оператор двоичного ИЛИ копирует немного, если он существует в любом из операндов. Это так же, как | оператор. (A! B) даст 61, что составляет 0011 1101
~ Оператор дополнения двоичных единиц является унарным и имеет эффект «переворачивания» битов. (~ A) даст -61, что составляет 1100 0011 в форме дополнения 2 из-за двоичного числа со знаком.
<< Двоичный оператор левого сдвига. Значение левого операнда перемещается влево на количество битов, указанное правым операндом. А << 2 даст 240, что составляет 1111 0000
>> Оператор двоичного правого сдвига. Значение левого операнда перемещается вправо на количество битов, указанное правым операндом. A >> 2 даст 15, что составляет 0000 1111

Обратите внимание, что разные реализации Паскаля отличаются по битовым операторам. Free Pascal, используемый здесь компилятор, поддерживает следующие побитовые операторы:

операторы операции
не Побитовое НЕ
а также Побитовое И
или же Побитовое ИЛИ
исключающее Побитовое исключающее ИЛИ
ЗЫ Побитовый сдвиг влево
SHR Побитовый сдвиг вправо
<< Побитовый сдвиг влево
>> Побитовый сдвиг вправо

Приоритет операторов в Паскале

Приоритет оператора определяет группировку терминов в выражении. Это влияет на то, как оценивается выражение. Некоторые операторы имеют более высокий приоритет, чем другие; например, оператор умножения имеет более высокий приоритет, чем оператор сложения.

Например, х = 7 + 3 * 2; здесь x назначено 13, а не 20, потому что оператор * имеет более высокий приоритет, чем +, поэтому он сначала умножается на 3 * 2, а затем прибавляется к 7.

Здесь операторы с самым высоким приоритетом отображаются вверху таблицы, а операторы с самым низким — внизу. Внутри выражения операторы с более высоким приоритетом будут оцениваться первыми.

Показать примеры