日別アーカイブ: 2021年11月1日

Rubyのまとめ4(繰り返しからnext, whileまで)

3から続く

繰り返し処理 Each for

配列やハッシュ.each do |変数|
  #繰り返し実行したい処理
end

例1

#1:配列 numbersを作成(1,2,3,4,5)
numbers = [1, 2, 3, 4, 5]
#2:配列の要素を一つずつ取り出して実行
numbers.each do |number|
  puts number
end

別解1
numbers.each {|number|
  puts number
}
#一行でもかける
numbers.each {|number| puts number }

↑配列が入っている要素は複数形||の中の変数は
単数で書くことが多いらしい

配列 colors を作成
‘red’, ’green’ ’blue’

配列の要素を一つずつ取り出して出力

colors = ['red', 'green', 'blue']

colors.each do |color|
    puts color
end

red
green
blue
=> ["red", "green", "blue"]
#繰返処理 for構文

for 変数 in 配列やハッシュ do
 #繰り返し実行したい処理
end

1:配列 numbersを作成(1,2,3,4,5)
2:配列の要素を一つずつ取り出して実行

numbers = [1, 2, 3, 4, 5]

for number in numbers do
  puts number
end

forは原則使わないらしい

each (ハッシュ利用)

1:ハッシュで生徒ごとの点数scoresを用意
{luke: 100, ben: 90, alan: 70 }
配列の要素を一つずつ取り出して出力

scores = {luke: 100, ben: 90, alan: 70}

scores.each do |k, v|
  puts v
end

#出力されるもの
100
90
70

両方取り出したいとき↓

scores = {luke: 100, ben: 90, alan: 70}

scores.each do |k, v|
  puts "#{k}, #{v}"
end

#出力されるもの
luke, 100
ben, 90
alan, 70

80点以上を取り出したいとき↓ifをeachに追加

scores = {luke: 100, ben: 90, alan: 70}

scores.each do |k, v|
  if v >= 80
    puts "#{k}, #{v}"
  end
end

luke, 100
ben, 90

繰り返し処理 times

繰り返し回数.times do |i|
  繰り返し実行したい処理
end
|i|は省略可能
5.times do
  puts 'Hello'
end

Hello
Hello
Hello
Hello
Hello

ダブルクオートで囲んだとき

5.times do |i|
  puts "#{i}: Hello"
end

0: Hello
1: Hello
2: Hello
3: Hello
4: Hello

上も下も同じ意味
5.times { |i| puts "#{i}: Hello" }

繰り返し処理(while)

while 条件式 do
  繰り返し実行したい処理
end

数字を0から9まで、10個出力するプログラム。whileを使って書く

i = 0

while i < 10
  puts "#{i}:hello"
    i += 1 #i = i + 1
end
#出力されるもの
0:hello
1:hello
2:hello
3:hello
4:hello
5:hello
6:hello
7:hello
8:hello
9:hello

無限ループが起きることがあるので気をつけよう

uptoとdownto

開始値.upto(終了値){繰り返し実行したい処理}

10.upto(14) {|n| puts n }
14.downto(10) {|n| puts n }


10
11
12
13
14

14
13
12
11
10

繰り返し処理step

開始式.step(上限値,一度に増減する大きさ){}

1.step(10, 2) { |n| puts n }

1
3
5
7
9
減らすときはマイナスで
10.step(1, -2) { |n| puts n }

10
8
6
4
2

繰り返し処理(loop)

loop do
 繰り返し実行したい処理
end

loopメソッドを使って、変数の値を0から1ずつ増やして出力

i = 0

loop do
  puts i
  i += 1
 #breakがないと無限ループに突入するので注意!
  break if i == 10 
end
0
1
2
3
4
5
6
7
8
9

whileの場合

n = 0

while true
 puts ncf
 n += 1
end

応用)配列[1,2,3,4,5,]の値が、奇数の場合のみ、画面に出力する処理。

eachとnextを利用

numbers = [1, 2, 3, 4, 5]

numbers.each do |n|
 next if n % 2 == 0 
#もしnが偶数だったらループをスキップするという意味

#上と下は同じ意味だで
next if n.even?

#奇数の時はodd
next if n.odd? 
  puts n
end

#出力されるもの
1
3
5

5に続きます。