ITパスポート 令和4年度96

問題

テクノロジ系

問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に入れる字句の適切な組合せはどれか。

選択肢

解説

正解:

概要

for文の繰返しの中で変数numを更新する処理について、途中の値の変化から式aとループ条件bを特定する問題です。

正解の理由

calcX(1)でi=1,2,3のときにnumが1→3→7→13となるには、更新式はnum←num+2×iでないと一致しません。calcY(1)で1→5→13→25となるには、iが2,4,6と変化する必要があるため、bは「iを2から6まで2ずつ増やす」となります。

各選択肢の解説

ア(×): aが2×num+iだとcalcXでi=2のときに3→8となり、指定の3→7に一致しないため誤りです。

イ(×): aが2×num+iの時点でcalcXの変化に合わず誤りで、さらにbの条件だけ合っても全体として正しくなりません。

ウ(×): aはnum+2×iで合いますが、bが「1から7まで3ずつ」だとiが1,4,7となり、calcYの1→5→13→25を作れないため誤りです。

エ(〇): aをnum+2×i、bを「iを2から6まで2ずつ増やす」とすると、calcXは1→3→7→13、calcYは1→5→13→25となり条件を満たします。

ポイント

繰返し処理は「次の値=前の値に何を足す(掛ける)か」を差分で確認すると式を特定しやすいです。

関連用語