Menu
Coddy logo textTech

Логические операторы. Часть 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 (поведение по умолчанию)

Даже когда скобки не являются строго обязательными, их добавление часто делает сложные выражения более удобными для чтения. Если вы сомневаетесь, используйте скобки, чтобы явно показать, как должны быть сгруппированы условия.

challenge icon

Задание

Легко

Вам предоставлены следующие переменные:

x = true
y = false
z = true
a = false

Вычислите следующие выражения и выведите каждый результат на отдельной строке. Обратите внимание на приоритет операторов: сначала вычисляется !, затем &&, и в последнюю очередь ||.

  1. x || y && z
  2. !y && z
  3. x && y || z
  4. !a || y && z
  5. x && !y && z
  6. (x || y) && a
  7. x || (y && a)
  8. !(x && y) || z

Каждый результат должен быть либо true, либо false.

Шпаргалка

Ruby вычисляет логические операторы в определенном порядке на основе приоритета операторов:

  1. ! (not) — самый высокий приоритет
  2. && (and) — средний приоритет
  3. || (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 # ваше выражение здесь
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы