var conc, pH: real;
    opcao: integer;
PROCEDURE ConcH;
begin
  WriteLn('Entra a concentracao de H+
em agua (mol/l)');
  ReadLn(conc);
  pH := -Ln(conc)/Ln(10);
  WriteLn('pH da solucao: ', pH:0:2);
end;
PROCEDURE ConcOH;
begin
  WriteLn('Entra a concentracao de OH-
em agua (mol/l)');
  ReadLn(conc);
  pH := 14.0-Ln(conc)/Ln(10);
  WriteLn('pH da solucao: ', pH:0:2);
end;
begin
  WriteLn('Escolha uma opcao:');
  WriteLn('1) [H+]');
  WriteLn('2) [OH-]');
   (* nota a forma de chamar o
procedimento: *)
  ReadLn(opcao);
  Case opcao of
    1: ConcH;
    2: ConcOH;
  end;
end.
Escolhe uma opcao:
1) [H+]
2) [OH-]
 1
Entra a concentracao de H+ em agua:
 1e-4
pH da solucao: 4.00
1b.
PROGRAM CalulateConc;
var pH: real;
FUNCTION CalcH: real;
begin
   (* Nota a forma de retornar
um valor, atraves o nome da funcao: *)
  CalcH := Exp(-pH*Ln(10));
end;
FUNCTION CalcOH: real;
begin
   (* Nota a forma de retornar
um valor, atraves o nome da funcao: *)
  CalcOH := 1.0e-14/CalcH;
end;
begin
   (* O programa comeca aqui *)
  WriteLn('Diga o pH da solucao:');
  ReadLn(pH);
   (* nota a forma de usar a
informacao
que vem da funcao *)
  WriteLn('A concentracao [H+] = ',
CalcH, ' mol por litro');
  WriteLn('A concentracao [OH-] = ',
CalcOH, ' mol por litro');
end.
Diga o PH da solucao
 1.0
A concentracao [H+] = 1.0e-1 mol por litro
A concentracao [OH-] = 1.0e-13 mol por litro
var d, h, alfa: real;
begin
  WriteLn('Diga a distancia ate o
objecto
(m):');
  ReadLn(d);
  WriteLn('Diga o angulo:');
  ReadLn(alfa);
  h := d *
Sin(Pi*alfa/180.0)/Cos(Pi*alfa/180.0);
  WriteLn('A altura do edificio e ',
h ' m');
end.
Diga a distancia ate o objecto (m):
 100.0
Diga o angulo:
 15.0
A altura do objecto e 26.8 m.
2b. Tem montes de soluções. Aqui vem uma:
|  | x = d sin (a) c1 = d cos (a) g = 90o + a - b c2 = x tan (g) h = (c1 + c2) sin (a) | 
var alfa, beta, gama: real;
    d, x, c1, c2, h: real;
begin
  WriteLn('Diga a distancia entre os
dois pontos de medicao (m)');
  ReadLn(d);
  WriteLn('Diga o angulo 1');
  ReadLn(alfa);
  WriteLn('Diga o angulo 2');
  ReadLn(beta);
  x := d * Sin(Pi*alfa/180.0);
  c1 := d * Cos(Pi*alfa/180.0);
  gama := 90 + alfa - beta;
  c2 := x *
Sin(Pi*gama/180)/Cos(Pi*gama/180.0);
  h := (c1+c2) * Sin(Pi*alfa/180.0);
  WriteLn('A altura do objecto e
',h:0:0,'
m.');
end.
 
Aqui vem mais uma:
|   | tan(a) = h/(d+a) tan(b) = h/a h = d*tana/(1-tana/tanb) | 
|  | Diga a distancia entre os dois
pontos de
medicao (m): 8000.0 Diga o angulo 1: 25.67 Diga o ângulo 2: 67.41 A altura do objecto e 4806 m. | 
PROCEDURE Fibonacci(n: longint);
  (* o numero maximo sera 832040, entao
so um longint chega: *)
Var f, fa, fb: longint;
begin
  fa := 1;
  fb := 1;
  WriteLn(fa);
  WriteLn(fb);
  for i := 3 to n do
    begin
      f := fa +
fb;
      Write(f,'
');
      fa := fb;
      fb := f;
    end;
end;
begin
  Fibonacci(30);
end.
1 1 2 5 8 13 21 34 55 89 144 233 377 610
987
1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811
514229 832040
FUNCTION Media100;
Var i: integer;
    sum: real;
begin
  sum := 0.0;
  for i := 1 to 100 do
    sum := sum+Random;
  Media100 := sum/100.0;
end;
begin
    (* com a seguinta
instrucao
o programa vai correr cada vez
      
diferente:
*)
  Randomize;
    (* chama a funcao e mostra
o resultado: *)
  WriteLn('Media de 100 numeros
aleatorios:
', Media100);
end.
4b.
PROGRAM Moeda;
Var i: integer;
    cara, coroa: integer;
begin
  Randomize;
    (* nunca esquece
inicializar
as variaveis: *)
  cara := 0;
  coroa := 0;
  for i := 1 to 1000 do
    if (Random(2) = 1) then
      cara := cara
+ 1
    else
      coroa := coroa
+ 1;
  WriteLn('Cara: ', cara, ' vezes');
  WriteLn('Coroa: ', cara, ' vezes');
  if (cara=coroa) then
    WriteLn('Empate!')
  else
    if cara>coroa then
      WriteLn('Cara
ganhou!');
    else
      WriteLn('Coroa
ganhou!');
end.
Cara: 459 vezes
Coroa: 541 vezes
Coroa ganhou!