2
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Rubyの繰り返し処理の基本

Last updated at Posted at 2017-02-11

timesメソッド

繰り返したい回数.times do
 繰り返したい処理
end
3.times do
 puts "3回繰り返しますよ"
end

# 実行結果**************
# 3回繰り返しますよ
# 3回繰り返しますよ
# 3回繰り返しますよ

ブロック内で繰り返している回数を知る。

3.times do |i|
 puts "#{i}回目です"
end

# 実行結果**************
# 0回目です
# 1回目です
# 2回目です

例のごとくプログラムっていうのは0から始まる定めですので「1回目」から出したい場合は下記のようにする。

3.times do |i|
 puts "#{i+1}回目です"
end

# 実行結果**************
# 1回目です
# 2回目です
# 3回目です

簡単すね。

for文

timesはメソッドだがfor文はメソッドではなく文法の形式。

for 変数 in オブジェクト
 繰り返したい処理
end
names = ["takashi","hiroki","takako","junko"]

for name in names
  puts name
end

# 実行結果**************
# takashi
# hiroki
# takako
# junko

配列から要素を取り出してそれぞれを表示させているということですね。

特定の範囲を繰り返す場合

hoge = 1
baka = 10
sum = 0

for i in hoge..baka
 sum += i #sum = sum + i でも同じ意
end
puts sum

# 実行結果**************
# 55

while文

while 条件
 繰り返したい処理
end
i = 1

while i <= 3
  puts i
  i += 1
end

# 実行結果**************
# 1
# 2
# 3

until文

until文はwhile文の条件判定の反対にあたる。
while文は条件が成立している間を繰り返すが、until文は条件が成立するまで繰り返す。

until 条件
 繰り返したい処理
end

while文の条件に否定の演算子「!」を使えば同じことができるのであまり利用する機会は無いかも。。。

eachメソッド

eachメソッドはオブジェクトの集まりを一つづつ取り出すときに使用する。

オブジェクト.each do |変数|
 繰り返したい処理
end


# 別の書き方
オブジェクト.each{|変数|
 繰り返したい処理
}
names = ["kenji","hiroki","atsushi"]

names.each do |name|
  puts name
end

# 実行結果**************
# kenji
# hiroki
# atsushi

loopメソッド

loop
 繰り返したい処理
end

とにかく一生ループするので危険!しっかりと繰り返しの制御を行わないとPC画面がすごいことになるよ。

繰り返し制御

命令 用途
break 繰り返しを中断して、繰り返しの中から抜ける
next 次の回の繰り返しに処理を移す
redo 同じ条件で繰り返しをやり直す

break

breakは繰り返し全体を中断する。

i = 0
["pocarisweat","cola","dakara","cider"].each do |juice|
  i += 1
  if i == 3
    break
  end
    p [i, juice]
  end

# 実行結果**************
# [1, "pocarisweat"]
# [2, "cola"]

next

nextは次の回の繰り返し処理にいきます。

i = 0
["pocarisweat","cola","dakara","cider"].each do |juice|
  i += 1
  if i == 3
    next
  end
    p [i, juice]
  end

# 実行結果**************
# [1, "pocarisweat"]
# [2, "cola"]
# [4, "cider"]

繰り返し処理のまとめ

主な用途
timesメソッド 回数の指定された繰り返し
for文 オブジェクトから要素を取り出す場合
while文 条件を自由に指定したい場合
until文 whileではわかりにくい条件を指定したい場合
eachメソッド オブジェクトから要素を取り出す場合
loopメソッド 回数制限のない繰り返し

回数が決まっている場合はtimesメソッドを使用してそれ以外の場合はwhile文、eachメソッドを使えば大抵の事はできるのでまずはこの3つを極めよう。

2
7
3

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
2
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?