![Page 1: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 2](https://reader035.vdocuments.com.br/reader035/viewer/2022081518/552fc102497959413d8bddae/html5/thumbnails/1.jpg)
Ludwig Krippahl, 2008
Programação para as Ciências Experimentais
2007/8
Teórica 2
![Page 2: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 2](https://reader035.vdocuments.com.br/reader035/viewer/2022081518/552fc102497959413d8bddae/html5/thumbnails/2.jpg)
Ludwig Krippahl, 2008 2
Na aula de hoje...
Strings: texto e caracteres Gráficos Algoritmos Funções e Variáveis
![Page 3: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 2](https://reader035.vdocuments.com.br/reader035/viewer/2022081518/552fc102497959413d8bddae/html5/thumbnails/3.jpg)
Ludwig Krippahl, 2008 3
Strings (texto) Uma string é uma sequência de caracteres,
delimitada por aspas ou plicas.octave:67> a="string"a = stringoctave:68> b="outra string"b = outra stringoctave:69> c=stringerror: `string" undefined near line 69 column 3error: evaluating assignment expression near line
69, column 2
![Page 4: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 2](https://reader035.vdocuments.com.br/reader035/viewer/2022081518/552fc102497959413d8bddae/html5/thumbnails/4.jpg)
Ludwig Krippahl, 2008 4
Strings (texto)
Excepção para a regra de tamanho quando combinamos vectores:
octave:69> [a;b]
ans =
string
outra string
(linhas ajustadas acrescentando espaços)
![Page 5: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 2](https://reader035.vdocuments.com.br/reader035/viewer/2022081518/552fc102497959413d8bddae/html5/thumbnails/5.jpg)
Ludwig Krippahl, 2008 5
Strings (texto)
Excepção para a regra de tamanho quando combinamos vectores:
(linhas ajustadas acrescentando espaços)
octave:73> [[a;b][“-”;”-”]]
ans =
string -
outra string-
![Page 6: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 2](https://reader035.vdocuments.com.br/reader035/viewer/2022081518/552fc102497959413d8bddae/html5/thumbnails/6.jpg)
Ludwig Krippahl, 2008 6
Funções para strings (experimentem) findstr(s,t) : Encontra todas as posições de da menor na
maior. split(s,t) : Divide uma string num vector (coluna) de
strings separados por t strrep(s, x, y) : substitui todas as ocorrências de x por y
na string s str2num(s) : converte um número representado numa
string para um número tolower(s) / toupper(s) : converte uma string para
minúsculas/maiúsculas strcmp(s1,s2) : compara as strings s1 com s2, se forem
iguais retorna 1, se diferentes retorna 0
![Page 7: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 2](https://reader035.vdocuments.com.br/reader035/viewer/2022081518/552fc102497959413d8bddae/html5/thumbnails/7.jpg)
Ludwig Krippahl, 2008 7
Funções para strings (exemplos)
octave:74> findstr("a","abcababba")
ans =
1 4 6 9
octave:75> findstr("abcababba","a")
ans =
1 4 6 9
![Page 8: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 2](https://reader035.vdocuments.com.br/reader035/viewer/2022081518/552fc102497959413d8bddae/html5/thumbnails/8.jpg)
Ludwig Krippahl, 2008 8
Funções para strings (exemplos)
octave:76> split("um;dois;três;quatro",";")
ans =
um
dois
três
quatro
octave:77>
![Page 9: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 2](https://reader035.vdocuments.com.br/reader035/viewer/2022081518/552fc102497959413d8bddae/html5/thumbnails/9.jpg)
Ludwig Krippahl, 2008 9
Caracteres especiais
A barra \ serve para indicar caracteres especiais.
E.g.• \b -> backspace, apaga um caracter
• \t -> tab
• \n -> nova linha
• \\ -> para escrever a barra. Importante no cd.
![Page 10: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 2](https://reader035.vdocuments.com.br/reader035/viewer/2022081518/552fc102497959413d8bddae/html5/thumbnails/10.jpg)
Ludwig Krippahl, 2008 10
Gráficos 2D
plot(x,y) (x e y vectores) hold on para não tirar gráfico
anterior clearplot apagar Subplot(linha, coluna, indice)
![Page 11: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 2](https://reader035.vdocuments.com.br/reader035/viewer/2022081518/552fc102497959413d8bddae/html5/thumbnails/11.jpg)
Ludwig Krippahl, 2008 11
Gráficos 2D
Exemplo
x=-10:10;
plot(x,x.^3)
![Page 12: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 2](https://reader035.vdocuments.com.br/reader035/viewer/2022081518/552fc102497959413d8bddae/html5/thumbnails/12.jpg)
Ludwig Krippahl, 2008 12
Gráficos 2D
Exemplo
x=-10:10;
plot(x,x.^3)
![Page 13: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 2](https://reader035.vdocuments.com.br/reader035/viewer/2022081518/552fc102497959413d8bddae/html5/thumbnails/13.jpg)
Ludwig Krippahl, 2008 13
Gráficos 2D
Exemplo
x=-10:10;
subplot(2,1,1)
plot(x,x.^2)
![Page 14: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 2](https://reader035.vdocuments.com.br/reader035/viewer/2022081518/552fc102497959413d8bddae/html5/thumbnails/14.jpg)
Ludwig Krippahl, 2008 14
Gráficos 2D
Exemplo
x=-10:10;
subplot(2,1,1)
plot(x,x.^2)
subplot(2,1,2)
plot(x,100-x.^2)
![Page 15: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 2](https://reader035.vdocuments.com.br/reader035/viewer/2022081518/552fc102497959413d8bddae/html5/thumbnails/15.jpg)
Ludwig Krippahl, 2008 15
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 16: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 2](https://reader035.vdocuments.com.br/reader035/viewer/2022081518/552fc102497959413d8bddae/html5/thumbnails/16.jpg)
Ludwig Krippahl, 2008 16
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 17: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 2](https://reader035.vdocuments.com.br/reader035/viewer/2022081518/552fc102497959413d8bddae/html5/thumbnails/17.jpg)
Ludwig Krippahl, 2008 17
«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 18: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 2](https://reader035.vdocuments.com.br/reader035/viewer/2022081518/552fc102497959413d8bddae/html5/thumbnails/18.jpg)
Ludwig Krippahl, 2008 18
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 19: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 2](https://reader035.vdocuments.com.br/reader035/viewer/2022081518/552fc102497959413d8bddae/html5/thumbnails/19.jpg)
Ludwig Krippahl, 2008 19
Implementação Modular
Pegar no pão Encontrar faca Cortar fatia Pôr na torradeira, ligar Enquanto não está pronta
• Esperar
![Page 20: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 2](https://reader035.vdocuments.com.br/reader035/viewer/2022081518/552fc102497959413d8bddae/html5/thumbnails/20.jpg)
Ludwig Krippahl, 2008 20
Implementação Modular
Pegar no pão Encontrar faca Cortar fatia Pôr na torradeira, ligar Enquanto não está pronta
• Esperar
![Page 21: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 2](https://reader035.vdocuments.com.br/reader035/viewer/2022081518/552fc102497959413d8bddae/html5/thumbnails/21.jpg)
Ludwig Krippahl, 2008 21
Implementação Modular
Pegar no pão Encontrar faca Cortar fatia Torrada = Torradeira(Pão)
Procedimento
Função
![Page 22: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 2](https://reader035.vdocuments.com.br/reader035/viewer/2022081518/552fc102497959413d8bddae/html5/thumbnails/22.jpg)
Ludwig Krippahl, 2008 22
Programação
Resolver problemas complexos um problema simples de cada vez
Hierarquizar os problemas
![Page 23: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 2](https://reader035.vdocuments.com.br/reader035/viewer/2022081518/552fc102497959413d8bddae/html5/thumbnails/23.jpg)
Ludwig Krippahl, 2008 23
Implementação Modular
Pegar no pão Encontrar faca Cortar fatia Torrada = Torradeira(Pão)
Como fazer no Octave...
Procedimento
Função
![Page 24: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 2](https://reader035.vdocuments.com.br/reader035/viewer/2022081518/552fc102497959413d8bddae/html5/thumbnails/24.jpg)
Ludwig Krippahl, 2008 24
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 25: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 2](https://reader035.vdocuments.com.br/reader035/viewer/2022081518/552fc102497959413d8bddae/html5/thumbnails/25.jpg)
Ludwig Krippahl, 2008 25
Implementação Modular
Mudar para a pasta de trabalho:
cd “c:\\documents and settings\\temp\\my documents”
Correr o editor: edit Gravar o ficheiro: teste.m Gravar antes de correr no Octave
![Page 26: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 2](https://reader035.vdocuments.com.br/reader035/viewer/2022081518/552fc102497959413d8bddae/html5/thumbnails/26.jpg)
Ludwig Krippahl, 2008 26
Implementação Modular
Script
(no teste.m)
a=2
(no Octave)
octave:13> a=4a = 4octave:14> testea = 2octave:15> aa = 2
![Page 27: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 2](https://reader035.vdocuments.com.br/reader035/viewer/2022081518/552fc102497959413d8bddae/html5/thumbnails/27.jpg)
Ludwig Krippahl, 2008 27
Implementação Modular
Script• Útil para guardar um pequeno programa
reutilizável, mas não é um módulo independente.
• As variáveis no script são as mesmas que fora do script.
![Page 28: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 2](https://reader035.vdocuments.com.br/reader035/viewer/2022081518/552fc102497959413d8bddae/html5/thumbnails/28.jpg)
Ludwig Krippahl, 2008 28
Implementação Modular
Exemplo conc.m
mmNaCl=58.4
v=0.125
q=2/mmNaCl
c=q/v
![Page 29: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 2](https://reader035.vdocuments.com.br/reader035/viewer/2022081518/552fc102497959413d8bddae/html5/thumbnails/29.jpg)
Ludwig Krippahl, 2008 29
Implementação Modular
Melhorias
mmNaCl=58.4;
v=input(“digite o volume em dm3\n”)
q=2/mmNaCl;
c=q/v;
disp(“a concentração é”)
disp(c)
![Page 30: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 2](https://reader035.vdocuments.com.br/reader035/viewer/2022081518/552fc102497959413d8bddae/html5/thumbnails/30.jpg)
Ludwig Krippahl, 2008 30
Implementação Modular
Procedimentos e funções:• Procedimento não devolve valores (hoje
vamos ver estes)
• Função devolve valores.
• Mas no Octave é tudo function, vamos chamar função a ambos.
![Page 31: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 2](https://reader035.vdocuments.com.br/reader035/viewer/2022081518/552fc102497959413d8bddae/html5/thumbnails/31.jpg)
Ludwig Krippahl, 2008 31
Implementação Modular
Function• As variáveis são locais e independentes.
definir uma função
function igualdoisa=2endfunction
(no Octave)
octave:13> a=4a = 4octave:14> igualdoisa = 2octave:15> aa = 4
![Page 32: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 2](https://reader035.vdocuments.com.br/reader035/viewer/2022081518/552fc102497959413d8bddae/html5/thumbnails/32.jpg)
Ludwig Krippahl, 2008 32
Implementação Modular
Function• As variáveis são locais e independentes.
(num ficheiro igualdois.m)
function igualdoisa=2endfunction
(no Octave)
octave:13> a=4a = 4octave:14> iguadoisa = 2octave:15> aa = 4
Mesmo nome que o ficheiro
![Page 33: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 2](https://reader035.vdocuments.com.br/reader035/viewer/2022081518/552fc102497959413d8bddae/html5/thumbnails/33.jpg)
Ludwig Krippahl, 2008 33
Implementação Modular
Function• As variáveis são locais e independentes.
function igualdoisa=2endfunction
A variável a da função só existe dentro da função
![Page 34: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 2](https://reader035.vdocuments.com.br/reader035/viewer/2022081518/552fc102497959413d8bddae/html5/thumbnails/34.jpg)
Ludwig Krippahl, 2008 34
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 35: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 2](https://reader035.vdocuments.com.br/reader035/viewer/2022081518/552fc102497959413d8bddae/html5/thumbnails/35.jpg)
Ludwig Krippahl, 2008 35
Implementação Modular
function res=soma(a,b)
res=a+b
endfunctionArgumentos da função
![Page 36: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 2](https://reader035.vdocuments.com.br/reader035/viewer/2022081518/552fc102497959413d8bddae/html5/thumbnails/36.jpg)
Ludwig Krippahl, 2008 36
Implementação Modular
function res=soma(a,b)
res=a+b
endfunctionNome da variável (na função) com o valor a devolver
![Page 37: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 2](https://reader035.vdocuments.com.br/reader035/viewer/2022081518/552fc102497959413d8bddae/html5/thumbnails/37.jpg)
Ludwig Krippahl, 2008 37
Implementação Modular
function res=soma(a,b)
res=a+b
endfunctiona e b são cópias dos valores
![Page 38: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 2](https://reader035.vdocuments.com.br/reader035/viewer/2022081518/552fc102497959413d8bddae/html5/thumbnails/38.jpg)
Ludwig Krippahl, 2008 38
Implementação Modular
function x=incrementa(x)
x=x+1
endfunctionx é cópia do valor
octave:17> x=3x = 3octave:18> incrementa(x)x = 4ans = 4octave:19> xx = 3
![Page 39: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 2](https://reader035.vdocuments.com.br/reader035/viewer/2022081518/552fc102497959413d8bddae/html5/thumbnails/39.jpg)
Ludwig Krippahl, 2008 39
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 40: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 2](https://reader035.vdocuments.com.br/reader035/viewer/2022081518/552fc102497959413d8bddae/html5/thumbnails/40.jpg)
Ludwig Krippahl, 2008 40
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 41: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 2](https://reader035.vdocuments.com.br/reader035/viewer/2022081518/552fc102497959413d8bddae/html5/thumbnails/41.jpg)
Ludwig Krippahl, 2008 41
Implementação Modular
Importante:• Os argumentos da função são cópias locais
dos valores.
• As variáveis na função são independentes mesmo que haja outras com o mesmo nome.
• Só “sai” da função o que vier antes do nome da função:
function res=soma(x,y)
![Page 42: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 2](https://reader035.vdocuments.com.br/reader035/viewer/2022081518/552fc102497959413d8bddae/html5/thumbnails/42.jpg)
Ludwig Krippahl, 2008 42
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 43: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 2](https://reader035.vdocuments.com.br/reader035/viewer/2022081518/552fc102497959413d8bddae/html5/thumbnails/43.jpg)
Ludwig Krippahl, 2008 43
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 44: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 2](https://reader035.vdocuments.com.br/reader035/viewer/2022081518/552fc102497959413d8bddae/html5/thumbnails/44.jpg)
Ludwig Krippahl, 2008 44
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 45: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 2](https://reader035.vdocuments.com.br/reader035/viewer/2022081518/552fc102497959413d8bddae/html5/thumbnails/45.jpg)
Ludwig Krippahl, 2008 45
Aula de hoje
Strings e gráficos. 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 46: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 2](https://reader035.vdocuments.com.br/reader035/viewer/2022081518/552fc102497959413d8bddae/html5/thumbnails/46.jpg)
Ludwig Krippahl, 2008 46
Para estudar isto
Manual Octave• Capitulo 5 (introdução) Strings
• Secção 15.1.1 Gráficos simples 2D
• Secção 15.1.4 Vários gráficos
• Secção 11.1 Funções
![Page 47: Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 2](https://reader035.vdocuments.com.br/reader035/viewer/2022081518/552fc102497959413d8bddae/html5/thumbnails/47.jpg)
Ludwig Krippahl, 2008 47
Dúvidas