Você está na página 1de 36

Estruturas de

Repetio
Estruturas de Repetio
Motivao

Muitas vezes necessrio repetir instrues
prendendo o fluxo dos programas.

Em determinadas situaes repetir instrues se
torna confuso ou trabalhoso.
Exemplo: Clculo do fatorial de n

inteiro res = 1
ler n
se (n>=2) ento
res = res*2
fimse
se (n>=3) ento
res = res*3
fimse
se (res>=4) ento

imprimir res
fim
Note como foi usada a mesma varivel . esquerda
teremos o novo valor de res e na direita, res tem
o valor anterior.
Estrutura de Repetio
# repeties
Atendido?
Instrues a serem
repetidas
sim
no
Fluxograma
Aqui se introduz
algum critrio de
repetio
Lao de instrues
Estruturas de Repetio
Instruo parafaafimpara

Repete todas as instrues que estejam posicionadas
entre o parafaa e a instruo fimpara um nmero
previsto de vezes.

Ao executar o nmero de repeties segue a para a
prxima instruo aps a instruo fimpara
para ( < condio >; passo, contador )
faa
<instrues>
fimpara
Sintaxe
A <condio> tem a forma varivel <,<=,>,>= nmero. O valor
da varivel deve ser inicializado antes do comando para e a
cada repetio do lao acrescido do valor do passo, ou seja,
varivel = varivel+passo, aps a execuo das <instrues>.
A varvel que ser acrescida do passo ser indicado no espao
indicado como contador.
Exemplo: Clculo do fatorial de n

inteiro res = 1
ler n
inteiro x = 1
para (x<=n; 1, x) faa
res = res*x
fimpara
imprimir res
fim
n = 3

x=1
res = 1 x 1
x = x + passo
x=2
res = 1 x 2
x = x + passo
x = 3
res = 2 x 3
x = x + passo
como x = 4, vai para depois do fimpara
e imprime 6
Inicializa o contador
Antes de ser verificada novamente
a condio do para, neste ponto x
acrescido do passo: x = x + passo
Exemplo padro:

algoritmo nome()
incio
/* instrues antes para */

para ( condio; passo, var ) faa
/*instruces do para*/
fimpara

/*instrues aps o para*/

fim
algoritmo nome()
incio

/* instrues antes do para */

para ( condio ; passo, var ) faa
/*instruces do para*/
fimpara

/*instrues aps o para*/
fim
algoritmo nome()
incio

/* instrues antes do para */

para ( condio ; passo, var ) faa
/*instruces do para*/
fimpara

/*instrues aps o para*/
fim
algoritmo nome()
incio

/* instrues antes do para */

para ( condio ; passo, var ) faa
/*instruces do para*/
fimpara

/*instrues aps o para*/
fim
algoritmo nome()
incio

/* instrues antes do para */

para ( condio ; passo, var ) faa
/*instruces do para*/
fimpara

/*instrues aps o para*/
fim
algoritmo nome()
incio

/* instrues antes do para */

para ( condio ; passo, var ) faa
/*instruces do para*/
fimpara

/*instrues aps o para*/
fim
algoritmo nome()
incio

/* instrues antes do para */

para ( condio ; passo, var ) faa
/*instruces do para*/
fimpara

/*instrues aps o para*/
fim
Condio deixa de ser satisfeita
algoritmo nome()
incio

/* instrues antes do para */

para ( condio ; passo, var ) faa
/*instruces do para*/
fimpara

/*instrues aps o para*/
fim
Exerccio

Elabore um algoritmo que:
Efetue a leitura de 10 nmeros inteiros.
Deve solicitar os nmeros na forma
Entre com o nmero n, n = 1, 2, ...,10
Os nmeros devem ser somados e o
resultado final apresentado na forma
Soma = xxx.




algoritmo LereSomar()
incio
inteiro num = 1 /* inicializa varivel de entrada */
inteiro soma = 0 /*resultado da soma*/
inteiro cont = 1
para (cont<=10; 1, cont) faa
imprimir Entre com o nmero , cont
ler num
soma = soma + num /* lado direito tem precedncia */
fimpara Neste ponto cont =cont + passo
imprimir Soma =, soma (forma alternativa)
imprimir soma
fim
Estrutura de Repetio
Controle da repetio com a instruo
anterior limitada.
Outra opo :
Instruo enquantofaafimenquanto
Executa as instrues posicionadas entre
o enquantofaa e a instruo
fimenquanto, enquanto a condio for
verdadeira.

