問題
問64
関数 sigma は、正の整数を引数 max で受け取り、1 から max までの整数の総和を返り値とする。プログラム中の a に入れる字句として、適切なものはどれか。

- calcX ← calcX × n
- calcX ← calcX + 1
- calcX ← calcX + n
- calcX ← n
[出典:ITパスポート試験 令和5年度 問64]
スポンサーリンク
正解
正解は「ウ」です。
解説
この問題では、1 から max までの整数の総和を求めるためのプログラムを考えます。総和を求めるには、繰り返し処理の中で現在の値を加算しながら計算する必要があります。
■プログラムの流れ
- calcX を 0 に初期化する。
- n を 1 から max まで 1 ずつ増やしながらループを回す。
- ループごとに calcX に n を加算していく。
- ループが終了したら calcX を返す。
■正しい選択肢
選択肢「ウ」の calcX ← calcX + n は、calcX に n の値を加算する処理です。この処理を繰り返すことで、1 から max までの整数の総和を求めることができます。
ア(calcX ← calcX × n):
乗算を行っているため、総和ではなく階乗のような計算になってしまい、誤りです。
イ(calcX ← calcX + 1):
すべてのループで 1 ずつ加算するため、max に関係なく max 回加算されるだけになり、誤りです。
エ(calcX ← n):
calcX に n を代入するだけで加算が行われないため、最後に max の値だけが代入されてしまい、誤りです。
難易度
普通
基本的なループ処理と加算の考え方が理解できていれば解ける問題です。アルゴリズムの基礎を学んでいる人にとっては易しいですが、プログラムの流れを正確に追えないと間違えやすいです。
スポンサーリンク
用語補足
ループ処理:
一定の条件が満たされるまで繰り返し処理を実行する制御構造のこと。プログラムでは「for ループ」や「while ループ」などがよく使われます。
累積加算:
ある変数に対して、繰り返し処理の中で数値を加算していく処理のこと。累積加算を利用すると、総和や累積ポイント計算などが行えます。
対策
- ループの中で何を計算しているのかを明確に理解する。
- プログラムの流れを紙に書き出して、各変数の値の変化を追う練習をする。
- 加算と乗算の違いを意識し、累積計算と初期化の関係を理解する。