本文へスキップ

令和5年度 ITパスポート試験 問64

この問題の解説と、これまでの解答の記録です。

問64
頻出度★★☆

関数 sigma は, 正の整数を引数 max で受け取り, 1から max までの整数の総和を戻り値とする。プログラム中の a に入れる字句として, 適切なものはどれか。 〔プログラム〕 ○整数型: sigma(整数型: max) 整数型: calcX ← 0 整数型: n for (n を 1 から max まで 1 ずつ増やす) a endfor return calcX

出典 令和5年度 ITパスポート試験 問64
解説

問 64

  • 不正解ア

    「calcX ← calcX × n」は乗算。calcX の初期値が 0 なので、何回掛けても calcX は 0 のままで、総和にならない(積を求めるなら初期値を 1 にする必要がある)。誤り。

  • 不正解イ

    「calcX ← calcX + 1」は毎回 1 だけ加える。ループ回数ぶん 1 が足されるだけなので、結果は max(繰返し回数)になり、1+2+…+max の総和にならない。誤り。

  • ウ

    正解 関数 sigma は 1 から max までの整数の総和を返す。calcX は初期値 0 に設定され、for ループは n を 1 から max まで 1 ずつ増やしながら繰り返す。総和を求めるには、各回ループで現在の n を累積変数 calcX に足し込めばよい。a に「calcX ← calcX + n」を入れると、calcX は 0 →1 →1+2 →1+2+3 →… と進み、ループ終了時に 1+2+…+max の総和になる。よって正解はウ。

  • 不正解エ

    「calcX ← n」は加算ではなく代入。毎回 calcX を n で上書きするため、ループ終了時に残るのは最後の値 max だけで、総和にならない。誤り。

ここがポイント
  • 繰返し(for ループ)で総和を求める基本形は、累積変数を 0 で初期化し、ループ内で「累積変数 ← 累積変数 + ループ変数」と加算していくこと。
  • 総和(加算)は累積変数の初期値 0・演算子は「+」、総積(乗算)なら初期値 1・演算子は「×」と区別する。代入「←」と累積加算「← …+…」の違いにも注意。
用語

解答の記録