Практическая информатика


         

Циклы


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

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

while <выражение> [do] ... тело цикла ... end

Другим оператором цикла является until, выполняющийся до тех пор, пока его условие ложно:

until <выражение> [do] ... тело цикла ... end

Пример Рассмотрим программу, печатающую числа от 1 до 5. Сначала используем оператор while, затем until. Обратите внимание, что условие окончания одного оператора цикла является отрицанием условия другого оператора.

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

# еще раз i=1 until i > 5 puts i; i += 1 end

Кроме этих двух операторов цикла в Ruby имеется большое число, так называемых, итераторов (iterate - повторять). Давайте посмотрим на примеры их использования. Конструкция

3.times do print "Ау! " end

использует итератор times. Цикл, заданный таким образом, выполнится ровно три раза.

В случае, когда нужно выполнить некоторые действия, зависящие от изменяемой величины, несколько раз, можно использовать итератор upto, так в процессе выполнения программы

0.upto(9) do |x| print x, " " end

будет напечатано 0 1 2 3 4 5 6 7 8 9.

Повтор от 0 до 12 с шагом 3 можно записать при помощи итератора step:

0.step(12, 3) {|x| print x, " " } # 0 3 6 9 12

При работе с массивами удобно использовать итератор each:

[1, 1, 2, 3].each {|k| print k, " " } # 1 1 2 3

Итератор for in очень похож на each, например, вывод, полученный в результате выполнения следующих двух конструкций одинаков.

for i in ["one", "two", "three"] print i, " " end

# то же самое ["one", "two", "three"].each{ |i| print i, " "}

Итератор for обычно используют там же, где и итератор each - при работе с массивами и диапазонами.

Содержание  Назад  Вперед