Ruby Loops

Statemeht - инструкция или оператор, наименьшая автономная часть языка программирования; команда или набор команд, "по историческим причинам" русский термин «оператор» обозначает то же, что и «инструкция», которой соответствует английское statement. Программа обычно представляет собой последовательность инструкций

Modifier (модификатор) - это ключевое слово языка, которое может каким-либо образом изменить , что-либо (например:класс,метод,объект).

Operand (операнд) в языках программирования ― аргумент операции; данные, которые обрабатываются командой; грамматическая конструкция, обозначающая выражение, задающее значение аргумента операции. Иногда операндом называют место, позицию в тексте, где должен стоять аргумент операции. Отсюда понятие местности операции, то есть числа аргументов операции. sin x (x — операнд) a+b (a, b — операнды)

Операция — конструкция в языках программирования, аналогичная по записи математическим операциям.

Expression (выражение) — инструкция, присваивающая правую часть выражения левой части (выражает левую через правую).

Циклы в Ruby , как и везде, используются для выполнения одного и того же блока кода заданное количество раз. Ниже описаны все операторы цикла, поддерживаемые Ruby.

Ruby while Statement:

Синтаксис:

while conditional [do]

code

end

Выполняется код, пока условие истинно. Условное выражение цикла while отделяется от кода зарезервированным словом do, новой строкой, backslash или точкой с запятой ; .

Пример:

#!/usr/bin/ruby

$i = 0

$num = 5

while $i < $num do

puts ("Внутри цикла i = #$i" )

$i += 1

end

Это даст следующий результат:

Внутри цикла i = 0

Внутри цикла i = 1

Внутри цикла i = 2

Внутри цикла i = 3

Внутри цикла i = 4

Ruby while modifier:

Синтаксис:

cod while condition

OR

begin

code

end while conditional

Выполняет код, пока условие истинно.

Пример:

#!/usr/bin/ruby

$i = 0

$num = 5

begin

puts ( "Inside the loop i = #$i" )

$i +=1

end while $i < $num

Это даст следующий результат:

Inside the loop i = 0

Inside the loop i = 1

Inside the loop i = 2

Inside the loop i = 3

Inside the loop i = 4

Ruby until Statement:

until conditional [do]

code

end

Выполняет код, пока условное значение ложно. Условное выражение оператора until отделяется от кода зарезервированным словом do, новой строкой или точкой с запятой.

Пример:

#!/usr/bin/ruby

​​$i = 0

$num = 5

until $i > $num do

puts ("Внутри цикла i = #$i" )

$i += 1;

end

Это даст следующий результат:

Внутри цикла i = 0

Внутри цикла i = 1

Внутри цикла i = 2

Внутри цикла i = 3

Внутри цикла i = 4

Внутри цикла i = 5

Ruby until modifier:

Синтаксис:

code until conditional

OR

begin

code

end until conditional

Выполняет код, пока условное значение ложно.

Если модификатор until следует за оператором begin без предложений rescue или ensure clauses, код выполняется один раз перед вычислением условного выражения.

Пример:

#!/usr/bin/ruby

​​$i = 0

$num = 5

begin

puts ("Внутри цикла i = #$i" )

$ i += 1

end while $ i > $ num

Это даст следующий результат:

Внутри цикла i = 0

Внутри цикла i = 1

Внутри цикла i = 2

Внутри цикла i = 3

Внутри цикла i = 4

Внутри цикла i = 5

Ruby for Statement:

Синтаксис:

for variable [, variable ... ] in expression [do]

code

end

Выполняет код один раз для каждого элемента в выражении.

Пример:

#!/usr/bin/ruby

​​for i in 0..5

puts "Значение локальной переменной #{i}"

end

Здесь мы определили диапазон 0..5. Оператор для i в 0..5 позволит i принимать значения в диапазоне от 0 до 5 (включая 5). Это даст следующий результат:

Значение локальной переменной 0

Значение локальной переменной 1

Значение локальной переменной 2

Значение локальной переменной 3

Значение локальной переменной 4

Значение локальной переменной 5

Цикл for ... in почти точно эквивалентен:

(expression) .each do |variable [, variable ...]| code end

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

Пример:

#!/usr/bin/ruby

​​(0..5) .each do |i|

puts "Значение локальной переменной #{i}"

end

Это даст следующий результат:

Значение локальной переменной 0

Значение локальной переменной 1

Значение локальной переменной 2

Значение локальной переменной 3

Значение локальной переменной 4

Значение локальной переменной 5

Ruby break Statement:

Синтаксис:

break

Завершает самый внутренний цикл. Завершает метод со связанным блоком, если он вызывается внутри блока (при этом метод возвращает nil).

Пример:

#!/usr/bin/ruby

​​for i in 0..5

if i > 2 then

break

end

puts "Значение локальной переменной #{i}"

end

Это даст следующий результат:

Значение локальной переменной 0

Значение локальной переменной 1

Значение локальной переменной 2

Ruby next Statement:

Синтаксис:

next

Переход к следующей итерации самого внутреннего цикла. Завершает выполнение блока, если вызывается внутри блока (с yield или call, возвращающими nil).

Пример:

#!/usr/bin/ruby

​​for i in 0..5

if i < 2 then

next

end

puts "Значение локальной переменной #{i}"

end

Это даст следующий результат:

Значение локальной переменной 2

Значение локальной переменной 3

Значение локальной переменной 4

Значение локальной переменной 5

Ruby redo Statement:

Синтаксис:

redo

Перезапускает (повторяет) эту итерацию самого внутреннего цикла без проверки условия цикла. Перезапускает yield или call, если вызывается внутри блока.

Пример:

#!/usr/bin/ruby

​​for i in 0..5

if i < 2 then

puts "Значение локальной переменной #{i}"

redo

end

end

Это даст следующий результат и зайдет в бесконечный цикл:

Значение локальной переменной 0

Значение локальной переменной 0

............................

Ruby retry Statement:

Синтаксис:

retry

Если в предложении rescue выражения begin появляется retry, перезапустите с начала тела 1begin.

begin

do_something # exception raised

rescue

# handless error

retry #restart from beginning

Если повтор (retry) появляется в итераторе, блоке или теле выражения for, перезапускает вызов итератора. Аргументы итератора переоцениваются (re-evaluated).

for i in 1..5

retry if some_condition # перезапуск с i == 1

end

Пример:

#!/usr/bin/ruby

​​for i in 1..5

retry if i > 2

puts "Значение локальной переменной #{i}"

end

Это даст следующий результат и зайдет в бесконечный цикл:

Значение локальной переменной 1

Значение локальной переменной 2

Значение локальной переменной 1

Значение локальной переменной 2

.................................................................

# Ruby program of retry statement

# Using do loop

10.times do |i|

begin

puts "Iteration #{i}"

raise if i > 2

rescue

# Using retry

retry

end

end

=======https://www.geeksforgeeks.org/ruby-redo-and-retry-statement===========

# Ruby program of retry statement

def geeks

attempt_again = true

p 'checking'

begin

# This is the point where the control flow jumps

p 'crash'

raise 'foo'

rescue Exception => e

if attempt_again

attempt_again = false

# Using retry

retry

end

end

end