令和元年度 秋期 システムアーキテクト試験 午前Ⅱ 問5
テクノロジ/開発技術あるプログラム言語によるプログラミングの解説書の中に次の記述がある。この記述中の“良いプログラム”がもっている特性はどれか。 このプログラム言語では,関数を呼び出すときに引数を保持するためにスタックが使用される。オプションの指定によって,引数で受け渡すデータをどの関数からでも参照できる共通域に移して,スタックの使用量を減らすことは可能だが,“良いプログラム”とは見なされないこともある。
出典:令和元年度 秋期 システムアーキテクト試験 午前Ⅱ 問5
- ア実行するときのメモリの使用量が,一定以下に必ず収まる。
- イ実行速度が高速になる。
- ウプログラムの一部(関数)を変更しても,他の関数への影響が少ない。
- エプログラムのステップ数が少なく,分かりやすい。
正解:ウ
解説
引数をスタックで受け渡す場合,データの受渡しが呼出し元と呼出し先の間に限定されるため,ある関数を変更しても,その影響は呼び出し関係にある関数だけに限られ,無関係な他の関数への影響は小さくなります。一方,引数を共通域(グローバル変数)経由で受け渡すと,どの関数からでもデータを参照・変更できてしまうため,ある関数の変更が意図しない形で他の多くの関数に影響を及ぼす(結合度が高くなる)おそれがあります。したがって,スタックによる引数の受渡しを用いる“良いプログラム”がもつ特性は,モジュール間の影響範囲が小さいことです。
選択肢ごとの解説
- ア誤り。スタックによる引数の受渡しは,メモリ使用量を一定以下に必ず収めることを保証するものではありません。
- イ誤り。スタックの使用は,共通域を使う場合に比べて必ずしも実行速度が高速になるとは限りません。
- ウ正しい。引数をスタックで受け渡すことで関数間の依存が限定され,プログラムの一部を変更しても他の関数への影響が少なくなります。
- エ誤り。引数の受渡し方法とプログラムのステップ数の多少は直接関係しません。