Exercicio
}
void q () { int y;
...... r(); ......
}
void main () { q(); r();
}
2. Seja o seguinte programa em uma linguagem hipotética, a qual possui escopo estático e permite a definição de subprogramas aninhados:
program questao2; var a, b, c: integer; // definição 1 procedure sub1; var b, c, d: real; // definição 2
procedure sub3; var c, d, e: char; // definição 3 begin // ponto A end;
begin // ponto B end; begin .... end.
(a) Indique as variáveis visíveis em cada um dos dois pontos indicados no programa acima (ponto A e ponto B), juntamente com o número da instrução de definição de cada variável.
(b) Cite uma vantagem de escopo estático e uma desvantagem de escopo dinâmico.
3. O que será impresso pelo programa abaixo supondo:
a) Escopo estático
b) Escopo dinâmico
program amarração; var a: integer; procedure imprime; begin writeln (a); end; procedure confuso; var a: integer;
procedure nadafaz; var a: integer; begin a:= 2; imprime; end; begin a:= 3; imprime; nadafaz; end; begin a:= 1; imprime; confuso; end; 4. O que será impresso pelo programa abaixo supondo passagem de parâmetros:
por valor, por valor-resultado, por resultado, por referência, por nome
programa confuso; var i: integer; a: array [1..4] of integer;
procedure conf (x, y); begin x:= y + 1; i:= 1; y:= x + 1; end; begin for i:= 1 to 3 a[i]:= i +2; i:= 2; conf(i, a[i]); write(i); for i:= 1 to 3 write(a[i]);
end;