Документация
Уроки Открыть IDE
На главную
Урок 11

Логические операции

Как комбинировать условия, не путаясь в приоритетах

Операции — это преобразования

Начнём с того, что все операции — это правила преобразования. Например, арифметические операторы берут числа и делают из них новое число:

А теперь — операторы сравнения. Они тоже берут числа, но порождают не число, а логическое значение:

Результат операций сравнения — значение типа bool.

Логические операции

Если операторы сравнения порождают bool, то логические операторы работают с уже готовыми логическими значениями:

Правила просты:

  • and («И») — true только если с обеих сторон true;
  • or («ИЛИ») — true, если хотя бы с одной стороны true;
  • xor («исключающее ИЛИ») — true, если только с одной стороны true.

Практическое применение: условия с 'and'

Перевод: «Если A больше 100 и B больше 100 — сообщить об этом».

Если хотя бы одно условие ложно — сообщение не появится.

Условия с 'or'

Перевод: «Если A больше 100 или B больше 100 (или обе больше 100) — сообщить об этом».

Сообщение не появится только тогда, когда оба условия ложны.

Условия с 'xor'

Перевод: «Если A больше 100 или B больше 100, но не оба — сообщить об этом».

Это как по-русски: «Либо одно, либо другое. Но не всё сразу».

Если обе переменные больше 100 — xor вернёт false, и сообщение не появится.

Операция 'not()' — инверсия

В Idyllium операция «НЕ» реализована как функцияnot(выражение):

Это намеренное решение: скобки чётко показывают, что именно инвертируется. Никакой двусмысленности, как в других языках.

Аналогия с математикой

Функция not() работает как унарный минус в арифметике:

Точно так же:

not() переключает значение: truefalse, как минус переключает знак числа.

Почему 'not' — функция, а не оператор?

В том же Python можно написать:

И даже опытные программисты не всегда сразу вспомнят приоритеты.

В Idyllium этого не бывает:

Скобки — это не формальность. Это гарантия ясности. Idyllium не заставляет вас запоминать таблицы приоритетов — он заставляет чётко выражать мысли.