Mini Teste 15: Âmbito das variáveis, passagem por valor e passagem por referência

1. Qual o âmbito de cada objecto no programa a seguir?

PROGRAM VariableTypes;
Var a: real;

PROCEDURE Proc1(b: real);
Var c: real;
Const d = 10.0;
begin
  c := b+d;
  Writeln(c);
end;
 

Function Proc2(Var e: real): real;
Const f = 20.0;
begin
  Proc2 := e+f;
end;

Var g: real;

begin
  a := 10.0;
  Proc1(a); 
end.
 

 
local
global
parâmetro
nenhum
a
b
c
d
e
f
g
2. Considere o programa abaixo
PROGRAM QuickTest15
Var x: integer;
PROCEDURE Show(Var a: integer);
begin
  write(a,' ');
  a := a + 1;
end;

begin
  x := 0;
  Write(x,' ');
  Show(x);
  Write(x);
end.

O procedimento usa a técnica de
Passagem por valor
Passagem por referência
e, por isso o resultado será

3. Qual será o output do programa a seguir?
PROGRAM DoubleNames;
Var x: integer;

PROCEDURE Show;
Var x: integer;
begin
  x := 1;
  x := x*x;
  Write(x,' ');
end;

begin
  x := 0;
  Show;
  Write(x);
end.

Não é permitido usar o mesmo nome para uma variável duas vezes!
0 0
1 0
0 1
1 1