LoginSignup
4
5

More than 5 years have passed since last update.

Rubyの繰り返し処理(ループ処理)

Last updated at Posted at 2018-09-27

1.繰り返し処理の必要性

プログラミングでは同じ処理を何度も行いたいという場面が出てきます。
その時、何度も同じコードを書き続けるというのは無駄に時間をかけてしまうことになります。

そこで、繰り返し処理(ループ処理)という機能を使うことで、同じコードを書き続けることなく、効率よくコードを書いて同じ処理を何度も実行することができます。

2.よく使われる繰り返し処理

eachメソッド

文法
オブジェクト.each do |変数|
  #実行する処理
end

<使い方例>
オブジェクトに含まれる要素を順番に変数に格納して、処理を実行します。オブジェクトに含まれる要素がなくなったら終了です。

<実践>
5回処理を繰り返してみます。
(1..5)で変数が最初の値から最後の値になるまで、実行したい処理が行われます。
iを変数として置きます。

5回繰り返す場合

(1..5).each do |i|
  puts "繰り返します"
end

"繰り返します"が5回出力されます。

$ ruby ファイル名.rb 
繰り返します
繰り返します
繰り返します
繰り返します
繰り返します

while文

文法
while 条件式 do  #doは省略可能
  #実行したい処理
end

<使い方例>
条件式(不等号< > などをよく使う)が成立する間は繰り返し処理がされます。

<実践>
5回処理を繰り返してみます。
iを変数として置きます。
i += 1 というのは変数iに1を足す処理になります。(自己代入演算子)

5回繰り返す場合
i = 0
 while i <= 5 do
  puts "繰り返します"
 i += 1
end

"繰り返します"が5回出力されます。

$ ruby ファイル名.rb 
繰り返します
繰り返します
繰り返します
繰り返します
繰り返します

for文

文法
for 変数 in オブジェクト do  #doは省略可能
  #実行したい処理
end

<使い方例>
オブジェクトの中に数値(1..5)などを入れると変数が最初の値から最後の値になるまで、実行したい処理が行われます。

<実践>
5回処理を繰り返してみます。
iを変数として置きます。

5回繰り返す場合
i = 0
for i in 1..5
  puts "繰り返します"
 i += 1
end

"繰り返します"が5回出力されます。

$ ruby ファイル名.rb 
繰り返します
繰り返します
繰り返します
繰り返します
繰り返します

3.繰り返し処理の応用

1から20までの数字を数える中で、3の倍数で「ワン」、5の倍数で「にゃー」、15の倍数で「ガオ!」と表示される繰り返し処理を作ってみる。


他に使う機能 if文

条件式が正しかった場合(真だった場合)に処理が実行される

if文
if 条件式
  #条件式が正しい時に実行する処理
elsif 条件式
  #条件式が正しい時に実行する処理
else
  #if elsif の条件式が合わなかった時に実行する処理
end

elsif 
・ifが条件式に合わず、elsif に記載の条件式が正しかった場合(真だった場合)に処理が実行される
else
・ifまたはelsifにひっかからなかったら処理が実行される


早速、eachメソッドで記述します。
まず考えるべきことは、15の倍数は15で割ると剰余が0になるということに着目します。
それを応用し、%で剰余を求めることができるので、0になる数字を条件式で探します。
(「変数%数字」で剰余が出てきます。例えば、「12%5」は2になります。)
3の倍数、5の倍数も同様です。

eachメソッドで記述した場合
(1..20).each do |i|
  if i%15 == 0
    puts"ガオ!"
  elsif i%3 == 0
    puts"ワン"
  elsif i%5 == 0
    puts"にゃー"
  else
    puts i
  end
end
結果
$ ruby ファイル名.rb 
1
2
ワン
4
にゃー
ワン
7
8
ワン
にゃー
11
ワン
13
14
ガオ!
16
17
ワン
19
にゃー

続いて、for文で記述します。

for文で記述した場合
i = 0
for i in 1..20 do
  if i%15 == 0
    puts"ガオ!"
  elsif i%3 == 0
    puts"ワン"
  elsif i%5 == 0
    puts"にゃー"
  else
    puts i
  end
end
結果
$ ruby ファイル名.rb 
1
2
ワン
4
にゃー
ワン
7
8
ワン
にゃー
11
ワン
13
14
ガオ!
16
17
ワン
19
にゃー

では続いてwhile文で記述したいと思います。
性質上、記述が若干異なります。

while文で記述した場合
i = 1  #変数は処理を始めたい数値にすること
while i <= 20
  if i%15 == 0
    puts"ガオ!"
  elsif i%3 == 0
    puts"ワン"
  elsif i%5 == 0
    puts"にゃー"
  else
    puts i
  end
  i += 1 #変数に1を追加するの重要!
end
結果
$ ruby ファイル名.rb 
1
2
ワン
4
にゃー
ワン
7
8
ワン
にゃー
11
ワン
13
14
ガオ!
16
17
ワン
19
にゃー

4.注意点

・上から順番に実行されるので優先したい処理を先に記述する

  ・例えば15の倍数と3の倍数で15の倍数を優先させるのであれば15の倍数の記述を3の倍数よりも上にかく

・繰り返し処理は変数がどのような状態になれば終わるのかを確認すること

  ・繰り返すたびに変数に1を追加しないと永遠にループしてしまうことがあるため

4
5
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5