PASCAL
Exemplos de Exercícios 2
Estruturas de Repetição
______________________________
Linguagem Computacional
Exercício: Primos entre si. •  Escreva um algoritmo em PORTUGOL que determine se dois valores inteiros e posi?vos A e B são primos entre si. •  Dois números inteiros são ditos primos entre si, caso não exista divisor comum aos dois números, além do 1. program primos;
Var
A, B, C: integer;
APENAS1: boolean;
begin
APENAS1:= true; { sempre haverá o 1 como divisor comum }
write('Entre com valor de A: ');
readLn(A);
write('Entre com valor de B: ');
readLn(B);
C := 2; {vai começar a testar a partir de 2 }
while ( APENAS1) and ( C <= A ) and ( C <= B ) do {intervalo}
begin
if (A mod C = 0) and (B mod C = 0) then
APENAS1:= false;
{ achou outro divisor em comum }
C := C + 1;
{ incrementa o contador }
end;
if (APENAS1) then
writeLn('A e B sao primos entre si ')
else
writeLn('A e B nao sao primos entre si');
end.
Exercício: fatorial com repeat-­‐un)l •  Repita um programa para cálculo do fatorial usando obrigatoriamente a estrutura REPEAT-­‐UNTIL Program fatorial_repeat_2;
Uses CRT;
{Programa para cálculo de fatorial.}
Label inicio,fim;
Var n,i,fatorial:integer;
Begin
ClrScr;
inicio:
Write('N = (menor que 0 = fim) --> ');
Readln(n);
If n<0 then goto fim;
Writeln;
fatorial:=1;
i:=1;
if n>1
then Repeat
i:=i+1;
fatorial:=fatorial*i;
Until i=n;
Writeln('fatorial de ':30,n,' = ',fatorial);
Writeln;
goto inicio;
fim:
End.
Adriano Mauro Cansian
5
1 não é primo (1) •  Por definição, um número posi?vo é primo se for maior do que 1 e for divisível apenas por 1 e por ele mesmo. O fato de não se considera 1 como primo é uma convenção conveniente, pois facilita o enunciado de vários teoremas da teoria dos números. 1 não é primo (2) •  teorema fundamental da aritmé?ca diz que todo inteiro maior que 1 pode ser representado de forma única, a menos da ordem dos fatores, por um produto de números primos, cada um elevado a um expoente maior ou igual a 1. Se considerássemos o 1 como primo, haveria sempre 2 representações, uma incluindo o 1 , a outra não. •  Por exemplo. Temos que 10 = 5 X 2, que é a representação unívoca de 10 como produto de primos. Se considerássemos 1 como primo, teíamos também a representação 10 = 5 X2 X1, que nada agrega em termos der informação e complicaria desnecessaria e inu?lmente a matemá?ca. Verificar se um número é primo •  Fazer um loop que vai de 2 a N -­‐ 1 , sendo N o número dado. –  Se N for divisível por algum dos números do intervalo do loop, ele não é primo. •  Obviamente ele será divisível por ele mesmo (N-­‐1). •  X é divisível por Y se o resto da divisão de X por Y é zero. Ou: X MOD Y = 0 program numprimos;
uses crt;
var x, i, cont: integer;
begin
clrscr;
write('Informe um numero: ');
readln(x);
cont:=0;
for i:= 1 to x do
begin
if x mod i = 0 then cont:=cont + 1;
end;
if cont<=2 then
begin
writeln('O numero ', x, ' e primo.');
end
else
begin
writeln('O numero ', x, ' não e primo.');
end;
readkey;
end.
Exercício: múl?plos de 3 •  Criar um programa em PASCAL que receba vários números inteiros e posi?vos e imprima a média dos números múl?plos de 3. •  A execução deve encerrar quando um número não posi?vo for lido. program multiplos_de_3;
var
MEDIA: real;
NUM, SOMA, C: integer;
begin
C := 0;
write('Digite um numero: ');
readLn(NUM);
while ( NUM > 0 ) do
begin
if ( NUM mod 3 = 0) then begin
C := C + 1;
SOMA := SOMA + NUM; end;
write('Digite um numero: ');
readLn(NUM);
end;
MEDIA := SOMA / C;
writeLn('A media dos multiplos de 3 digitados eh:
',MEDIA:5:4);
end.
Download

PASCAL - ACME!