令和4年度 ITパスポート試験 問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
出典:令和4年度 ITパスポート試験 問96
- アa:2 × num + i,b:i を 1 から 7 まで 3 ずつ増やす
- イa:2 × num + i,b:i を 2 から 6 まで 2 ずつ増やす
- ウa:num + 2 × i,b:i を 1 から 7 まで 3 ずつ増やす
- エa:num + 2 × i,b:i を 2 から 6 まで 2 ずつ増やす
正解:エ
解説
まず a を求めます。calcX では i が 1,2,3 と変化して num が 1→3→7→13 となります。増加量は 2,4,6 で,i の 2 倍です。したがって a は num + 2 × i です(2 × num + i だと 1→3→8 となり合いません)。次に b を求めます。calcY では a が同じ式なので,num が 1→5→13→25 となるときの増加量は 4,8,12 で,i が 2,4,6 のときです。よって b は「i を 2 から 6 まで 2 ずつ増やす」です。
選択肢ごとの解説
- ア誤り。a が 2 × num + i だと,calcX の num が 1→3→8 となり,題意の 1→3→7 になりません。
- イ誤り。a が 2 × num + i だと,calcX の num が 1→3→8 となり,題意の 1→3→7 になりません。
- ウ誤り。a は適切ですが,i を 1 から 7 まで 3 ずつ増やすと i=1,4,7 となり,num は 1→3→11→25 となって,題意の 1→5→13→25 になりません。
- エ正しい。a は num + 2 × i,b は i が 2,4,6 となるので,num は 1→5→13→25 と変化し,題意に一致します。