2 flat logo on transparent 256
2018-05-29

Rubyの繰り返し処理の解説|初心者・独学者向け

Web dasdsada

プログラミング言語のRubyの繰り返し処理についての解説を行います。

繰り返し処理はプログラミング言語にかかわらず必ず利用する 内容なので、初心者・独学者の方は特に学ぶ必要のある処理になります。

※下記のサンプルコードはすべて.rbファイルで可動させた場合の 例です。

なお、繰り返し処理の練習問題も用意しています。

Rubyの練習問題:繰り返し処理編|初心者・独学者向け入門コンテンツ

eachメソッド

.eachメソッドは文字列、配列、ハッシュ、範囲オブジェクトなどの要素の数だけ、繰り返し処理を実行していきます。

greetings = ["こんにちは","おはよう","さよなら"]
greetings.each do |greeting|
  puts greeting
end

#実行結果
#こんにちは
#おはよう
#さよなら

更に繰り返しの順番によって処理を変更する事も可能です。

nums = [1,2,3,4,5,6]
nums.each do |num|

  if num.odd?
    p "#{num}"+"は偶数です"
  else
    p "#{num}"+"は奇数です"
  end
end

#実行結果
# "1は奇数です"
# "2は偶数です"
# "3は奇数です"
# "4は偶数です"
# "5は奇数です"

※.odd?メソッドは自身が奇数の場合はtrueを返すメソッドです。

 偶数の場合はeven? メソッドを利用します。

.eachwithindexメソッド

動きはeachメソッドと同じですが、

.each_with_index

は繰り返しの番号を付与する事が可能です。

greetings = ["こんにちは","おはよう","さよなら"]
greetings.each_with_index do |greeting,i|
  puts "#{i+1}"+":"+ "#{greeting}"
end

#実行結果
#1:こんにちは
#2:おはよう
#3:さよなら

上記の通り、繰り返しの番号を付与する場合は、ブロック引数の 後ろに2つ目の引数(i)を設定します。 また繰り返しのカウントは0から開始されるので、 繰り返し番号には1を追加しています。

なお、

.each_with_index

でブロック引数を1つにした場合でも 処理は実行されます。

greetings = ["こんにちは","おはよう","さよなら"]
greetings.each_with_index do |greeting|
  puts  "#{greeting}"
end

#こんにちは
#おはよう
#さよなら

for文

配列や範囲オブジェクト、ブロックなどに含まれる 各オブジェクト要素を順に変数に代入して、繰り返して処理を実行します。代入する要素がなくなったら繰り返しを終了します。

下記は1〜10の範囲で数字を出力していきます。

for i in 0..10 do
  puts i 
end

※do は省略可能なので、以下から省略します。

for文のハッシュに対しての処理

ハッシュの場合、引数を2つ設定すれば、keyとvlueが出力されます。

animals = { :dog => "", :cat => "", :monkey => "" }

for key,value in animals
  puts "#{value}を英語でいうと#{key}です"
end

#実行結果
#dog
# 犬
# cat
# 猫
# monkey
# 猿

timesメソッド

単純に同じ処理を繰り返したい場合は、timesメソッドを利用します。

5.times do
  puts "Hello"
end

#実行結果
#"Hello"
# "Hello"
# "Hello"
# "Hello"
# "Hello"

ブロック引数を設定すれば、処理回数を設定することもできます。

5.times do |i|
  puts "#{i+1}回目の:Hello"
end

#実行結果
# 1回目の:Hello
# 2回目の:Hello
# 3回目の:Hello
# 4回目の:Hello
# 5回目の:Hello

whileメソッド

条件がtureになる限り繰り返し実行します。 下記では100回繰り返し処理を行うと終了する処理となります。

i = 1
while i < 101 
  if i.even?
  puts "#{i}は偶数です"
  else
    puts "#{i}は奇数です"
  end

  i +=1  # 自己代入
end

breakメソッドとnextメソッド

breakメソッドは指定条件になったら、ループを強制的に中断させるメソッドです。

i = 1
while i < 101
  puts i
  break if i == 20
  i +=1  # 自己代入
end

nextは指定条件になると、その処理をスキップして次のループ処理を行うメソッドとなります。

nums = [1,2,3,4,5,6]
nums.each do |num|
  if num.odd?
   next
  end
   p num
end

実行結果
# 2
# 4
# 6

その他関連記事

Rubyの練習問題:文字列編|初心者・独学者向け入門コンテンツ

Rubyの繰り返し処理の解説|初心者・独学者向け

初心者・独学者向け|Rubyの配列処理の入門とよく使うメソッド

初心者・独学者向け|Rubyのハッシュ入門とよく使うメソッド

初心者・独学者向け|RubyのStringクラスとよく使うメソッド

Ruby技術者認定試験 (Silver version 2.1)対策 | !が付かない破壊的メソッド

初心者・独学者向け|Rubyのinitializeメソッドとは

前の記事
次の記事