Что такое циклы?
Циклы — конструкции, позволяющие многократно выполнять блок кода при выполнении определённого условия. Если условие выполняется 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 удобны для работы с массивами и диапазонами.