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
main
chama sub1
; sub1
chama sub2
; sub2
chama sub3
.main
chama sub1
; sub1
chama sub3
.main
chama sub2
; sub2
chama sub4
; sub4
chama sub1
.main
chama sub3
; sub3
chama sub4
.main
chama sub1
; sub1
chama sub3
; sub3
chama sub2
.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)