ludwig krippahl, 2007 programação para as ciências experimentais 2006/7 teórica 2

43
Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2

Upload: internet

Post on 17-Apr-2015

105 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2

Ludwig Krippahl, 2007

Programação para as Ciências Experimentais

2006/7

Teórica 2

Page 2: Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2

Ludwig Krippahl, 2007 2

Trabalhadores Estudantes

Consultem regras de avaliação no site.

Page 3: Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2

Ludwig Krippahl, 2007 3

Na aula de hoje...

Algoritmos Funções e Variáveis Teste de Octave

Page 4: Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2

Ludwig Krippahl, 2007 4

Algoritmos

Muhammad ibn Mūsā al-Khwārizmī “Compêndio do Cálculo por Completude

e Balanço.” “Cálculo com Numerais Hindu” Algoritmi de numero Indorum (sec. XII)

• Algoritmo

• Algarismo

http://en.wikipedia.org/wiki/Muhammad_ibn_Mūsā_al-Khwārizmī

Page 5: Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2

Ludwig Krippahl, 2007 5

Algoritmo

Conjunto finito de instruções. No sentido estrito, operações sobre

símbolos (matemática, lógica, programas)

No sentido lato: receitas, procedimentos de emergência, etc...

http://en.wikipedia.org/wiki/Algorithm

Page 6: Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2

Ludwig Krippahl, 2007 6

«Algoritmo» da torrada

Pegar no pão Se faca na bancada,

• Pegar na faca Caso contrário

• Ir buscar faca à gaveta Cortar fatia, pôr na torradeira, ligar Enquanto não está pronta

• Esperar

Page 7: Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2

Ludwig Krippahl, 2007 7

Controlo da execução

Pegar no pão Se faca na bancada,

• Pegar na faca Caso contrário

• Ir buscar faca à gaveta Cortar fatia, pôr na torradeira, ligar Enquanto não está pronta

• Esperar

Page 8: Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2

Ludwig Krippahl, 2007 8

Controlo da execução

Pegar no pão Se faca na bancada,

• Pegar na faca Caso contrário

• Ir buscar faca à gaveta Cortar fatia, pôr na torradeira, ligar Enquanto não está pronta

• Esperar

Sequência

Page 9: Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2

Ludwig Krippahl, 2007 9

Controlo da execução

Pegar no pão Se faca na bancada,

• Pegar na faca Caso contrário

• Ir buscar faca à gaveta Cortar fatia, pôr na torradeira, ligar Enquanto não está pronta

• Esperar

Condição

Page 10: Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2

Ludwig Krippahl, 2007 10

Controlo da execução

Pegar no pão Se faca na bancada,

• Pegar na faca Caso contrário

• Ir buscar faca à gaveta Cortar fatia, pôr na torradeira, ligar Enquanto não está pronta

• Esperar Ciclo

Page 11: Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2

Ludwig Krippahl, 2007 11

Implementação Modular

Pegar no pão Se faca na bancada,

• Pegar na faca Caso contrário

• Ir buscar faca à gaveta Cortar fatia, pôr na torradeira, ligar Enquanto não está pronta

• Esperar

Page 12: Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2

Ludwig Krippahl, 2007 12

Implementação Modular

Pegar no pão Se faca na bancada,

• Pegar na faca Caso contrário

• Ir buscar faca à gaveta Cortar fatia, pôr na torradeira, ligar Enquanto não está pronta

• Esperar

Page 13: Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2

Ludwig Krippahl, 2007 13

Implementação Modular

Pegar no pão Encontrar faca Cortar fatia Pôr na torradeira, ligar Enquanto não está pronta

• Esperar

Page 14: Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2

Ludwig Krippahl, 2007 14

Implementação Modular

Pegar no pão Encontrar faca Cortar fatia Pôr na torradeira, ligar Enquanto não está pronta

• Esperar

Page 15: Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2

Ludwig Krippahl, 2007 15

Implementação Modular

Pegar no pão Encontrar faca Cortar fatia Torrada = Torradeira(Pão)

Procedimento

Função

Page 16: Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2

Ludwig Krippahl, 2007 16

Implementação Modular

Pegar no pão Encontrar faca Cortar fatia Torrada = Torradeira(Pão)

Procedimento

Função

Page 17: Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2

Ludwig Krippahl, 2007 17

Programação

Resolver problemas complexos um problema simples de cada vez

Hierarquizar os problemas

Page 18: Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2

Ludwig Krippahl, 2007 18

Hardware

Dentro do PC

HDD P. Gráfica

CPU RAM

...

Bus

Controladores

Page 19: Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2

Ludwig Krippahl, 2007 19

Sistema operativo

Núcleo (kernel) do sistema operativo:

Gestão de ficheiros, processos, periféricos (Drivers), memória...

Dentro do PC

HDD P. Gráfica

CPU RAM

...

Bus

Controladores

Page 20: Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2

Ludwig Krippahl, 2007 20

Outros programas

Núcleo (kernel) do sistema operativo:

Dentro do PC

HDD P. Gráfica

CPU RAM

...

Bus

Controladores

Interface (Shell) do sistema operativo:

Janelas, botões, interface gráfica, linha de comandos...

Page 21: Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2

Ludwig Krippahl, 2007 21

Outros programas

Núcleo (kernel) do sistema operativo:

Dentro do PC

HDD P. Gráfica

CPU RAM

...

Bus

Controladores

Interface (Shell) do sistema operativo:

