Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 3.
Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2.
Transcript of Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2.
![Page 1: Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2.](https://reader034.fdocuments.net/reader034/viewer/2022051413/552fc102497959413d8bdd8f/html5/thumbnails/1.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022051413/552fc102497959413d8bdd8f/html5/thumbnails/2.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022051413/552fc102497959413d8bdd8f/html5/thumbnails/3.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022051413/552fc102497959413d8bdd8f/html5/thumbnails/4.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022051413/552fc102497959413d8bdd8f/html5/thumbnails/5.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022051413/552fc102497959413d8bdd8f/html5/thumbnails/6.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022051413/552fc102497959413d8bdd8f/html5/thumbnails/7.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022051413/552fc102497959413d8bdd8f/html5/thumbnails/8.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022051413/552fc102497959413d8bdd8f/html5/thumbnails/9.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022051413/552fc102497959413d8bdd8f/html5/thumbnails/10.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022051413/552fc102497959413d8bdd8f/html5/thumbnails/11.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022051413/552fc102497959413d8bdd8f/html5/thumbnails/12.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022051413/552fc102497959413d8bdd8f/html5/thumbnails/13.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022051413/552fc102497959413d8bdd8f/html5/thumbnails/14.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022051413/552fc102497959413d8bdd8f/html5/thumbnails/15.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022051413/552fc102497959413d8bdd8f/html5/thumbnails/16.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022051413/552fc102497959413d8bdd8f/html5/thumbnails/17.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022051413/552fc102497959413d8bdd8f/html5/thumbnails/18.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022051413/552fc102497959413d8bdd8f/html5/thumbnails/19.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022051413/552fc102497959413d8bdd8f/html5/thumbnails/20.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022051413/552fc102497959413d8bdd8f/html5/thumbnails/21.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022051413/552fc102497959413d8bdd8f/html5/thumbnails/22.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022051413/552fc102497959413d8bdd8f/html5/thumbnails/23.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022051413/552fc102497959413d8bdd8f/html5/thumbnails/24.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022051413/552fc102497959413d8bdd8f/html5/thumbnails/25.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022051413/552fc102497959413d8bdd8f/html5/thumbnails/26.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022051413/552fc102497959413d8bdd8f/html5/thumbnails/27.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022051413/552fc102497959413d8bdd8f/html5/thumbnails/28.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022051413/552fc102497959413d8bdd8f/html5/thumbnails/29.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022051413/552fc102497959413d8bdd8f/html5/thumbnails/30.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022051413/552fc102497959413d8bdd8f/html5/thumbnails/31.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022051413/552fc102497959413d8bdd8f/html5/thumbnails/32.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022051413/552fc102497959413d8bdd8f/html5/thumbnails/33.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022051413/552fc102497959413d8bdd8f/html5/thumbnails/34.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022051413/552fc102497959413d8bdd8f/html5/thumbnails/35.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022051413/552fc102497959413d8bdd8f/html5/thumbnails/36.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022051413/552fc102497959413d8bdd8f/html5/thumbnails/37.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022051413/552fc102497959413d8bdd8f/html5/thumbnails/38.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022051413/552fc102497959413d8bdd8f/html5/thumbnails/39.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022051413/552fc102497959413d8bdd8f/html5/thumbnails/40.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022051413/552fc102497959413d8bdd8f/html5/thumbnails/41.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022051413/552fc102497959413d8bdd8f/html5/thumbnails/42.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022051413/552fc102497959413d8bdd8f/html5/thumbnails/43.jpg)
Ludwig Krippahl, 2007 43
Dúvidas