Você está na página 1de 5

Algoritmos e Lgica de Programao

Construo de
Algoritmos
Estruturas de Repetio

Estruturas de Repetio

Com o conhecimento adquirido at aqui, ainda no


possvel fazer iteraes!

Como escrever algoritmos que faam iterao de


instrues?

Usar Estruturas de Repetio!

Reinaldo Gomes

reinaldo@cefet-al.br

Estruturas de Repetio

Existem situaes que o processamento de um


valor uma nica vez no suficiente para resolver
o problema

Quando isto ocorre, deve-se utilizar uma estrutura


de repetio

Estruturas de repetio permitem que um ou mais


instrues sejam executadas um nmero definido
de vezes, ou enquanto uma determinada condio
no alcanada

Estruturas de Repetio
As estruturas de repetio tambm so conhecidas
como Laos ou Loops
As estruturas de repetio das linguagens de
programao so de dois tipos

Condicional
Repetem at satisfazer a condio de repetio
So usadas quando no se sabe previamente quantas vezes
deve-se executar as instrues do bloco de repetio

Estruturas de Repetio

Contada
Repetem um nmero contado (pr-definido) de vezes
So usadas quando se sabe previamente quantas vezes
deve-se executar as instrues do bloco de repetio

Estruturas de Repetio Condicionais

As estruturas de repetio condicional podem


executar seus testes:

No Incio
Enquanto/Faa

Normalmente, a utilizao de uma estrutura de


repetio requer o uso de dois tipos de variveis:
Contadora: inicializada antes da estrutura de

repetio e incrementada no interior desta por um


valor
l constante
t t

No Fim
Repita/At

Acumuladora: inicializada antes da estrutura de

repetio e incrementada no interior desta por um


valor varivel

As estruturas de repetio contada utilizam uma


varivel para controlar a quantidade de repeties
Para/Faa
5

Estruturas de Repetio Condicionais

Estruturas de Repetio Condicionais

Exemplos

Algoritmo varivelContadora:
...
cont 0;
<estrutura de repetio>
...
cont cont + 1;
...
Constante
<fim estrutura de repetio>
...

Estrutura de repetio Enquanto/Faa


Semntica:
Faz o teste no incio do lao. Se o

Algoritmo varivelAcumuladora:
...
soma 0;
<estrutura de repetio>
...
soma soma + X;
...
Varivel
<fim estrutura de repetio>
...

resultado for V as instrues do lao


e/so executadas. Volta-se para o incio
do lao e testa-se novamente a sua
condio. Isto repetido enquanto a
condio testada for V.

Estruturas de Repetio Condicionais

Estruturas de Repetio Condicionais

Estrutura de repetio Enquanto/Faa


Resumindo...

No se sabe de antemo quantas vezes o bloco de

repetio ser executado. Isto , ele pode ser


executado vrias vezes ou nenhuma vez
Testa a condio antes de entrar na estrutura de
repetio
Repete a execuo do bloco de instrues toda vez
que condio for V
O bloco de instrues A execuo do bloco finalizada
quando a condio for F
9

Estruturas de Repetio Condicionais

Algoritmo ExemploEnquantoFaa
Inteiro : x;
Incio
Escreva(Digite um valor);
Leia (x);
q
((x<>0)) faa

Enquanto
Se (x > 0) Ento
Escreva (X > 0);
Seno
Escreva (X < 0);
Escreva(Digite um valor);
Leia (x);
Fim Enquanto;
Escreva (X = 0);
Fim.

10

Estruturas de Repetio Condicionais

Estrutura de repetio Repita/At

Estrutura de repetio Repita/At

Sintaxe:

Semntica:

Repita
<Comando1>;
...
<ComandoN>;
At <expresso lgica>;

Efetua um teste lgico no fim do

lao, garantindo que pelo menos


uma vez as instrues deste so
executadas. Ao contrrio do
enquanto, esta s repete o lao se
o resultado do teste for F
11

12

Estruturas de Repetio Condicionais

Estruturas de Repetio Condicionais

Estrutura de repetio Repita/At


Resumindo...

Algoritmo ExemploRepitaAt
Inteiro : x;
Incio
Repita
Escreva(Digite um valor);
L i (x);
Leia
( )
Se (x > 0) Ento
Escreva (X > 0);
Seno
Se (x < 0) Ento
Escreva (X < 0);
At (x = 0);
Escreva (X = 0);
Fim.

No se sabe de antemo quantas vezes o bloco de

repetio ser executado. Todavia garantido que ele


ser executado pelo menos uma vez
Testa a condio depois de entrar na estrutura de
repetio
Repete a execuo do bloco de instrues toda vez que a
condio for F
A execuo do bloco finalizada quando a condio for V
13

Estruturas de Repetio Condicionais

14

Estruturas de Repetio Condicionais

Questo de Implementao I

Toda repetio condicional pode ser representada por

Questo de Implementao II
Nos laos condicionais a varivel que testada, deve

uma estrutura do tipo Enquanto/Faa ou Repita/At.


Todavia, perceba que a primeira repete somente
quando a condio V e a segunda somente quando a
condio F. Por isso, a condio de uma a negao
da outra

