Você está na página 1de 14

Estruturas de repetio

WHILE:

A estrutura While..Do permite controlar o nmero de vezes que uma


instruo ou bloco de instrues ser executado. Ela difere da instruo
Repeat..Until porque esta s avalia a expresso lgica no final do primeiro Loop,
enquanto que a instruo While..Do avalia a expresso lgica antes da primeira
interao, isto significa que, eventualmente, pode no ocorrer sequer a primeira
interao.

WHILE condio DO
BEGIN
comando 1;
comando 2;
comando 3;
END;

Exemplo While:
PROGRAM PARES;
USES CRT;
VAR X, Y : INTEGER;
BEGIN
CLRSCR;
X:=10;
Y:=0;
WHILE X>0 DO
BEGIN
WRITELN(X);
Y:=Y+1;
X:=X-2;
END;
WRITELN(EXISTEM ,Y, PARES ENTRE 0 E 10);
READKEY;
END.

PROGRAM RAIZCUBICA;
USES CRT;
VAR C : CHAR;
X : INTEGER;
BEGIN
CLRSCR;
C:='S';
WHILE (C ='S') OR (C ='s') DO
BEGIN
WRITE ('INFORME UM NUMERO INTEIRO: ');READLN (X);
WRITELN(X,' RAIZ CUBICA = ', EXP(LN(X)*1/3));
WRITE ('DESEJA CONTINUAR? (S/N) '); READLN (C);
END;
READLN;
END.

PROGRAM FATORIAL;
USES CRT;
VAR X,J : INTEGER;
FAT : INTEGER;
BEGIN
CLRSCR;
BEGIN
WRITELN('DIGITE O NUMERO'); READLN(X);
FAT := 1;
J := 1;
WHILE J <= X DO
BEGIN
FAT := FAT * J;
J := J + 1;
END;
WRITELN('FATORIAL DE ',X,' = ',FAT);
END;
READLN;
END.

Estruturas de repetio
REPEAT UNTIL - O nmero de execues da seqncia de
comandos associada a um comando while pode ser zero. H
situaes em que importante se garantir a execuo de uma
seqncia de comandos pelo menos uma vez. Uma delas a
verificao da consistncia dos dados de entrada (recusar
dados incompatveis no programa). Exemplo:
...
var Mes : integer;
begin
writeln('Digite o mes: '); readln(Mes);
while (Mes < 1) or (Mes > 12)
begin
writeln(Chr(7), 'Digitacao errada! Digite de novo');
writeln('Digite o mes: '); readln(Mes);
end;
...

Estruturas de repetio Repeat Until


Observe que, como a verificao da
condio de repetio feita no "incio" do
comando, h a necessidade de um
comando readln antes da estrutura e outra
dentro dela.
O comando repeat until define uma
estrutura de repetio que garante que uma
seqncia de comandos seja executada
pelo menos uma vez.

Estruturas de repetio
REPEAT UNTIL - Repete um bloco de
instrues at que uma certa condio
seja satisfeita.
REPEAT
sequncia de comandos;
UNTIL condio;

Estruturas de repetio Repeat Until


A consistncia da entrada de um dado relativo a um ms
utilizando um comando repeat poderia ser a seguinte.
...
var Mes : integer;
begin
repeat
writeln('Digite o mes: '); readln(Mes);
if (Mes < 1) or (Mes > 12) then
writeln(Chr(7), 'Digitacao errada! Digite de novo');
until (Mes >= 1) and (Mes <= 12);
...

PROGRAM EX2IMPARES;
USES CRT;
VAR X ,C: INTEGER;
BEGIN
CLRSCR;
C:=0;
X:=1;
WRITELN(NUMEROS IMPARES);
REPEAT
WRITE(X:3);
C:=C+1;
X:=X+2;
UNTIL X>40;
WRITELN(EXISTEM ,C, NUMEROS IMPARES);
READKEY;
END.

Estruturas de repetio Repeat Until


Pode-se tambm utilizar o comando repeat until para execues
sucessivas de um programa. Neste caso, comum se fazer uma
pergunta do tipo Deseja continuar (S/N)? aps cada execuo.
Naturalmente, necessria uma varivel do tipo char que receba
a resposta do usurio e que ser utilizada para controlar a estrutura
de repetio. Teramos algo como:
var R : char;
...
Begin
repeat
{seqncia de comandos do programa}
writeln('Deseja continuar (S/N)?'); readln(R);
until UpCase(R) = 'N';
End.

Estruturas de repetio Repeat Until


PROGRAM EX3;
USES CRT;
VAR X : INTEGER; C : STRING;
BEGIN
CLRSCR;
REPEAT
WRITELN('DIGITE QQ NUMERO: '); READLN(X);
WRITELN('VALOR AO QUADRADO: ',SQR(X));
WRITELN('DIGITE QQ TECLA P/ CONTINUAR OU FIM/fim P/SAIR: ');
READLN(C);
UNTIL UPCASE(C)='FIM';
END.

Estruturas de repetio Repeat Until


PROGRAM EX4NUMEROSPRIMOS;
USES CRT;
VAR K, N, Q: INTEGER;
BEGIN
CLRSCR;
WRITELN('DIGITE UM NUMERO '); READLN(N);
Q := 0;
K:= 1;
REPEAT
IF N MOD K = 0 THEN Q := Q + 1;
K := K + 1;
UNTIL K = N+1;
IF Q > 2 THEN WRITELN('NUMERO NAO PRIMO')
ELSE WRITELN('NUMERO PRIMO');
READLN;
END.

Estruturas de repetio
FOR: Este comando permite que um grupo de operaees ou
comandos sejam repetidos um determinado nmero de vezes.

PARA K DE N1 AT N2, PASSO N3, FAA:


sequncia de comandos;
FIM DO PARA
FOR I:=N1 TO N2 DO
FOR J:=M1 TO M2 DO
BEGIN
comandos;
END;

Exemplo For:
FOR K:=1 TO 5 DO
FOR M:=3 TO 7 DO
L:=K+M;
Resposta:
K,M = L

K,M = L

K,M = L

K,M = L

K,M = L

1,3 = 4

2,3 = 5

3,3 = 6

4,3 = 7

5,3 = 8

1,4 = 5

2,4 = 6

3,4 = 7

4,4 = 8

5,4 = 9

..........

..........

..........

..........

..........

1,7 = 8

2,7 = 9

3,7 = 10

4,7 = 11

5,7 = 12