Anda di halaman 1dari 41

Algoritmos e Estruturas de Dados

I Estrutura de Repetio
Profa. Mercedes Gonzales
Mrquez
Estrutura de Repetio
Referncia bibliogrfica : SALVETTI/BARBOSA e HARRY FARRER
Execuo de uma seqncia de aes repetidas vezes. O computador
abandona o fluxo natural da execuo (de cima para baixo) e volta
a executar a seqncia de aes desejada. Pode apresentar duas
formas:

1.Repetio com varivel de controle:
O nmero de repeties no loop (lao) est previamente determinado
pelo valor inicial e pelo valor final da varivel de controle.

2.Repetio controlada por condio
No sabemos a-priori quantas vezes executar a repetio. A
execuo do loop deve ser controlada por uma condio. A
condio pode controlar a interrupo da repetio no incio ou no
final da sequncia de comandos desta.

Repetio com varivel de controle
1. Repetio com varivel de controle
Formato :
Para varivel_controle de valor_inicial at valor_final
passo valor_passo repita
seqncia de comandos
Fim para
O nmero de repeties no loop (lao) est previamente
determinado pelo valor inicial e pelo valor final da
varivel de controle. Quando valor_passo 1, podemos
omitir a especificao de passo.

Repetio com varivel de controle
Exemplo:
Algoritmo <exemplo1>
inteiro: i
Inicio
Para i de 1 at 5 repita
escreva (i)
Fim Para
Fim
Repetio com varivel de controle
Exerccio 2. (1 forma) Faa um algoritmo que imprima os 4 primeiros
nmeros inteiros pares positivos.

Algoritmo <pares>
inteiro: i
Inicio
Para i de 1 at 4 repita
escreva (2*i)
Fim Para
Fim
Repetio com varivel de controle
Exerccio 2. (2 forma) Faa um algoritmo que imprima os 4 primeiros
nmeros inteiros pares positivos.

Algoritmo <pares>
inteiro: i
Inicio
Para i de 2 at 8 passo 2 repita
escreva (i)
Fim Para
Fim
Repetio com varivel de controle
Exerccio 2. (3 forma) Faa um algoritmo que imprima os 4 primeiros
nmeros inteiros pares positivos.

Algoritmo <pares>
inteiro: i,n
Inicio
n 0
Para i de 1 at 4 repita
n n+2
escreva (n)
Fim Para
Fim
Repetio com varivel de controle
Exerccio 3. Faa um algoritmo que imprima a soma dos 4
primeiros nmeros inteiros positivos.
Algoritmo <cincoprimeiros>
inteiro: i,s
Inicio
s 0
Para i de 1 at 4 repita
s s+i
Fim Para
escreva (s)
Fim
i s
0
1 1
2 3
3 6
4 10
Exerccio 4. Faa um algoritmo que imprima a soma dos 4
primeiros nmeros inteiros pares positivos.

i s
0
1 2
2 6
3 12
4 20
Algoritmo <pares2>
inteiro: i,s
Inicio
s 0
Para i de 1 at 4 repita
s s+2*i
Fim Para
escreva (s)
Fim
Repetio com varivel de controle
Exerccio 5. Faa um algoritmo que imprima a soma dos n
primeiros nmeros inteiros pares positivos.
Algoritmo <pares3>
inteiro: i,s,n
Inicio
leia (n)
s 0
Para i de 1 at n repita
s s+2*i
Fim Para
escreva (s)
Fim
Repetio com varivel de controle
Exerccio 6. Faa um algoritmo que imprima a soma dos n
primeiros nmeros inteiros mpares positivos.

Algoritmo <impares>
inteiro: i,s,n
Inicio
leia (n)
s 0
Para i de 1 at n repita
s s+2*i-1
Fim Para
escreva (s)
Fim
Repetio com varivel de controle
Algoritmo <soma>
inteiro: i,s
Inicio
s 1
Para i de 1 at 100 repita
s s+1/(2*i)
Fim Para
Fim
Exerccio 7. Desenvolver um algoritmo para calcular a soma:
200 / 1 ... 8 / 1 6 / 1 4 / 1 2 / 1 1
Repetio com varivel de controle
Exerccio 8. Tem-se a altura e o nome de 50 pessoas. Fazer um
algoritmo que escreva o nome da pessoa mais alta. Se tiver mais
de uma pessoa possundo a maior altura, escreva o nome de
quaisquer delas.
Algoritmo <altura>
inteiro: i
Literal: nome,nomemaisalta
Real:altura, maioraltura
Inicio
maioraltura0
Para i de 1 at 50 repita
leia (nome,altura)
se (altura>maioraltura) ento
maioralturaaltura
nomemaisaltanome
fim se
Fim Para
escreva (nomemaisalta,maioraltura)
Fim

