Beruflich Dokumente
Kultur Dokumente
Estruturas de repetio
Prof. Luis Otavio Alvares
Parte deste material adaptado de lminas das Profas. Patrcia Jaques, Mnica Py e Deise Saccol
Lgica de programao
ESTRUTURAS DE REPETIO
Se uma ao se repete em um algoritmo, em vez de escrev-la vrias vezes, em certos casos podemos resumir anotando uma vez s e solicitando que ela se repita, usando uma das estruturas de repetio. Podemos executar uma ao (ou um conjunto de aes) um nmero definido ou indefinido de vezes, ou enquanto um estado permanecer ou at que um estado seja atingido. As principais estruturas de repetio so:
PARA...AT...FAA ENQUANTO...FAA REPITA...AT
4
Lgica de programao
Enquanto...Faa :
Enquanto <condio> faa <instrues>
Repita ...At :
Repita <instrues> at <condio>
5
Exemplo
Ler 50 nmeros fornecidos pelo usurio e calcular e exibir a mdia.
Pseudocdigo: 1. Incio 2. Soma = 0 <<< o acumulador precisa ter um valor inicial 3. Para cont =1 at 50 faa 3.1 ler N 3.2 soma = soma + N 4. Media = soma / 50 5. Mostrar media 6. Fim
6
Lgica de programao
PARA...AT...FAA
Formato:
Para <varivel> = <valor inicial> at <valor final> faa <aes> Significado: A <varivel> inicializada com <valor inicial>. Aps cada execuo das <aes>, somado 1 <varivel> e repetese as <aes>, continuando assim at que a <varivel> atinja o <valor final>. Esta estrutura de repetio cria um contador automtico, que ns no precisamos mandar incrementar. Ao usar esta estrutura j est subentendido que a <varivel> inicia com <valor inicial> e incrementada a cada ciclo (podendo-se inclusive aproveitar seu valor dentro do ciclo), e que as <aes> sero repetidas at que a <varivel> tenha o <valor final>.
7
Lgica de programao
Usamos esta estrutura quando sabemos quantas vezes temos de repetir certas aes, mesmo que o nmero de vezes s seja conhecido durante a execuo. Por exemplo: Perguntar ao usurio de quantos valores ele quer calcular a mdia. Ler os nmeros e calcular a mdia.
8
Lgica de programao
Para esse problema construmos um algoritmo que ser genrico, ou seja, que poder ser usado para calcular a mdia de quantos nmeros se quiser!
Pseudocdigo: 1- Incio 2- Mostrar De quantos valores voc quer calcular a mdia? 3- Ler QUANT (aqui se descobre quantas repeties) 4- SOMA = 0 5- Para CONT = 1 at QUANT faa 5.1Ler N (aqui lido cada nmero, um em cada ciclo) 5.2SOMA = SOMA + N (aqui os valores lidos so acumulados) 6- MEDIA = SOMA / QUANT (isto est fora do loop) 7- Mostrar MEDIA 8- Fim
9
Exerccio
Faa um algoritmo que calcule a soma dos nmero inteiros entre 5 e 16, inclusive. Exemplo de soluo: Incio Soma=0 Para Num=5 at 16 faa Soma=Soma + Num Mostrar Soma Fim
10
Exerccio
Faa um algoritmo para calcular e escrever o valor de S:
1 3 5 7 99 S ... 1 2 3 4 50
11
Exemplo de soluo
1. 2. 3. 3.1 4. 5. Incio S=0 Para I=1 ate 50 faa S=S+(I*2-1)/I Mostrar S Fim
12
Exerccio
Faa um algoritmo para calcular e mostrar os 20 primeiros termos da srie de Fibonacci:
O primeiro termo zero O segundo termo um Os demais so a soma dos dois termos anteriores
0, 1, 1, 2, 3, 5, 8, 13, .
13
Exemplo de soluo
1. 2. 3. 4. 5. 6. 6.1 6.2 6.3 6.4 7. Incio Mostrar 0 Mostrar 1 penultimo=0 ultimo=1 Para I=3 at 20 faa proximo=ultimo + penultimo mostrar proximo penultimo=ultimo ultimo=proximo Fim
14
Exerccio
Faa um algoritmo para informar se um nmero lido primo ou no.
Faa um teste de mesa para testar a sua soluo!!!
15
Exemplo de soluo
1. 2. 3. 4. 5. Incio Mostrar informe o nmero Ler N ehprimo=1 para J=2 at N-1 faa se N mod J =0 ento ehprimo=0 6. Se ehprimo=1 ento mostrar o nmero eh primo seno mostrar o nmero no eh primo 7. Fim
16
Exerccio
Faa um algoritmo para calcular a soma dos nmeros primos entre 1 e 100
Faa um teste de mesa para testar a sua soluo
17
Exemplo de soluo
1. Incio 2. Soma=2 >>> 2 o primeiro primo 3. Para I=3 at 99 faa 3.1 ehprimo=1 3.2 para J=2 at I-1 faa 3.2.1 se I mod J =0 ento ehprimo=0 3.3 se ehprimo=1 ento soma=soma+I 4 mostrar soma 5. Fim
18
Lgica de programao
Significado: A <operao lgica> testada. Se for verdadeira, ento executar <aes> e em seguida testar novamente a operao lgica. Este ciclo prossegue at que em algum teste a operao lgica resulte em falso.
Nesta estrutura temos novamente, assim como nas estruturas de deciso, uma operao lgica determinando se devemos continuar a repetir (resultado V) ou parar de repetir (resultado F) as aes. Devemos garantir que o dado testado na operao lgica tenha seu valor modificado por alguma das aes repetidas, seno nunca teremos um resultado F no teste e a repetio permanecer num ciclo infinito (loop)!
19
Lgica de programao
Pseudocdigo:
Incio MAIOR 0 N1 Enquanto (N <> 0) faa
(MAIOR por enquanto o menor valor possvel) (s para o 1.o teste funcionar...)
Ler N (aqui o valor de N muda, a entrada do usurio) Se (N > MAIOR) ento MAIOR N Mostrar MAIOR (isto s executa quando o enquanto terminar)
Fim
20
Exerccio
Faa um algoritmo para mostrar os 30 primeiros nmeros mpares
21
Exemplos de soluo
1. 2. 2.1 2.2 2.3 I=0 Enquanto I<30 faa I=I+1 impar=I*2-1 mostrar impar 1. I=0 2. Impar=1 3. Enquanto I<30 faa 3.1 mostrar impar 3.2 impar=impar+2 3.3 I=I+1
1. c=1 2. impar=1 3. Enquanto c<=30 faa 3.1 se impar mod 2 = 1 ( um nmero mpar) 3.1.1 ento mostrar impar 3.1.2 c=c+1 3.2 impar=impar+1
22
Exerccio
Faa um algoritmo para calcular e escrever o valor de S:
1 3 5 7 99 S ... 1 2 3 4 50
23
Exemplo de soluo
1. Incio 2. S=0 3. I=1 3. Enquanto I<=50 faa 3.1 S=S+(I*2-1)/I 3.2 I=I+1 4. Mostrar S 5. Fim
24
Exerccio
Faa um algoritmo que encontre o primeiro nmero inteiro positivo que elevado ao quadrado seja maior que este nmero multiplicado por 5.
25
Exemplo de soluo
1. 2. 3. 3.1 4. 5. incio I=1 enquanto I*I <=I*5 faa I=I+1 mostrar I fim
26
REPETIR ... AT
Formato:
repetir <aes> at <operao lgica>
Lgica de programao
Significado: As aes so executadas e depois a <operao lgica> testada. Se for falsa, executar novamente <aes> e em seguida testar novamente a operao lgica. Este ciclo prossegue at que em algum teste a operao lgica resulte em verdadeiro.
As <aes> sero executadas pelo menos uma vez.
27
Exerccio
Faa um algoritmo para mostrar os 30 primeiros nmeros mpares
28
Exemplo de soluo
1. 2. 3. 3.1 3.2 3.3 4. incio I:=0 repetir I=I+1 impar=I*2-1 mostrar impar at I>=30 fim
29
Exerccio
Faa um algoritmo que fique num ciclo de leitura at que o usurio informe um nmero positivo (i.e., ignorar numeros no positivos) e depois mostre a raiz quadrada do nmero positivo informado.
30
Exemplo de soluo
incio repetir mostrar digite um nmero positivo ler N at N > 0 mostrar a raiz quadrada deste nmero e: mostrar sqrt(N) fim
31