Ybadoo - Soluções em Software Livre
Tutoriais
Compiladores

(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

  1. main chama sub1; sub1 chama sub2; sub2 chama sub3.
  2. main chama sub2; sub2 chama sub3; sub3 chama sub4.
  3. main chama sub2; sub2 chama sub3; sub3 chama sub1.
  4. main chama sub4; sub4 chama sub3; sub3 chama sub1.
  5. 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.