Algoritmos - capítulo 1

2,584 views

Published on

Introdução ao estudo de algoritmos e lógica de programação.

Published in: Education, Sports, Travel
2 Comments
7 Likes
Statistics
Notes
No Downloads
Views
Total views
2,584
On SlideShare
0
From Embeds
0
Number of Embeds
51
Actions
Shares
0
Downloads
0
Comments
2
Likes
7
Embeds 0
No embeds

No notes for slide

Algoritmos - capítulo 1

  1. 1. Algoritmos e lógica de programação Introdução a Algoritmos por Carlos Emilio Padilla Severo
  2. 2. Contextualização <ul><li>Algoritmos fazem parte de nossa vida em todo momento. </li></ul><ul><ul><li>Não percebemos, mas estamos usando algoritmos para todas as tarefas executadas no nosso dia a dia. </li></ul></ul><ul><ul><li>Estão presentes em instruções para elaboração de uma receita culinária; nos procedimentos para dirigir um automóvel; na montagem de móveis e utensílios domésticos, etc. </li></ul></ul><ul><ul><li>Trata-se de um conjunto de instruções realizadas para solucionarmos um determinado problema. </li></ul></ul>
  3. 3. Um exemplo típico <ul><li>Montar um armário é um exemplo típico de um algoritmo. </li></ul>perfilar peças laterais (2) fixar parafusos da prateleira (4A) fixar parafusos da prateleira (4B) fixar parafusos da prateleira (4C) fixar fundo (3)
  4. 4. Encadeamento lógico das instruções <ul><li>Faz diferença a ordem de colocação das peças do armário? </li></ul><ul><ul><li>Notem que algumas instruções não precisam seguir uma ordem específica: fixação das prateleiras (4A), (4B) e (4C). </li></ul></ul><ul><ul><li>Até mesmo a técnica de montagem pode ser distinta: </li></ul></ul><ul><ul><ul><li>podemos começar com a fixação das prateleiras no fundo; </li></ul></ul></ul><ul><ul><ul><li>ou começar pela fixação das prateleiras nas laterais; </li></ul></ul></ul><ul><ul><ul><li>as técnicas diferentes influenciam na performance (rapidez) com que ocorre a montagem. </li></ul></ul></ul>
  5. 5. Linguagem formal <ul><li>A língua portuguesa é ambígua, ou seja, permite interpretações distintas de acordo com o contexto. </li></ul><ul><ul><li>A linguagem não deve permitir interpretações distintas. </li></ul></ul><ul><ul><li>Deve ser formal para que as instruções possam ser interpretadas de forma adequada. </li></ul></ul>
  6. 6. A lógica no dia a dia <ul><li>Sempre que pensamos a lógica nos acompanha. </li></ul><ul><ul><li>Quando falamos ou escrevemos estamos utilizando o encadeamento lógico de ações mentais. </li></ul></ul><ul><ul><li>A lógica é muito importante no dia a dia, visto que permite colocar ordem no pensamento e coordenar a forma como pensamos, falamos, escrevemos e agimos. </li></ul></ul>
  7. 7. A lógica no dia a dia <ul><li>Encadeando o pensamento para obtenção de conclusões: </li></ul>
  8. 8. Lógica e programação de computadores <ul><li>Tá !!! Mas onde entra a lógica na programação de computadores ? </li></ul><ul><ul><li>Na programação de computadores lógica significa colocar ordem no raciocínio, através de formalizações simbólicas, as quais permitem uma solução válida para um problema que se pretenda solucionar pelo uso de um programa. </li></ul></ul><ul><li>A programação de computadores estabelece um padrão para expressão do raciocínio envolvido na solução de um problema. </li></ul><ul><ul><li>Da mesma forma como a gramática de uma língua permite a comunicação entre pessoas. </li></ul></ul><ul><ul><li>Para expressar a lógica de encadeamento de ações de um programa, utilizamos o conceito de algoritmos . </li></ul></ul>
  9. 9. Algoritmos <ul><li>Sequências de passos que visam atingir um objetivo específico. </li></ul><ul><ul><li>Passos ordenados logicamente; </li></ul></ul><ul><ul><li>sequência finita de passos; </li></ul></ul><ul><ul><li>execução dentro de um tempo hábil. </li></ul></ul>
  10. 10. Objetivo dos algoritmos <ul><li>Representa o raciocínio em um nível de abstração mais alto. </li></ul><ul><ul><li>Detalhes computacionais são omitidos; </li></ul></ul><ul><ul><li>linguagem genérica para descrição de passos; </li></ul></ul><ul><ul><li>pode ser traduzido em uma linguagem de programação. </li></ul></ul>
  11. 11. Exemplo 1 <ul><li>Algoritmo para troca de uma lâmpada. </li></ul><ul><ul><ul><li>Pegar uma escada; </li></ul></ul></ul><ul><ul><ul><li>posicionar a escada embaixo da lâmpada; </li></ul></ul></ul><ul><ul><ul><li>buscar uma lâmpada nova; </li></ul></ul></ul><ul><ul><ul><li>subir na escada; </li></ul></ul></ul><ul><ul><ul><li>retirar a lâmpada velha; </li></ul></ul></ul><ul><ul><ul><li>colocar a lâmpada nova; </li></ul></ul></ul><ul><li>Uso de sequenciação </li></ul><ul><ul><li>Determina o fluxo de execução do algoritmo. </li></ul></ul>
  12. 12. Analisando o exemplo 1 <ul><li>Não trata o problema de a lâmpada estar ou não queimada. </li></ul><ul><li>Um teste é necessário para verificação da lâmpada. </li></ul>
  13. 13. Exemplo 2 <ul><li>Algoritmo para troca de uma lâmpada. </li></ul><ul><ul><ul><li>Pegar uma escada; </li></ul></ul></ul><ul><ul><ul><li>posicionar a escada embaixo da lâmpada; </li></ul></ul></ul><ul><ul><ul><li>buscar uma lâmpada nova; </li></ul></ul></ul><ul><ul><ul><li>acionar o interruptor; </li></ul></ul></ul><ul><ul><ul><li>se a lâmpada não acender, então </li></ul></ul></ul><ul><ul><ul><ul><li>subir na escada; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>retirar a lâmpada velha; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>colocar a lâmpada nova; </li></ul></ul></ul></ul><ul><li>Uso de seleção </li></ul><ul><ul><li>Determina desvio no fluxo de execução. </li></ul></ul>
  14. 14. Analisando o exemplo 2 <ul><li>O teste seletivo determina se a troca da lâmpada é necessária. </li></ul><ul><li>Caso a nova lâmpada esteja queimada, o algoritmo não trata. </li></ul><ul><li>Se a lâmpada antiga não está queimada, perdemos tempo nos passos anteriores. </li></ul>
  15. 15. Exemplo 3 <ul><li>Algoritmo para troca de uma lâmpada. </li></ul><ul><ul><ul><li>Acionar o interruptor; </li></ul></ul></ul><ul><ul><ul><li>se a lâmpada não acender, então </li></ul></ul></ul><ul><ul><ul><ul><li>pegar uma escada; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>posicionar a escada embaixo da lâmpada; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>buscar uma lâmpada nova; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>subir na escada; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>retirar a lâmpada velha; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>colocar a lâmpada nova; </li></ul></ul></ul></ul>
  16. 16. Analisando o exemplo 3 <ul><li>O reposicionamento na ordem do teste otimiza o algoritmo. </li></ul><ul><li>Caso a nova lâmpada esteja queimada, o algoritmo não trata. </li></ul>
  17. 17. Exemplo 4 <ul><li>Algoritmo para troca de uma lâmpada. </li></ul><ul><ul><ul><li>Acionar o interruptor; </li></ul></ul></ul><ul><ul><ul><li>se a lâmpada não acender, então </li></ul></ul></ul><ul><ul><ul><ul><li>pegar uma escada; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>posicionar a escada embaixo da lâmpada; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>buscar uma lâmpada nova; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>subir na escada; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>retirar a lâmpada velha; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>colocar a lâmpada nova; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>se a lâmpada não acender, então </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>pegar uma escada; </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>posicionar a escada embaixo da lâmpada; </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>buscar uma lâmpada nova; </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>subir na escada; </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>retirar a lâmpada velha; </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>colocar a lâmpada nova; </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><li>... </li></ul></ul></ul></ul>
  18. 18. Analisando o exemplo 4 <ul><li>Até quando iremos repetir os passos para trocar a lâmpada ? </li></ul><ul><li>Não sabemos quantos testes iremos realizar. </li></ul>
  19. 19. Exemplo 5 <ul><li>Algoritmo para troca de uma lâmpada. </li></ul><ul><ul><ul><li>Acionar o interruptor; </li></ul></ul></ul><ul><ul><ul><li>se a lâmpada não acender, então </li></ul></ul></ul><ul><ul><ul><li>pegar uma escada; </li></ul></ul></ul><ul><ul><ul><ul><li>posicionar a escada embaixo da lâmpada; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>buscar uma lâmpada nova; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>subir na escada; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>retirar a lâmpada velha; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>colocar a lâmpada nova; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>enquanto a lâmpada não acender, faça </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>retirar a lâmpada queimada; </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>colocar uma lâmpada nova; </li></ul></ul></ul></ul></ul><ul><li>Uso de repetição: mantém um fluxo de execução contínuo, até que uma condição seja atingida. </li></ul>
  20. 20. Exemplo 6 <ul><li>Algoritmo para troca em 10 soquetes. </li></ul>
  21. 21. Representação gráfica
  22. 22. Exercícios de fixação
  23. 23. Exercícios de fixação
  24. 24. Exercícios de fixação
  25. 25. Exercícios de fixação
  26. 26. Referências <ul><li>FORBELLONE, L. V.; EBERSPACHER, H. F. Lógica de programação, São Paulo: Makron Books, 2000. </li></ul><ul><li>FARRER, H. et. al. Algoritmos Estruturados, 3ª Ed., São Paulo: LTC, 1999. </li></ul><ul><li>Plastelina Logic Games. Acesso: http://www.plastelina.net/. </li></ul>

×