estar sempre associada a uma instruo que a atualize


no interior do lao. Pois, se isto no ocorrer, o algoritmo
ficar repetindo indefinidamente este lao,
lao gerando
uma situao conhecida como lao/loop

15

16

Estruturas de Repetio Condicionais

Estrutura de Repetio Contada

Algoritmo ExemploEnquantoFaa_LoopInfinito
Inteiro : x;
Incio
Escreva(Digite um valor);
Leia (x);
Enquanto (x<>0) faa
Se (x > 0) Ento
Escreva (X > 0);
Seno
Escreva (X < 0);
Escreva(Digite um valor);
{Leia (x); - sem este Leia(x), o lao repete infinitamente!}
Fim Enquanto;
Escreva (X = 0);
Fim.

Estrutura de repetio Para/Faa

Sintaxe:
Para<Contador> de <Inicio> at <Fim>[,
<Fim>[ passo <N>] Faca
<Instruo1>;
...
<InstruoN>;
Fim_Para

17

18

Estrutura de Repetio Contada

Estrutura de Repetio Contada

Estrutura de repetio Para/Faa

Estrutura de repetio Para/Faa

Semntica:

Resumindo...
Sabe-se de antemo quantas vezes o bloco de repetio

Repete as instrues enquanto a

ser executado. Isto , repete enquanto o valor final no


atingir o valor final da varivel de controle
Incrementa automaticamente a varivel de controle cada
vez que o bloco executado (incremento 1 o padro)
A varivel de controle deve ser um nmero inteiro
A varivel de controle no pode ser modificada dentro do
bloco

varivel contador no atingir o


valor final. Ressalta-se que a
varivel contador previamente
inicializada e incrementada ou
decrementada de uma constante a
cada repetio
19

Estrutura de Repetio Contada


Algoritmo ExemploParaFaa
inteiro : x, i, contP;
Incio
contP 0;
Para i 1 at 20 faa
Escreva(Digite um valor);
Leia (x);
Se (x > 0) Ento
contP contP + 1;
Fim Para;
Escreva (positivos = ,contP);
Fim.

20

Estrutura de Repetio Contada

Ateno
Pode-se implementar um lao PARA com um lao

CONDICIONAL, entretanto o controle do


incremento/decremento da varivel contadora seu. O
lao PARA faz isso implicitamente!

22

21

Estrutura de Repetio Contada

Estrutura de Repetio Contada

Algoritmo ExemploParaFaaComEnquanto
Var x, i, contP: inteiro
Incio
contP 0; i 1;
Enquanto (i <= 20) faa
Escreva(Digite um valor);
Leia (x);
Se (x > 0) Ento
contP contP + 1;
i i+1; {Incremento explcito da varivel contadora}
Fim Enquanto;
Escreva (positivos = +contP);
Fim.

Algoritmo ExemploParaFaaComRepita
Var x, i, contP: inteiro
Incio
contP 0; i 1;
Repita
Escreva(Digite um valor);
Leia (x);
Se (x > 0) Ento
contP contP + 1;

23

i i+1; {Incremento explcito da varivel contadora}


At (i > 20);
Escreva (positivos = +contP);
Fim.

24

Comparando as Estruturas de
Repetio

Encadeando Estruturas de Repetio

Enquanto/Faca

Repita/Ate

Para/Faca

Tipo de
Estrutura

Condicional

Condicional

Contada

Ocorrncia do
Teste

Incio

Fim

Incio

Quantidade de
Repeties

0 ou muitas

Condio para
Repetir

Semelhante as estruturas de deciso composta, as


estruturas de repetio tambm podem ser
encadeadas/aninhadas.

Esta abordagem usada quando h a


necessidade de se usar laos dentro de laos.

No mnimo uma ((fim-incio) div


passo) + 1
F

Por exemplo: fazer um algoritmo para gerar toda a

tabuada de soma de 1 a 10

Incio <= Fim ou


Incio >= Fim
25

26

Encadeando Estruturas de Repetio

Encadeando Diversas Estruturas

Algoritmo TabuadaSoma
Var r, n1, n2: inteiro
Incio
n1 1;
Enquanto (n1<
(n1<=10)
10) faa
Para n2 1 at 10 faa
r n1 + n2;
Escreva (n1, + ,n2, = ,r);
Fim Para
n1 n1+1;
Fim Enquanto
Fim.

27

Tambm pode-se encadear estruturas de repetio com estruturas


de deciso

Algoritmo TabuadaSomaComParidade
Var r, n1, n2: inteiro
Incio
n1 1;
Enq anto (n1<=10)
Enquanto
(n1< 10) faa
Para n2 1 at 10 faa
r n1 + n2;
Se (r mod 2 = 0)
Escreva (n1, + ,n2, = ,r, = Par);
Seno
Escreva (n1, + ,n2, = ,r, = Impar);
Fim Para
n1 n1+1;
Fim Enquanto
Fim.

28

Algoritmos e Lgica de Programao

Construo de
Algoritmos
Estruturas de Repetio
Reinaldo Gomes
reinaldo@cefet-al.br

Você também pode gostar