0
0

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 3 years have passed since last update.

ループ処理

Last updated at Posted at 2020-06-11

##繰り返し処理の種類
Rubyの繰り返し処理の種類として、eachメソッド、for文、whil ,until文、timesメソッド、up_toメソッドなどがあるそうです。paizaのアルゴリズムで繰り返し処理を行う際にどの処理を使えば良いかイマイチ理解していないので、使い方、特徴をまとめる。

##まず前提
繰り返し処理は、配列(複数のデータを順番に並べて格納できるオブジェクト(Arrayクラス))、ブロック(メソッドの引数として渡すことができる処理のかたまり)と一緒に使うことが多い。Rubyは、eachメソッドを使って反復処理を行う場合が大半。※多言語では、for,foreach構文を使うことが多い。

##eachメソッド
Rubyが言語機能として繰り返し処理を実行しているのではなく、配列のeachメソッドが繰り返し処理を実行している。
eachメソッドの役割は、配列の要素から最後までを順番に取り出すことができる。その取り出したものをどのように扱うかはブロックに記述する。

#例(配列の要素を加算していく処理)
numbers = [1, 2, 3, 4]
sum = 0
numbers.each do |n|
  sum += n
end
sum #=> 10

###ブロックとは
ブロックは先ほどのコードの中の以下の部分。|n|のnはブロック引数(名前は自由)といい、eachメソッドから渡された配列の要素が入る。

#ブロック部分

             do |n|
  sum += n
end

###ブロック(改行なしバージョン)

#do .. endの代わりに{}を使う

numbers.each {|n| sum += n}

##timesメソッド
配列を使わず単純にn回処理を繰り返したい、という場合はIntegerクラスのtimesメソッドを使う。

sum = 0
#処理を5回繰り返す。nには0,1,2,3,4が入る。
5.times {|n| sum += n}  or  5.times{sum += 1}
sum #=> 10

##uptoメソッドとdowntメソッド
nからmまで数値を1つずつ増やしながら何かを処理したい場合は、Integerクラスのuptoメソッドを使う。逆に、1つずつ減らすdowntoメソッド。

#uptoメソッド
a = []
10.upto(14) {|n| a << n}
a #=> [10, 11, 12, 13 ,14] 

#downtoメソッド
a = []
14.doentown(10){|n| a << n}
a #=> [14 ,13 ,12 ,11 ,10]

##while文とuntil文

繰り返し処理用の構文。
whileの後の条件式が真であれば実行。untilの後の条件式が偽であれば実行。
※whileの後にtrueを使うと無限ループの処理を行える。脱出するにはbreakを使う。

#while文
a = []
while a.size < 5
  a << 1
end
a #=> [1 ,1 ,1 ,1 ,1]

#until文
a = [10 ,20 ,30 ,40 ,50 ]
until a.size <= 3 #配列aの要素が3つ以下でない限り最後の要素を消し続ける。
  a.delete(-1)
end
a #=> [10 ,20 ,30]

##for文

for文はeachメソッドと使う用途は同じと考えて良い。しかしRubyはeachメソッドを使うほうが一般的らしい。

numbers = [1 ,2 ,3 ,4]
sum = 0
for n in numbers 
  sum += n
end
sum #=> 10

#doを入れて1行で書くことも可能。
for n in numbers do sum += end

##まとめてみての感想
とりあえず、eachメソッドをベースに他のmapメソッドなどを使って、メソッドを色々覚えていくことが良さそう。

0
0
0

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?