Repetio com varivel de controle
Exerccio 9. Num frigorfico existem 90 bois. Cada boi traz preso
no pescoo um carto contendo seu nmero de identificao e seu
peso. Fazer um algoritmo que escreva o nmero e peso do boi
mais gordo e do boi mais magro.
Algoritmo <bois>
inteiro: i,numero,gordo,magro
Real:peso,pesomenor, pesomaior
Inicio
pesomenor10000
pesomaior0
Para i de 1 at 90 repita
leia (numero,peso)
se (peso>pesomaior) ento
pesomaiorpeso
gordonumero
fim se
se (peso<pesomenor) ento
pesomenorpeso
magronumero
fim se
Fim Para
escreva (gordo,pesomaior)
escreva (magro,pesomenor)
Fim

Repetio com varivel de controle
Exerccio 10. Sendo H=1+1/2+1/3+1/4+...+1/N faa um algoritmo
para calcular H. O nmero N lido.
Algoritmo <H>
inteiro: i,n
real: H
Inicio
leia (n)
H 0
Para i de 1 at n repita
H H+1/i
Fim Para
escreva (H)
Fim
Repetio com varivel de controle
Exerccio 11. Imprimir os N primeiros termos da seqncia
.. 1,2,3 2,
1
, = k + y = y
k + k
com
y
1
= 1
Seja N=5. O primeiro termo definido pela condio inicial e os
demais so calculados pela formula de recorrncia dada
9 2
7 2
5 2
3 2
1
5
4
3
2
1
= + y = y
= + y = y
= + y = y
= + y = y
= y
4
3
2
1
Algoritmo <nprimeiros>
inteiro: i,n,y
Inicio
leia (n)
y 1
escreva (y)
Para i de 1 at n-1 repita
y y+2
escreva (y)
Fim Para
Fim
Repetio com varivel de controle
Exerccio 12. Faa um algoritmo que calcule a seguinte soma
( o smbolo representa somatrio.

Algoritmo <somatorio>
inteiro: i,s
Inicio
s 0
Para i de 1 at 10 repita
s s+i**2
Fim Para
Fim
Resolvendo o somatrio
Repetio com varivel de controle
Exerccio 13. Faa um algoritmo que calcule e escreva o valor
da seguinte somatria
81
16
27
8
9
4
3
2
1 + + + + = S
Algoritmo <somatorio2>
inteiro: i,s
Incio
s 0
Para i de 0 at 4 repita
s s+2**i/3**i
Fim Para
Fim
-Procurando uma frmula
4
4
3
3
2
2
1
1
0
0
3
2
3
2
3
2
3
2
3
2
+ + + + = S
4
4
3
3
2
2
3
2
3
2
3
2
3
2
1 + + + + = S
Algoritmo <somatorio2>
inteiro: i,s
Incio
s 1
Para i de 1 at 4 repita
s s+2**i/3**i
Fim Para
Fim
ou
Repetio com varivel de controle
Exerccio 14. Faa um algoritmo que calcule e escreva o valor
da seguinte somatria
243
16
81
8
27
4
9
2
1 + + + + = S
-Procurando uma frmula
5
4
4
3
3
2
2
1
3
2
3
2
3
2
3
2
1 + + + + = S
Algoritmo <somatorio2>
inteiro: i,s
Incio
s 1
Para i de 1 at 4 repita
s s+2**i/3**(i+1)
Fim Para
Fim
Repetio com varivel de controle
Exerccio 15. Faa um algoritmo que calcule e escreva o valor
da seguinte somatria
-Procurando uma frmula
1
4
2
3
3
2
4
1
3
2
3
2
3
2
3
2
1 + + + + = S
Algoritmo <somatorio2>
inteiro: i,s
Incio
s 1
Para i de 1 at 4 repita
s s+2**i/3**(5-i)
Fim Para
Fim
3
16
9
8
27
4
81
2
1 + + + + = S
4 5
4
3 5
3
2 5
2
1 5
1
3
2
3
2
3
2
3
2
1

+ + + + = S
Repetio com varivel de controle
Exerccio 16. Faa um algoritmo que calcule e escreva o valor
da seguinte somatria
81
16
27
8
9
4
3
2
1 + + = S
-Procurando uma frmula
4
4
3
3
2
2
3
2
3
2
3
2
3
2
1 + + = S
Algoritmo <somatorio2>
inteiro: i,s
Incio
s 1
Para i de 1 at 4 repita
s s+(-1 )**i*2**i/3**i
Fim Para
Fim
Algoritmo <somatorio2>
inteiro: i,s
Incio
s 1
Para i de 1 at 4 repita
s s+(-2)**i/3**i
Fim Para
Fim
Repetio com varivel de controle
Exerccio 17. Faa um algoritmo que calcule e escreva o valor
da seguinte somatria
1
16384
...
144
8
169
4
196
2
225
1
+ + + + + = S
Algoritmo <somatorio2>
inteiro: i,s
Inicio
s 0
Para i de 1 at 15 repita
s s+2**(i-1)/(16-i)**2
Fim Para
Fim
-Procurando uma frmula
2 2 2 2 2
1
16384
...
12
8
13
4
14
2
15
1
+ + + + + = S
2 2 2 2 2
1
*14 * 2
...
12
*3 * 2
13
*2 * 2
14
*1 * 2
15
*0 * 2
+ + + + + = S
Repetio com varivel de controle
Exerccio 18. Faa um algoritmo que calcule o valor do seno de A
atravs da seguinte srie:


O valor de A e o nmero N de termos da srie devem ser lidos.
...
7!
A
5!
A
3!
A
7 5 3
+ + + A = SenA
Algoritmo <senoA>
inteiro: i,n
real: A
Inicio
leia (n,A)
somaA
den1
numA
Para i de 2 at n repita
num -num*A*A
denden*(2*i-1)*(2*i-2)
somasoma+num/den
Fim Para
Fim
Repetio com varivel de controle
Exerccio 19. O nmero 3025 possui a seguinte caracterstica:


Algoritmo <caracteristica>
inteiro: i
Inicio
Para i de 1000 at 9999 repita
Se (((mod(i,100)+div(i,100))**2)=i)
escreva (i)
Fim se
Fim Para
Fim

Repetio com varivel de controle
Faa um algoritmo que pesquise e imprima todos os nmeros de
quatro algarismos que apresentam tal caracterstica.


3025 55
55 25 30
2
Exerccio 20. Partindo-se de um nico casal de coelhos
filhotes recm-nascidos e supondo que um casal de coelhos
torna-se frtil aps dois meses de vida, a partir de ento,
produz um novo casal a cada ms e que os coelhos nunca
morrem, a quantidade de casal de coelhos aps n meses
dado pelo n-simo termo da seguinte seqncia:
F
n
=F
n 2
+F
n 1
,n 2
F
0
= 1,
F
1
= 1
Essa seqncia chama-se seqncia de Fibonacci.
Repetio com varivel de controle
13 = 6
8 = 5
5 = 4
3 = 3
2 2
1 = 1
1 = 0




)
)
)
)
)
)
)
(a) Mostre como os termos dessa srie correspondem soluo do problema
proposto.
meses
Repetio com varivel de controle
Algoritmo <fibonacci>
inteiro: i,n,fibonacci,fib0,fib1
Inicio
leia (n)
fib0 1
fib11
Para i de 2 at n repita
fibonacci fib0+fib1
fib0 fib1
fib1 fibonacci
Fim Para
Fim
b) Redija um algoritmo para calcular a quantidade de casais de coelhos
aps n meses.
Repetio com varivel de controle
Repetio controlada por condio
As vezes precisamos que nosso algoritmo realize uma certa
quantidade de repeties, mas no sabemos o nmero exato de
repeties necessrias.
Exemplo:

