Средний уровень Ruby: условия и циклы

Средний уровень Ruby: условия и циклы

Содержание
  1. Что такое условные операторы?
  2. Условные операторы в Ruby
  3. Операторы if/else в Ruby
  4. Вложенные операторы if в Ruby
  5. Операторы Unless в Ruby
  6. Операторы Unless… then
  7. Условные обозначения в Ruby
  8. Циклы в Ruby
  9. Циклы While в Ruby
  10. Циклы Until в Ruby
  11. Цикл for в Ruby

Привет и добро пожаловать!
В сегодняшнем уроке я узнал об условных операторах и циклах в Ruby. В этой статье мы поговорим об условных операторах и циклах в Ruby.

Что такое условные операторы?

Взято из Википедии:

В информатике условные операторы - это команды языка программирования для обработки решений. В частности, условные выражения выполняют различные вычисления или действия в зависимости от того, является ли определенное программистом булево условие истинным или ложным.

Проще говоря, условные операторы - это ключевые слова в любом языке программирования, которые проверяют истинность значения блока кода перед выполнением вложенных в него команд.
Иными словами, ”сделайте это, пока это истинно, а если это ложно, сделайте то”.

Условные операторы в Ruby

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

ifelse условные блоки

утверждения без

unlessthen.

caseкогда.

Операторы if/else в Ruby

Операторы if/else в Ruby - это, по сути, английский эквивалент.

То есть, если X истинно, выполните Y. Иначе, выполните Z. Ruby завершает условные блоки ключевым словом end.
Вот пример:

a = 5 b = 6 if a < b puts "a меньше чем b." else puts "b больше чем a." end #output=>"a меньше чем b.".

Здесь мы видим, что наш вывод стал “a меньше b”, потому что Ruby разобрал наш код и определил, что a=5 меньше, чем b=6, что удовлетворяет заданному нами условию, если a < b.
Если в нашем коде a было равно 7, что делало a больше, чем b=6, то вместо этого мы получим “b больше, чем a”, потому что Ruby разобрал наш код и обнаружил, что условное утверждение было ложным.

В сочетании с ключевыми словами if...else в Ruby есть еще одно ключевое слово: elsif.
Ключевое слово elsif может означать “else if”. Мы используем это ключевое слово после того, как оператор if уже объявлен, но мы хотим добавить еще одно условие, чтобы получить конечный результат или вывод.
Из нашего предыдущего примера:

a = 5 b = 6 if a < b puts "a меньше b." elsif a = b puts "a равно b." else puts "b больше a." end #output=> "a меньше b."

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

Вложенные операторы if в Ruby

В Ruby также возможно вложение операторов if в другие операторы if.
Мы делаем это потому, что когда Ruby встречает условный блок, он перебирает различные условия, чтобы выбрать ОДИН возможный исход в зависимости от истинности предложенного условия.
Однако при написании кода бывают ситуации, когда у нас есть условия, зависящие от ”большего” условия, и мы также хотим иметь несколько исходов, основанных на различных условиях.

Вот пример:

print 'Число 1:'
a = gets.chomp

print 'Число 2:'
b = gets.chomp

print 'Вы хотите сравнить>'
answer = gets.chomp

if answer == 'yes'
  puts 'начинаем вычисления...'

  if a > b
    puts "#{a} больше, чем #{b}."
  elsif a < b
    puts "#{a} меньше, чем #{b}."
  end

  if a != b
    puts "#{a} не равно #{b}."
  end

  if a.to_i % 2 == 0 && b.to_i % 2 == 0
    puts "#{a} и #{b} - четные числа."
  elsif a.to_i % 2 > 0 && b.to_i % 2 > 0
    puts "#{a} и #{b} - нечетные числа."
  elsif a.to_i % 2 > 0 && b.to_i % 2 == 0
    puts "#{a} - нечетное число, а #{b} - четное."
  elsif a.to_i % 2 == 0 && b.to_i % 2 > 0
    puts "#{b} - нечетное число, а #{a} - четное."
  end
else
  puts 'Ваш проигрыш.'
end

В приведенном выше примере мы видим совместную работу всего, что мы изучили до сих пор в Ruby. Из прошлой статьи мы узнали о различных свойствах строк, которые мы использовали в примере выше. Мы также использовали наши знания о операторах if/else.
В левой части изображения выше мы видим вывод кода, который мы только что выполнили.

Операторы Unless в Ruby

Теперь у меня возникла небольшая проблема с пониманием оператора unless. Я понимал, что это такое, но мне нужен был простой способ объяснить логику.

Утверждения unless по умолчанию имеют значение false.

Позвольте мне объяснить:

