ITパスポート|アルゴリズムとプログラミング 問3
関数 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 を決め、次にその a を使って、プログラム 2 の b を決めます。
- a の候補“2 × num + i”
- i = 1 で 2 × 1 + 1 = 3、i = 2 で 2 × 3 + 2 = 8。7 にならないので誤りです。
- a の候補“num + 2 × i”
- i = 1 で 1 + 2 = 3、i = 2 で 3 + 4 = 7、i = 3 で 7 + 6 = 13。1 → 3 → 7 → 13 と一致します。
- b の候補“1 から 7 まで 3 ずつ”
- i = 1、4、7 で、1 + 2 = 3 となり、5 にならないので誤りです。
- b の候補“2 から 6 まで 2 ずつ”
- i = 2、4、6 で、1 + 4 = 5、5 + 8 = 13、13 + 12 = 25。1 → 5 → 13 → 25 と一致します。
- エ 正解。a は num + 2 × i、b は“i を 2 から 6 まで 2 ずつ増やす”です。
出典:令和4年度 ITパスポート試験 公開問題 問96(読点「,」を「、」に改変)