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

Preview:

Citation preview

Ludwig Krippahl, 2008

Programação para as Ciências Experimentais

2007/8

Teórica 2

Ludwig Krippahl, 2008 2

Na aula de hoje...

Strings: texto e caracteres Gráficos Algoritmos Funções e Variáveis

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

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)

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-

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

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

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>

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.

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)

Ludwig Krippahl, 2008 11

Gráficos 2D

Exemplo

x=-10:10;

plot(x,x.^3)

Ludwig Krippahl, 2008 12

Gráficos 2D

Exemplo

x=-10:10;

plot(x,x.^3)

Ludwig Krippahl, 2008 13

Gráficos 2D

Exemplo

x=-10:10;

subplot(2,1,1)

plot(x,x.^2)

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)

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ī

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

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

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

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

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

Ludwig Krippahl, 2008 21

Implementação Modular

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

Procedimento

Função

Ludwig Krippahl, 2008 22

Programação

Resolver problemas complexos um problema simples de cada vez

Hierarquizar os problemas

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

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

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

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

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.

Ludwig Krippahl, 2008 28

Implementação Modular

Exemplo conc.m

mmNaCl=58.4

v=0.125

q=2/mmNaCl

c=q/v

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)

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.

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

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

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

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>

Ludwig Krippahl, 2008 35

Implementação Modular

function res=soma(a,b)

res=a+b

endfunctionArgumentos da função

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

Ludwig Krippahl, 2008 37

Implementação Modular

function res=soma(a,b)

res=a+b

endfunctiona e b são cópias dos valores

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

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>

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>

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)

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

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

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

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

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

Ludwig Krippahl, 2008 47

Dúvidas

Recommended