初めに
初学者です。rubyの問題を私なりに解説することにより定着するのが目的です。間違いやご不明点がありましたらご指摘お願いします。
問題
次の要件を満たすプログラムを実装しましょう。
1~10の数値を順番に足し合わせる
足し算の合計値がターミナルに出力される
条件〜timesメソッドを使い実装すること。
timesメソッド
まずtimesメソッドについて解説してきます。
timesメソッドとは指定した回数だけ繰り返し処理を行えるメソッドのことです。
書き方としては以下のようになります。
数値.times do
#繰り返す処理
end
do~endのなかに繰り返したい処理を記述します、そしてtimesの前に記入した数値の数だけ処理を繰り返します。
#####ブロック変数
またtimesメソッドではブロック変数を使用することができます。書き方としたはdoの後に||で囲い、その中に変数を記述しその変数をメソッド内で使用することができます。このブロック変数は繰り返し処理が1回実行されるごとに0から1ずつ増加する数値が代入されます。
数値.times do |ブロック変数|
#繰り返す処理(0から始まるブロック変数が使える)
end
解答
では解答に入っていきます。今回1~10の数値を順番に足していく問題なので、繰り返しは10回になります。そしてブロック変数を使うことによって1~10の数値を変数に代入していきます。ブロック変数名はiです。
10.times do |i|
end
そして今回の式では0+1=[1],[1]+2=3といった形で足し算が繰り返していきます。そのためには繰り返すごとに数値を保存する変数が必要になってきます。よって合計値を保存する変数を定義します。変数名はsumとします。
sum = 0
10.times do |i|
end
ブロック変数iは繰り返すごとに数値が1から2。2から3と増えていきます。なので変数sumに+していき保存します。
そしてここで注意なのですがプログラミングは数値が0から数えられます。よって+1の記述が必要になります。
そして繰り返し処理ごとに変数sumに代入していきます。最後に変数sumを出力する記述を書けば終了です。
sum = 0
10.times do |i|
sum += i + 1
end
puts sum