Var i: integer;
FUNCTION Aleatorio: integer;
begin
  Aleatorio := Random(31)-10;
    (* Random(31) returns
a number between 0 and 30 (incl.) *)
    (* Random(31)-10 returns
between -10 and 20 (incl.) *)
end;
begin
  for i := 1 to 1000 do
    WriteLn(Aleatorio);
end.
1b.
PROGRAM HundredRandom;
Var i: integer;
FUNCTION Aleatorio(a, b: integer): integer;
begin
  Aleatorio := Random(b-a+1)+a;
   (* numero minimo: a, numero
maximo: b-a + a = b *)
end;
begin
  for i := 1 to 1000 do
    WriteLn(Aleatorio(-10,
20));
end.
1c.
PROGRAM MinMaxRandom;
  (* determine o numero minimo e maximo
de uma serie de numeros
     aleatorios *)
Var i, n, maxn, minn: integer;
FUNCTION Aleatorio(a, b: integer): integer;
begin
  Aleatorio := Random(b-a+1)+a;
end;
begin
   (* initiliazar com numeros grandes:
*)
  minn := 32000;
  maxn := -32000;
  for i := 1 to 1000 do
    begin
      n := Aleatorio(-10,
20);
      if n>maxn
then maxn := n;
      if n<minn
then minn := n;
    end;
  WriteLn('Min: ', minn);
  WriteLn('Max: ', maxn);
end.
FUNCTION Factorial(n: integer): integer;
 (* returns n! *)
var result: integer;
    i: integer;
begin
  result := 1;       
(* initialize the variable *)
  for i := 1 to n do
    result := i*result;
  Factorial := result;  (* return
result *)
end;
begin
  WriteLn(Factorial(5));
end.
2b.
PROGRAM TestFactorial;
FUNCTION Factorial(n: integer): integer;
 (* returns n! *)
begin
  if n=1 then
    Factorial := 1
  else
    Factorial := n*Factorial(n-1);
end;
begin
  WriteLn(Factorial(5));
end.
| PASSAGEM POR VALOR: pogram: 
 | PASSAGEM POR REFERÊNCIA pogram: 
 | ||
| output: 
 | output: 
 | 
| resposta: | 
 | 
Var globalcounter: integer;
FUNCTION Factorial(n: integer): integer;
Var m: integer; (* local variable *)
begin
   (* uma copia da variavel local
m sera criada *)
   (* vamos contar isso: *)
  globalcounter := globalcounter + 1;
  WriteLn('m existe ', globalcounter,
' vezes');
  if n=1 then
    Factorial := 1
  else
    Factorial := n*Factorial(n-1);
   (* a copia da variavel local
m sera anihilada *)
   (* vamos contar isso: *)
  globalcounter := globalcounter - 1;
  WriteLn('m existe ', globalcounter,
' vezes');
end;
begin
  globalcounter := 0;
  WriteLn(Factorial(5));
end.
output:
m existe 1 vezes
m existe 2 vezes
m existe 3 vezes
m existe 4 vezes
m existe 5 vezes
m existe 4 vezes
m existe 3 vezes
m existe 2 vezes
m existe 1 vezes
m existe 0 vezes
120
5b.
PROGRAM TestFibonacci;
Var globalcounter: integer;
FUNCTION Fibonacci(n: integer): integer;
Var m: integer; (* local variable *)
begin
   (* uma copia da variavel local
m sera criada *)
   (* vamos contar isso: *)
  globalcounter := globalcounter + 1;
  WriteLn('m existe ', globalcounter,
' vezes');
  if (n=1) OR (n=2) then
    Fibonacci := 1
  else
    Fibonacci := Fibonacci(n-1)
+ Fibonacci(n-2);
   (* a copia da variavel local
m sera anihilada *)
   (* vamos contar isso: *)
  globalcounter := globalcounter - 1;
  WriteLn('m existe ', globalcounter,
' vezes');
end;
begin
  globalcounter := 0;
  WriteLn(Fibonacci(5));
end.
output:
m existe 1 vezes
m existe 2 vezes
m existe 3 vezes
m existe 2 vezes
m existe 3 vezes
m existe 2 vezes
m existe 1 vezes
m existe 2 vezes
m existe 3 vezes
m existe 2 vezes
m existe 3 vezes
m existe 4 vezes
m existe 3 vezes
m existe 4 vezes
m existe 3 vezes
m existe 2 vezes
m existe 1 vezes
m existe 0 vezes
5