Pascal/Estrutura de repetição: diferenças entre revisões
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... |
(Sem diferenças)
|
Revisão das 15h23min de 19 de agosto de 2007
Estrutura de repetição
Toda vez que precisamos repetir determinado número de vezes uma determinada seqüência de comandos, usamos um laço de repetição, que corresponderia repetir o mesmo trecho um número X de vezes sem ter de escrever o mesmo trecho X vezes.
Exemplo: Calcular a média de 50 alunos (sem repetição).
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.00) then begin . . . MEDIA :=(N1+N2+N3)/3; . . . writeln( “O aluno de nome “,NOME,” tem a média “,MEDIA,” em suas notas.”); . . end . else . . begin . . . writeln(“Não são aceitas 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.00) then begin . . . MEDIA :=(N1+N2+N3)/3; . . . writeln( “O aluno de nome “,NOME,” tem a média “,MEDIA,” em suas notas.”); . . end . else . . begin . . . writeln(“Não são 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.00) then begin . . . MEDIA :=(N1+N2+N3)/3; . . . writeln( “O aluno de nome “,NOME,” tem a média “,MEDIA,” em suas notas.”); . . end . else . . begin . . . writeln(“Não são aceitas notas negativas.”); . . end; end.
Contador
Utilizamos uma variável que será incrementada a cada repetição, isto é, a cada repetição contamos +1 na variável, até um valor de acordo com o número de vezes que queremos repetir.
No exemplo acima, como queremos 50 alunos, contaríamos 50 repetições.
Sintaxe:
CONT:integer; ( Variável inteira que irá contar o número de repetições ) CONT:=1; ( Iniciação do contador, ele deve começar com algum valor ) CONT: CONT+1; ( Incrementar o contador em +1, repare que em cada repetição ele irá aumentar +1)
Testes lógicos
Usamos testes lógicos para saber quando parar a repetição, ou seja, estabelecemos uma condição para a repetição continuar, caso contrário o programa ficaria preso na repetição eternamente. Por exemplo, usando o contador, a cada repetição testamos o número do contador até que ele alcance quantidade desejada, caso o contador atinja a quantidade de vezes que queremos repetir, o loop (repetição) pára.
Exemplo: programa para fazer a tabuada de multiplicação do número 7:
program tabuada; uses CRT; var contad:integer; begin clrscr; contad:=0; {iniciamos o contador declarando seu primeiro valor} while cont<10 do {Enquanto cont<10, condição é testada a cada repetição} begin writeln('7 x ',contad,' = ',7*contad); contad:=contad+1; {incrementamos o contador a cada repetição} end; readkey; end.
Comandos de repetição
Em Pascal os principais comandos de repetição são
While(faça enquanto) Repeat(repita) for (para repetir de um número até algum número}
While (enquanto)
Usando o while pedimos ao Pascal para repetir "enquanto" a expressão for verdadeira.
Sintaxe
while <condição> then begin <comandos>; <comandos>; end;
Veja o exemplo acima usando while:
program média_notas; var NOME: string; N1, N2, N3, MEDIA: real; CONT: integer; begin . CONT:=0; . while CONT<=50 then . begin . . CONT:=CONT+1; . . 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 média “,MEDIA,” em suas notas.”); . . . end . . else . . . writeln(“Não são aceitas notas negativas.”); . end; end.
Repeat (repita até)
O comando repeat executa repetidamente uma sequência de comandos "até" (until) que uma dada condição seja verdadeira.
Sintaxe:
repeat <comando1>; <comando2>; <comando3>; until <condição>;
Observação: este comando não precisa de begin (início) e and (fim) para demarcar o corpo da repetição.
Exemplo: Faça um programa para pedir um número, em seguida escrever uma tabuada de multiplicação deste número, caso for digitado o número 0, parar o programa.
program tabuada; uses CRT; var num:real; cont:integer; begin repeat clrscr; write('Digite um número para ver sua tabuada de multiplicação '); read(num); cont:=0; while cont<10 do {temos aqui uma repetição dentro de outra} begin writeln(num:4:2,' x ',cont,' = ',(num*cont):6:2); cont:=cont+1; {a cada repetição o cont aumenta +1} end; readkey; {parada para ver o resultado até ser taclado algo} until num=0; {condição para parar a repetição principal} clrscr; write('Foi digitado o número 0! programa encerrado!'); readkey; end.
for to (para de até)
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:
for contador:=ValorInicial to ValorFinal do begin comandos end;
Exemplo: Programa para calcular a média 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 faça} 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 média ',MEDIA,' em suas notas.'); end else begin writeln('Notas invalidas!'); end; end; end.