Ybadoo - Soluções em Software Livre
Tutoriais
Compiladores

Considere o seguinte programa esquemático, escrito na linguagem Java:

public class Test {
private int x, y, z;
public void sub1() { int x, y, c; }
public void sub2() { int x, b, c; }
public void sub3() { int a, b, z; }
public void sub4() { int a, y, z; }
public static void main(String[] args) { int a, b, c; }
}

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

 

a. main chama sub1; sub1 chama sub2; sub2 chama sub3.

a, b e z de sub3; x e c de sub2; y de sub1 (b de sub2; x e c de sub1; a, b e c de main; x, y e z de Test estão ocultos)

b. main chama sub1; sub1 chama sub3.

a, b e z de sub3; x, y e c de sub1 (a, b e c de main; x, y e z de Test estão ocultos)

c. main chama sub2; sub2 chama sub4; sub4 chama sub1.

x, y e c de sub1; a e z de sub4; b de sub2 (y de sub4; x e c de sub2; a, b e c de main; x, y e z de Test estão ocultos)

d. main chama sub3; sub3 chama sub4.

a, y e z de sub4; b de sub3; c de main; x de Test (a e z de sub3; a e b de main; y e z de Test estão ocultos)

e. main chama sub1; sub1 chama sub3; sub3 chama sub2.

x, b e c de sub2; a e z de sub3; y de sub1 (b de sub3; x e c de sub1; a, b e c de main; x, y e z de Test estão ocultos)

f. main chama sub3; sub3 chama sub2; sub2 chama sub4.

a, y e z de sub4; x, b e c de sub2; (a, b e z de sub3; a, b e c de main; x, y e z de Test estão ocultos)