#勉強会の状況
・100人以上のプログラミング学習コミュニティで勉強会開催。
・初学者の方向け
・集まったのは5人
#繰り返し処理とは
同じ処理を何度も繰り返す処理のことです。
例えば
『〇〇回繰り返し行う』
『条件を満たしたら繰り返し処理をする』
#eachで繰り返し処理
代表的なeach
を使った処理を例にしていきます。
scores = [10,20,30,40,50,60]
puts scores[0] + scores[1] + scores[2] + scores[3] + scores[4] + scores[5]
#合計点は求められるし/5にすると平均点が出せますが これだとめんどくさい汗
そこで繰り返し処理のeachを使います。
scores = [10,20,30,40,50,60]
scores.each do |score|
puts score
end
実行すると
10
20
30
40
50
60
と出力されます。
これはscoresの中の数字です。
解説するとeachは日本語でそれぞれという意味です。
scoresの中の数字それぞれ取り出して、取り出した数字をscoreに入れる
それをputsで出力させて上のようになります。
scores = [10,20,30,40,50,60]
scores.each do |score|
puts "Ruby"
puts score
end
で出力するとどうなるか? ここで質問
答えは
Ruby
10
Ruby
20
Ruby
30
Ruby
40
Ruby
50
Ruby
60
解説すると、scoresをそれぞれ取り出します。
取り出すと同時にRubyも呼ばれます。
その後の処理も同じように繰り返します。
これでeachの処理の流れがわかるかと思います。
scoresの中の合計点を出すには
scores = [10,20,30,40,50,60]
sum = 0
scores.each do |score|
sum = sum + score
end
puts sum
でプログラムを実行すると、
210
になります。
⚫︎補足
sumとscoreの変数名を変えても大丈夫です。
これはあくまで自分が何のプログラムかをわかりやすくしただけです。
#eachとmapの違いは?
eachと似たもので、map
というものがあります。
この2つの違いを説明します。
⚫︎each 繰り返し処理を行う
⚫︎map 繰り返し処理の結果を配列にしたい時に使う
#様々な繰り返し処理
each,map以外にもたくさんあります。
ex)
while until loop select reject find times などです。
下の問題集でいろいろ調べながらやってみてください。
#繰り返し処理問題集
問1ワンコを5回繰り返して出力させてください。
問2 変数gokuには
goku = ["スーパーサイヤ人","スーパーサイヤ人2","スーパーサイヤ人3","スーパーサイヤ人ゴッド"]
上のように代入されています。
~番目の変身は~です。となるように繰り返し処理を使って出力してください。
このように出力させてください。
# 1番目の変身はスーパーサイヤ人です。
# 2番目の変身はスーパーサイヤ人2です。
# 3番目の変身はスーパーサイヤ人3です。
# 4番目の変身はスーパーサイヤ人ゴッドです。
問3 難 変数numbersの中に数字が代入されています。
変数numbersの中から5で割れないものを出力させてください。
numbers = [10,17,25,30,46,78,100,112]
問4 難 問4 1から15までを1.5間隔で出力してください。
1 4 7 10 13が回答
問5 超難 下のコードを使って2021-08-27から2021-09-01を出力してください。
日付を一定間隔で作ってください。
t = Date.new(2021, 8, 27)
end
2021-08-27
2021-08-28
2021-08-29
2021-08-30
2021-08-31
2021-09-01
と出力できればokです。
問6
number = [10,20,30,40,50]
を足した合計を繰り返し処理を使って出力させてください。
#繰り返し処理問題集解答
問1
5.times do
puts "ワンコ"
end
#ポイント
#繰り返し処理の回数指定がわかるかがポイントです。
問2
goku.each.with_index(1) do |goku, index|
puts "#{index}番目の変身は#{goku}です。"
end
#ポイント
each.with_indexが使えるかがポイント
問3
numbers = [10,17,25,30,46,78,100,112]
result = numbers.reject do |n|
n % 5 == 0
end
p result
問4
1.step(7,1.5) do |x|
puts x
end
#ポイント
#stepが使えるかがポイントです。
#ちなみに3日間隔どと
1.step(15,3) do |x|
puts x
end
問5
require 'date'
t = Date.new(2021, 8, 27)
t.step(t + 5, 1) do |day|
puts day
end
#ポイント
#require 'date'を記述
#stepを使いこなせるか
問6
number = [10,20,30,40,50]
sum =
number.inject do |n,number|
n + number
end
puts sum
#ポイント
#injectを調べられるかです。