ITパスポート試験

問64

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」の形で累積加算を行うのが適切です。

不正解

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に入るだけで、総和になりません。

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」の形で累積加算を行うのが適切です。

テクノロジ系 > 基礎理論 > アルゴリズムとプログラミング