2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de Programação

1,810 views

Published on

Fundamentos da Programação 2:
• Programação como arte de resolução de problemas
• Algoritmos
• Descrição de algoritmos em… Snap!

Apresentação 2 da unidade curricular de Fundamentos de Programação da Universidade Europeia. Alterações de Manuel Menezes de Sequeira sobre versão original por vários autores do DCTI do ISCTE-IUL, incluindo Luís Nunes, Ricardo Ribeiro, André Santos e o próprio Manuel Menezes de Sequeira.

Published in: Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,810
On SlideShare
0
From Embeds
0
Number of Embeds
1,034
Actions
Shares
0
Downloads
61
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de Programação

  1. 1. Programação como arte de resolver problemas Algoritmo como sequência finita de instruções que resolvem um dado problema Descrição de algoritmos em... Snap!
  2. 2.  Computador como máquina programável  Conceitos de  línguas naturais  linguagens de programação de baixo e alto nível  linguagens máquina  Noções de algoritmo e de programa 2013/2014 Fundamentos de Programação 22
  3. 3.  Compreender/analisar bem problema e dados envolvidos  Averiguar melhor forma de resolver problema e representar os dados  Determinar instruções duma linguagem de programação que resolvem (de forma genérica) esse problema  Essas instruções formam um programa 2013/2014 Fundamentos de Programação 33
  4. 4. 2013/2014 4 Diz-se que só se compreende realmente um assunto depois de o ter ensinado a alguém. Na realidade, só se compreende realmente um assunto depois de o ter ensinado a um computador. Donald E. Knuth Fundamentos de Programação 4
  5. 5. 2013/2014 5  Como uma receita, mas mais precisa: Conjunto finito de regras, traduzíveis numa sequência de operações/instruções, que permitem resolver um determinado tipo de problema. Donald E. Knuth Fundamentos de Programação 5
  6. 6. 2013/2014 6Fundamentos de Programação 6 Fonte: Fundamentos de Programação em Java 2 (Mendes e Marcelino, 2005, p. 7)
  7. 7. 2013/2014 7  Método de resolução de problema  Forma  Conjunto de instruções a executar  Ordem pela qual são executadas  Pensar na estrutura ajuda programador a  planificar programa antes de o escrever (codificar) numa linguagem de programação e a  pensar numa linguagem próxima da sua – para um programador noviço, codificar directamente não é natural… Fundamentos de Programação 7
  8. 8. 2013/2014 8  Finitude –Tem de terminar  Definitude –Todos os passos bem definidos  Entradas – Zero ou mais, de conjunto bem definido  Saídas – Uma ou mais, dependem das entradas  Eficácia –Todas as operações executáveis (em tempo útil) Fundamentos de Programação 8
  9. 9. 2013/2014 9  Instruções em linguagem visual  Facilita compreensão por noviços  Evita-se problemas sintáticos  Obtém-se resultados visíveis imediatamente  Tradução fácil para outras linguagens de programação Fundamentos de Programação
  10. 10. 2013/2014 10  Valores são números, texto, etc.  Variáveis  Guardam diferentes valores ao longo do tempo  Identificadas por nome  Variável n guarda valor 7: Fundamentos de Programação 10 n 7 Mentirita! n é na realidade uma referência para um objecto numérico algures na memória.
  11. 11. 2013/2014 11  Referência para objecto com:  tipo (e.g., número, texto, booleano, lista)  Valor (e.g., 123, «Olá mundo!», verdadeiro)  Definição  Nome (reflecte o que a variável guarda)  Valor inicial implícito (referência para número com valor 0) Fundamentos de Programação 11
  12. 12. 2013/2014 12  Variável normal  Completar frase «Actor, esta variável guarda …»  Variável para valores booleanos  Completar frase «Actor, esta variável indica se …» Fundamentos de Programação 12
  13. 13. 2013/2014 13  Variável:  Declaração: Fundamentos de Programação 13 n 0 No Snap! o valor por omissão é 0 (zero).
  14. 14. 2013/2014 14  atribui o valor que se coloca na ranhura à variável m  Exemplo Fundamentos de Programação 14 x 2 y 5 x 5 y 6 + 1
  15. 15. 2013/2014 Fundamentos de Programação 1515 …condicional e de selecção …de iteração, ciclos …de entrada/saída personalizado... personalizado... personalizado...
  16. 16. 2013/2014 Fundamentos de Programação 1616 conjunção disjunção negação
  17. 17. 2013/2014 Fundamentos de Programação 1717 adição subtracção multiplicação divisão resto da divisão
  18. 18. 2013/2014 Fundamentos de Programação 1818 igualdade diferença desigualdades personalizado... personalizado... personalizado...
  19. 19. 2013/2014 19  Qual o máximo divisor comum (mdc) de dois inteiros positivos arbitrários m e n, i.e., qual o valor de mdc(m, n)? Fundamentos de Programação 19
  20. 20. 2013/2014 20  Entradas: m e n  Saídas: mdc  Condições a verificar pela saída:  mdc = mdc(m, n)  Ou seja:  m e n são divisíveis por mdc e  não há inteiro maior que mdc que seja divisor de m e n Fundamentos de Programação 20 x é divisível por y se o resto da divisão inteira de x por y for zero.
  21. 21. 2013/2014 21  0 < mdc(m, n), ou seja, 1 ≤ mdc(m, n)  mdc(m, n) ≤ min(m, n) Fundamentos de Programação 21 Porquê? Há mais…
  22. 22.  Onde começar a procurar?  Como evoluir?  Quando parar? 2013/2014 Fundamentos de Programação 22
  23. 23. 2013/2014 23 Entradas: m e n inteiros Saídas: mdc inteiro No Snap!... Fundamentos de Programação
  24. 24.  Entradas: m e n inteiros  Saídas: mdc inteiro 2013/2014 Fundamentos de Programação 24
  25. 25. 2013/2014 25Fundamentos de Programação 25 No Snap!…
  26. 26. 2013/2014 26  Múltiplas formas de resolver um problema!  Não há algoritmos perfeitos…  …mas há algoritmos «mais perfeitos» que outros (menos memória, mais rápidos, …) ⇓  Importante procurar soluções simples, claras, estruturadas e eficientes Fundamentos de Programação 26 Em muitos casos pode-se demonstrar que um algoritmo é óptimo relativamente a uma dada característica.
  27. 27. 2013/2014 27  Revisão do Snap!  Variáveis  Instruções de selecção  Iterações e ciclos  Instruções de leitura/escrita  Algoritmo  Sequência finita de instruções que resolve um dado tipo de problema Fundamentos de Programação 27
  28. 28. 2013/2014 28  Programação como arte de resolver problemas  Algoritmo como sequência finita de instruções que resolvem um dado problema  Implementação de algoritmos em Snap!  Variáveis  Instruções de selecção  Iterações e ciclos  Instruções de leitura/escrita Fundamentos de Programação 28

×