(Sebesta, 2000) Considere o seguinte programa Pascal esquemático:
program main;
var x : integer;
procedure sub1;
var x : integer;
procedure sub2;
begin { sub2 }
...
end; { sub2 }
begin { sub1 }
...
end; { sub1 }
procedure sub3;
begin { sub3 }
...
end; { sub3 }
begin { main }
...
end. { main }Suponhamos que a execução desse programa seja na seguinte ordem unitária:
main chama sub1
sub1 chama sub2
sub2 chama sub3
x é a correta para a referência a x em:sub1sub2sub3x é a correta para a referência a x em:sub1sub2sub3x é a correta para a referência a x em:sub1 - x declarado por sub1.sub2 - x declarado por sub1.sub3 - x declarado por main.x é a correta para a referência a x em:sub1 - x declarado por sub1.sub2 - x declarado por sub1.sub3 - x declarado por sub1.Sebesta, Robert W. (2000). Conceitos de Linguagens de Programação. 4ª edição. Porto Alegre: Bookman. 624 páginas.