Ybadoo - Soluções em Software Livre
Tutoriais
Compiladores

Considere o seguinte programa C esquemático:

void main()
{
int a, b, c;
...
}

void fun1()
{
int b, c, z;
...
}

void fun2()
{
int c, y, z;
...
}

void fun3()
{
int x, y, z;
...
}

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 fun1; fun1 chama fun2; fun2 chama fun3.
  2. main chama fun1; fun1 chama fun3.
  3. main chama fun2; fun2 chama fun3; fun3 chama fun1.
  4. main chama fun3; fun3 chama fun1.
  5. main chama fun1; fun1 chama fun3; fun3 chama fun2.
  6. main chama fun3; fun3 chama fun2; fun2 chama fun1.

 

a. main chama fun1; fun1 chama fun2; fun2 chama fun3.

x, y e z de fun3; c de fun2; b de fun1; a de main (y e z de fun2; c e z de fun1; b e c de main estão ocultos)

b. main chama fun1; fun1 chama fun3.

x, y e z de fun3; b e c de fun1; a de main (z de fun1; b e c de main estão ocultos)

c. main chama fun2; fun2 chama fun3; fun3 chama fun1.

b, c e z de fun1; x e y de fun3; a de main (z de fun3; c, y e z de fun2; b e c de main estão ocultos)

d. main chama fun3; fun3 chama fun1.

b, c e z de fun1; x e y de fun3; a de main (z de fun3; b e c de main estão ocultos)

e. main chama fun1; fun1 chama fun3; fun3 chama fun2.

c, y e z de fun2; x de fun3; b de fun1; a de main (y e z de fun3; c e z de fun1; b e c de main estão ocultos)

f. main chama fun3; fun3 chama fun2; fun2 chama fun1.

b, c e z de fun1; y de fun2; x de fun3; a de main (c e z de fun2; y e z de fun3; b e c de main estão ocultos)