Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez.

49
Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez

Transcript of Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez.

Page 1: Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez.

Algoritmos e Estruturas de Dados I – Estrutura de Repetição

Profa. Mercedes Gonzales Márquez

Page 2: 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.

Page 3: Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez.

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.

Page 4: Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez.

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

Page 5: Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez.

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

Page 6: Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez.

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

Page 7: Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez.

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

Page 8: Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez.

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

Page 9: Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez.

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

Page 10: Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez.

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

Page 11: Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez.

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

Page 12: Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez.

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:

1+ 1 / 2+ 1 / 4 + 1 / 6+ 1 / 8+ . . .+ 1 / 200

Repetição com variável de controleRepetição com variável de controle

Page 13: Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez.

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

Page 14: Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez.

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

Page 15: Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez.

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

Page 16: Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez.

Exercício 11. Imprimir os N primeiros termos da seqüência Exercício 11. Imprimir os N primeiros termos da seqüência yk+1=y k+ 2,

k=1,2,3 , . .¿

¿

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

y1=1

y2=y1+ 2=3y3=y2+ 2=5

y4=y3+ 2=7y5=y4+ 2=9

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

Page 17: Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez.

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.

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

Page 18: Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez.

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

S=1+23+

49+

827

+1681

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

S=20

30+ 21

31+ 22

32+ 23

33+ 24

34S=1+ 2

3+ 22

32+ 23

33+ 24

34

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

Page 19: Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez.

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

S=1+29+

427

+8

81+

16243

-Procurando uma fórmula

S=1+ 21

32+ 22

33+ 23

34+ 24

35

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

Page 20: Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez.

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

S=1+ 21

34+ 22

33+ 23

32+ 24

31

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

S=1+2

81+

427

+89+

163

S=1+ 21

35−1+ 22

35−2+ 23

35−3+ 24

35−4

Repetição com variável de controleRepetição com variável de controle

Page 21: Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez.

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

S=1−23+

49−

827

+1681

-Procurando uma fórmula S=1− 2

3+ 22

32− 23

33+ 24

34

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

Page 22: Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez.

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

S=1

225+

2196

+4

169+

8144

+ . ..+16384

1

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

S=1

152+

2

14 2+

4

132+

8

12 2+ . . .+

16384

1 2

S=2**0

152+

2**1

14 2+

2**2

13 2+

2**3

122+ . . .+

2**14

1 2

Repetição com variável de controleRepetição com variável de controle

Page 23: Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez.

Exercício 18. Faça um algoritmo queExercício 18. Faça um algoritmo que calcule o valor do seno de A através da seguinte série: 

O valor de A e o número N de termos da série devem ser lidos.

SenA=A− A3

3!+ A5

5!+ A7

7!+ . . .

Algoritmo <senoA>inteiro: i,nreal: AInicio

leia (n,A)soma←Aden←1num←APara i de 2 até n repita

num← -num*A*Aden←den*(2*i-1)*(2*i-2)soma←soma+num/den

Fim ParaFim

Repetição com variável de controleRepetição com variável de controle

Page 24: Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez.

Exercício 19. Exercício 19. O número 3025 possui a seguinte característica:

Algoritmo <caracteristica>inteiro: iInicioPara i de 1000 até 9999 repita

Se (((mod(i,100)+div(i,100))**2)=i)escreva (i)

Fim seFim ParaFim 

Repetição com variável de controleRepetição com variável de controle

Faça um algoritmo que pesquise e imprima todos os números de quatro algarismos que apresentam tal característica.

{30+ 25=55552=3025 }

Page 25: Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez.

Exercício 20. Partindo-se de um único casal de coelhos Exercício 20. 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≥2

F 0=1,F1=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

Page 26: Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez.

0 )∞∞ =11)∞∞=12 )∞∞ ∞∞ =23 )∞∞ ∞∞ ∞∞ =34 )∞∞ ∞∞ ∞∞ ∞∞ ∞∞ =55)∞∞ ∞∞ ∞∞ ∞∞ ∞∞ ∞∞ ∞∞ ∞∞ =8

6 )∞∞ ∞∞ ∞∞ ∞∞ ∞∞ ∞∞ ∞∞ ∞∞ ∞∞ ∞∞ ∞∞ ∞∞ ∞∞ =13

