b="outra string" b = outra string octave:69> c=string error: `string" undefined near line 69 column 3 error: evaluating assignment expression near line 69, column 2"> b="outra string" b = outra string octave:69> c=string error: `string" undefined near line 69 column 3 error: evaluating assignment expression near line 69, column 2">

A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 2.

Apresentações semelhantes


Apresentação em tema: "Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 2."— Transcrição da apresentação:

1 Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 2

2 Ludwig Krippahl, 2009 2 Na aula de hoje... Strings: texto e caracteres Gráficos Algoritmos Scripts, Funções e Variáveis

3 Ludwig Krippahl, 2009 3 Strings (texto) Uma string é uma sequência de caracteres, delimitada por aspas ou plicas. octave:67> a="string" a = string octave:68> b="outra string" b = outra string octave:69> c=string error: `string" undefined near line 69 column 3 error: evaluating assignment expression near line 69, column 2

4 Ludwig Krippahl, 2009 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)

5 Ludwig Krippahl, 2009 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-

6 Ludwig Krippahl, 2009 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 separadas 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

7 Ludwig Krippahl, 2009 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

8 Ludwig Krippahl, 2009 8 Funções para strings (exemplos) octave:76> split("um;dois;três;quatro",";") ans = um dois três quatro octave:77>

9 Ludwig Krippahl, 2009 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. Só quando string com "..."

10 Ludwig Krippahl, 2009 10 Gráficos 2D plot(x,y)(x e y vectores) hold onpara não tirar gráfico anterior clearplotapagar subplot(linha, coluna, indice)

11 Ludwig Krippahl, 2009 11 Gráficos 2D Exemplo x=-10:10; plot(x,x.^3)

12 Ludwig Krippahl, 2009 12 Gráficos 2D Exemplo x=-10:10; plot(x,x.^3)

13 Ludwig Krippahl, 2009 13 Gráficos 2D Exemplo x=-10:10; subplot(2,1,1) plot(x,x.^2)

14 Ludwig Krippahl, 2009 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)

15 Ludwig Krippahl, 2009 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ī

16 Ludwig Krippahl, 2009 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

17 Ludwig Krippahl, 2009 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

18 Ludwig Krippahl, 2009 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

19 Ludwig Krippahl, 2009 19 Implementação Modular Pegar no pão Pôr faca na mão Cortar fatia Pôr na torradeira, ligar Enquanto não está pronta Esperar

20 Ludwig Krippahl, 2009 20 Implementação Modular Pegar no pão Pôr faca na mão Cortar fatia Pôr na torradeira, ligar Enquanto não está pronta Esperar

21 Ludwig Krippahl, 2009 21 Implementação Modular Pegar no pão Pôr faca na mão Cortar fatia Torrada = Torradeira(Pão) Procedimento Função

22 Ludwig Krippahl, 2009 22 Programação Resolver problemas complexos um problema simples de cada vez Hierarquizar os problemas

23 Ludwig Krippahl, 2009 23 Programação Procedimento Mostrar valores no ecrã, gravar um ficheiro, etc. Função Devolve um ou mais valores

24 Ludwig Krippahl, 2009 24 Implementação Modular Pegar no pão Pôr faca na mão Cortar fatia Torrada = Torradeira(Pão) Como fazer no Octave... Procedimento Função

25 Ludwig Krippahl, 2009 25 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

26 Ludwig Krippahl, 2009 26 Implementação Modular Mudar para a pasta de trabalho: (exemplos, confirmar no laboratório) cd "c:\\documents and settings\\temp\\my documents" cd 'c:\documents and settings\temp\my documents Correr o editor: edit Gravar o ficheiro: teste.m Gravar antes de correr no Octave

27 Ludwig Krippahl, 2009 27 Implementação Modular Script (no teste.m) a=2 (no Octave) octave:13> a=4 a = 4 octave:14> teste a = 2 octave:15> a a = 2

28 Ludwig Krippahl, 2009 28 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.

29 Ludwig Krippahl, 2009 29 Implementação Modular Exemplo conc.m mmNaCl=58.4 v=0.125 q=2/mmNaCl c=q/v

30 Ludwig Krippahl, 2009 30 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)

31 Ludwig Krippahl, 2009 31 Implementação Modular Procedimentos e funções: Procedimento não devolve valores Função devolve valores. Mas no Octave é tudo function, vamos chamar função a ambos.

32 Ludwig Krippahl, 2009 32 Implementação Modular Function As variáveis são locais e independentes. definir uma função function igualdois a=2 endfunction (no Octave) octave:13> a=4 a = 4 octave:14> igualdois a = 2 octave:15> a a = 4

33 Ludwig Krippahl, 2009 33 Implementação Modular Function As variáveis são locais e independentes. (num ficheiro igualdois.m) function igualdois a=2 endfunction (no Octave) octave:13> a=4 a = 4 octave:14> iguadois a = 2 octave:15> a a = 4 Mesmo nome que o ficheiro

34 Ludwig Krippahl, 2009 34 Implementação Modular Function As variáveis são locais e independentes. function igualdois a=2 endfunction A variável a da função só existe dentro da função

35 Ludwig Krippahl, 2009 35 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+b endfunction (no Octave) octave:16> soma(2,5) res = 7 ans = 7 octave:17>

36 Ludwig Krippahl, 2009 36 Implementação Modular function res=soma(a,b) res=a+b endfunction Argumentos da função

37 Ludwig Krippahl, 2009 37 Implementação Modular function res=soma(a,b) res=a+b endfunction Nome da variável (na função) com o valor a devolver

38 Ludwig Krippahl, 2009 38 Implementação Modular function res=soma(a,b) res=a+b endfunction a e b são cópias dos valores

39 Ludwig Krippahl, 2009 39 Implementação Modular function x=incrementa(x) x=x+1 endfunction x é cópia do valor octave:17> x=3 x = 3 octave:18> incrementa(x) x = 4 ans = 4 octave:19> x x = 3

40 Ludwig Krippahl, 2009 40 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 = 7 ans = 7 octave:17>

41 Ludwig Krippahl, 2009 41 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 = 7 octave:21>

42 Ludwig Krippahl, 2009 42 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)

43 Ludwig Krippahl, 2009 43 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

44 Ludwig Krippahl, 2009 44 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...

45 Ludwig Krippahl, 2009 45 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 undefined error: evaluating assignment expression near line 24, column 2

46 Ludwig Krippahl, 2009 46 Exemplo: separar nomes Script + função function res = palavran (frase, n) m=split(frase, " " ); res=m(n,:); endfunction

47 Ludwig Krippahl, 2009 47 Exemplo: separar nomes Script + função input(mensagem)avalia expressão input(mensagen, "s")lê uma string disp( " Separador de nomes " ); n=input( " Introduza o nome completo:\n ", " s " ); p=input( " Introduza o índice da palavra que quer:\n " ); palavran(n,p)

48 Ludwig Krippahl, 2009 48 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!)

49 Ludwig Krippahl, 2009 49 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

50 Ludwig Krippahl, 2009 50 Dúvidas


Carregar ppt "Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 2."

Apresentações semelhantes


Anúncios Google