8.4. ВЫЗОВ ПРОЦЕДУРЫ
393
8.4.2. Статическая и динамическая цепочки
Для тех,кто желает ограничить себя программированием на языках
С/С++
,
данный раздел, скорее всего, не представляет интереса, однако для глубокого
усвоения процессов, которые происходят в реальной вычислительной техни-
ке при вызовах процедур, представленный материал является необходимым.
8
Из предыдущего видно, что вызов процедуры приводит к оперированию с
контекстами. В этой связи важно проследить взаимодействие контекстов, ди-
намически возникающих в ходе выполнения программы, и статических кон-
текстов, которые обсуждались ранее.
Возможность доступа к любым объектам в процедуре определяется до
выполнения программы в соответствии с механизмом согласования контек-
стов (см. параграф 8.4.1). При выполнении программы локальные контексты
порождаются и уничтожаются в порядке, который определяется динамиче-
ски: порядком вызовов процедур. Поскольку их имена являются элементами
контекстов, в которых они описываются, возможность вызова той или иной
процедуры (как и других объектов) регламентируется статической вложен-
ностью контекстов. За счет этого одновременно существуют локальные кон-
тексты всех процедур, вызванных в некоторый момент вычислений. Таким
образом, для каждой процедуры имеются:
• статическая последовательность контекстов доступа, называемая ста-
тической цепочкой процедур, и
• динамическая,определенная в момент вызова процедур,последователь-
ность контекстов, которые суть локальные контексты вызванных, но не
завершенных процедур в порядке их вызовов,— динамическая цепочка
процедур.
Приводимый ниже пример поясняет введенные понятия. Пусть имеется сле-
дующая схема программы, на которой многоточиями обозначены описания
программных объектов, входящих в контексты основной программы и про-
цедур. Справа от схемы отмечены локальные контексты, которые обозначе-
ны буквой
K
с последующим именем подпрограммы. Слева указаны номера
строк. Пример приводится для языка
Pascal
, для
С/С++
он был бы вырожден-
ным из-за запрета вложенных описаний процедур.
8
В частности, логическое описание обработки исключительных ситуаций приводит к вы-
воду, что их корректное представление возможно, лишь если обработчики будут процедура-
ми, описанными внутри процедур.