(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

Page 27: Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez.

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

Page 28: Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez.

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.

Page 29: Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez.

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.

Page 30: Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez.

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

Page 31: Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez.

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

Page 32: Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez.

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

Page 33: Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez.

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

Page 34: Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez.

Exercício 3. Exercício 3. Escrever um algoritmo que receba dois números inteiros positivos, e determine o produto dos mesmos, utilizando o seguinte método de multiplicação:

•dividir, sucessivamente, o primeiro número por 2, até que se obtenha 1 como quociente;•paralelamente, dobrar, sucessivamente, o segundo número;•somar os números da segunda coluna que tenham um número ímpar na primeira coluna. O total obtido é o produto procurado.Exemplo: 9 x 6

9 6→ 64 122 241 48→ +48

___ 54

Repetição controlada por condiçãoRepetição controlada por condição

Page 35: Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez.

Algoritmo <produto>inteiro: i,a,b,proInicio

leia (a,b)pro←0Enquanto (a<>1) faça

Se (mod(a,2)<>0) entãopro←pro+b

Fim sea←div(a,2)b←b*2

Fim enquantopro ←pro+b

Fim

Repetição controlada por condiçãoRepetição controlada por condição

Page 36: Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez.

Exemplo 4: Faça um algoritmo que encontre a primeira potência de 2 maior que 1000.

Repetição controlada por condição

Page 37: Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez.

Repetição controlada por condiçãoRepetição controlada por condição

Exemplo 5: Faça um algoritmo que calcule a soma dos divisores de um número n, exceto ele próprio.

Algumas observações se fazem necessárias:

(A) Se um número inteiro X possui um divisor Y menor que sua raiz quadrada, o quociente da divisão de X por Y será maior que a raiz quadrada de X e será, também, um divisor de X.

(B) Se um número inteiro X possui um divisor Y igual a sua raiz quadrada, o quociente da divisão de X por Y será o próprio divisor Y.

Page 38: Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez.

Algoritmo <somadivisores>inteiro:n, soma,divisor

Inicioleia (n)soma←1divisor←2Enquanto (divisor<sqr(n)) faça

Se (mod(n,divisor)=0) entãosoma←soma+divisor+div(n,divisor)

Fim se divisor←divisor+1Fim enquantose (divisor=sqr(n))soma ←soma+divisorfim se

Fim

Repetição controlada por condiçãoRepetição controlada por condição

Page 39: Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez.

Repetição controlada por condiçãoRepetição controlada por condição

Exemplo 6: Faça um algoritmo que determine se um número inteiro n é um número primo.

Um número inteiro X é um número primo se ele possui como únicos divisores 1 e ele próprio.

Page 40: Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez.

Solução 1.

Algoritmo <numeroprimo>inteiro:n,jlogico:primoInicio

leia (n)primo←1Para j de 2 até n-1 repita

Se (mod(n,j)=0) faça primo←0

Fim enquantoSe (primo) então

escreva (“O número é primo”)Fim se

Fim

Repetição controlada por condiçãoRepetição controlada por condição

Page 41: Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez.

Solução 2.

Algoritmo <numeroprimo>inteiro:n,j

Inicioleia (n)j←2Enquanto (j<=sqr(n) e mod(n,j)<>0) faça

j←j+1Fim enquantoSe (mod(n,j)<>0) então

escreva (“O número é primo”)Fim se

Fim

Repetição controlada por condiçãoRepetição controlada por condição

Page 42: Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez.

Repetição controlada por condiçãoRepetição controlada por condição

Exemplo 7: São dados um número n e quatro outros, “a”, “b”, “c”, e “d”, correspondentes, respectivamente, às extremidades dos intervalos [a,b] e [c,d], sendo a<b, c<d e a<c. Determinar se n pertence somente ao intervalo [a,b] ou somente ao intervalo [c,d] ou, se n pertence a ambos ou se n não pertence a nenhum dos dois. Em cada caso imprimir uma mensagem conveniente. Faça a leitura do número n até que seja ingressado o valor N como resposta para a pergunta: Deseja continuar <S/N>?

Page 43: Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez.

Quando temos um único valor n.Algoritmo <pertenencia>inteiro:n

Inicioleia (n)se (n>=c e n<=b) então

Escreva (“n pertence a ambos intervalos”)senão

se (n>=a e n<=b) entãoEscreva (“n pertence ao intervalo [a b]”)

senão se (n>=c e n<=d) então

Escreva (“n pertence ao intervalo [c d])senão

Escreva (“n não pertence a nenhum dos dois intervalos”)Fim se

Fim seFim se

Fim

Repetição controlada por condiçãoRepetição controlada por condição

Page 44: Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez.

Faça para vários valores de n conforme pede o enunciado.

Repetição controlada por condiçãoRepetição controlada por condição

Page 45: Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez.

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

Page 46: Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez.

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

Page 47: Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez.

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

Page 48: Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez.

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

Page 49: Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez.

Tarefas:• Estude os exercícios resolvidos de estrutura de

repetição do livro Introdução à Programação 500 Algoritmos Resolvidos de Anita Lopes.

• Estude a lista de exercícios resolvidos de estrutura de repetição que se encontra no site da disciplina.

• Resolva a lista de exercícios propostos de estrutura de repetição que também já está disponível no site da disciplina.

Estrutura de Repetição