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

Post on 11-Jun-2015

3.580 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

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.

TRANSCRIPT

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