Minesweeper, Messenger, Octave, IExplorer, ...

Page 22: Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2

Ludwig Krippahl, 2007 22

Implementação Modular

Pegar no pão Encontrar faca Cortar fatia Torrada = Torradeira(Pão)

Como fazer no Octave...

Procedimento

Função

Page 23: Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2

Ludwig Krippahl, 2007 23

Implementação Modular

Script• Conjunto de instruções guardado num

ficheiro

• Ficheiro tem nome.m

• Quando Octave recebe um nome, se não é variável procura o ficheiro

Page 24: Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2

Ludwig Krippahl, 2007 24

Implementação Modular

Script• EdiPO, criar novo ficheiro teste

• a=2

(no teste.m)

a=2

(no Octave)

octave:13> a=4a = 4octave:14> testea = 2octave:15> aa = 2

Page 25: Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2

Ludwig Krippahl, 2007 25

Implementação Modular

Script• Útil para guardar um pequeno programa

reutilizável, mas não é um módulo independente.

Page 26: Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2

Ludwig Krippahl, 2007 26

Implementação Modular

Function (procedimento ou função)• As variáveis são locais e independentes.

(no teste.m)

function testea=2endfunction

(no Octave)

octave:13> a=4a = 4octave:14> testea = 2octave:15> aa = 4

Page 27: Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2

Ludwig Krippahl, 2007 27

Implementação Modular

Function• As variáveis são locais e independentes.

(no teste.m)

function testea=2endfunction

(no Octave)

octave:13> a=4a = 4octave:14> testea = 2octave:15> aa = 4

Mesmo nome que o ficheiro

Page 28: Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2

Ludwig Krippahl, 2007 28

Implementação Modular

Function• As variáveis são locais e independentes.

(no teste.m)

function testea=2endfunction

(no Octave)

octave:13> a=4a = 4octave:14> testea = 2octave:15> aa = 4

A variável a da função só existe dentro da função

Page 29: Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2

Ludwig Krippahl, 2007 29

Implementação Modular

Mas queremos uma torradeira:• Torrada = Torradeira (Pão)

• Tem que receber e devolver valores.

(no soma.m)

function res=soma(a,b) res=a+bendfunction

(no Octave)

octave:16> soma(2,5)res = 7ans = 7octave:17>

Page 30: Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2

Ludwig Krippahl, 2007 30

Implementação Modular

function res=soma(a,b)

res=a+b

endfunctionArgumentos da função

Page 31: Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2

Ludwig Krippahl, 2007 31

Implementação Modular

function res=soma(a,b)

res=a+b

endfunctionNome da variável (na função) com o valor a devolver

Page 32: Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2

Ludwig Krippahl, 2007 32

Implementação Modular

function res=soma(a,b)

res=a+b

endfunctiona e b são cópias dos valores

Page 33: Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2

Ludwig Krippahl, 2007 33

Implementação Modular

function x=incrementa(x)

x=x+1

endfunctionx é cópias do valor

octave:17> x=3x = 3octave:18> incrementa(x)x = 4ans = 4octave:19> xx = 3

Page 34: Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2

Ludwig Krippahl, 2007 34

Implementação Modular

function res=soma(a,b)

res=a+b

endfunction

Último detalhe:• Não queremos o res

(no Octave)

octave:16> soma(2,5)res = 7ans = 7octave:17>

Page 35: Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2

Ludwig Krippahl, 2007 35

Implementação Modular

function res=soma(a,b)

res=a+b;

endfunction

Último detalhe:• Não queremos o res

• ; resolve o problema.

(no Octave)

octave:20> soma(2,5)ans = 7octave:21>

Page 36: Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2

Ludwig Krippahl, 2007 36

Implementação Modular

Importante:• Os argumentos da função são cópias locais

dos valores.

Page 37: Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2

Ludwig Krippahl, 2007 37

Implementação Modular

Importante:• O Octave primeiro verifica se há uma variável

com esse nome:

octave:21> soma=0

soma = 0

octave:22> soma(2,5)

error: invalid row index = 2

error: invalid column index = 5

Page 38: Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2

Ludwig Krippahl, 2007 38

Implementação Modular

Importante:• O Octave primeiro verifica se há uma variável

com esse nome.

• Se fosse ao contrário, um novo ficheiro .m podia estragar um programa já existente...

Page 39: Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2

Ludwig Krippahl, 2007 39

Implementação Modular

Importante:• A variável (ou variáveis) designada para

guardar o valor devolvido tem que ter um valor atribuído no final da função.function res=soma(a,b) c=a+b;endfunction

octave:24> a=soma(2,5)error: value on right hand side of assignment is undefinederror: evaluating assignment expression near line 24, column 2

Page 40: Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2

Ludwig Krippahl, 2007 40

Aula de hoje

Decompor problema complexo em problemas simples.

No Octave, usar funções:• Reutilizáveis (como a torradeira)

• As variáveis locais garantem que só entra e sai o que quisermos (melhor que a torradeira!)

Page 41: Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2

Ludwig Krippahl, 2007 41

Próxima aula

Como controlar a execução:• if... elseif.. else ... endif

• while ... endwhile

• for ... endfor

Page 42: Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2

Ludwig Krippahl, 2007 42

Teste de Octave

Saber o que fizeram nas práticas Reutilizar código Desenrascar 90 minutos certos Consulta livre, mas nada de chat ou

email.

Page 43: Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2

Ludwig Krippahl, 2007 43

Dúvidas