enquanto ( < condio > ) faa
<instruces>
fimenquanto

Sintaxe
Nas instrues incluem-se mudanas
em variveis que sero testadas atravs
da condio.
Exerccio
Fazer um algoritmo que:
Pea e leia um texto e imprima na tela.
O processo de leitura deve parar
quando o usurio digitar o texto pare.
Imprimir, ao final, o nmero de textos
digitados.

algoritmo LerTexto()
incio
texto entrada = /* inicializa a varivel do texto*/
inteiro vezes = 0
enquanto (entrada!=pare) faa
imprimir Entre com o texto:
ler entrada
imprimir entrada
vezes = vezes + 1
fimenquanto
imprimir Nmero de vezes:, vezes
fim


Exerccio (para casa)
Construir um algoritmo que calcule e
imprima a mdia de uma turma de 10
alunos.
O algoritmo deve pedir e ler as notas
de cada aluno.
Exerccio
Construir um algoritmo que calcule a mdia
de uma turma de n alunos, onde n no
conhecido a priori.
O algoritmo deve ler as notas do teclado at
ler o valor -1.
O algoritmo deve imprimir a mdia ao final.
Uma soluo do problema anterior seria:

algoritmo MediaNotas1()
incio
real nota = 0.0
real soma = 0.0
inteiro numalunos = 0
enquanto (nota!=-1) faa
imprimir Entre com a nota:
ler nota
numalunos = numalunos + 1
soma = soma + nota
fimenquanto
numalunos = numalunos -1
soma = soma + 1.0
real media = soma/numalunos
imprimir A mdia :, media
fim

Corrige o algoritmo
Um algoritmo alternativo :

algoritmo MediaNotas2()
incio
real nota = 0.0
real soma = 0.0
inteiro numalunos = 0
enquanto (nota!=-1) faa
imprimir Entre com a nota:
ler nota
se (nota!=-1) ento
numalunos = numalunos + 1
soma = soma + nota
fimse
fimenquanto
real media = soma/numalunos
imprimir A mdia :, media
fim

Evita os problemas com os
valores de numalunos e soma
Estrutura de Repetio
Instruo faaenquanto.

Executa as instrues posicionadas entre
o faa e a instruo enquanto pelo
menos uma vez independente da
condio ser verdadeira ou no. Caso a
condio seja verdadeira estrutura de
repetio continua.
Sintaxe
faa
<instruces>
enquanto ( < condio > )

algoritmo nome()
incio
/* instrues antes faa enquanto */

faa
/*instruces do faa enquanto*/
enquanto ( condio )

/*instrues aps o faa enquanto*/

fim
algoritmo nome()
incio
/* instrues antes faa enquanto */

faa
/*instruces do faa enquanto*/
enquanto ( condio )

/*instrues aps o faa enquanto*/

fim
algoritmo nome()
incio
/* instrues antes faa enquanto */

faa
/*instruces do faa enquanto*/
enquanto ( condio )

/*instrues aps o faa enquanto*/

fim
algoritmo nome()
incio
/* instrues antes faa enquanto */

faa
/*instruces do faa enquanto*/
enquanto ( condio )

/*instrues aps o faa enquanto*/

fim
algoritmo nome()
incio
/* instrues antes faa enquanto */

faa
/*instruces do faa enquanto*/
enquanto ( condio )

/*instrues aps o faa enquanto*/

fim
algoritmo nome()
incio
/* instrues antes faa enquanto */

faa
/*instruces do faa enquanto*/
enquanto ( condio )

/*instrues aps o faa enquanto*/

fim
Se a condio falsa
algoritmo nome()
incio
/* instrues antes faa enquanto */

faa
/*instruces do faa enquanto*/
enquanto ( condio )

/*instrues aps o faa enquanto*/

fim
Exerccio
Escreva um algoritmo que localize o
menor de vrios inteiros fornecidos pelo
usurio. A quantidade de nmeros ser
solicitada ao usurio.

Use a instruo faa enquanto e uma
estrutura de contador.
algoritmo Menor()
incio
inteiro n = 0
inteiro num = 0
imprimir Entre com a quantidade de
nmeros:
ler n
inteiro menornum = 0
imprimir Entre com um inteiro:
ler menornum
n = n -1
faa
imprimir Entre com um inteiro:
ler num
se (num<menornum) ento
menornum = num
fimse
n=n-1
enquanto (n>0)
imprimir O menor nmero foi , menornum
fim