Algoritmos para Problemas Gerais Algoritmos Sequenciais e ...
Semana 1: Programação como arte de resolver problemas, algoritmos e problemas, pseudocódigo
-
Upload
manuel-menezes-de-sequeira -
Category
Technology
-
view
3.582 -
download
1
description
Transcript of Semana 1: Programação como arte de resolver problemas, algoritmos e problemas, pseudocódigo
![Page 1: Semana 1: Programação como arte de resolver problemas, algoritmos e problemas, pseudocódigo](https://reader036.fdocument.pub/reader036/viewer/2022062303/5579a669d8b42ac1148b4b1a/html5/thumbnails/1.jpg)
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
![Page 2: Semana 1: Programação como arte de resolver problemas, algoritmos e problemas, pseudocódigo](https://reader036.fdocument.pub/reader036/viewer/2022062303/5579a669d8b42ac1148b4b1a/html5/thumbnails/2.jpg)
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
![Page 3: Semana 1: Programação como arte de resolver problemas, algoritmos e problemas, pseudocódigo](https://reader036.fdocument.pub/reader036/viewer/2022062303/5579a669d8b42ac1148b4b1a/html5/thumbnails/3.jpg)
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
![Page 4: Semana 1: Programação como arte de resolver problemas, algoritmos e problemas, pseudocódigo](https://reader036.fdocument.pub/reader036/viewer/2022062303/5579a669d8b42ac1148b4b1a/html5/thumbnails/4.jpg)
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
![Page 5: Semana 1: Programação como arte de resolver problemas, algoritmos e problemas, pseudocódigo](https://reader036.fdocument.pub/reader036/viewer/2022062303/5579a669d8b42ac1148b4b1a/html5/thumbnails/5.jpg)
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
![Page 6: Semana 1: Programação como arte de resolver problemas, algoritmos e problemas, pseudocódigo](https://reader036.fdocument.pub/reader036/viewer/2022062303/5579a669d8b42ac1148b4b1a/html5/thumbnails/6.jpg)
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)
![Page 7: Semana 1: Programação como arte de resolver problemas, algoritmos e problemas, pseudocódigo](https://reader036.fdocument.pub/reader036/viewer/2022062303/5579a669d8b42ac1148b4b1a/html5/thumbnails/7.jpg)
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
![Page 8: Semana 1: Programação como arte de resolver problemas, algoritmos e problemas, pseudocódigo](https://reader036.fdocument.pub/reader036/viewer/2022062303/5579a669d8b42ac1148b4b1a/html5/thumbnails/8.jpg)
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
![Page 9: Semana 1: Programação como arte de resolver problemas, algoritmos e problemas, pseudocódigo](https://reader036.fdocument.pub/reader036/viewer/2022062303/5579a669d8b42ac1148b4b1a/html5/thumbnails/9.jpg)
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
![Page 10: Semana 1: Programação como arte de resolver problemas, algoritmos e problemas, pseudocódigo](https://reader036.fdocument.pub/reader036/viewer/2022062303/5579a669d8b42ac1148b4b1a/html5/thumbnails/10.jpg)
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
![Page 11: Semana 1: Programação como arte de resolver problemas, algoritmos e problemas, pseudocódigo](https://reader036.fdocument.pub/reader036/viewer/2022062303/5579a669d8b42ac1148b4b1a/html5/thumbnails/11.jpg)
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
![Page 12: Semana 1: Programação como arte de resolver problemas, algoritmos e problemas, pseudocódigo](https://reader036.fdocument.pub/reader036/viewer/2022062303/5579a669d8b42ac1148b4b1a/html5/thumbnails/12.jpg)
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
![Page 13: Semana 1: Programação como arte de resolver problemas, algoritmos e problemas, pseudocódigo](https://reader036.fdocument.pub/reader036/viewer/2022062303/5579a669d8b42ac1148b4b1a/html5/thumbnails/13.jpg)
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
![Page 14: Semana 1: Programação como arte de resolver problemas, algoritmos e problemas, pseudocódigo](https://reader036.fdocument.pub/reader036/viewer/2022062303/5579a669d8b42ac1148b4b1a/html5/thumbnails/14.jpg)
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
![Page 15: Semana 1: Programação como arte de resolver problemas, algoritmos e problemas, pseudocódigo](https://reader036.fdocument.pub/reader036/viewer/2022062303/5579a669d8b42ac1148b4b1a/html5/thumbnails/15.jpg)
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
![Page 16: Semana 1: Programação como arte de resolver problemas, algoritmos e problemas, pseudocódigo](https://reader036.fdocument.pub/reader036/viewer/2022062303/5579a669d8b42ac1148b4b1a/html5/thumbnails/16.jpg)
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
![Page 17: Semana 1: Programação como arte de resolver problemas, algoritmos e problemas, pseudocódigo](https://reader036.fdocument.pub/reader036/viewer/2022062303/5579a669d8b42ac1148b4b1a/html5/thumbnails/17.jpg)
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.
![Page 18: Semana 1: Programação como arte de resolver problemas, algoritmos e problemas, pseudocódigo](https://reader036.fdocument.pub/reader036/viewer/2022062303/5579a669d8b42ac1148b4b1a/html5/thumbnails/18.jpg)
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…
![Page 19: Semana 1: Programação como arte de resolver problemas, algoritmos e problemas, pseudocódigo](https://reader036.fdocument.pub/reader036/viewer/2022062303/5579a669d8b42ac1148b4b1a/html5/thumbnails/19.jpg)
2010/2011 19
Algoritmo
Entradas: m e n inteirosSaídas: mdc inteiro
No quadro…
Introdução à Programação - DCTI - ISCTE-IUL
![Page 20: Semana 1: Programação como arte de resolver problemas, algoritmos e problemas, pseudocódigo](https://reader036.fdocument.pub/reader036/viewer/2022062303/5579a669d8b42ac1148b4b1a/html5/thumbnails/20.jpg)
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
![Page 21: Semana 1: Programação como arte de resolver problemas, algoritmos e problemas, pseudocódigo](https://reader036.fdocument.pub/reader036/viewer/2022062303/5579a669d8b42ac1148b4b1a/html5/thumbnails/21.jpg)
2010/2011 21
Traçado do algoritmo
Introdução à Programação - DCTI - ISCTE-IUL 21
No quadro…
![Page 22: Semana 1: Programação como arte de resolver problemas, algoritmos e problemas, pseudocódigo](https://reader036.fdocument.pub/reader036/viewer/2022062303/5579a669d8b42ac1148b4b1a/html5/thumbnails/22.jpg)
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
![Page 23: Semana 1: Programação como arte de resolver problemas, algoritmos e problemas, pseudocódigo](https://reader036.fdocument.pub/reader036/viewer/2022062303/5579a669d8b42ac1148b4b1a/html5/thumbnails/23.jpg)
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
![Page 24: Semana 1: Programação como arte de resolver problemas, algoritmos e problemas, pseudocódigo](https://reader036.fdocument.pub/reader036/viewer/2022062303/5579a669d8b42ac1148b4b1a/html5/thumbnails/24.jpg)
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
![Page 25: Semana 1: Programação como arte de resolver problemas, algoritmos e problemas, pseudocódigo](https://reader036.fdocument.pub/reader036/viewer/2022062303/5579a669d8b42ac1148b4b1a/html5/thumbnails/25.jpg)
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