関数 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
この設問が問うていること
ループ文によって変数の値が指定通り変化する、プログラムコードの空欄補完とトレースについて問う設問です。
総合解説
プログラムの変数の変化(トレース)から正しい処理式とループ条件の組み合わせを特定する問題です。 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が正解です。
こんな聞き方もできます(タップで質問)