ВОРОТА | ВОРОТА КС 2021 | Набор 1 | Вопрос 14

Опубликовано: 7 Октября, 2022

Рассмотрим следующие утверждения.

  • S1: последовательность вызовов процедур соответствует предварительному обходу дерева активации.
  • S2: Последовательность возврата процедуры соответствует обходу дерева активации в обратном порядке.

Какой из следующих вариантов правильный?
(А) S1 верно, а S2 ложно
(B) S1 ложно, а S2 верно
(C) верно S1 и верно S2
(D) S1 ложно, а S2 ложно

Ответ: (С)
Объяснение: Использование стека времени выполнения возможно благодаря нескольким полезным отношениям между деревом активации и поведением программы:

  • Последовательность вызовов процедур соответствует обходу дерева активации в прямом порядке.
  • Последовательность возвратов соответствует обходу дерева активации в обратном порядке.
  • Путь от корня к узлу N показывает активации, действующие на момент выполнения N.
  • Вызовы и возвраты процедур управляются стеком управления, т. е. стеком времени выполнения.

При каждом вызове процедуры запись активации для этой процедуры помещается в стек. Когда вызов возвращается, эта активационная запись извлекается из стека.
Порядок, в котором были вызваны эти активации, — это порядок, в котором они появляются на пути к N, начиная с корня, и возвращаются в обратном порядке.
Викторина этого вопроса

РЕКОМЕНДУЕМЫЕ СТАТЬИ