ВОРОТА | ВОРОТА КС 2021 | Набор 1 | Вопрос 14
Опубликовано: 7 Октября, 2022
Рассмотрим следующие утверждения.
- S1: последовательность вызовов процедур соответствует предварительному обходу дерева активации.
- S2: Последовательность возврата процедуры соответствует обходу дерева активации в обратном порядке.
Какой из следующих вариантов правильный?
(А) S1 верно, а S2 ложно
(B) S1 ложно, а S2 верно
(C) верно S1 и верно S2
(D) S1 ложно, а S2 ложно
Ответ: (С)
Объяснение: Использование стека времени выполнения возможно благодаря нескольким полезным отношениям между деревом активации и поведением программы:
- Последовательность вызовов процедур соответствует обходу дерева активации в прямом порядке.
- Последовательность возвратов соответствует обходу дерева активации в обратном порядке.
- Путь от корня к узлу N показывает активации, действующие на момент выполнения N.
- Вызовы и возвраты процедур управляются стеком управления, т. е. стеком времени выполнения.
При каждом вызове процедуры запись активации для этой процедуры помещается в стек. Когда вызов возвращается, эта активационная запись извлекается из стека.
Порядок, в котором были вызваны эти активации, — это порядок, в котором они появляются на пути к N, начиная с корня, и возвращаются в обратном порядке.
Викторина этого вопроса