25
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

Semana 1: Programação como arte de resolver problemas, algoritmos e problemas, pseudocódigo

Embed Size (px)

DESCRIPTION

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.

Citation preview

Page 1: Semana  1: Programação como arte de resolver problemas, algoritmos e problemas, pseudocódigo

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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