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.

初学者向けのRuby勉強会で使用した資料(繰り返し処理,繰り返し処理問題集)

Last updated at Posted at 2021-10-22

#勉強会の状況
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を調べられるかです。
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?