Lógica de Programação: Estruturas de repetição Prof. Luis Otavio Alvares Parte deste material é adaptado de lâminas das Profas. Patrícia Jaques, Mônica Py e Deise Saccol 1 Faça um algoritmo para ler 4 números e mostrar a sua média 1. 2. 3. 4. 5. 6. 7. 8. Início Ler N1 Ler N2 Ler N3 Ler N4 Media = (N1+N2+N3+N4)/4 Mostrar Media Fim 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Início soma = 0 Ler N soma = soma+N Ler N soma = soma+N Ler N soma = soma+N Ler N soma = soma+N Media = soma/4 Mostrar Media Fim 2 Faça um algoritmo para ler 100 números e mostrar a sua média!!! 3 Lógica de programação • ESTRUTURAS DE REPETIÇÃO – Se uma ação se repete em um algoritmo, em vez de escrevê-la várias vezes, em certos casos podemos resumir anotando uma vez só e solicitando que ela se repita, usando uma das estruturas de repetição. – As principais estruturas de repetição são: • PARA...ATÉ...FAÇA • ENQUANTO...FAÇA • REPITA...ATÉ 4 Estruturas de repetição Lógica de programação Para...até...faça : Para <variavel> = <inicio> até <fim> faça <instruções> Enquanto...Faça : Enquanto <condição> faça <instruções> Repita ...Até : Repita <instruções> até <condição> 5 Exemplo • Ler 50 números fornecidos pelo usuário e calcular e exibir a média. Pseudocódigo: 1. Início 2. Soma = 0 <<< o acumulador precisa ter um valor inicial 3. Para cont =1 até 50 faça 3.1 ler N 3.2 soma = soma + N 4. Media = soma / 50 5. Mostrar media 6. Fim 6 Lógica de programação PARA...ATÉ...FAÇA – Formato: Para <variável> = <valor inicial> até <valor final> faça <ações> • Significado: A <variável> é inicializada com <valor inicial>. Após cada execução das <ações>, é somado 1 à <variável> e repetese as <ações>, continuando assim até que a <variável> atinja o <valor final>, quando executa as <ações> pela última vez. • Esta estrutura de repetição cria um contador automático, que nós não precisamos mandar incrementar. • Ao usar esta estrutura já está subentendido que a <variável> inicia com <valor inicial> e é incrementada a cada ciclo (podendo-se inclusive aproveitar seu valor dentro do ciclo), e que as <ações> serão repetidas até que a <variável> tenha o <valor final>. 7 Lógica de programação • Exemplo da estrutura PARA...ATÉ...FAÇA: “Mostrar os quadrados dos inteiros de 3 a 11.” – Pseudocódigo: Para CONT = 3 até 11 faça Mostrar (CONT *CONT) Isto será repetido 9 vezes. – Usamos esta estrutura quando sabemos quantas vezes temos de repetir certas ações, mesmo que o número de vezes só seja conhecido durante a execução. Por exemplo: “Perguntar ao usuário de quantos valores ele quer calcular a média. Ler os números e calcular a média.” 8 E se eu quisesse calcular a média de N números? Lógica de programação – Para esse problema construímos um algoritmo que será genérico, ou seja, que poderá ser usado para calcular a média de quantos números se quiser! – Pseudocódigo: 1- Início 2- Mostrar “De quantos valores você quer calcular a média?” 3- Ler QUANT (aqui se descobre quantas repetições) 4- SOMA = 0 5- Para CONT = 1 até QUANT faça 5.1Ler N (aqui é lido cada número, um em cada ciclo) 5.2SOMA = SOMA + N (aqui os valores lidos são acumulados) 6- MEDIA = SOMA / QUANT (isto está fora do loop) 7- Mostrar MEDIA 8- Fim 9 Exercício Faça um algoritmo que calcule a soma dos números inteiros entre 5 e 16, inclusive. Exemplo de solução: Início Soma=0 Para Num=5 até 16 faça Soma=Soma + Num Mostrar Soma Fim 10 • Faça um algoritmo para mostrar os 30 primeiros números ímpares 1. Início 2. Para I=1 até 30 faça 2.1 impar=I*2-1 2.2 Mostrar impar 3. Fim 11 Exercício • Faça um algoritmo para calcular e escrever o valor de S: 1 3 5 7 99 S ... 1 2 3 4 50 12 Exemplo de solução 1. 2. 3. 3.1 4. 5. Início S=0 Para I=1 ate’ 50 faça S=S+(I*2-1)/I Mostrar S Fim 13 Exercício • Faça um algoritmo para informar se um número lido é primo ou não. Faça um teste de mesa para testar a sua solução!!! 14 Exemplo de solução 1. 2. 3. 4. 5. Início Mostrar “informe o número” Ler N ehprimo=1 para J=2 até N-1 faça se N mod J =0 então ehprimo=0 6. Se ehprimo=1 então mostrar “ o número eh primo” senão mostrar “o número não eh primo” 7. Fim 15 Outra solução Início 2. Mostrar “informe o número” 3. Ler N 4. tot=0 5. para J=1 até N faça se N mod J =0 então tot=tot+1 6. Se tot=2 então mostrar “ o número eh primo” senão mostrar “o número não eh primo” 7. Fim 16 Exercício Faça um algoritmo para calcular a soma dos números primos menores que 100 Faça um teste de mesa para testar a sua solução 17 Exemplo de solução 1. Início 2. Soma=2 >>> 2 é o primeiro primo 3. Para N=3 até 99 faça 3.1 ehprimo=1 3.2 para J=2 até I-1 faça 3.2.1 se N mod J =0 então ehprimo=0 3.3 se ehprimo=1 então soma=soma+N 4 mostrar soma 5. Fim Aqui ve se N é primo 18 Exercício Faça um algoritmo para calcular e mostrar os 20 primeiros termos da série de Fibonacci: O primeiro termo é zero O segundo termo é um Os demais são a soma dos dois termos anteriores 0, 1, 1, 2, 3, 5, 8, 13, …. 19 Exemplo de solução 1. 2. 3. 4. 5. 6. 6.1 6.2 6.3 6.4 7. Início Mostrar 0 Mostrar 1 penultimo=0 ultimo=1 Para I=3 até 20 faça proximo=ultimo + penultimo mostrar proximo penultimo=ultimo ultimo=proximo Fim 20 ENQUANTO ... FAÇA... Lógica de programação – Formato: Enquanto <operação lógica> faça<ações> • Significado: A <operação lógica> é testada. Se for verdadeira, então executar <ações> e em seguida testar novamente a operação lógica. Este ciclo prossegue até que em algum teste a operação lógica resulte em falso. • Nesta estrutura temos novamente, assim como nas estruturas de decisão, uma operação lógica determinando se devemos continuar a repetir (resultado V) ou parar de repetir (resultado F) as ações. • Devemos garantir que o dado testado na operação lógica tenha seu valor modificado por alguma das ações repetidas, senão nunca teremos um resultado F no teste e a repetição permanecerá num ciclo infinito (loop)! 21 Lógica de programação Exemplo da estrutura ENQUANTO...FAÇA: Ler números positivos pelo teclado e mostrar o maior número lido (encerrar a leitura quando for lido o número 0) Pseudocódigo: Início MAIOR 0 N1 Enquanto (N <> 0) faça (MAIOR por enquanto é o menor valor possível) (só para o 1.o teste funcionar...) Ler N (aqui o valor de N muda, é a entrada do usuário) Se (N > MAIOR) então MAIOR N Mostrar MAIOR (isto só executa quando o enquanto terminar) Fim 22 Exercício • Faça um algoritmo para mostrar os 30 primeiros números ímpares 23 Exemplos de solução 1. 2. 2.1 2.2 2.3 I=0 Enquanto I<30 faça I=I+1 impar=I*2-1 mostrar impar 1. I=0 2. Impar=1 3. Enquanto I<30 faça 3.1 mostrar impar 3.2 impar=impar+2 3.3 I=I+1 1. c=1 2. impar=1 3. Enquanto c<=30 faça 3.1 se impar mod 2 = 1 (é um número ímpar) 3.1.1 então mostrar impar 3.1.2 c=c+1 3.2 impar=impar+1 24 Exercício • Faça um algoritmo para calcular e escrever o valor de S: 1 3 5 7 99 S ... 1 2 3 4 50 25 Exemplo de solução 1. Início 2. S=0 3. I=1 3. Enquanto I<=50 faça 3.1 S=S+(I*2-1)/I 3.2 I=I+1 4. Mostrar S 5. Fim 26 Exercício • Faça um algoritmo que encontre o primeiro número inteiro positivo que elevado ao quadrado seja maior que este número multiplicado por 5. 27 Exemplo de solução 1. 2. 3. 3.1 4. 5. início I=1 enquanto I*I <=I*5 faça I=I+1 mostrar I fim 28 REPITA ... ATÉ Lógica de programação – Formato: repita <ações> até <operação lógica> • Significado: As ações são executadas e depois a <operação lógica> é testada. Se for falsa, executar novamente <ações> e em seguida testar novamente a operação lógica. Este ciclo prossegue até que em algum teste a operação lógica resulte em verdadeiro. • As <ações> serão executadas pelo menos uma vez. 29 Exercício • Faça um algoritmo para mostrar os 30 primeiros números ímpares 30 Exemplo de solução 1. 2. 3. 3.1 3.2 3.3 4. início I=0 repita I=I+1 impar=I*2-1 mostrar impar até I>=30 fim 31 Exercício • Faça um algoritmo que fique num ciclo de leitura até que o usuário informe um número positivo (i.e., ignorar números não positivos) e depois mostre a raiz quadrada do número positivo informado. 32 Exemplo de solução início repita mostrar “digite um número positivo” ler N até N > 0 mostrar “a raiz quadrada deste número e’: “ mostrar sqrt(N) fim 33