2. programação e resolução de problemas; algoritmos; snap! – fundamentos de programação

28
Apresentação 2 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... Snap!

Upload: manuel-menezes-de-sequeira

Post on 11-Jun-2015

1.088 views

Category:

Education


0 download

DESCRIPTION

Fundamentos da Programação 2: • Programação como arte de resolução de problemas • Algoritmos • Descrição de algoritmos em… Snap! Apresentação 2 da unidade curricular de Fundamentos de Programação da Universidade Europeia. Alterações de Manuel Menezes de Sequeira sobre versão original por vários autores do DCTI do ISCTE-IUL, incluindo Luís Nunes, Ricardo Ribeiro, André Santos e o próprio Manuel Menezes de Sequeira.

TRANSCRIPT

Page 1: 2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de Programação

Apresentação 2

Programação como arte de resolver problemasAlgoritmo como sequência finita de instruções que resolvem um dado problemaDescrição de algoritmos em... Snap!

Page 2: 2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de Programação

Fundamentos de Programação 2

Da apresentação anterior…

Computador como máquina programável

Conceitos de línguas naturais linguagens de programação de baixo e

alto nível linguagens máquina

Noções de algoritmo e de programa2013/2014 2

Page 3: 2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de Programação

Fundamentos de Programação 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 programa2013/2014 3

Page 4: 2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de Programação

2013/2014 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

Fundamentos de Programação 4

Page 5: 2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de Programação

2013/2014 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. KnuthFundamentos de Programação 5

Page 6: 2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de Programação

2013/2014 6

Algoritmo para fazer um bolo

Fundamentos de Programação 6

Fonte: Fundamentos de Programação em Java 2 (Mendes e Marcelino, 2005, p. 7)

Page 7: 2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de Programação

2013/2014 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…

Fundamentos de Programação 7

Page 8: 2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de Programação

2013/2014 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)

Fundamentos de Programação 8

Page 9: 2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de Programação

2013/2014 9

Snap!

Instruções em linguagem visual

Facilita compreensão por noviços

Evita-se problemas sintáticos

Obtém-se resultados visíveis imediatamente

Tradução fácil para outras linguagens de programação

Fundamentos de Programação

Page 10: 2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de Programação

2013/2014 10

Dados

Valores são números, texto, etc.

Variáveis Guardam diferentes valores ao longo do

tempo Identificadas por nome Variável n guarda valor 7:

Fundamentos de Programação 10

n

7

Mentirita! n é na realidade uma referência para um objecto numérico algures na memória.

Page 11: 2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de Programação

2013/2014 11

Variável

Referência para objecto com: tipo (e.g., número, texto, booleano, lista) Valor (e.g., 123, «Olá mundo!»,

verdadeiro)

Definição Nome (reflecte o que a variável guarda) Valor inicial implícito (referência para

número com valor 0)

Fundamentos de Programação 11

Page 12: 2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de Programação

2013/2014 12

Nomeando variáveis

Variável normal Completar frase «Actor, esta variável

guarda …»

Variável para valores booleanos Completar frase «Actor, esta variável

indica se …»

Fundamentos de Programação 12

Page 13: 2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de Programação

2013/2014 13

Definição de variáveis

Variável:

Declaração:

Fundamentos de Programação 13

n

0

No Snap! o valor por omissão é 0 (zero).

Page 14: 2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de Programação

2013/2014 14

Atribuição

atribui o valor que se coloca na ranhura à variável m

Exemplo

Fundamentos de Programação 14

x

2

y

5

x

5

y

6

+ 1

Page 15: 2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de Programação

Alguns comandos do Snap!

2013/2014 Fundamentos de Programação 1515

…condicional e de selecção

…de iteração, ciclos

…de entrada/saída

personalizado...

personalizado...

personalizado...

Page 16: 2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de Programação

Operações lógicas

2013/2014 Fundamentos de Programação 1616

conjunção

disjunção

negação

Page 17: 2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de Programação

Operações aritméticas

2013/2014 Fundamentos de Programação 1717

adição

subtracção

multiplicação

divisão

resto da divisão

Page 18: 2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de Programação

Operações de igualdade, diferença e desigualdade

2013/2014 Fundamentos de Programação 1818

igualdade

diferença

desigualdades

personalizado...

personalizado...

personalizado...

Page 19: 2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de Programação

2013/2014 19

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)?

Fundamentos de Programação 19

Page 20: 2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de Programação

2013/2014 20

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 nFundamentos de Programação 20

x é divisível por y se o resto da divisão inteira de x por y for zero.

Page 21: 2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de Programação

2013/2014 21

Propriedades conhecidas

0 < mdc(m, n), ou seja, 1 ≤ mdc(m, n)

mdc(m, n) ≤ min(m, n)

Fundamentos de Programação 21

Porquê?

Há mais…

Page 22: 2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de Programação

Que algoritmo usar?

Onde começar a procurar?

Como evoluir?

Quando parar?

2013/2014 Fundamentos de Programação 22

Page 23: 2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de Programação

2013/2014 23

Programa em Snap!

Entradas: m e n inteirosSaídas: mdc inteiro

No Snap!...

Fundamentos de Programação

Page 24: 2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de Programação

Programa em Snap!

Entradas: m e n inteirosSaídas: mdc inteiro

2013/2014 Fundamentos de Programação 24

Page 25: 2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de Programação

2013/2014 25

Traçado do programa

Fundamentos de Programação 25

No Snap!…

Page 26: 2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de Programação

2013/2014 26

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

Fundamentos de Programação 26

Em muitos casos pode-se demonstrar que um algoritmo é óptimo relativamente a uma dada característica.

Page 27: 2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de Programação

2013/2014 27

A reter

Revisão do Snap! 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

Fundamentos de Programação 27

Page 28: 2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de Programação

2013/2014 28

Sumário

Programação como arte de resolver problemas

Algoritmo como sequência finita de instruções que resolvem um dado problema

Implementação de algoritmos em Snap! Variáveis Instruções de selecção Iterações e ciclos Instruções de leitura/escrita

Fundamentos de Programação 28