algoritmos e estruturas de dados i – estrutura de repeti ção
Post on 19-Jan-2016
25 Views
Preview:
DESCRIPTION
TRANSCRIPT
Algoritmos e Estruturas de Dados I – Estrutura de Repetição
Profa. Mercedes Gonzales Márquez
Estrutura de Repetição
Referência bibliográfica : SALVETTI/BARBOSA e HARRY FARRERReferência bibliográfica : SALVETTI/BARBOSA e HARRY FARRERExecução de uma seqüência de ações repetidas vezes. O computador
abandona o fluxo natural da execução (de cima para baixo) e volta a executar a seqüência de ações desejada. Pode apresentar duas formas:
1.Repetição com variável de controle: O número de repetições no loop (laço) está previamente determinado pelo
valor inicial e pelo valor final da variável de controle.
2.Repetição controlada por condiçãoNão sabemos a-priori quantas vezes executar a repetição. A execução do
loop deve ser controlada por uma condição. A condição pode controlar a interrupção da repetição no início ou no final da sequência de comandos desta.
Repetição com variável de controleRepetição com variável de controle
1. Repetição com variável de controle1. Repetição com variável de controle
Formato :Formato :
ParaPara variável_controle variável_controle dede valor_inicial valor_inicial até até valor_final valor_final passo passo valor_passo valor_passo repitarepita
seqüência de comandosseqüência de comandos
Fim paraFim para
O número de repetições no loop (laço) está previamente O número de repetições no loop (laço) está previamente determinado pelo valor inicial e pelo valor final da determinado pelo valor inicial e pelo valor final da variável de controle. Quando valor_passo é 1, podemos variável de controle. Quando valor_passo é 1, podemos omitir a especificação de omitir a especificação de passo.passo.
Repetição com variável de controleRepetição com variável de controle
Exemplo:Exemplo:
Algoritmo <exemplo1>Algoritmo <exemplo1>
inteiro: iinteiro: i
InicioInicio
Para i de 1 até 5 repita Para i de 1 até 5 repita
escreva (i)escreva (i)
Fim ParaFim Para
FimFim
Repetição com variável de controleRepetição com variável de controle
Exercício 2. (1º forma) Faça um algoritmo que imprima os 4 Exercício 2. (1º forma) Faça um algoritmo que imprima os 4 primeiros números inteiros pares positivos.primeiros números inteiros pares positivos.
Algoritmo <pares>Algoritmo <pares>
inteiro: iinteiro: i
InicioInicio
Para i de 1 até 4 repita Para i de 1 até 4 repita
escreva (2*i)escreva (2*i)
Fim ParaFim Para
FimFim
Repetição com variável de controleRepetição com variável de controle
Exercício 2. (2º forma) Faça um algoritmo que imprima os 4 Exercício 2. (2º forma) Faça um algoritmo que imprima os 4 primeiros números inteiros pares positivos.primeiros números inteiros pares positivos.
Algoritmo <pares>Algoritmo <pares>
inteiro: iinteiro: i
InicioInicio
Para i de 2 até 8 passo 2 repita Para i de 2 até 8 passo 2 repita
escreva (i)escreva (i)
Fim ParaFim Para
FimFim
Repetição com variável de controleRepetição com variável de controle
Exercício 2. (3º forma) Faça um algoritmo que imprima os 4 Exercício 2. (3º forma) Faça um algoritmo que imprima os 4 primeiros números inteiros pares positivos.primeiros números inteiros pares positivos.
Algoritmo <pares>Algoritmo <pares>
inteiro: i,ninteiro: i,n
InicioInicio
nn ←0←0
Para i de 1 até 4 Para i de 1 até 4 repita repita
n n ←n+2←n+2
escreva (n)escreva (n)
Fim ParaFim Para
FimFim
Repetição com variável de controleRepetição com variável de controle
Exercício 3. Faça um algoritmo que imprima a soma dos 4 Exercício 3. Faça um algoritmo que imprima a soma dos 4 primeiros números inteiros positivos.primeiros números inteiros positivos.
Algoritmo <cincoprimeiros>Algoritmo <cincoprimeiros>
inteiro: i,sinteiro: i,s
InicioInicio
ss ←0←0
Para i de 1 até 4 repita Para i de 1 até 4 repita
s s ←s+i←s+i
Fim ParaFim Para
escreva (s)escreva (s)
FimFim
ii ss
00
11 11
22 33
33 66
44 1010
Exercício 4. Faça um algoritmo que imprima a soma dos 4 Exercício 4. Faça um algoritmo que imprima a soma dos 4 primeiros números inteiros pares positivos.primeiros números inteiros pares positivos.
ii ss
00
11 22
22 66
33 1212
44 2020
Algoritmo <pares2>Algoritmo <pares2>
inteiro: i,sinteiro: i,s
InicioInicio
ss ←0←0
Para i de 1 até 4 repita Para i de 1 até 4 repita
s s ←s+2*i←s+2*i
Fim ParaFim Para
escreva (s)escreva (s)
FimFim
Repetição com variável de controleRepetição com variável de controle
Exercício 5. Faça um algoritmo que imprima a soma dos n Exercício 5. Faça um algoritmo que imprima a soma dos n primeiros números inteiros pares positivos.primeiros números inteiros pares positivos.
Algoritmo <pares3>Algoritmo <pares3>
inteiro: i,s,ninteiro: i,s,n
InicioInicio
leia (n)leia (n)
ss ←0←0
Para i de 1 até n repita Para i de 1 até n repita
s s ←s+2*i←s+2*i
Fim ParaFim Para
escreva (s)escreva (s)
FimFim
Repetição com variável de controleRepetição com variável de controle
Exercício 6. Faça um algoritmo que imprima a soma dos n Exercício 6. Faça um algoritmo que imprima a soma dos n primeiros números inteiros ímpares positivos.primeiros números inteiros ímpares positivos.
Algoritmo <impares>Algoritmo <impares>
inteiro: i,s,ninteiro: i,s,n
InicioInicio
leia (n)leia (n)
ss ←0←0
Para i de 1 até n repita Para i de 1 até n repita
s s ←s+2*i-1←s+2*i-1
Fim ParaFim Para
escreva (s)escreva (s)
FimFim
Repetição com variável de controleRepetição com variável de controle
Algoritmo <soma>Algoritmo <soma>
inteiro: i,sinteiro: i,s
InicioInicio
s s ←1←1
Para i de 1 até 100 repita Para i de 1 até 100 repita
s s ←s+1/(2*i)←s+1/(2*i)
Fim ParaFim Para
FimFim
Exercício 7. Desenvolver um algoritmo para calcular a soma:Exercício 7. Desenvolver um algoritmo para calcular a soma:
200/1...8/16/14/12/11
Repetição com variável de controleRepetição com variável de controle
Exercício 8. Tem-se a altura e o nome de 50 pessoas. Fazer um Exercício 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 algoritmo que escreva o nome da pessoa mais alta. Se tiver mais de uma pessoa possuíndo a maior altura, escreva o nome de de uma pessoa possuíndo a maior altura, escreva o nome de quaisquer delas.quaisquer delas.
Algoritmo <altura>Algoritmo <altura>
inteiro: i inteiro: i
Literal: nome,nomemaisaltaLiteral: nome,nomemaisalta
Real:altura, maioraltura Real:altura, maioraltura
InicioInicio
maioralturamaioraltura←0←0
Para i de 1 até 50 repita Para i de 1 até 50 repita
leia (nome,altura)leia (nome,altura)
se (altura>maioraltura) entãose (altura>maioraltura) então
maioralturamaioraltura←altura←altura
nomemaisalta←nomenomemaisalta←nome
fim sefim se
Fim ParaFim Para
escreva (nomemaisalta,maioraltura)escreva (nomemaisalta,maioraltura)
FimFim
Repetição com variável de controleRepetição com variável de controle
Exercício 9. Num frigorífico existem 90 bois. Cada boi traz preso Exercício 9. Num frigorífico existem 90 bois. Cada boi traz preso no pescoço um cartão contendo seu número de identificação e seu no pescoço um cartão contendo seu número de identificação e seu peso. Fazer um algoritmo que escreva o número e peso do boi peso. Fazer um algoritmo que escreva o número e peso do boi mais gordo e do boi mais magro.mais gordo e do boi mais magro.
Algoritmo <bois>Algoritmo <bois>
inteiro: i,numero,gordo,magrointeiro: i,numero,gordo,magro
Real:peso,pesomenor, pesomaiorReal:peso,pesomenor, pesomaior
InicioInicio
pesomenorpesomenor←10000←10000
pesomaior←0pesomaior←0
Para i de 1 até 90 repita Para i de 1 até 90 repita
leia (numero,peso)leia (numero,peso)
se (peso>pesomaior) entãose (peso>pesomaior) então
pesomaiorpesomaior←peso←peso
gordo←numerogordo←numero
fim sefim se
se (peso<pesomenor) entãose (peso<pesomenor) então
pesomenorpesomenor←peso←peso
magro←numeromagro←numero
fim sefim se
Fim ParaFim Para
escreva (gordo,pesomaior)escreva (gordo,pesomaior)
escreva (magro,pesomenor)escreva (magro,pesomenor)
FimFim
Repetição com variável de controleRepetição com variável de controle
Exercício 10. Sendo H=1+1/2+1/3+1/4+...+1/N faça um algoritmo Exercício 10. Sendo H=1+1/2+1/3+1/4+...+1/N faça um algoritmo para calcular H. O número N é lido. para calcular H. O número N é lido.
Algoritmo <H>Algoritmo <H>
inteiro: i,ninteiro: i,n
real: Hreal: H
InicioInicio
leia (n) leia (n)
H H ←0←0
Para i de 1 até n repita Para i de 1 até n repita
H H ←H+1/i←H+1/i
Fim ParaFim Para
escreva (H)escreva (H)
FimFim
Repetição com variável de controleRepetição com variável de controle
Exercício 11. Imprimir os N primeiros termos da seqüência Exercício 11. Imprimir os N primeiros termos da seqüência ..1,2,32,1 ,=k+y=y k+k com y 1=1
Seja N=5. O primeiro termo é definido pela condição inicial e os demais são calculados pela formula de recorrência dada
92
72
52
32
1
5
4
3
2
1
=+y=y
=+y=y
=+y=y
=+y=y
=y
4
3
2
1
Algoritmo <nprimeiros>Algoritmo <nprimeiros>
inteiro: i,n,yinteiro: i,n,y
InicioInicio
leia (n) leia (n)
y y ←1←1
escreva (y)escreva (y)
Para i de 1 até n-1 Para i de 1 até n-1 repita repita
y y ←y+2←y+2
escreva (y)escreva (y)
Fim ParaFim Para
FimFim
Repetição com variável de controleRepetição com variável de controle
Exercício 12. Faça um algoritmo que calcule a seguinte soma Exercício 12. Faça um algoritmo que calcule a seguinte soma ( o símbolo representa somatório.( o símbolo representa somatório.
S=∑k=1
10
k2
2222222222 10987654321 +++++++++=S
Algoritmo <somatorio>Algoritmo <somatorio>
inteiro: i,sinteiro: i,s
InicioInicio
s s ←0←0
Para i de 1 até 10 Para i de 1 até 10 repita repita
s s ←s+i**2←s+i**2
Fim ParaFim Para
FimFim
Resolvendo o somatório
∑
Repetição com variável de controleRepetição com variável de controle
Exercício 13. Faça um algoritmo que calcule e escreva o valor Exercício 13. Faça um algoritmo que calcule e escreva o valor da seguinte somatória da seguinte somatória
81
16
27
8
9
4
3
21 ++++=S
Algoritmo <somatorio2>Algoritmo <somatorio2>
inteiro: i,sinteiro: i,s
InícioInício
s s ←0←0
Para i de 0 até 4 repita Para i de 0 até 4 repita
s s ←s+2**i/3**i←s+2**i/3**i
Fim ParaFim Para
FimFim
-Procurando uma fórmula
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
21 ++++=S
Algoritmo <somatorio2>Algoritmo <somatorio2>
inteiro: i,sinteiro: i,s
InícioInício
s s ←1←1
Para i de 1 até 4 repita Para i de 1 até 4 repita
s s ←s+2**i/3**i←s+2**i/3**i
Fim ParaFim Para
FimFim
ouou
Repetição com variável de controleRepetição com variável de controle
Exercício 14. Faça um algoritmo que calcule e escreva o valor Exercício 14. Faça um algoritmo que calcule e escreva o valor da seguinte somatória da seguinte somatória
243
16
81
8
27
4
9
21 ++++=S
-Procurando uma fórmula
5
4
4
3
3
2
2
1
3
2
3
2
3
2
3
21 ++++=S
Algoritmo <somatorio2>Algoritmo <somatorio2>
inteiro: i,sinteiro: i,s
InícioInício
s s ←1←1
Para i de 1 até 4 repita Para i de 1 até 4 repita
s s ←s+2**i/3**(i+1)←s+2**i/3**(i+1)
Fim ParaFim Para
FimFim
Repetição com variável de controleRepetição com variável de controle
Exercício 15. Faça um algoritmo que calcule e escreva o valor Exercício 15. Faça um algoritmo que calcule e escreva o valor da seguinte somatória da seguinte somatória
-Procurando uma fórmula
1
4
2
3
3
2
4
1
3
2
3
2
3
2
3
21 ++++=S
Algoritmo <somatorio2>Algoritmo <somatorio2>
inteiro: i,sinteiro: i,s
InícioInício
s s ←1←1
Para i de 1 até 4 repita Para i de 1 até 4 repita
s s ←s+2**i/3**(5-i)←s+2**i/3**(5-i)
Fim ParaFim Para
FimFim
3
16
9
8
27
4
81
21 ++++=S
45
4
35
3
25
2
15
1
3
2
3
2
3
2
3
21 ++++=S
Repetição com variável de controleRepetição com variável de controle
Exercício 16. Faça um algoritmo que calcule e escreva o valor Exercício 16. Faça um algoritmo que calcule e escreva o valor da seguinte somatória da seguinte somatória
81
16
27
8
9
4
3
21 ++=S
-Procurando uma fórmula
4
4
3
3
2
2
3
2
3
2
3
2
3
21 ++=S
Algoritmo <somatorio2>Algoritmo <somatorio2>
inteiro: i,sinteiro: i,s
InícioInício
s s ←1←1
Para i de 1 até 4 repita Para i de 1 até 4 repita
s s ←s+(-1 )**i*2**i/3**i←s+(-1 )**i*2**i/3**i
Fim ParaFim Para
FimFim
Algoritmo <somatorio2>Algoritmo <somatorio2>
inteiro: i,sinteiro: i,s
InícioInício
s s ←1←1
Para i de 1 até 4 repita Para i de 1 até 4 repita
s s ←s+(-2)**i/3**i←s+(-2)**i/3**i
Fim ParaFim Para
FimFim
Repetição com variável de controleRepetição com variável de controle
Exercício 17. Faça um algoritmo que calcule e escreva o valor Exercício 17. Faça um algoritmo que calcule e escreva o valor da seguinte somatória da seguinte somatória
1
16384...
144
8
169
4
196
2
225
1+++++=S
Algoritmo <somatorio2>Algoritmo <somatorio2>
inteiro: i,sinteiro: i,s
InicioInicio
s s ←0←0
Para i de 1 até 15 repita Para i de 1 até 15 repita
s s ←s+2**(i-1)/(16-←s+2**(i-1)/(16-i)**2i)**2
Fim ParaFim Para
FimFim
-Procurando uma fórmula
22222 1
16384...
12
8
13
4
14
2
15
1+++++=S
22222 1
*14*2...
12
*3*2
13
*2*2
14
*1*2
15
*0*2+++++=S
Repetição com variável de controleRepetição com variável de controle
Exercício 18. Partindo-se de um único casal de coelhos Exercício 18. Partindo-se de um único casal de coelhos filhotes recém-nascidos e supondo que um casal de coelhos filhotes recém-nascidos e supondo que um casal de coelhos torna-se fértil após dois meses de vida, a partir de então, torna-se fértil após dois meses de vida, a partir de então, produz um novo casal a cada mês e que os coelhos nunca produz um novo casal a cada mês e que os coelhos nunca morrem, a quantidade de casal de coelhos após n meses é morrem, a quantidade de casal de coelhos após n meses é dado pelo n-ésimo termo da seguinte seqüência:dado pelo n-ésimo termo da seguinte seqüência:
F n=F n−2+F n−1 ,n≥2F 0=1,
F 1=1
Essa seqüência chama-se seqüência de Fibonacci.Essa seqüência chama-se seqüência de Fibonacci.
Repetição com variável de controleRepetição com variável de controle
13=6
8=5
5=4
3=3
22
1=1
1=0
)
)
)
)
)
)
)
(a) Mostre como os termos dessa série correspondem à solução do problema proposto.(a) Mostre como os termos dessa série correspondem à solução do problema proposto.
mesesmeses
Repetição com variável de controleRepetição com variável de controle
Algoritmo <fibonacci>Algoritmo <fibonacci>
inteiro: i,n,fibonacci,fib0,fib1inteiro: i,n,fibonacci,fib0,fib1
InicioInicio
leia (n)leia (n)
fib0 fib0 ←1←1
fib1←1fib1←1
Para i de 2 até n repita Para i de 2 até n repita
fibonacci fibonacci ←fib0+fib1←fib0+fib1
fib0 ←fib1fib0 ←fib1
fib1 ←fibonaccifib1 ←fibonacci
Fim ParaFim Para
FimFim
b) Redija um algoritmo para calcular a quantidade de casais de coelhos b) Redija um algoritmo para calcular a quantidade de casais de coelhos após n meses.após n meses.
Repetição com variável de controleRepetição com variável de controle
Repetição controlada por condição
As vezes precisamos que nosso algoritmo realize uma certa quantidade de repetições, mas não sabemos o número exato de repetições necessárias. Exemplo:
Faça um algoritmo que determine os quadrados de um conjunto de números inteiros positivos.
Neste caso não podemos usar a estrutura de repetição com variável de controle pois o conjunto de dados de entrada é formado por um número desconhecido de elementos. Não é fornecida pelo usuário a quantidade de números existem no conjunto.O que desejamos é repetir o bloco de comandos (leitura, comandos, saída) enquanto existir um número inteiro positivo na lista de entrada dos dados.
Repetição controlada por condição
Nestes casos usamos a repetição controlada por condição.
Repetição controlada por condição.
Não sabemos a-priori quantas vezes executar a repetição. A execução do loop deve ser controlada por uma condição.
Esta repetição é também chamada de repetição controlada por sentinela ou flag.
No exemplo, a condição para interromper a repetição é que o número não seja positivo. O valor sentinela será então qualquer número que não seja positivo. Por exemplo, o número zero ou o número -1.
Representamos essa estrutura de repetição através de uma das duas instruções:
(1) enquanto-faça (2) repita-até-que.
As duas instruções são equivalentes. Entretanto, há situações em que uma é preferível à outra.
Repetição controlada por condição
Instrução Enquanto-FaçaFormato.Enquanto <condição> faça <bloco de comandos>Fim enquanto
•Nesta instrução, <bloco de comandos> só é executado se <condição> for verdadeira. •Antes de ser executado pela primeira vez é necessário que a <condição> esteja definida. •Se na primeira vez em que a <condição> for testada ela for falsa, o loop não é executado nenhuma vez. •Dentro do loop deve existir uma instrução que altera o valor da <condição>, caso contrário, o loop pode se tornar de execução infinita (não parar).
Repetição controlada por condição
Exemplo 1. Faça um algoritmo que determine os quadrados de um conjunto de números inteiros positivos.
Algoritmo <quadrados>
inteiro: numero
Inicio
leia (numero)
enquanto (numero>0) faça
escreva (numero*numero)
leia (numero)
fim enquanto
Fim
Repetição controlada por condição
Exemplo 2: Faça um algoritmo que leia uma lista de números inteiros. A leitura de dados terminará quando for ingressado o número zero (flag). Pede-se a soma e a média de todos os números lidos (excluindo o zero).
Algoritmo <media>
inteiro: numero,soma,cont
real: media
Inicio
cont ←0
soma ←0
leia (numero)
enquanto (numero<>0) faça
soma ← soma+numero
cont ← cont+1
leia (numero)
fim enquanto
se (cont>0) então
media ←soma/cont
escreva (media)
fim se
Fim
Repetição controlada por condição
Exemplo 3: Faça um algoritmo que encontre a primeira potência de 2 maior que 1000.
Repetição controlada por condição
Instrução Repita-Até-QueFormato.repita <bloco de comandos> até que <condição> •Nesta instrução, <bloco de comandos> pelo menos uma vez porque somente após a sua execução a <condição> é testada. •Dentre as instruções do loop deve existir pelo menos uma que altere o valor de <condição>.•Para o mesmo problema as condições de controle dos comandos enquanto-faça e repita-até-que são condições complementares. Observe que a negação de A>0 é A<=0 e vice-versa.
Repetição controlada por condição
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) faça
escreva (numero*numero)
leia (numero)
fim enquanto
Fim
Exemplo comparativo.- Faça um algoritmo que determine os quadrados de um conjunto de números inteiros positivos.
Observe que a primeira estrutura de repetição (enquanto-faça) é mais conveniente para resolver o problema proposto.
Repetição controlada por condição
Exercício2: Suponha que no ano N a população americana seja maior que a brasileira. Sabendo-se que os Estados Unidos possuem um crescimento anual de 2% na sua população e que o Brasil tem crescimento anual de 4%, determinar o ano em que as duas populações serão iguais (em quantidade). São dados os números 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) faça
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 populações primeiro sofrem um acréscimo, e depois o teste da condição será executado.Esta instrução é indicada se considerarmos sabido que inicialmente a população americana é de fato maior que a população brasileira.
2. Se usarmos enquanto-façaSe os valores de entrado fossem desconhecidos, esta instrução é mais adequada pois primeiro o teste da condição é efetuado e conforme o resultado do teste o bloco será o não executado dentro do loop.
Repetição controlada por condição
top related