96の正解: テクノロジ系アルゴリズムとプログラミング

関数 calcX と関数 calcYは、引数 inData を用いて計算を行い、その結果を戻り値とする。関数 calcXをcalcX (1)として呼び出すと、関数calcXの変数 num の値が、1→3→7→13と変化し、戻り値は13となった。関数calcYをcalcY (1)として呼び出すと、関数 calcYの変数 num の値が、1→5→13→25と変化し、戻り値は25となった。プログラム中のa, bに入れる字句の適切な組合せはどれか。 [プログラム1] ○整数型:calcX(整数型: inData) 整数型:num, i num ← inData for (iを1から3まで1ずつ増やす) num ← [ a ] endfor return num [プログラム2] ○整数型:calcY(整数型: inData) 整数型:num, i num ← inData for ( [ b ] ) num ← [ a ] endfor return num

この設問が問うていること

ループ文によって変数の値が指定通り変化する、プログラムコードの空欄補完とトレースについて問う設問です。

a=2×num+i, b=iを1から7まで3ずつ増やす
選択肢の解説: 式aが異なっており、プログラム1の変数の推移(1→3→7→13)を再現できません。
a=2×num+i, b=iを2から6まで2ずつ増やす
選択肢の解説: 式aが異なっており、変数numが正しい値になりません。
a=num+2×i, b=iを1から7まで3ずつ増やす
選択肢の解説: 式aは正しいですが、ループ条件b(i=1, 4, 7)を適用するとプログラム2の値が1→3→11→25となり、問題文の推移(1→5→13→25)に合致しません。
a=num+2×i, b=iを2から6 まで 2 ずつ増やす正解
選択肢の解説: 式a(num + 2 × i)によりプログラム1が成立し、ループ条件b(i=2, 4, 6)によりプログラム2の推移も完全に一致するため、適切です。

総合解説

プログラムの変数の変化(トレース)から正しい処理式とループ条件の組み合わせを特定する問題です。 1. [ a ] の特定(プログラム1) 初期値 `num = 1` に対して、ループは `i = 1, 2, 3` と変化します。 ・`num ← num + 2 × i` の場合 ・`i = 1` : `num = 1 + 2 × 1 = 3` ・`i = 2` : `num = 3 + 2 × 2 = 7` ・`i = 3` : `num = 7 + 2 × 3 = 13` (完全に一致するため、`a = num + 2 × i`) 2. [ b ] の特定(プログラム2) `num` の初期値は 1 で、推移は `1→5→13→25`(3ステップ)です。 ・`a = num + 2 × i` を使用します。 ・`i を 2 から 6 まで 2 ずつ増やす` ($i = 2, 4, 6$)の場合 ・$i=2 \implies num = 1 + 2 \times 2 = 5$ ・$i=4 \implies num = 5 + 2 \times 4 = 13$ ・$i=6 \implies num = 13 + 2 \times 6 = 25$ (問題文の推移と一致するため適合) したがって、a=num+2×i、b=iを2から6まで2ずつ増やす、となり、選択肢dが正解です。

執筆・監修: 運営者 KH更新日: 2026-07-05出典: IPA公式PDF(過去問題・解答例)
AIAIにその場で質問(デモ応答)

こんな聞き方もできます(タップで質問)

令和4年度を本番同様のCBT形式で解いてみよう

無料登録なしでも一部体験可能。登録すれば採点・弱点分析・AI教科書まで使えます。

令和4年度の過去問CBTを解く