ITパスポート過去問 令和5年度(2023年)問64
関数sigmaは,正の整数を引数maxで受け取り,1からmaxまでの整数の総和を戻り値とする。プログラム中のaに入れる字句として,適切なものはどれか。

選択肢
- ア:calcX ← calcX × n
- イ:calcX ← calcX + 1
- ウ:calcX ← calcX + n
- エ:calcX ← n
- ア
- イ
- ウ
- エ
正解と解き方・学習ポイント(AI解説)
関数sigmaは、for文でnを1からmaxまで1ずつ増やしながら、変数calcXにnを順に加算していくことで、1からmaxまでの総和を求めます。calcXは0で初期化されているため、ループ内では「calcX ← calcX + n」の形で累積加算を行うのが適切です。
Point
この問題は、for文の繰返し処理で1からmaxまでの総和を求めるとき、ループ内で行うべき代入文(累積の更新式)を選べるかを確認します。特に、初期化(calcX ← 0)とループ変数nの値の変化(1,2,…,max)に合わせて、合計を更新する処理を判断できることが目的です。
解くために必要な知識
この問題を解くには、for文の繰り返しと、変数の代入(更新)の意味を理解している必要があります。
用語の整理
| 用語 | 意味 |
|---|---|
| 関数 | 引数を受け取り、処理結果を戻り値として返す仕組みです。 |
| 引数 | 関数に渡す入力値です。この問題ではmaxです。 |
| 戻り値 | 関数が返す結果です。この問題では1からmaxまでの総和です。 |
| for文(繰返し) | 指定した範囲の値で同じ処理を繰り返す構文です。 |
| ループ変数 | 繰返しのたびに値が変化する変数です。この問題ではnです。 |
| 初期化 | 処理を始める前に変数へ初期値を入れることです。 |
| 代入(←) | 右辺の計算結果を左辺の変数に入れることです。 |
| 累積和(総和) | 値を順に足し合わせていく計算です。 |
図表の読み取り方
どの変数が何を表すかを押さえる
-
nは1からmaxまで変化する変数です。
-
calcXは合計値を保持する変数です。
初期化とループ範囲を確認する
-
calcXが0で初期化されているため、加算で総和を作る設計だと分かります。
-
nが1からmaxまで増えるため、各nを足し込む式が必要です。
解くための手順
手順1:合計を保持する変数を確認する
calcXが合計用で、初期値が0であることを確認します。
手順2:ループ変数が取る値を確認する
nが1からmaxまで順に変化することを確認します。
手順3:合計の更新式を作る
総和の基本形は次の更新です。
- 更新式:
calcX ← calcX + n
この式をループ内で繰り返すことで、1からmaxまでの総和になります。
問題の解法手順
問題のポイントは、ループ変数nが1,2,3,…,maxと変化するたびに、合計値calcXをどの式で更新すると総和になるかです。
図表の読み取り
プログラム全体の流れ
-
calcXを0で初期化する。
-
nを1からmaxまで1ずつ増やしながら繰り返す。
-
ループの中(aの部分)でcalcXを更新する。
-
最後にcalcXを戻り値として返す。
解く手順
ループ内で必要な処理を決める
総和は、毎回「これまでの合計」に「今回のn」を足して更新します。
具体例で確認する(max=3)
| ループ回数 | n | 更新式(a) | calcXの値 |
|---|---|---|---|
| 初期 | - | - | 0 |
| 1回目 | 1 | calcX ← calcX + n | 1 |
| 2回目 | 2 | calcX ← calcX + n | 3 |
| 3回目 | 3 | calcX ← calcX + n | 6 |
この動きになる式は「calcX ← calcX + n」です。
選択肢ごとの解説
- ア:不正解
calcX ← calcX × nは掛け算です。calcXは0で初期化されているため、0×1、0×2、…となりcalcXは0のままになり、総和になりません。
- イ:不正解
calcX ← calcX + 1は毎回1だけ増やす処理です。ループ回数分だけ増えるため最終的にcalcXはmaxになりますが、1からmaxまでの総和にはなりません。
- ウ:正解
calcX ← calcX + nは、nを1からmaxまで順に足し込む累積加算です。ループ終了時にcalcXが1+2+…+maxとなるため適切です。
- エ:不正解
calcX ← nは値の上書きです。最後に実行されたときのn(=max)がcalcXに入るだけで、総和になりません。
まとめ
関数sigmaは、for文でnを1からmaxまで1ずつ増やしながら、変数calcXにnを順に加算していくことで、1からmaxまでの総和を求めます。calcXは0で初期化されているため、ループ内では「calcX ← calcX + n」の形で累積加算を行うのが適切です。
テクノロジ系 > 基礎理論 > アルゴリズムとプログラミング
calcX ← calcX × nは掛け算です。calcXは0で初期化されているため、0×1、0×2、…となりcalcXは0のままになり、総和になりません。calcX ← calcX + 1は毎回1だけ増やす処理です。ループ回数分だけ増えるため最終的にcalcXはmaxになりますが、1からmaxまでの総和にはなりません。calcX ← calcX + nは、nを1からmaxまで順に足し込む累積加算です。ループ終了時にcalcXが1+2+…+maxとなるため適切です。calcX ← nは値の上書きです。最後に実行されたときのn(=max)がcalcXに入るだけで、総和になりません。