Manipulação de strings e conversão entre tipos de dados Avaliação de strings A função eval() A estrutura try-catch A função IS para strings Conversão entre tipos de dados Instituto Superior Técnico, Dep. de Engenharia Mecânica - ACCAII
Avaliação de strings: a função eval Descrição: Execute (avalia) a(s) expressão(ões) ou instrução(õe) definidas numa string. Sintaxe: eval(s) ou [x,y,,z] = eval(s) 2
Avaliação de strings: a função eval Exemplo 1: >> x = [2 6 8 3]; >> eval('plot(x)') 3
Avaliação de strings: a função eval Exemplo 2: 4
Avaliação de strings: a função eval Exemplo 2 (cont.): >> exemplo_2 Escolha o tipo de gráfico: bar 5
Avaliação de strings: a função eval Exemplo 3: 6
Avaliação de strings: a função eval Exemplo 3 (cont.): >> exemplo_3 Escreva uma expressão matemática f(x): 2*(x^2)+4*x+10 Defina o domínio de f(x) [min max]: [-10 10] Defina o incremento numérico: 0.01 7
Avaliação de strings: a função eval Exemplo 3 (cont.): 8
Avaliação de strings: a função eval Exemplo 3 (cont.): >> exemplo_3 Escreva uma expressão matemática f(x): 2*(x^2)+4*x(10 Defina o domínio de f(x) [min max]: [-10 10] Defina o incremento numérico: 0.01??? Error: Expression or statement is incorrect-- possibly unbalanced (, {, or [. Error in ==> exemplo_3 at 19 PORQUÊ????? y(k) = eval(expressao); 9
A estrutura try-catch Descrição: É uma estrutura de selecção para lidar com erros. Executa o bloco de instruções entre as palavras chave try e catch se não existirem erros, caso contrário executa as instruções entre as palavras chave catch e end. Sintaxe: TRY statement,..., statement, CATCH (ME) statement,..., statement END 10
A estrutura try-catch Exemplo 4: 11
A estrutura try-catch Exemplo 4 (cont.): >> exemplo_4; Escreva uma expressão matemática f(x): 2*(x^2)+4*x(10 Defina o domínio de f(x) [min max]: [-10 10] Defina o incremento numérico: 0.01 A expressão não é sintacticamente correcta! Escreva uma expressão matemática f(x): 2*(x^2)+4*x+10 Defina o domínio de f(x) [min max]: [-10 10] Defina o incremento numérico: 0.01 12
A estrutura try-catch Exemplo 4 (cont.): 13
A estrutura try-catch Exemplo 5: 14
A estrutura try-catch Exemplo 5 (cont.): >> exemplo_5; Escreva uma expressão matemática f(x): 2*(x^2)+4*x(10 Defina o domínio de f(x) [min max]: [-10 10] Defina o incremento numérico: 0.01 MException Properties: identifier: 'MATLAB:m_unbalanced_parens' message: [1x76 char] cause: {} stack: [1x1 struct] Methods 15
A estrutura try-catch Exemplo 5 (cont.): Escreva uma expressão matemática f(x): 2*(x^2)+4*x+10 Defina o domínio de f(x) [min max]: 0.01 Defina o incremento numérico: 0.01 MException Properties: identifier: 'MATLAB:badsubscript' message: [1x77 char] cause: {} stack: [1x1 struct] Methods Escreva uma expressão matemática f(x): 16
A função is aplicada a strings Existem um conjunto de funções IS que podem ser aplicadas a strings e que devolvem um valor lógico, ou um array de valores lógicos. Função isletter isspace ischar Descrição Retorna o valor lógico true se o caracter é uma letra [também opera em arrays] Retorna o valor lógico true se o caracter é um espaço em branco [também opera em arrays] Retorna o valor lógico true se o array for do tipo char (caracter) 17
A função is aplicada a strings Exemplo 6: >> isletter('z') ans = 1 >> isletter('a1? Z') ans = 1 0 0 0 1 18
A função is aplicada a strings Exemplo 7: >> isspace('gd ewquy ye') ans = 0 0 1 0 0 0 0 0 1 0 0 >> ischar('jhf') ans = 1 >> ischar(123) ans = 0 >> ischar([1 2 3]) ans = 0 19
Conversão entre tipo string e tipos numéricos Existem um conjunto de funções que permitem converter valores numéricos em strings, e vice-versa. Função int2str num2str str2double str2num Descrição Converte um valor inteiro numa string. Converte qualquer valor numérico numa string Converte uma string num double Converte uma matriz de strings num array de doubles 20
Conversão entre tipo string e tipos numéricos Exemplos: >> n_inteiro = randint(1,1,[1 100]) n_inteiro = 82 >> s1=int2str(n_inteiro) s1 = 82 >> size(n_inteiro) ans = 1 1 >> size(s1) ans = 1 2 21
Conversão entre tipo string e tipos numéricos Exemplos: >> s2=num2str(3.1252) s2 = 3.1252 >> s3=num2str(3.1*10^2) s3 = 310 >> s4=num2str(pi,4) s4 = 3.142 22
Conversão entre tipo string e tipos numéricos Exemplos: >> s5=num2str(pi,'%.2f') s5 = 3.14 >> s6='736.36'; >> n_double=str2double(s6) n_double = 736.3600 >> whos n_double Name Size Bytes Class Attributes n_double 1x1 8 double 23
Conversão entre tipo string e tipos numéricos Exemplos: >> s7 = ['1 2';'3 4'] s7 = 1 2 3 4 >> mat_double=str2num(s7) mat_double = 1 2 3 4 24
Conversão entre tipo string e tipos numéricos Exemplos: >> whos s7 Name Size Bytes Class Attributes s7 2x3 12 char >> whos mat_double Name Size Bytes Class Attributes mat_double 2x2 32 double 25
Referências Capítulo 6 de Stormy Attaway (2009), Matlab: A Practical Introduction to Programming and Problem Solving, Elsevier. Getting started with MATLAB: http://www.mathworks.com/access/helpdesk/help/pdf_doc/ matlab/getstart.pdf 26