※初心者向け
※アウトプット練習の為
開発環境
rails 6.1.4.1
ruby 2.6.5
##問題内容##
1〜10までの数値を順番に足し合わせて、最後に全て足した結果をターミナルに出力するプログラムを書いてください。
条件:必ずtimesメソッドを使ってください。以下のようなプログラムはNGです。
NGなプログラムの例
sum = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10
##解答##
sum = 0
10.times do |i|
sum = sum + i + 1
end
puts sum
もしくは自己代入演算子+=を使って
sum = 0
10.times do |i|
sum += i + 1
end
puts sum
##解説##
今回の作成するのは、1〜10までの数字を順番に足し合わせていくプログラムです。
このプログラムの考え方は以下になります。
①合計値を保存しておく変数sumを用意する
②変数sumに1〜10の数値を順番に足していく
③順番に足していく処理をtimes文の繰り返しで置き換える
④変数sumの値をターミナルに出力
①合計値を保存しておく変数sumを用意する
1に2を足し、
その結果に3を足し、
その結果に4を足し、
その結果に5を足し、...と10まで繰り返していきます。
よって常に結果を保存しておく変数が必要になります。これを変数名sumとして定義しておきます。まだ何も足してない状態なので、sumには0を代入しておきます。
sum = 0
②変数sumに1〜10の数値を順番に足していく
変数sumに1〜10の数値を順番に足していくプログラムをそのまま書いてみましょう。
sum = 0
sum = sum + 1
sum = sum + 2
sum = sum + 3
sum = sum + 4
sum = sum + 5
sum = sum + 6
sum = sum + 7
sum = sum + 8
sum = sum + 9
sum = sum + 10
自己代入演算子+=を使うことでより短い記述にできます。
sum = 0
sum += 1
sum += 2
sum += 3
sum += 4
sum += 5
sum += 6
sum += 7
sum += 8
sum += 9
sum += 10
このコードは非常に長く、かつ同じ処理が続いてるため、timesメソッドを使って効率的なコードに書き換えます。
③順番に足していく処理をtimes文の繰り返しで置き換える
timesメソッドを使えば、何度も繰り返される同じ処理をまとめることができます。今回まとめられるのはsum += 数値の部分です。
timesメソッドは繰り返したい回数.timesと記載して繰り返す数を決めます。今回は1〜10まで順番に足していくため、10回同じような処理が繰り返されます。よって繰り返したい回数は10回です。
sum = 0
10.times do |i|
# 順番に足していく処理を書く
end
timesメソッドの中に繰り返したい処理を書きます。今回はsum += 数値を繰り返します。
sum = 0
10.times do |i|
sum += 数値
end
数値の部分はどうすればいいでしょうか。繰り返す回数ごとにこの数値は変わります。1回目は1、2回目は2、3回目は3となります。つまり、繰り返しの回数と同じです。
timesメソッドでは、変数iの中に繰り返しの回数が数値として自動で代入されます。よって、変数iを使えば繰り返しの回数を変数sumに足していくことができます。
ただし、プログラムなので1回目のiの数値は0となります。よってsumに足すのは1増やしたi + 1にしましょう。
sum = 0
10.times do |i|
sum += i + 1
end
④変数sumの値をターミナルに出力
最後にputsメソッドでsumをターミナルに出力すれば終了です。
sum = 0
10.times do |i|
sum += i + 1
end
puts sum