Faa um algoritmo que determine os quadrados de um conjunto de
nmeros inteiros positivos.

Neste caso no podemos usar a estrutura de repetio com varivel
de controle pois o conjunto de dados de entrada formado por um
nmero desconhecido de elementos. No fornecida pelo usurio a
quantidade de nmeros existem no conjunto.
O que desejamos repetir o bloco de comandos (leitura, comandos,
sada) enquanto existir um nmero inteiro positivo na lista de entrada
dos dados.

Repetio controlada por condio
Nestes casos usamos a repetio controlada por condio.

Repetio controlada por condio.
No sabemos a-priori quantas vezes executar a repetio. A
execuo do loop deve ser controlada por uma condio.
Esta repetio tambm chamada de repetio controlada por
sentinela ou flag.
No exemplo, a condio para interromper a repetio que o
nmero no seja positivo. O valor sentinela ser ento qualquer
nmero que no seja positivo. Por exemplo, o nmero zero ou o
nmero -1.

Representamos essa estrutura de repetio atravs de
uma das duas instrues:

(1) enquanto-faa
(2) repita-at-que.

As duas instrues so equivalentes. Entretanto, h
situaes em que uma prefervel outra.
Repetio controlada por condio
Instruo Enquanto-Faa
Formato.
Enquanto <condio> faa
<bloco de comandos>
Fim enquanto

Nesta instruo, <bloco de comandos> s executado se
<condio> for verdadeira.
Antes de ser executado pela primeira vez necessrio que a
<condio> esteja definida.
Se na primeira vez em que a <condio> for testada ela for falsa, o
loop no executado nenhuma vez.
Dentro do loop deve existir uma instruo que altera o valor da
<condio>, caso contrrio, o loop pode se tornar de execuo infinita
(no parar).
Repetio controlada por condio
Exemplo 1. Faa um algoritmo que determine os quadrados de um
conjunto de nmeros inteiros positivos.


