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