Pascal/Estrutura de repetição: diferenças entre revisões

Saltar para a navegação Saltar para a pesquisa
crítica e exercício
[edição não verificada][edição não verificada]
(Nova página: {{Navegação|Pascal|../Estrutura Condicional/|../Estrutura de Dados/}} = Estrutura de repetição = Toda vez que precisamos repetir determinado número de vezes uma det...)
 
(crítica e exercício)
end;
end.
 
= Crítica =
Usamos uma crítica para conferir se foi digitado um valor correto, usando para isso um teste lógico, dentro de uma repetição (laço), de onde só sairá quando for digitado um valor desejado, ou seja, obrigando que seja digitado um valor válido.
 
Exemplo:
Programa para calcular a média de 3 notas de 10 alunos, criticando a nota digitada:
program media_notas;
var
NOME:string;
N1,N2,N3,MEDIA:real;
CONT:integer;
begin
clrscr;
FOR CONT:=1 to 10 do
begin
write('Digite o nome e as 3 notas do ',cont,'o. aluno ');
readln(NOME,N1,N2,N3);
while (N1<0) or (n1>10) or (N2<0) or (N2>10) or (N3<0) or (N3>10) do
begin {repete enquanto as notas forem menores que 0 ou maiores que 10!}
writeln('Notas inválidas! Digite notas de 0 a 10!');
readln(N1,N2,N3);
end;
MEDIA:=(N1+N2+N3)/3;
writeln('A média do aluno ',NOME,' é: ',MEDIA:2:2);
end;
readkey;
end.
 
= Exercícios =
01.Construa um programa que leia um conjunto de dados contendo altura e sexo (MASCULINO ou FEMININO) de N pessoas e calcule e escreva:
 
- a maior e a menor altura do grupo e de quem é esta altura. ( Se HOMEM ou MULHER.)
 
- a média de altura entre as mulheres.
 
- O número de homens e a diferença percentual entre estes e as mulheres.
 
- Critique as variáveis onde for necessário.
 
Resolução:
program alturamf;
uses CRT;
var
quant,cont,cont_m,cont_f:integer;
sexo,sme_alt,sma_alt:string;
alt,alt_maior,alt_menor,alt_media,soma_alt,dif:real;
begin
{inicializa as variáveis}
cont_m := 0;
cont_f := 0;
alt_menor := 0;
alt_maior := 0;
soma_alt := 0;
writeln('Qual a quantidade de pessoas?');
readln(quant);
while quant<1 do {obriga a quantidade de pessoas ser positiva}
begin
writeln('Quantidade inválida! Digite uma quantidade maior que 1!');
readln(quant);
end;
for cont:=1 to quant do
begin
writeln('Qual o sexo da ',cont,'o pessoa?<m> masculino ou <f> feminino');
readln(sexo);
while (sexo<>'m') and (sexo<>'f') do
begin
writeln('Sexo inválido! Digite <m> para masculino ou <f> para feminino!');
readln(sexo);
end;
writeln('Qual a altura da ',cont,'o pessoa?');
readln(alt);
while (alt<0.2) or (alt>2.5) do {obriga uma altura válida}
begin {repete até a altura ser válida}
writeln('Altura inválida! Digite uma altura entre 0.2 e 2.5!');
readln(alt);
end;
if alt<alt_menor then {testa a menor altura}
begin
alt_menor:=alt; {guarda a menor altura}
sme_alt:=sexo; {guarda o sexo da menor altura}
end;
if alt>alt_maior then {testa a maior altura}
begin
alt_maior:=alt; {guarda a maior altura}
sma_alt:=sexo; {guarda o sexo da maior altura}
end;
if sexo='m' then {testa se o sexo e m}
cont_m:=cont_m+1 {conta a quantidade de homens}
else
begin
cont_f := cont_f+1; {conta a quantidade de mulheres}
soma_alt := soma_alt+alt; {soma a altura feminina}
end;
end ;
clrscr;
writeln('Resultado:');
write('A maior altura é: ',alt_maior:2:2,'m de um');
if sma_alt='m' then writeln(' homem')
else writeln('a mulher');
writeln('A média de alturas entre as mulheres é :',soma_alt/cont_f:2:2);
writeln('o número de homens é: ',cont_m:3);
write('A diferença percentual entre homens e mulheres é: ');
dif:=(cont_m/quant)*100-(cont_f/quant)*100;
if dif>0 then write(dif:2:2,'% a mais de homens')
else write(abs(dif):2:2,'% a mais de mulheres');
readkey;
end.
 
[[Categoria:Pascal]]
Utilizador anónimo

Menu de navegação