Ruby для начинающих: циклы While и For

Что такое циклы?

Циклы — конструкции, позволяющие многократно выполнять блок кода при выполнении определённого условия. Если условие выполняется 10 раз, код внутри цикла выполнится 10 раз.

Цикл While

Рассмотрим пример с циклом while. Создадим переменную i со значением 0:

i = 0

Теперь напишем цикл while:

while i <= 5 do
  puts i
  i += 1
end

while i <= 5 do — условие цикла. Пока i меньше или равно 5, выполняется тело цикла (do … end). В теле цикла выводится значение i на экран, затем i увеличивается на 1 (i += 1). Результат: вывод чисел от 0 до 5.

Инкремент (i += 1) можно разместить в любом месте цикла. При размещении в начале, вывод будет от 1 до 6. В цикл while можно добавлять любые условия, аналогичные условным операторам.

Пример игры

Создадим игру, где пользователь должен угадать секретное слово:

secret = "blue"
guess = ""

while guess != secret do
  print "Введите слово: "
  guess = gets.chomp
end

puts "Вы выиграли!"

Цикл повторяется, пока введённое слово (guess) не совпадёт с секретным словом (secret). После совпадения выводится сообщение о выигрыше.

Цикл For

Цикл for удобнее для работы с массивами. Простая структура:

for i in 0..5 do
  puts i
end

i — переменная, принимающая значения из диапазона от 0 до 5. Вместо чисел можно использовать переменные.

Работа с массивами

Создадим массив:

names = ["Bob", "Kevin", "Alex", "George"]

Для вывода каждого элемента массива используем цикл for:

for name in names do
  puts name
end

Можно модифицировать элементы массива внутри цикла:

for i in 0...names.length do
  names[i] += "!"
end

puts names

Добавляем восклицательный знак к каждому элементу. Обратите внимание на 0…names.length для корректного обращения к элементам массива по индексу.

Альтернативный способ использования цикла For

Ещё один способ использования цикла for:

6.times do |index|
  puts index
end

6.times выполняет блок кода 6 раз. |index| — переменная, принимающая значения от 0 до 5.

Этот метод удобен для работы с массивами, например:

names.each do |name|
  puts name + "!"
end

Этот код перебирает каждый элемент массива names и выводит его с восклицательным знаком.

В Ruby есть три типа циклов: while, for и times. Выбор зависит от задачи. while подходит, когда количество итераций неизвестно заранее. for и times удобны для работы с массивами и диапазонами.

Что будем искать? Например,программа