Var a, b, c: real;
option: integer;
begin
Write('numero 1: ');
ReadLn(a);
Write('numero 2: ');
ReadLn(b);
Repeat
WriteLn('Escolhe uma
opcao:');
WriteLn('1) addicionar');
WriteLn('2) mulitplicar');
WriteLn('3) dividir');
WriteLn('4) subtrair');
WriteLn('0) sair');
ReadLn(opcao);
Case opcao of
1: begin
c := a + b;
WriteLn('A soma e ',c:0:1);
end;
2: begin
c := a * b;
WriteLn('O produto e ',c:0:1);
end;
3: begin
c := a / b;
WriteLn('A divisao da ',c:0:1);
end;
4: begin
c := a - b;
WriteLn('A diferenca e ',c:0:1);
end;
end;
until (opcao=0);
WriteLn('Obrigado e bom dia');
end.
numero 1: -1
numero 2: 3
Escolhe uma opcao:
1) addicionar
2) multiplicar
3) dividir
4) subtrair
0) sair
1
A soma e 2.0
Escolhe uma opcao:
1) addicionar
2) multiplicar
3) dividir
4) subtrair
0) sair
2
O produto e -3
Escolhe uma opcao:
1) addicionar
2) multiplicar
3) dividir
4) subtrair
0) sair
0
Obrigado e bom dia
PROCEDURE HelloWorld;
begin
WriteLn('Ola Mundo');
end;
begin
HelloWorld;
end.
Ola Mundo
PROGRAM BooleanAlgebra;
Var comeco, fim, incremento,
euro, escudo: real;
begin
Write('Comeco da tabela (Escudo):
');
ReadLn(comeco);
Write('Fim da tabela (Escudo): ');
ReadLn(fim);
Write('Incremento: ');
ReadLn(incremento);
(* inicializar a
variável:
*)
escudo := comeco;
While (escudo<=fim) Do
begin
Write(escudo:0:0,
' Escudos = ');
euro :=
escudo/200.482;
WriteLn(euro:0:2,
'Euros');
(* NÂO esquece dar uma possibilidade de *)
(* sair do ciclo: *)
escudo :=
escudo + incremento;
end;
end.
Comeco da tabela (Escudos): 0
Fim da tabela (Escudos): 100
Incremento: 20
0 Escudos = 0.00 Euros
20 Escudos = 0.10 Euros
40 Escudos = 0.20 Euros
60 Escudos = 0.30 Euros
80 Escudos = 0.40 Euros
100 Escudos = 0.50 Euros
PROGRAM Calculator;
Var a, b, c: real;
option: integer;
PROCEDURE Somar;
begin
c := a + b;
WriteLn('A soma e ',c:0:1);
end;
PROCEDURE Dividir;
begin
c := a/b;
WriteLn('O produto e ',c:0:1);
end;
PROCEDURE Multiplicar;
begin
c := a*b;
WriteLn('A divisao da ',c:0:1);
end;
PROCEDURE Subtrair;
begin
c := a-b;
WriteLn('A diferenca e ',c:0:1);
end;
begin
Write('numero 1: ');
ReadLn(a);
Write('numero 2: ');
ReadLn(b);
Repeat
WriteLn('Escolhe uma
opcao:');
WriteLn('1) addicionar');
WriteLn('2) mulitplicar');
WriteLn('3) dividir');
WriteLn('4) subtrair');
WriteLn('0) sair');
ReadLn(opcao);
Case opcao of
1: Addicionar;
2: Multiplicar;
3: Dividir;
4: Subtrair;
end;
until (opcao=0);
WriteLn('Obrigado e bom dia');
end.
Var soma, media, numero: real;
n: real;
begin
WriteLn('Introduz uma serie de numeros
e termina com -1');
(* inicializar as
variáveis
*)
soma := 0.0;
n := 0.0;
Repeat
ReadLn(numero);
(* Os calculos devem
excluir o numero -1: *)
if (numero<>-1.0)
then
begin
soma := soma + numero;
n := n + 1.0;
end;
Until (numero=-1.0);
media := soma/n;
WriteLn('A media e ', media:0:1);
end.
Introduz uma serie de numeros e termina
com
-1
33
11
6
9
24
-1
A media e 16.6
PROGRAM DeterminePrimo;
Var i, n: integer;
primo: boolean;
begin
Write('numero: ');
ReadLn(n);
primo := TRUE;
For i := 2 To n-1 Do
if (n Mod i) = 0
then
(* a Mod b = 0 significa a e divisivel pelo b *)
primo := FALSE;
(* aqui acaba o ciclo For *)
if primo then
WriteLn(n, ' e primo')
else
WriteLn(n, ' nao e primo');
end.
|
| | | | | | | | | | | | | | | | | | | | | | | | | | | |
Para os especialistas:
Existem algorítmos muito mais inteligentes para determinar se um número é primo. O programa acima é o mais simples. Já é muito fácil melhorar a eficiência do algoritmo: se encontramos uma vez que o resultado do (n Mod i)=0, não precisa continuar com o ciclo. Imagine vamos determinar se o número 10000 é primo. Já com calculo 10000 Mod 2 sabemos que o número não é primo e podemos acabar com os cálculos. Vamos implementar esta idea. Agora temos dois condições para sair do ciclo 1) chegamos ao fim com os números (i=n-1) ou 2) encontrámos um resultado do Mod que deu 0. Vamos combinar estas duas condições e temos de usar um outro tipo do ciclo (com ciclos For não é possivel combinar condições): PROGRAM MelhorPrimo; Var i, n: integer;
begin
|
Var i, n: integer;
primo: boolean;
begin
WriteLn('Numeros primos ate 10000:');
for n := 3 to 10000 do
begin
primo := TRUE;
for i := 2
to n-1 do
if (n Mod i) = 0 then
primo := FALSE;
(* aqui acaba
o ciclo For i *)
if primo then
Write(n,' ');
(* aqui acaba o ciclo
For n *)
end;
end.