There are a lot of different ways to complete a loop. Here's a list of the most popular ones.

# Loop

Loop in increments of 2 until `x` reaches 20.

``````x = 0

loop do
x += 2
break if x >= 20
puts x
end
``````

Loop through in increments of 2 until you reach 20. If `x` reaches 6, move on through `next if`.

``````x = 0
loop do
x += 2
break if x >= 20
next if x == 6
puts x
end
``````

# While Loop

Block-style while

``````x = 0

while x < 20
x += 2
puts x
end
``````

Single line-style while.

``````x = 0
puts x += 2 while x < 100
``````

# Until

``````y = 3245
puts y /= 2 until y <= 1
``````

# Iterators

Traversing through a fixed set of data

## Times do

Iterate 5 times.

``````5.times do
puts "Hello"
end
``````

## Up to

Single line style.

``````1.upto(5) { puts "hello" };
``````

Block style.

``````1.upto(5) do |i|
puts "hello " + i.to_s
end
``````

This example is similar to the one above with with an explicit `each`.

``````1.upto(3).each do |i|
puts "hello " + i.to_s
end
``````

## Down to

Single line.

``````5.downto(1) { puts "hello" };
``````

## Each

Use each on a Range.

``````(1..5).each { puts "hello" };
``````

Present each as a block.

``````fruits = [ 'banana', 'apple', 'pear' ]
fruits.each do |fruit|
puts fruit.capitalize
end
``````

## For In

``````fruits = [ 'banana', 'apple', 'pear' ]
for fruit in fruits
puts fruit.capitalize
end
``````

This uses `for` and `step` to increment by 2 within a range of 0 and 10.

``````for i in (0..10).step(2) do
puts i
end
``````

## Step Iterator

This is really handy if you're doing something like a clock or stopwatch.

``````(time1..time2).step(15.minutes) do |time|
end
``````

Use Range and go from 0 to 10 in increments of 1.

``````(0..10).step(1) do |i|
puts "Hello #{i}"
end
``````

Start at one and go to 5 in increments of one.

``````1.step(5,1) do |i|
puts "Hello #{n}"
end
``````