正解は ク
この問題は再帰呼び出しとプログラムの実行順序の理解を問う重要な問題です。プログラムの実行順序を追跡する際は、手続きが呼び出されるたびに新しい実行コンテキストが作られ、呼び出し元の処理は一時停止することを理解する必要があります。 まず、proc2()が呼び出されると以下の順序で実行されます: 1. proc3()を呼び出し、proc3内で'C'を出力 2. 'B'を出力 3. proc1()を呼び出し、その中で'A'を出力し、さらにproc3()を呼び出して'C'を出力 したがって、最終的な出力は'C', 'B', 'A', 'C'となります。 このような問題が出題される理由は、実務でのプログラミングにおいて手続きの呼び出しの流れを正確に理解することが非常に重要だからです。特にデバッグやプログラムの動作解析において、実行順序の理解は必須のスキルとなります。
手続き呼び出しの実行順序を追跡する際は、以下のような方法が効果的です: 1. 紙に実行スタックを描き、各手続きの呼び出しを積み上げていく 2. 各手続きの実行が完了したら、スタックから取り除く 3. 出力命令に注目し、実際に出力される順序を矢印で示す また、似たような問題でよく出題されるパターンとして: - 再帰呼び出し - 相互呼び出し - 入れ子になった手続き呼び出し これらのパターンを意識して学習することをお勧めします。