Logica Algoritmo 05 Repeticao

43,531 views

Published on

Published in: Technology, Education
2 Comments
11 Likes
Statistics
Notes
No Downloads
Views
Total views
43,531
On SlideShare
0
From Embeds
0
Number of Embeds
183
Actions
Shares
0
Downloads
763
Comments
2
Likes
11
Embeds 0
No embeds

No notes for slide

Logica Algoritmo 05 Repeticao

  1. 1. Introdução à Lógica Estruturas de Repetição <ul><ul><li>Regis Pires Magalhães </li></ul></ul><ul><ul><li>[email_address] </li></ul></ul><ul><ul><li>Última atualização em 14/05/2008 </li></ul></ul>
  2. 2. Estruturas de Repetição <ul><li>São muito comuns as situações em que se deseja repetir um determinado trecho de um programa um certo número de vezes. </li></ul><ul><li>As estruturas de repetição são muitas vezes chamadas de Laços ou também de Loops. </li></ul><ul><li>Classificação: </li></ul><ul><ul><li>Laços Contados </li></ul></ul><ul><ul><ul><li>Conhecimento previo de quantas vezes o comando no interior da construção será executado; </li></ul></ul></ul><ul><ul><li>Laços Condicionais </li></ul></ul><ul><ul><ul><li>Não se conhece de antemão o número de vezes que o conjunto de comandos no interior do laço será repetido. </li></ul></ul></ul><ul><ul><ul><li>Amarrado a uma condição sujeita à modificação pelas instruções do interior do laço. </li></ul></ul></ul>
  3. 3. Laços condicionais <ul><li>O conjunto de comandos em seu interior é executado até que uma determinada condição seja satisfeita. </li></ul><ul><li>Laços condicionais mais comuns nas linguagens de programação modernas: </li></ul><ul><ul><li>Enquanto - laço condicional com teste no início </li></ul></ul><ul><ul><li>Repita - laço condicional com teste no final </li></ul></ul><ul><li>A variável que é testada dever sempre estar associada a um comando que a atualize no interior do laço. </li></ul><ul><ul><li>Caso isso não ocorra, o programa ficará repetindo indefinidamente este laço, gerando um “laço infinito”. </li></ul></ul>
  4. 4. Laços Condicionais com Teste no Início (enquanto ... faca) <ul><li>Caracteriza-se por uma estrutura que efetua um teste lógico no início de um laço, verificando se é permitido ou não executar o conjunto de comandos no interior do laço. </li></ul><ul><ul><li>enquanto <condição> faca </li></ul></ul><ul><ul><li><comando_composto> </li></ul></ul><ul><ul><li>fimenquanto </li></ul></ul>
  5. 5. Fluxograma
  6. 6. Diagrama de Chapin
  7. 7. Laços condicionais (enquanto ... faca) <ul><li>algoritmo &quot;numeros&quot; </li></ul><ul><li>var </li></ul><ul><li>num_inicial, num_final, i : inteiro </li></ul><ul><li>inicio </li></ul><ul><li>escreva ( &quot;Digite o número inicial: &quot; ) </li></ul><ul><li>leia (num_inicial) </li></ul><ul><li>escreva ( &quot;Digite o número final: &quot; ) </li></ul><ul><li>leia (num_final) </li></ul><ul><li>i <- num_inicial </li></ul><ul><li>enquanto (i <= num_final) faca </li></ul><ul><li>escreval (i) </li></ul><ul><li>i <- i + 1 </li></ul><ul><li>fimenquanto </li></ul><ul><li>escreva ( &quot;fim&quot; ) </li></ul><ul><li>fimalgoritmo </li></ul>
  8. 8. Exemplo <ul><li>algoritmo &quot;exemplo_enquanto&quot; </li></ul><ul><li>var soma, num : inteiro </li></ul><ul><li>inicio </li></ul><ul><li>num <- 1 </li></ul><ul><li>soma <- num </li></ul><ul><li>enquanto soma < 1000 faca </li></ul><ul><li>escreval( num, &quot; - &quot; , soma) </li></ul><ul><li>num <- num + 1 </li></ul><ul><li>soma <- soma + num </li></ul><ul><li>fimenquanto </li></ul><ul><li>fimalgoritmo </li></ul>
  9. 9. Exemplo
  10. 10. Laços Condicionais com Teste no Final ( repita ... ate ) <ul><li>Efetua um teste lógico no final de um laço, verificando se é permitido ou não executar novamente o conjunto de comandos no interior do mesmo. </li></ul><ul><li>Na construção Repita o comando é executado uma ou mais vezes (pelo menos uma vez). Além disso, a variável pode ser inicializada ou lida dentro do laço. </li></ul><ul><li>Na construção Enquanto o comando é executado zero ou mais vezes. </li></ul><ul><ul><li>repita </li></ul></ul><ul><ul><li><comando_composto> </li></ul></ul><ul><ul><li>ate <condição> </li></ul></ul>
  11. 11. Laços condicionais (repita ... ate) <ul><li>algoritmo &quot;numeros&quot; </li></ul><ul><li>var </li></ul><ul><li>num_inicial, num_final, i : inteiro </li></ul><ul><li>inicio </li></ul><ul><li>escreva (&quot;Digite o número inicial: &quot; ) </li></ul><ul><li>leia (num_inicial) </li></ul><ul><li>escreva ( &quot;Digite o número final: &quot; ) </li></ul><ul><li>leia (num_final) </li></ul><ul><li>i <- num_inicial </li></ul><ul><li>repita </li></ul><ul><li>escreval (i) </li></ul><ul><li>i <- i + 1 </li></ul><ul><li>ate (i > num_final) </li></ul><ul><li>escreva ( &quot;fim&quot; ) </li></ul><ul><li>fimalgoritmo </li></ul>
  12. 12. Fluxograma
  13. 13. Diagrama de Chapin
  14. 14. Exemplo <ul><li>algoritmo &quot;exemplo_repita&quot; </li></ul><ul><li>var num : inteiro </li></ul><ul><li>inicio </li></ul><ul><li>repita </li></ul><ul><li>leia (num) </li></ul><ul><li>escreval (num, &quot; - &quot; , num * num) </li></ul><ul><li>ate num % 2 = 0 </li></ul><ul><li>fimalgoritmo </li></ul>
  15. 15. Fluxograma
  16. 16. Laços contados <ul><li>São úteis quando se conhece previamente o número exato de vezes que se deseja executar um determinado conjunto de comandos. </li></ul><ul><li>Estrutura dotada de mecanismos para contar o número de vezes que o corpo do laço é executado. </li></ul><ul><ul><li>para <variável> de <início> ate <final> faca </li></ul></ul><ul><ul><li><comando_composto> </li></ul></ul><ul><ul><li>fimpara </li></ul></ul>
  17. 17. Laços contados (para ... de ... ate ... faca) <ul><li>algoritmo &quot;numeros&quot; </li></ul><ul><li>var </li></ul><ul><li>num_inicial, num_final, i : inteiro </li></ul><ul><li>inicio </li></ul><ul><li>escreva ( &quot;Digite o número inicial: &quot; ) </li></ul><ul><li>leia (num_inicial) </li></ul><ul><li>escreva ( &quot;Digite o número final: &quot; ) </li></ul><ul><li>leia (num_final) </li></ul><ul><li>para i de num_inicial ate num_final faca </li></ul><ul><li>escreval (i) </li></ul><ul><li>fimpara </li></ul><ul><li>escreva ( &quot;fim&quot; ) </li></ul><ul><li>fimalgoritmo </li></ul>
  18. 18. Laços contados <ul><li>Existe uma condição especial em que a contagem pode ser de forma decrescente, onde o valor da variável é decrementado. </li></ul><ul><ul><li>para <variável> de <início> ate <final> passo –1 faca </li></ul></ul><ul><ul><li><comando_composto> </li></ul></ul><ul><ul><li>fimpara </li></ul></ul>
  19. 19. Fluxograma
  20. 20. Diagrama de Chapin
  21. 21. Exemplo <ul><li>algoritmo &quot;tabuada&quot; </li></ul><ul><li>var i, tab, num : inteiro </li></ul><ul><li>inicio </li></ul><ul><li>escreva( &quot;Tabuada: &quot; ) </li></ul><ul><li>leia( tab) </li></ul><ul><li>escreva( &quot;Até que número: &quot; ) </li></ul><ul><li>leia( num) </li></ul><ul><li>para i de 1 ate num faca </li></ul><ul><li>escreva( i, &quot; x &quot; , tab, &quot; = &quot; , i * tab) </li></ul><ul><li>fimpara </li></ul><ul><li>fimalgoritmo </li></ul>
  22. 22. Fluxograma
  23. 23. Estruturas de Controle Encadeadas ou aninhadas <ul><li>Um aninhamento ou encadeamento é o fato de se ter qualquer um dos tipos de construção apresentados anteriormente dentro do conjunto de comandos (comando composto) de uma outra construção. </li></ul><ul><li>Em qualquer tipo de aninhamento é necessário que a construção interna esteja completamente embutida na construção externa. </li></ul>Aninhamento inválido Aninhamento válido

×