(Sebesta, 2000) Considere o seguinte programa C esquemático:
void main()
{
int a, b, c;
...
}
void fun1(void)
{
int b, c, d;
...
}
void fun2(void)
{
int c, d, e;
...
}
void fun3(void)
{
int d, e, f;
...
}
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 fun1
; fun1
chama fun2
; fun2
chama fun3
.main
chama fun1
; fun1
chama fun3
.main
chama fun2
; fun2
chama fun3
; fun3
chama fun1
.main
chama fun3
; fun3
chama fun1
.main
chama fun1
; fun1
chama fun3
; fun3
chama fun2
.main
chama fun3
; fun3
chama fun2
; fun2
chama fun1
.
a. main
chama fun1
; fun1
chama fun2
; fun2
chama fun3
.
d
, e
e f
de fun3
; c
de fun2
; b
de fun1
; a
de main
(d
e e
de fun2
; c
e d
de fun1
; b
e c
de main
estão ocultos)
b. main
chama fun1
; fun1
chama fun3
.
d
, e
e f
de fun3
; b
e c
de fun1
; a
de main
(d
de fun1
; b
e c
de main
estão ocultos)
c. main
chama fun2
; fun2
chama fun3
; fun3
chama fun1
.
b
, c
e d
de fun1
; e
e f
de fun3
; a
de main
(d
de fun3
; c
, d
e e
de fun2
; b
e c
de main
estão ocultos)
d. main
chama fun3
; fun3
chama fun1
.
b
, c
e d
de fun1
; e
e f
de fun3
; a
de main
(d
de fun3
; b
e c
de main
estão ocultos)
e. main
chama fun1
; fun1
chama fun3
; fun3
chama fun2
.
c
, d
e e
de fun2
; f
de fun3
; b
de fun1
; a
de main
(d
e e
de fun3
; c
e d
de fun1
; b
e c
de main
estão ocultos)
f. main
chama fun3
; fun3
chama fun2
; fun2
chama fun1
.
b
, c
e d
de fun1
; e
de fun2
; f
de fun3
; a
de main
(c
e d
de fun2
; d
e e
de fun3
; b
e c
de main
estão ocultos)
Sebesta, Robert W. (2000). Conceitos de Linguagens de Programação. 4ª edição. Porto Alegre: Bookman. 624 páginas.