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

Qual foi o motivo de remover o texto?
[revisão pendente][revisão pendente]
(Qual foi o motivo de remover o texto?)
 
Usando o while pedimos ao Pascal para repetir "enquanto" a expressão for verdadeira
 
'''Sintaxe'''
<syntaxhighlight lang="pascal"> while <condição> do
begin
<comandos>;
<comandos>;
end;
</syntaxhighlight>
Veja o exemplo acima usando while:
<syntaxhighlight lang="pascal">
O comando repeat executa repetidamente uma sequência de comandos "até" (until) que uma dada condição seja verdadeira
 
Sintaxe:
<syntaxhighlight lang="pascal">
repeat
<comando1>;
<comando2>;
<comando3>;
until <condição>;
</syntaxhighlight>
Observação: este comando não precisa de begin (início) e end (fim) para demarcar o corpo da repetição
 
O comando for, diferentemente dos comandos de repetição repeat e while, permite que uma sequência de comandos seja executada um número definido de vezes A variável usada para contador já recebe um valor inicial e é incrementada pelo comando
 
Sintaxe:
<syntaxhighlight lang="pascal">
for contador:=ValorInicial to ValorFinal do
begin
comandos;
end;
</syntaxhighlight>
Exemplo:
Programa para calcular a média de 3 notas de 10 alunos:
readkey;
end.
</syntaxhighlight>{{AutoCat}}
= 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:
<syntaxhighlight lang="pascal">
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 := 10;
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.
</syntaxhighlight>
 
{{AutoCat}}