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 1 year has passed since last update.

Ruby9

Posted at

問題

次の要件を満たすプログラムを実装しましょう。

・1~10の数値を順番に足し合わせる
・足し算の合計値がターミナルに出力される

しかし、以下のような順番に並べて、足し算しただけのプログラムはNGです。

NGコード
sum = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10

ループ処理を用いて実装しましょう。

💡ヒント💡

times文を用いることで、ループ処理を実装できます。
ループ処理とは、特定の条件下にて、任意の処理を繰り返すことでした。
今回の問題にループ処理を当てはめると、

0に1を足し、
その結果に2を足し、
その結果に3を足し、
その結果に4を足し、
その結果に5を足し、
...と10まで繰り返していきます。




模範解答

模範解答1
sum = 0

10.times do |i|
  sum = sum + i + 1
end

puts sum
模範解答2
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に1〜10の数値を順番に足していく

NGコード
sum = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10

問題文にある通り、上記のコードは使用できないためループ処理が可能なtimes文を使用します。

③順番に足していく処理をtimes文の繰り返しで置き換える

times文を使えば、何度も繰り返される同じ処理をまとめることができます。

times文は繰り返したい回数.timesと記載して繰り返す数を決めます。
今回は1〜10まで順番に足していくため、10回同じような処理が繰り返されます。よって繰り返したい回数は10回です。

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をターミナルに出力できるようにすれば終了です。




0から順に足されることに注意してプログラムを記述することです。
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?