Algoritmo <quadrados>
inteiro: numero
Inicio
leia (numero)
enquanto (numero>0) faa
escreva
(numero*numero)
leia (numero)
fim enquanto
Fim
Repetio controlada por condio
Exemplo 2: Faa um algoritmo que leia uma
lista de nmeros inteiros. A leitura de dados
terminar quando for ingressado o nmero
zero (flag). Pede-se a soma e a mdia de
todos os nmeros lidos (excluindo o zero).
Algoritmo <media>
inteiro: numero,soma,cont
real: media
Inicio
cont 0
soma 0
leia (numero)
enquanto (numero<>0) faa
soma soma+numero
cont cont+1
leia (numero)
fim enquanto
se (cont>0) ento
media soma/cont
escreva (media)
fim se
Fim
Repetio controlada por
condio
Exerccio 3. Escrever um algoritmo que receba dois nmeros
inteiros positivos, e determine o produto dos mesmos, utilizando o
seguinte mtodo de multiplicao:

dividir, sucessivamente, o primeiro nmero por 2, at que se
obtenha 1 como quociente;
paralelamente, dobrar, sucessivamente, o segundo nmero;
somar os nmeros da segunda coluna que tenham um nmero
mpar na primeira coluna. O total obtido o produto procurado.
Exemplo: 9 x 6
9 6 6
4 12
2 24
1 48 +48
___
54
Repetio controlada por condio
Algoritmo <produto>
inteiro: i,a,b,pro
Inicio
leia (a,b)
pro0
Enquanto (a<>1) faa
Se (mod(a,2)<>0) ento
propro+b
Fim se
adiv(a,2)
bb*2
Fim enquanto
pro pro+b
Fim
Repetio controlada por condio
Exemplo 4: Faa um algoritmo que encontre a primeira potncia de
2 maior que 1000.
Repetio controlada por condio
Instruo Repita-At-Que
Formato.
repita
<bloco de comandos>
at que <condio>

Nesta instruo, <bloco de comandos> pelo menos uma vez porque
somente aps a sua execuo a <condio> testada.
Dentre as instrues do loop deve existir pelo menos uma que altere o
valor de <condio>.
Para o mesmo problema as condies de controle dos comandos
enquanto-faa e repita-at-que so condies complementares.
Observe que a negao de A>0 A<=0 e vice-versa.

Repetio controlada por condio
Algoritmo <quadrados>
inteiro: numero
Inicio
leia (numero)
repita
escreva (numero*numero)
leia (numero)
at que (numero<=0)
Fim
Algoritmo <quadrados>
inteiro: numero
Inicio
leia (numero)
enquanto (numero>0) faa
escreva (numero*numero)
leia (numero)
fim enquanto
Fim
Exemplo comparativo.- Faa um algoritmo que determine os quadrados de um
conjunto de nmeros inteiros positivos.


Observe que a primeira estrutura de repetio (enquanto-faa) mais
conveniente para resolver o problema proposto.

Repetio controlada por condio
Exerccio2: Suponha que no ano N a populao americana seja maior
que a brasileira. Sabendo-se que os Estados Unidos possuem um
crescimento anual de 2% na sua populao e que o Brasil tem
crescimento anual de 4%, determinar o ano em que as duas populaes
sero iguais (em quantidade). So dados os nmeros de habitantes dos
Estados Unidos e do Brasil no ano N.
Algoritmo <populacao>
inteiro: ano,br,am
Inicio
leia (ano,br,am)
enquanto (am>br) faa
am am*1.02
br br*1.04
ano ano+1
fim enquanto
escreva (ano)
Fim
Algoritmo <populacao>
inteiro: ano,br,am
Inicio
leia (ano,br,am)
repita
br br*1.04
am am*1.02
ano ano+1
at que (br>=am)
escreva (ano)
Fim
1. Se usarmos repita-at-que,
as duas populaes primeiro sofrem um acrscimo, e depois o teste
da condio ser executado.
Esta instruo indicada se considerarmos sabido que inicialmente
a populao americana de fato maior que a populao brasileira.

2. Se usarmos enquanto-faa
Se os valores de entrado fossem desconhecidos, esta instruo
mais adequada pois primeiro o teste da condio efetuado e
conforme o resultado do teste o bloco ser o no executado dentro
do loop.
Repetio controlada por condio
Tarefas:
Estude os exerccios resolvidos de estrutura de
repetio do livro Introduo Programao 500
Algoritmos Resolvidos de Anita Lopes.
Estude a lista de exerccios resolvidos de estrutura
de repetio que se encontra no site da disciplina.
Resolva a lista de exerccios propostos de estrutura
de repetio que tambm j est disponvel no site
da disciplina.
Estrutura de Repetio

Anda mungkin juga menyukai