Вы находитесь на странице: 1из 6

Pascal/Estrutura de repetio - Wikilivros

http://pt.wikibooks.org/wiki/Pascal/Estrutura_de_repetio

Pascal/Estrutura de repetio
Origem: Wikilivros, livros abertos por um mundo aberto. < Pascal

ndice
1 Contador 2 Testes lgicos 3 Comandos de repetio 3.1 While (enquanto) 3.2 Repeat until (repita at) 3.3 for to (para de at) 4 Crtica 5 Exerccios

Toda vez que precisamos repetir determinado nmero de vezes uma determinada seqncia de comandos, usamos um lao de repetio, que corresponderia repetir o mesmo trecho um nmero X de vezes sem ter de escrever o mesmo trecho X vezes Exemplo: Calcular a mdia de 50 alunos (sem repetio) program media_notas; var NOME: string; N1, N2, N3, MEDIA: real; begin {1 ALUNO} read(NOME,N1,N2,N3); if (N1>=0) and (N2>=0) and (N3>=0) and (N1<=10 00) and (N2<=10 00) and (N3<=10 begin MEDIA :=(N1+N2+N3)/3; writeln( O aluno de nome ,NOME, tem a mdia ,MEDIA, em suas notas end else begin writeln(No so aceites notas negativas ); end; {2 ALUNO} read(NOME,N1,N2,N3); if (N1>=0) and (N2>=0) and (N3>=0) and (N1<=10 00) and (N2<=10 00) and (N3<=10 begin MEDIA :=(N1+N2+N3)/3; writeln( O aluno de nome ,NOME, tem a mdia ,MEDIA, em suas notas end else begin writeln(No so aceitas notas negativas ); end; {3 ALUNO}

{50 ALUNO} read(NOME,N1,N2,N3); if (N1>=0) and (N2>=0) and (N3>=0) and (N1<=10 00) and (N2<=10 00) and (N3<=10 begin MEDIA :=(N1+N2+N3)/3; writeln( O aluno de nome ,NOME, tem a mdia ,MEDIA, em suas notas end else begin writeln(No so aceitas notas negativas ); end;

1 de 6

04/07/2011 08:08

Pascal/Estrutura de repetio - Wikilivros

http://pt.wikibooks.org/wiki/Pascal/Estrutura_de_repetio

end

Contador
Utilizamos uma varivel que ser incrementada a cada repetio, isto , a cada repetio contamos +1 na varivel, at um valor de acordo com o nmero de vezes que queremos repetir No exemplo acima, como queremos 50 alunos, contaramos 50 repeties Sintaxe: CONT:integer; ( Varivel inteira que ir contar o nmero de repeties ) CONT:=1; ( Iniciao do contador, ele deve comear com algum valor ) CONT:= CONT+1; ( Incrementar o contador em +1, repare que em cada repetio ele ir aumentar

Testes lgicos
Usamos testes lgicos para saber quando parar a repetio, ou seja, estabelecemos uma condio para a repetio continuar, caso contrrio o programa ficaria preso na repetio eternamente Por exemplo, usando o contador, a cada repetio testamos o nmero do contador at que ele alcance quantidade desejada, caso o contador atinja a quantidade de vezes que queremos repetir, o loop (repetio) pra Exemplo: programa para fazer a tabuada de multiplicao do nmero 7: program tabuada; uses CRT; var contad:integer; begin clrscr; contad:=0; {iniciamos o contador declarando seu primeiro valor} while contad<10 do {Enquanto cont<10, condio testada a cada repetio} begin writeln('7 x ',contad,' = ',7*contad); contad:=contad+1; {incrementamos o contador a cada repetio} end; readkey; end

Comandos de repetio
Em Pascal os principais comandos de repetio so
While(faa enquanto) Repeat(repita) for (para repetir de um nmero at algum nmero}

While (enquanto)
Usando o while pedimos ao Pascal para repetir "enquanto" a expresso for verdadeira Sintaxe while <condio> do begin <comandos>; <comandos>; end;

2 de 6

04/07/2011 08:08

Pascal/Estrutura de repetio - Wikilivros

http://pt.wikibooks.org/wiki/Pascal/Estrutura_de_repetio

Veja o exemplo acima usando while: program media_notas; var NOME: string; N1, N2, N3, MEDIA: real; CONT: integer; begin CONT:=0; while CONT<=50 do begin CONT:=CONT+1; read(NOME,N1,N2,N3); if (N1>=0) and (N2>=0) and (N3>=0) then begin MEDIA:=(N1+N2+N3)/3; writeln('O aluno de nome ',NOME,' tem a mdia ',MEDIA,' em suas notas ' end else writeln('No so aceitas notas negativas '); end; end

Repeat until (repita at)


O comando repeat executa repetidamente uma sequncia de comandos "at" (until) que uma dada condio seja verdadeira Sintaxe: repeat <comando1>; <comando2>; <comando3>; until <condio>; Observao: este comando no precisa de begin (incio) e end (fim) para demarcar o corpo da repetio Exemplo: Faa um programa para pedir um nmero, em seguida escrever uma tabuada de multiplicao deste nmero, caso for digitado o nmero 0, parar o programa program tabuada; uses CRT; var num:real; cont:integer; begin repeat clrscr; write('Digite um nmero para ver sua tabuada de multiplicao '); read(num); cont:=0; while cont<10 do {temos aqui uma repetio dentro de outra} begin writeln(num:4:2,' x ',cont,' = ',(num*cont):6:2); cont:=cont+1; {a cada repetio o cont aumenta +1} end; readkey; {parada para ver o resultado at ser teclado algo} until num=0; {condio para parar a repetio principal} clrscr; write('Foi digitado o nmero 0! programa encerrado!'); readkey; end

3 de 6

04/07/2011 08:08

Pascal/Estrutura de repetio - Wikilivros

http://pt.wikibooks.org/wiki/Pascal/Estrutura_de_repetio

for to (para de at)


O comando for, diferentemente dos comandos de repetio repeat e while, permite que uma sequncia de comandos seja executada um nmero definido de vezes A varivel usada para contador j recebe um valor inicial e incrementada pelo comando Sintaxe: for contador:=ValorInicial to ValorFinal do begin comandos end; Exemplo: Programa para calcular a mdia de 3 notas de 10 alunos: program media_notas; var NOME:string; N1,N2,N3,MEDIA:real; CONT:integer; begin FOR CONT:=1 to 10 do {para cont de 1 a 10 faa} begin write('Digite o nome e as 3 notas do ',cont,'o aluno '); read(NOME,N1,N2,N3); if (N1>=0) and (N2>=0) and (N3>=0) and (N1<=10 00) and (N2<=10 00) and (N3<=10 00) then begin MEDIA:=(N1+N2+N3)/3; writeln('O aluno de nome ',NOME,' tem a mdia ',MEDIA,' em suas notas '); end else begin writeln('Notas invalidas!'); end; end; end

Crtica
Usamos uma crtica para conferir se foi digitado um valor correto, usando para isso um teste lgico, dentro de uma repetio (lao), de onde s sair quando for digitado um valor desejado, ou seja, obrigando que seja digitado um valor vlido Exemplo: Programa para calcular a mdia 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 invlidas! Digite notas de 0 a 10!'); readln(N1,N2,N3); end; MEDIA:=(N1+N2+N3)/3; writeln('A mdia do aluno ',NOME,' : ',MEDIA:2:2);

4 de 6

04/07/2011 08:08

Pascal/Estrutura de repetio - Wikilivros

http://pt.wikibooks.org/wiki/Pascal/Estrutura_de_repetio

end; readkey; end

Exerccios
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 mdia de altura entre as mulheres O nmero de homens e a diferena percentual entre estes e as mulheres Critique as variveis onde for necessrio Resoluo: 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 variveis} 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 invlida! 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 invlido! 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 vlida} begin {repete at a altura ser vlida} writeln('Altura invlida! 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}

5 de 6

04/07/2011 08:08

Pascal/Estrutura de repetio - Wikilivros

http://pt.wikibooks.org/wiki/Pascal/Estrutura_de_repetio

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 mdia de alturas entre as mulheres :',soma_alt/cont_f:2:2); writeln('o nmero de homens : ',cont_m:3); write('A diferena 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 Obtido em "http://pt.wikibooks.org/wiki/Pascal/Estrutura_de_repeti%C3%A7%C3%A3o" Categoria: Livro/Pascal Esta pgina foi modificada pela ltima vez s 17h28min de 8 de Junho de 2011. Este texto disponibilizado nos termos da licena Creative Commons Atribuio-Compartilhamento pela mesma Licena 3.0 Unported; pode estar sujeito a condies adicionais. Consulte as Condies de Uso para mais detalhes.

6 de 6

04/07/2011 08:08

Вам также может понравиться