Aula 1
Programação como arte de resolver problemasAlgoritmo como sequência finita de instruções que resolvem um dado problemaDescrição de algoritmos em pseudocódigo
Introdução à Programação - DCTI - ISCTE-IUL 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 programa2010/2011 2
Introdução à Programação - DCTI - ISCTE-IUL 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 programa2010/2011 3
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
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. KnuthIntrodução à Programação - DCTI - ISCTE-IUL 5
2010/2011 6
Algoritmo para fazer um bolo
Introdução à Programação - DCTI - ISCTE-IUL 6
Fonte: Fundamentos de Programação em Java 2 (Mendes e Marcelino, 2005, p. 7)
2010/2011 7
Algoritmo
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…
Introdução à Programação - DCTI - ISCTE-IUL 7
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
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
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 10
i
7
2010/2011 11
Pseudocódigo: atribuição
m ← n – atribui valor de n a m, i.e., altera o valor de m para o valor contido em n
Exemplo1. x ← 22. y ← 53. x ← y4. y ← y + 1
Introdução à Programação - DCTI - ISCTE-IUL 11
x
2
y
5
x
5
y
6
+ 1
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 12
…de selecção
…de iteração, ciclos
…de entrada/saída
2010/2011 13
Pseudocódigo: operações lógicas
p Ʌ q – “e”, conjunção das proposições p e q
p V q – “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
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
2010/2011 15
Pseudocódigo: igualdade, diferença e operações relacionais
m < n – valor da proposição “m é menor que n”
m = n – valor da proposição “m é igual a n”
m ≠ n – valor da proposição “m é diferente de n”
Introdução à Programação - DCTI - ISCTE-IUL 15
valores lógicos
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
2010/2011 17
Máximo divisor comum de m e n inteiros, positivos e arbitrários
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 nIntrodução à Programação - DCTI - ISCTE-IUL 17
x é divisível por y se o resto da divisão inteira de x por y for zero.
2010/2011 18
Propriedades conhecidas
0 < mdc(m, n), ou seja, 1 ≤ mdc(m, n)
mdc(m, n) ≤ min(m, n)
Introdução à Programação - DCTI - ISCTE-IUL 18
Porquê?
Há mais…
2010/2011 19
Algoritmo
Entradas: m e n inteirosSaídas: mdc inteiro
No quadro…
Introdução à Programação - DCTI - ISCTE-IUL
2010/2011 20
Algoritmo
Se m < n, então mdc ← m,
senão,mdc ← n.
Enquanto m ÷ mdc ≠ 0 V n ÷ mdc ≠ 0, fazer mdc ← mdc - 1.
Entradas: m e n inteirosSaídas: mdc inteiro
Introdução à Programação - DCTI - ISCTE-IUL
2010/2011 21
Traçado do algoritmo
Introdução à Programação - DCTI - ISCTE-IUL 21
No quadro…
2010/2011 22
Algoritmos
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
Introdução à Programação - DCTI - ISCTE-IUL 22
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
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
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
Top Related