令和4年度 ITパスポート 問96(テクノロジ)
出典:令和4年度 ITパスポート試験 公開問題 問96(独立行政法人情報処理推進機構(IPA))
関数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 | b |
|---|---|---|
| ア | 2 × num + i | iを1から7まで3ずつ増やす |
| イ | 2 × num + i | iを2から6まで2ずつ増やす |
| ウ | num + 2 × i | iを1から7まで3ずつ増やす |
| エ | num + 2 × i | iを2から6まで2ずつ増やす |
正解と解説を見る
正解:エ
【calcXの空欄a】
calcX(1)では、iが1、2、3と変わるたびに、numが 1 → 3 → 7 → 13 と変わります。それぞれの増え方は、+2、+4、+6 で、i = 1、2、3 のときの 2 × i と一致します。
したがって、空欄aは num + 2 × i です。
aを 2 × num + i とすると、i = 1 で 2 × 1 + 1 = 3、i = 2 で 2 × 3 + 2 = 8 となり、7になりません。
【calcYの空欄b】
calcY(1)では、numが 1 → 5 → 13 → 25 と変わります。aは num + 2 × i なので、増え方の +4、+8、+12 は、2 × i がそれぞれ4、8、12、つまりiが2、4、6のときです。
したがって、空欄bは「iを2から6まで2ずつ増やす」です。
bを「iを1から7まで3ずつ増やす」とすると、iは1、4、7となり、numは 1 → 3 → 11 → 25 と変わって、途中の値が一致しません。
aが num + 2 × i、bが iを2から6まで2ずつ増やす の組合せです。よって、正解は選択肢エです。