Apresentação da semana 1 da unidade curricular de Introdução à Programação do DCTI do ISCTE-IUL. Alterações de Manuel Menezes de Sequeira sobre versão original por vários autores do DCTI, incluindo Luís Nunes e André Santos.
Eng.ª do Software - 8. Desenho de interfaces com o utilizador
Semana 1: Programação como arte de resolver problemas, algoritmos e problemas, pseudocódigo
1. Aula 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 pseudocódigo
2. Da aula anterior… Computador como máquina programável Conceitos de línguas naturais linguagens de programação de baixo e de alto nível linguagens máquina Noções de algoritmo e de programa 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 2 2
3. Programar 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 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 3 3
4. 2010/2011 4 Arte de resolver problemas 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 Introdução à Programação - DCTI - ISCTE-IUL 4
5. 2010/2011 5 Algoritmos (primeira abordagem) 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 Introdução à Programação - DCTI - ISCTE-IUL 5
6. 2010/2011 6 Algoritmo para fazer um bolo Introdução à Programação - DCTI - ISCTE-IUL Fonte: Fundamentos de Programação em Java 2 (Mendes e Marcelino, 2005, p. 7) 6
12. a planificar programa antes de o escrever (codificar) numa linguagem de programação e
13. a pensar numa linguagem próxima da sua – para um programador noviço, codificar directamente não é natural…Introdução à Programação - DCTI - ISCTE-IUL 7
14. 2010/2011 8 Propriedades de um algoritmo 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) Introdução à Programação - DCTI - ISCTE-IUL 8
15. 2010/2011 9 Pseudocódigo Instruções em linguagem simplificada Facilita compreensão por humanos Não serve para programar directamente Descreve algoritmos Algoritmos implementáveis em diferentes linguagens de programação Introdução à Programação - DCTI - ISCTE-IUL
16. 2010/2011 10 Pseudocódigo: dados Valores são números inteiros (para já…) Variáveis Guardam diferentes valores ao longo do tempo Identificadas por nome Variável i guarda valor 7: Introdução à Programação - DCTI - ISCTE-IUL i 7 10
17.
18. Exemplox← 2 y← 5 x←y y←y + 1 Introdução à Programação - DCTI - ISCTE-IUL x y x y 2 5 5 6 + 1 11
19. 2010/2011 12 Pseudocódigo: instruções Se […], então […], senão, […]. Enquanto […], fazer […]. Fazer […] até que […]. Ler […] de/do/da […]. Escrever […] em/no/na […]. Introdução à Programação - DCTI - ISCTE-IUL …de selecção …de iteração, ciclos …de entrada/saída 12
20. 2010/2011 13 Pseudocódigo: operações lógicas pɅq – “e”, conjunção das proposições p e q pVq – “ou”, disjunção das proposições p e q ¬p – “não”, negação da proposição p Introdução à Programação - DCTI - ISCTE-IUL 13
21. 2010/2011 14 Pseudocódigo: operações aritméticas m+n – adição de m e n m-n – m subtraído de n m/n – quociente da divisão inteira de m por n m×n – produto de m e n m÷n – resto da divisão inteira de m por n Introdução à Programação - DCTI - ISCTE-IUL 14
24. m≠n – valor da proposição “m é diferente de n”Introdução à Programação - DCTI - ISCTE-IUL valores lógicos 15
25. 2010/2011 16 Problema 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)? Introdução à Programação - DCTI - ISCTE-IUL 16
32. não há inteiro maior que mdc que seja divisor de m e nIntrodução à Programação - DCTI - ISCTE-IUL x é divisível por y se o resto da divisão inteira de x por y for zero. 17
34. 2010/2011 19 Algoritmo Entradas: m e ninteiros Saídas: mdcinteiro No quadro… Introdução à Programação - DCTI - ISCTE-IUL
35. 2010/2011 20 Algoritmo Entradas: m e ninteiros Saídas: mdcinteiro Se m < n, então mdc←m, senão, mdc←n. Enquanto m ÷ mdc≠0 V n÷mdc≠ 0, fazer mdc← mdc - 1. Introdução à Programação - DCTI - ISCTE-IUL
36. 2010/2011 21 Traçado do algoritmo Introdução à Programação - DCTI - ISCTE-IUL No quadro… 21
40. 2010/2011 23 A reter Pseudocódigo 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 Introdução à Programação - DCTI - ISCTE-IUL 23
41. 2010/2011 24 A ler... Capítulos 1 e 2 do livro: Y. Daniel Liang, Introduction to Java Programming, 8.ª edição, Prentice-Hall, 2010. ISBN: 978-0-13-213080-6 Introdução à Programação - DCTI - ISCTE-IUL 24
42. 2010/2011 25 Sumário 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 pseudocódigo Variáveis Instruções de selecção Iterações e ciclos Instruções de leitura/escrita Introdução à Programação - DCTI - ISCTE-IUL 25