基本情報技術者過去問題 平成28年秋期 午後問13 解説

問題文は他のサイトを別ウインドウで開いてご覧ください。

問題文の表にある数値を引数として、トレースします。

最初のループ

最初のループは20回繰り返します。
ループを開くと以下になります。

相対(A2, 1, 0) ← null
相対(A2, 2, 0) ← null
相対(A2, 3, 0) ← null
相対(A2, 4, 0) ← null
相対(A2, 5, 0) ← null
相対(A2, 6, 0) ← null
相対(A2, 7, 0) ← null
相対(A2, 8, 0) ← null
相対(A2, 9, 0) ← null
相対(A2, 10, 0) ← null
相対(A2, 11, 0) ← null
相対(A2, 12, 0) ← null
相対(A2, 13, 0) ← null
相対(A2, 14, 0) ← null
相対(A2, 15, 0) ← null
相対(A2, 16, 0) ← null
相対(A2, 17, 0) ← null
相対(A2, 18, 0) ← null
相対(A2, 19, 0) ← null
相対(A2, 20, 0) ← null

表の値を書き換えます。
A
3 null
4 null
5 null
6 null
7 null
8 null
9 null
10 null
11 null
12 null
13 null
14 null
15 null
16 null
17 null
18 null
19 null
20 null
21 null
22 null

これは繰り返し使ったときに前の値が残らないように、初期化しているだけです。

準備

相対(I2, F3, 0) < 9999 なら状態遷移列が存在するので、以下の行を実行します。
相対(I2, F3, 0) は 相対(I2, 13, 0) すなわち セルI15(値は47)です。
なお列Iの値は、本問には記述されていない CalculateMinimum という、このマクロとは別のマクロにより自動入力されているので、気にする必要はありません。

初期値を設定します。
NumWork ← 0
Current ← 13

作業数 NumWork を算出する

ループするたびに NumWork をプラス1してループ回数を数えることにより、作業数 NumWork を算出します。

現状態ID から 前状態IDを順に辿っていくことによって数えますので、空欄eはアとなります。

Current が開始状態IDになった時点でループを抜けますので、ループ条件は「Currentが開始状態IDではない限りループし続ける」となりますので、空欄dはカです。

トレースさせてもらえない

具体的に追ってみます。
状態ID 13 の前状態IDは 11 です。
状態ID 11 の前状態IDは、、、

省略されて書いてないんです。
トレースさせてもらえません。
結構イジワルですよね。

しかし、列Aを見れば 自動入力する行数は 8 であることがわかります。
そして、IDの遷移は 13,11,10,9,8,6,4,3であることも推測できます。

以上から NumWork が 7 であることがわかります。

状態遷移列を格納する

初期値を設定します。
Current ← 13

空欄 f ですが、I の初期値は NumWork となります。
このために前の工程で算出したのですから。

相対(A3, 7, 0) ← 13 をいれます。
Current ← 11 をいれます。

表の値を書き換えます。
A
3 null
4 null
5 null
6 null
7 null
8 null
9 null
10 13

これを8回繰り返します。

相対(A3, 6, 0) ← 11 をいれます。
Current ← 10 をいれます。
相対(A3, 5, 0) ← 10 をいれます。
Current ← 9 をいれます。
相対(A3, 4, 0) ← 9 をいれます。
Current ← 8 をいれます。
相対(A3, 3, 0) ← 8 をいれます。
Current ← 6 をいれます。
相対(A3, 2, 0) ← 6 をいれます。
Current ← 4 をいれます。
相対(A3, 1, 0) ← 4 をいれます。
Current ← 3 をいれます。
相対(A3, 0, 0) ← 3 をいれます。
Current ← 0 をいれます。

表の値を書き換えます。
A
3 3
4 4
5 6
6 8
7 9
8 10
9 11
10 13

空欄 f の選択肢のうち、
エは7回、
オは7回、
カは8回繰り返します。

よって空欄 f はカです。


ホームに戻るボタン↓