(Sebesta, 2000) Considere o seguinte programa:
public class Test {
private int x, y, z, w;
public void sub1() { int a, y, z, w; }
public void sub2() { int a, b, z, w; }
public void sub3() { int a, b, c, w; }
public void sub4() { int a, b, c, d; }
public static void main(String[] args) { }
}Dadas as seguintes sequências de chamada e supondo-se que seja usado o escopo dinâmico, quais variáveis são visíveis durante a execução da última função chamada? Inclua, em cada variável visível, o nome da função em que ela foi definida
main chama sub1; sub1 chama sub2; sub2 chama sub3.main chama sub2; sub2 chama sub3; sub3 chama sub4.main chama sub2; sub2 chama sub3; sub3 chama sub1.main chama sub4; sub4 chama sub3; sub3 chama sub1.main chama sub3; sub3 chama sub2; sub2 chama sub1.a. main chama sub1; sub1 chama sub2; sub2 chama sub3.
x de Test, y de sub1, z de sub2 e a, b, c e w de sub3 (y, z e w de Test, a, z e w de sub1 e a, b e w de sub2estão ocultos)
b. main chama sub2; sub2 chama sub3; sub3 chama sub4.
x e y de Test, z de sub2, w de sub3 e a, b, c e d de sub4 (z e w de Test, a, b e w de sub2 e a, b e c de sub3estão ocultos)
c. main chama sub2; sub2 chama sub3; sub3 chama sub1.
x de Test, b e c de sub3 e a, y, z e w de sub1 (y, z e w de Test, a, b, z e w de sub2 e a e w de sub3estão ocultos)
d. main chama sub4; sub4 chama sub3; sub3 chama sub1.
x de Test, d de sub4, b e c de sub3 e a, y, z e w de sub1 (y, z e w de Test, a, b e c de sub4 e a e w de sub3estão ocultos)
e. main chama sub3; sub3 chama sub2; sub2 chama sub1.
x de Test, c de sub3, b de sub2 e a, y, z e w de sub1 (y, z e w de Test, a, b e w de sub3 e a, z e w de sub2estão ocultos)
Sebesta, Robert W. (2000). Conceitos de Linguagens de Programação. 4ª edição. Porto Alegre: Bookman. 624 páginas.