(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:sub1
sub2
sub3
x
é a correta para a referência a x
em:sub1
sub2
sub3
x
é 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.