応用情報技術者 2015年 春期 午前2 問07
問題文
プログラムの実行に関する次の記述の下線部a〜dのうち、いずれかに誤りがある。誤りの箇所と正しい字句の適切な組合せはどれか。
自分自身を呼び出すことができるプログラムは、a 再帰的であるという。このようなプログラムを実行するときは、bスタックに局所変数、c 仮引数及び戻り番地を格納して呼び出し、復帰するときはd FIFO(First In First Out)方式で格納したデータを取り出して復元する必要がある。

選択肢
ア:
イ:
ウ:
エ:(正解)
プログラムの実行に関する記述の誤り箇所と正しい字句【午前2 解説】
要点まとめ
- 結論:誤りは「d FIFO方式」で、正しくは「LIFO方式」であることが重要です。
- 根拠:関数呼び出し時の戻り番地や局所変数はスタックに格納され、後入れ先出し(LIFO)で復元されます。
- 差がつくポイント:スタックの動作原理を正確に理解し、FIFO(待ち行列)とLIFO(スタック)の違いを明確に区別できるかが鍵です。
正解の理由
プログラムの呼び出しと復帰の管理には「スタック」が使われます。スタックは「LIFO(Last In First Out)」方式で動作し、最後に格納したデータが最初に取り出されます。これにより、関数の呼び出し順序と復帰順序が正しく管理されます。問題文の「d FIFO方式」は誤りで、正しくはLIFO方式です。
よくある誤解
スタックの動作を「FIFO(First In First Out)」と混同しやすいですが、FIFOはキューの動作原理であり、関数呼び出しの管理には適しません。
解法ステップ
- 問題文の各下線部(a〜d)の意味を確認する。
- 「再帰的」「スタック」「仮引数」「FIFO方式」の用語の正確な意味を理解する。
- スタックの動作原理(LIFO)を思い出す。
- 各選択肢の誤り箇所と正しい字句を照合する。
- 「d FIFO方式」が誤りで「LIFO方式」が正しいと判断する。
選択肢別の誤答解説
- ア(a:再帰的 → 再入可能)
「再帰的」は「自分自身を呼び出す」意味で正しい。再入可能は別の概念。 - イ(b:スタック → 待ち行列)
呼び出し情報は「スタック」に格納されるため、待ち行列は誤り。 - ウ(c:仮引数 → 実引数)
仮引数は関数定義側の引数で正しい。実引数は呼び出し側の値。 - エ(d:FIFO → LIFO)
スタックはLIFO方式で動作するため、FIFOは誤り。正解はエ。
補足コラム
プログラムの関数呼び出し管理には「コールスタック」が使われます。これはLIFO構造で、関数の呼び出し順序を逆順に復帰させるために不可欠です。FIFOはキューの動作原理で、プリントジョブの順番待ちなどに使われます。
FAQ
Q: なぜ関数呼び出しにスタックが使われるのですか?
A: 関数の呼び出しと復帰は入れ子構造であり、最後に呼び出した関数から先に復帰する必要があるため、LIFOのスタックが適しています。
A: 関数の呼び出しと復帰は入れ子構造であり、最後に呼び出した関数から先に復帰する必要があるため、LIFOのスタックが適しています。
Q: FIFOはどんな場面で使われますか?
A: FIFOはキュー構造で、順番待ちやバッファリングなど、先に入れたものから順に処理する場面で使われます。
A: FIFOはキュー構造で、順番待ちやバッファリングなど、先に入れたものから順に処理する場面で使われます。
関連キーワード: 再帰、スタック、LIFO, 関数呼び出し、コールスタック、仮引数、プログラム実行

\ せっかくなら /
応用情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

