過去問ドリル

令和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 を求めます。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 と変化し,題意に一致します。
ITパスポートの過去問を演習モードで解く