Você está na página 1de 3

Captulo 1

1.6.2. Laos de Repetio (loop)

Uma sequncia de aes repetida por um nmero especfico de vezes, at que uma condio seja satisfeita. Enquanto a condio for verdadeira, as instrues sero executadas. O lao de repetio tambm pode ser chamado de loop.

Exemplo 1:

Durante uma semana, um ms, etc, vc pode realizar a mesma seqncia de aes, como no exemplo: 1 Dia Acordar levantar tomar caf pegar o nibus Ou pegar o carro 2 Dia Acordar levantar tomar caf pegar o nibus Ou pegar o carro chegar ao destino chegar ao destino

. . .
N simo Dia Acordar levantar tomar caf pegar o nibus Ou pegar o carro chegar ao destino

Como as aes se repetem durante um perodo ou at que um evento ocorra (chegar ao fim de semana) , pode-se melhorar escrita da sequncia do exemplo acima, como:

23

Captulo 1

Exemplo 2:

Enquanto ( no chegar ao fim de semana) faa Acordar levantar tomar caf pegar o nibus Ou pegar o carro chegar ao destino

Exemplo 3:

Enquanto ( dia < N) faa Acordar levantar tomar caf pegar o nibus Ou pegar o carro chegar ao destino

Ento, pode-se observar que as construes dos exemplos 2 e 3, representam as N repeties do exemplo 1. Em termos prticos da programao, a forma dos exemplos 2 e 3, de escrever aes que se repetem, so corretas. A forma de escrever as aes do exemplo 1 que se repetem incorreta, apesar de levar o mesmo resultado, pois imagine reescrever as mesmas aes para 365 dias, ou mais...

1.6.2.1. Comando: enquanto/faa

Em portugol, escreve-se o comando enquanto / faa, da forma apresentada abaixo. Note que se forma um bloco de comandos, delimitado ente o incio e o fim do loop. Veja o exemplo: A condio se refere a um critrio de parada do loop, ou seja, at quando o loop vai ser executado. Um ou mais comandos que sero executados enquanto a condio for verdadeira.

enquanto (condio) faa ... lista de comandos; ... fim enquanto

24

Captulo 1

Suponha os algoritmos abaixo que calculam o valor de x10 , sendo x fornecido pelo usurio. Em termos de programao, pode-se ver a diferena na escrita dos programas a seguir, com e sem o uso de um lao de repetio (loop):

Exemplo sem loop


inicio inteiro x,y; leia (x); y <- x; y <- y * x; y <- y * x; y <- y * x; y <- y * x; ... ... ... y <- y * x; escreva (y); fim fim inicio

Exemplo com loop


inteiro x,y,z; leia (x); y <- x; z <- 1; enquanto (z < 10) faa y <- y * x; z <- z + 1; fim enquanto escreva (y);

Exemplos: a) O problema do loop infinito: Teste de Mesa inicio I=0 1 iterao I=0 2 iterao I=0 3 iterao I=0 ... ... infinitas iteraes I=0
Obs: O programa ficar travado, pois a condio de sada do loop nunca ser satisfeita

inicio inteiro I <- 0; enquanto (I < 5) faa escreva (I); fim enquanto I;

fim

25

Você também pode gostar