Если у вас возникла проблема,

a = 5 unless a > 6 puts 'a is greater than 6.' end #output=> "a is greater than 6."

У нас есть этоили результат, потому что утверждение a = 5 > 6 ложно. Условные блоки unless также содержат утверждения else.

Операторы Unless… then

Еще один способ использовать или написать условные блоки unless - это написать их как однострочный оператор, используя ключевое слово then.
Обычно мы используем его, когда значение переменной зависит от условия.

is_available = false greetings = unless is_available then 'Пользователь недоступен' end puts statement. #output=> "Пользователь недоступен".

Условные обозначения в Ruby

Еще один набор условных операторов в Ruby, который мы можем использовать, чтобы избежать многословия в нашем коде, - это операторы casewhen.
Они работают очень похоже на операторы ifelse.
Основное отличие заключается в том, что операторы case занимают меньше строк кода.

puts 'Входной экзаменационный балл:'
score = gets.chomp

case score.to_f
when 0..34
  puts 'You got an F!'
when 35..44
  puts 'You got an E!'
when 45..49
  puts 'You got a D!'
when 50..59
  puts 'You got a C!'
when 60..69
  puts 'You got a B!'
when 70..100
  puts 'You got an A!'
else
  puts 'Оценка должна быть числом меньше или равным 100'
end

Условные блоки Case начинаются с ключевого слова case, за которым следует утверждение, истинность которого мы хотим проверить с помощью некоторых условий. В случае приведенного выше примера мы хотим, чтобы он проверил входной результат, который мы получим в виде float.
После указания проверяемого утверждения мы указываем компьютерной программе, что делать при выполнении любого из условий.
Из приведенного выше примера следует, что после разбора случая, который должен быть оценен, компьютерная программа проверяет каждое из утверждений whenthen утверждений, чтобы определить, насколько оно истинно.
Мы видим, что это работает так же, как использование комбинации ключевых слов if, elsif и else в блоке. Только это короче, чище и проще для понимания.

Циклы в Ruby

Циклы - это элемент программирования, который повторяет часть кода заданное количество раз, пока не завершится нужный процесс.
Иными словами, циклы - это коды или блоки кода, которые мы пишем для того, чтобы определенная вещь повторялась при выполнении определенного условия или никогда не заканчивалась.
В Ruby для определения циклов есть ключевые слова while и until.

Циклы While в Ruby

Ключевое слово while не требует пояснений с точки зрения английского языка. Мы просто говорим нашему компьютерному коду продолжать делать что-то, ПОКА условие остается истинным.
Если мы просто оставим блок цикла, не определив для него ”кнопку остановки”, наши циклы будут выполняться бесконечно, а мы не хотим, чтобы это произошло.

i = 0 while i < 5 puts i i +=1 end #output=> 0 1 2 3 4

В приведенном выше примере мы видим, что сначала по умолчанию задали i равным 0. Мы хотим, чтобы компьютер выводил i для нас, пока 0 остается меньше 5. Если мы просто оставим это утверждение, цикл будет выполняться вечно, потому что 0 всегда будет меньше 5. Однако мы ввели кнопку ”стоп”, которая говорит нашей компьютерной программе продолжать увеличивать i. Она будет продолжать увеличивать i до тех пор, пока не выполнит наше условие, что i должно быть меньше 5. Вот почему наш вывод останавливается на 4, потому что все, что больше этого, будет отрицать наше условие.

ПОМНИТЕ, ЧТО ВСЕГДА НАДО СТАВИТЬ ЗАЯВЛЕНИЕ end В КОНЦЕ ЛЮБОГО БЛОКА УСЛОВИЯ ИЛИ ЛОПА.

Циклы Until в Ruby

Здесь мы повторим пример, который мы использовали выше:

i = 0 until i > 5 put i i += 1 end #output=> 0 1 2 3 4 5.

Из этого примера видно, что команда, которую мы задали компьютерной программе, заключается в том, чтобы (продолжать) выводить i ДО ТЕХ ПОР, пока i не станет больше 5.

Цикл for в Ruby

Цикл for используется для итерации по набору значений.

for i in 1..10 do puts i end #output=> 1 2 3 4 5 6 7 8 9 10

В примере выше мы видим, что попросили компьютерную программу перебрать i в диапазоне от 1 до 10, а затем вывести каждое значение i, которое находится в диапазоне от 1 до 10.

В Ruby есть еще много циклов, но на этом мы пока остановимся.
На этом мы закончим сегодняшний урок по Ruby. Увидимся в следующем уроке.
Подключайтесь ко мне на LINKEDIN Следите за мной в X (бывший twitter)