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!