令和3年度 ITパスポート試験 公開問題 問74

流れ図Xで示す処理では,変数 ii の値が,1 → 3 → 7 → 13 と変化し,流れ図Yで示す処理では,変数 ii の値が,1 → 5 → 13 → 25 と変化した。図中の a,b に入れる字句の適切な組合せはどれか。

流れ図Xと流れ図Y
図の説明テキスト

〔流れ図X〕

  • 端子: 開始
  • 処理: ii に1を格納する
  • ループ開始 (変換): k:1,1,3k : 1, 1, 3 (注)
  • 処理: a を計算し,その結果を ii に格納する
  • ループ終了 (変換)
  • 端子: 終了

〔流れ図Y〕

  • 端子: 開始
  • 処理: ii に1を格納する
  • ループ開始 (変換): b (注)
  • 処理: a を計算し,その結果を ii に格納する
  • ループ終了 (変換)
  • 端子: 終了

(注) ループ端の繰返し指定は,変数名 : 初期値,増分,終値を示す。

解答・解説

正解: エ. a: i+2ki + 2k, b: k:2,2,6k : 2, 2, 6

[a] の特定(流れ図X)

流れ図Xでは、ii の初期値は1で、ループ変数 kk は初期値1、増分1、終値3で変化します(k=1,2,3k = 1, 2, 3)。
ループの各反復での ii と kk の値をトレースして、[a] に当てはまる式を確認します。

  • 1回目のループ(k=1k=1)
    処理前の ii は1です。計算結果として ii は3になる必要があります。
    i+2k=1+2×1=3i + 2k = 1 + 2 \times 1 = 3(一致)
    2i+k=2×1+1=32i + k = 2 \times 1 + 1 = 3(一致)

  • 2回目のループ(k=2k=2)
    処理前の ii は3です。計算結果として ii は7になる必要があります。
    i+2k=3+2×2=7i + 2k = 3 + 2 \times 2 = 7(一致)
    2i+k=2×3+2=82i + k = 2 \times 3 + 2 = 8(不一致)

この時点で、[a] に当てはまる式は i+2ki + 2k であることがわかります。(3回目のループ k=3k=3 の場合も、7+2×3=137 + 2 \times 3 = 13 となり一致します。)

[b] の特定(流れ図Y)

流れ図Yでは、[a] の処理が i+2ki + 2k であることがわかりました。
変数 ii の値は 1 → 5 → 13 → 25 と変化しています。この変化から、各ループでの kk の値を逆算します。

  • 1回目のループ
    処理前の ii は1、処理後は5です。
    1+2k=51 + 2k = 5 より 2k=42k = 4、したがって k=2k = 2。

  • 2回目のループ
    処理前の ii は5、処理後は13です。
    5+2k=135 + 2k = 13 より 2k=82k = 8、したがって k=4k = 4。

  • 3回目のループ
    処理前の ii は13、処理後は25です。
    13+2k=2513 + 2k = 25 より 2k=122k = 12、したがって k=6k = 6。

kk の値は 2、4、6 と変化しているため、ループ指定(変数名 : 初期値, 増分, 終値)は k:2,2,6k : 2, 2, 6 となります。

各選択肢の解説

  • ア:[a] の式(2i+k2i + k)および [b] のループ指定(k:1,3,7k : 1, 3, 7)のどちらも誤りです。
  • イ:[a] の式(2i+k2i + k)が誤りです。2回目のループで ii の値が一致しません。
  • ウ:[b] のループ指定(k:1,3,7k : 1, 3, 7)が誤りです。この指定では ii の値の変化が一致しません。
  • エ:正しい組合せです。

Spineチーム