Логические операторы. Часть 4
Часть раздела Основы путешествия по Ruby на Coddy — урок 20 из 88.
Когда вы комбинируете несколько логических операторов в одном выражении, Ruby вычисляет их в определенном порядке, основанном на приоритете операторов. Понимание этого порядка помогает вам писать правильные условия и избегать неожиданных результатов.
Приоритет от самого высокого к самому низкому следующий: ! (не), затем && (и), затем || (или). Это означает, что сначала вычисляется !, затем && и, наконец, ||:
true || false && false # true (&& вычисляется первым)
# То же самое, что: true || (false && false)
!false && true # true (! вычисляется первым)
# То же самое, что: (!false) && trueВы можете использовать скобки, чтобы переопределить приоритет по умолчанию и сделать ваши намерения понятными:
(true || false) && false # false (скобки принудительно выполняют || первым)
true || (false && false) # true (поведение по умолчанию)Даже когда скобки не являются строго обязательными, их добавление часто делает сложные выражения более удобными для чтения. Если вы сомневаетесь, используйте скобки, чтобы явно показать, как должны быть сгруппированы условия.
Задание
ЛегкоВам предоставлены следующие переменные:
x = true
y = false
z = true
a = falseВычислите следующие выражения и выведите каждый результат на отдельной строке. Обратите внимание на приоритет операторов: сначала вычисляется !, затем &&, и в последнюю очередь ||.
x || y && z!y && zx && y || z!a || y && zx && !y && z(x || y) && ax || (y && a)!(x && y) || z
Каждый результат должен быть либо true, либо false.
Шпаргалка
Ruby вычисляет логические операторы в определенном порядке на основе приоритета операторов:
!(not) — самый высокий приоритет&&(and) — средний приоритет||(or) — самый низкий приоритет
Примеры приоритета операторов:
true || false && false # true (&& вычисляется первым)
# То же самое, что: true || (false && false)
!false && true # true (! вычисляется первым)
# То же самое, что: (!false) && trueИспользуйте скобки, чтобы переопределить приоритет по умолчанию или улучшить читаемость:
(true || false) && false # false (скобки заставляют || выполниться первым)
true || (false && false) # true (поведение по умолчанию)Попробуйте сами
# Переменные уже определены за вас
x = true
y = false
z = true
a = false
# TODO: Вычислите каждое выражение и выведите результат на отдельной строке
# Помните о приоритете операторов: сначала !, затем &&, затем ||
# 1. x || y && z
puts # ваше выражение здесь
# 2. !y && z
puts # ваше выражение здесь
# 3. x && y || z
puts # ваше выражение здесь
# 4. !a || y && z
puts # ваше выражение здесь
# 5. x && !y && z
puts # ваше выражение здесь
# 6. (x || y) && a
puts # ваше выражение здесь
# 7. x || (y && a)
puts # ваше выражение здесь
# 8. !(x && y) || z
puts # ваше выражение здесьВ этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Операторы. Часть 2
Логические операторы. Часть 1Логические операторы. Часть 2Повторение — простая логикаЛогические операторы. Часть 3Логические операторы. Часть 47Калькулятор разделения счета
Приветственное сообщениеПолучение пользовательского ввода13Продвинутая работа с массивами
Срезы массивов через диапазоныСрезы массивов через индексыОператоры массивовМетод include?2Переменные и типы данных
Числа и переменныеСтроковый тип данныхЛогический тип данныхТип данных SymbolПроверка типов данныхПравила именованияПовторение: создание переменных5Принятие решений
Оператор IfКонструкция If - ElseПовторение — Простой калькуляторВложенные конструкции If - ElseОператор Unless8Циклы
Цикл For с диапазонамиЦикл WhileОператор BreakОператор NextПовторение: ФакториалЦикл TimesЦикл UntilВложенные циклыПовторение: Динамический ввод3Операторы. Часть 1
Арифметические операторыОператор остатка от деленияСокращенная арифметикаИтоги: простая математикаОператоры сравнения6Основы ввода-вывода
Вывод с помощью putsВывод с помощью print и pВывод с переменнымиВвод с помощью getsМетод chompПреобразование типовИтоги — Калькулятор возрастаИтоги — Истина или ложь