(Sebesta, 2000) Suponha que o seguinte programa tenha compilado e executado usando regras de escopo estático. Qual valor de x é impresso no procedimento sub1? De acordo com as regras de escopo dinâmico, qual valor de x é impresso no procedimento sub1?
program main;
var x : integer;
procedure sub1;
begin { sub1 }
writeln('x = ', x);
end; { sub1 }
procedure sub2;
var x : integer;
begin { sub2 }
x := 10;
sub1;
end; { sub2 }
begin { main }
x := 5;
sub2;
end. { main }Supondo que o programa tenha sido compilado e executado usando as regras de escopo estático, o valor de x impresso no procedimento sub1 é 5.
Supondo que o programa tenha sido compilado e executado usando as regras de escopo dinâmico, o valor de x impresso no procedimento sub1 é 10.
Sebesta, Robert W. (2000). Conceitos de Linguagens de Programação. 4ª edição. Porto Alegre: Bookman. 624 páginas.