条件判断(if文)

if文は条件式を評価し結果が真であれば文を実行し、真でなければelseで指定した文を実行します。構文と例を以下に示します。

 ■構文
 if 条件式 [then]
   文
 [elsif 条件式 [then]
   文]*
 [else
   文]
 end
 
 ■例
 if a == 0
   puts "a is zero."
 elsif a < 0
   puts "a is negative."
 else
   puts "a = #{a}"
 end

また、if修飾子では右辺を評価し結果が真の場合に左辺を評価します。構文と例を以下に示します。

 ■構文
 式 if 式
 
 ■例 
 puts "too short." if s.size < 4
 条件判断(case文)

caseで指定した式とwhenで指定した式を演算子===で比較し、最初にヒットした真の式に続く文を実行します。

どの式とも比較が成立しなければelseで指定した文を実行します。演算子===はデフォルトではObject#==と同じ動作をしますが、サブクラスで随時変更して使用することができます。

構文と例を以下に示します。

 ■構文
 case 式
 [when 式[,式...] then
   文]*
 [else
   文]
 end
 
 ■例
 case score 
 when 0..49
   puts "failure"
 when 50..79
   puts "pass"
 else
   puts "excellent"
 end

繰り返し(while文)

while文は条件式が真の間、文を実行します。構文と例を以下に示します。

 ■構文
 while 条件式 [do]
   文
 end
 
 ■例
 while line = gets
   print line
 end

また、while修飾子は右辺の式が真の間、左辺を繰り返して実行します。構文と例を以下に示します。

 ■構文
 式 while 式
 
 ■例 
 print line while line = gets

繰り返し(for文)

for文は式の各要素に対して文を実行します。構文と例を以下に示します。

 ■構文
 for 変数 [,変数...] in 式 [do]
   文
 end
 
 ■例
 for i in 1..10 
   puts i
 end

繰り返しの脱出(break文)

break文は最も内側のループ(繰り返し)を脱出します。ループはwhile、until、for、イテレータのいずれかです。例を以下に示します。

 while i<100
   puts i
   if $breakflag 
     break
 end

繰り返しの脱出(next)

next文は最も内側のループの条件式の直前へ脱出します。例を以下に示します。以下の例では5だけ出力されません。

 for i in 1..10 # next はここにジャンプ
   next if i==5
   puts i
 end

繰り返しの脱出(redo)

redo文は最も内側のループの条件式の直後へ脱出します。例を以下に示します。以下の例では1~4を出力した後、無限に5が出力されます。

 for i in 1..10
   puts i  # redo はここにジャンプ
   redo if i==5
 end

指定回数の繰り返し(timesメソッド)

指定回数だけ繰り返します。 Integerクラスのメソッドです。

 ■構文
 整数.times {|n| ... }

 ■例
 3.times { |i|
   puts i
 }
 # この例では、0から2まで繰り返します。
 # => 0,1,2

指定値までの繰り返し(uptoメソッド)

指定値まで1ずつ増やしながら繰り返します。 Integerクラスのメソッドです。

 ■構文
 整数.upto(max) {|n| ... }

 ■例
 3.upto(5) { |i|
   puts i
 }
 # この例では、3から5まで繰り返します。
 # => 3,4,5

指定値までの繰り返し(downtoメソッド)

指定値まで1ずつ減らしながら繰り返します。 Integerクラスのメソッドです。

 ■構文
 整数.downto(min) {|n| ... }

 ■例
 5.downto(3) { |i|
   puts i
 }
 # この例では、3から5まで繰り返します。
 # => 5,4,3

指定値までの指定ステップ毎に繰り返し(stepメソッド)

指定値まで繰り返します。 Numericクラスのメソッドです。 step は負の数も指定できます

 ■構文
 数値.step(limit, step) {|n| ... }
 
 ■例
 5.step(10,2) { |i|
   puts i
 }
 # この例では、5から2ステップ毎に10を超えないように繰り返します。
 # => 5,7,9