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

Post on 17-Apr-2015

105 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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.

Ludwig Krippahl, 2007 3

Na aula de hoje...

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

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ī

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

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

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

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

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

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

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

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

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

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

Ludwig Krippahl, 2007 15

Implementação Modular

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

Procedimento

Função

Ludwig Krippahl, 2007 16

Implementação Modular

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

Procedimento

Função

Ludwig Krippahl, 2007 17

Programação

Resolver problemas complexos um problema simples de cada vez

Hierarquizar os problemas

Ludwig Krippahl, 2007 18

Hardware

Dentro do PC

HDD P. Gráfica

CPU RAM

...

Bus

Controladores

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

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...

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, ...

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

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

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

Ludwig Krippahl, 2007 25

Implementação Modular

Script• Útil para guardar um pequeno programa

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

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

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

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

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>

Ludwig Krippahl, 2007 30

Implementação Modular

function res=soma(a,b)

res=a+b

endfunctionArgumentos da função

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

Ludwig Krippahl, 2007 32

Implementação Modular

function res=soma(a,b)

res=a+b

endfunctiona e b são cópias dos valores

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

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>

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>

Ludwig Krippahl, 2007 36

Implementação Modular

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

dos valores.

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

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...

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

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

Ludwig Krippahl, 2007 41

Próxima aula

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

• while ... endwhile

• for ... endfor

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.

Ludwig Krippahl, 2007 43

Dúvidas

top related