• Nenhum resultado encontrado

A representação de caracteres no MATLAB segue o chamado Standard Unicode , e pode utilizar o formato

N/A
N/A
Protected

Academic year: 2019

Share "A representação de caracteres no MATLAB segue o chamado Standard Unicode , e pode utilizar o formato"

Copied!
5
0
0

Texto

(1)

STRINGS

A boa compreensão sobre strings é fundamental em qualquer linguagem de programação,

uma vez que toda a informação visual passada ao usuário é realizada mediante a manipulação

desses vetores de caracteres. Porém, diferentemente do C, onde um char poderia ser tratado

diretamente como um tipo numérico, no MATLAB, o tipo char é tratado como uma classe não

numérica. A Figura 1 apresenta um resumo sobre as classes de dados do MATLAB, onde essa

diferença básica pode ser constatada.

Figura 1 - Classes de dados no MATLAB.

A representação de caracteres no MATLAB segue o chamado Standard Unicode, e pode

utilizar o formato UTF-8 ou o UTF-16 dependendo dos caracteres utilizados. Não entraremos em

detalhes sobre essas representações. Nesta aula veremos tão somente algumas funções e

operações envolvendo strings no MATLAB.

Como visto em alguns exemplos anteriormente, strings são definidas entre aspas simples

no MATLAB:

clc

str = 'The Stars Look Down'; disp(str)

whos

Perceba analisando o retorno dos comandos abaixo que a string é um vetor, portanto pode

ser indexada exatamente como vetores numéricos.

disp(str(1)) disp(str(5:9))

str([8 3 end (end-2)])

Pode-se informar à função input que o dado lido será texto. Isso é realizado mediante ao

envio de mais um argumento para a função ('s'). Execute os comandos abaixo e tente escrever

qualquer texto em ambas as solicitações.

(2)

Quando a segunda função é executada, o dado digitado é encarado como texto, sem a

necessidade do uso das aspas simples.

Pode-se também formar arranjos de strings (concatenando várias strings). São várias

funções que podem ser utilizadas para esse processo: strcat(), strvcat(), char().

srtcat() concatena strings passadas como argumentos em uma só string, formando uma

matriz linha composta pela concatenação horizontal das strings.

srtvcat() concatena strings verticalmente, de modo a formar uma matriz onde cada linha

é uma string passada como argumento da função.

A função char() converte inteiros sem sinal em seu equivalente pelo formato Unicode (os

127 primeiros caracteres coincidem com a tabela ASCII). Essa função também pode ser utilizada

para concatenar várias strings verticalmente.

Execute os comandos abaixo e observe atentamente o que é apresentado na tela. Perceba

que as funções automaticamente preenchem as strings com caracteres espaços de modo a formar

uma matriz realizável no MATLAB.

clc clear all

str1 = 'Rush,'; str2 = 'o';

str3 = 'Power Trio';

a = int8([76 105 109 98 111]); ac = char(a);

disp('Vator a:') disp(a)

disp('Vetor Convertido ac') disp(ac)

str4 = char(a,str1); disp('Str4:')

disp(str4)

str5 = strcat(str1,str2,str3,',Show!!'); disp('Str5:')

disp(str5)

str6 = strvcat(str1,str2,str3,'Ok!'); disp('Str6:')

disp(str6) disp('----') whos

A concatenação de strings pode ser realizada utilizando a manipulação direta de matrizes,

como fora visto nas últimas aulas, porém é importante que a concatenação resultante seja

realizável, ou seja, na concatenação vertical, as strings devem possuir o mesmo número de

caracteres, caso contrário, a matriz não será formada corretamente. Tente executar as linhas

apresentadas na sequência:

str1 = 'Sertanejo'; str2 = ' é melhor que '; str3 = 'Rock';

(3)

Perceba que a primeira das duas concatenações (horizontal) foi executada. Já a segunda

operação (concatenação vertical) retornou uma mensagem de erro, uma vez que não foi possível

montar uma matriz válida. As matrizes menores devem ser preenchidas com espaços para que

possuam o mesmo número de caracteres antes da realização da concatenação utilizando este tipo

de expressão.

C

ONVERSÃO DE

N

ÚMEROS PARA

S

TRINGS

Existem funções dedicadas para a conversão de dados numéricos (classe numérica) para

dados de texto (classe char). Essas funções são int2str() e num2str(). A primeira função,

int2str(), converte um inteiro para seu equivalente representado por caracteres. Caso o

número não seja um inteiro, a função arredondará o número antes da execução da função. Já a

função num2str() converte um número qualquer para seu equivalente string, permitindo,

inclusive, a especificação de um formato, seguindo os códigos de formato e a sintaxe de

formatação do comando fprintf(). O código abaixo ilustra o funcionamento das funções.

clear all format compact clc

a = 10*rand(1,5) b = [1 5 76 235] c = int2str(a) d = int2str(b) whos

c = num2str(a)

d = num2str(a,'%10.5f') e = num2str(a,'|Opa:%-15e') f = num2str(a,'|Opa:%15e') format loose

whos

C

ONVERSÃO DE

S

TRINGS PARA

N

ÚMEROS

,

M

ATRIZES E

C

OMANDOS

:

EVAL

()

A função eval() tem especial importância para esta disciplina, uma vez que trabalharemos

em um futuro muito próximo com manipulação simbólica no MATLAB, e a função eval() será

utilizada com certa frequência para a obtenção de resultados numéricos para as expressões

simbólicas simplificadas ou obtidas via funções de manipulação da classe simbólica. Esta função

avalia uma string e transforma a string em um comando equivalente no MATLAB, executando-o.

clc

'194'*10 %tente explicar o que ocorre aqui... eval('128')

a = eval('185')*12; disp(a)

'A = [1 2 3 4]'

(4)

C

OMPARAÇÃO

,

B

USCA E

S

UBSTITUIÇÃO

O MATLAB possui funções dedicadas para comparar, realizar buscas e, inclusive, substituir

pedaços de strings por outras strings. Algumas das funções que se enquadram nesse tipo:

strcmp(), strncmp(), findstr(), strmatch(), strrep() e strtok(). Algumas dessas funções

serão descritas brevemente na sequência, porém é aconselhado a leitura da saída do comando

help para todas as funções citadas.

A função strcmp() compara duas strings passadas como argumentos da função,

retornando verdadeiro (um) se elas forem iguais e falso (zero) caso sejam diferentes. Cuidado, pois

seu resultado difere de como era na linguagem C. strncmp() compara apenas os n primeiros

caracteres da string (o parâmetro n deve ser utilizado como último argumento da função).

findstr() retorna os índices de todas as ocorrências de uma string em outra. A primeira

string passada para a função é a string onde a busca será efetuada. Logicamente, a segunda string

passada para a função será a string a ser buscada.

strrep() realiza a substituição de um pedaço de uma string por outra string, retornando a

string resultante.

Uma operação interessante é realizada pela função strtok(). Ela divide a string segundo

um delimitador (um caractere). Tal delimitador (que inclusive pode ser mais de um) é especificado

na função como último argumento. Caso não seja especificado um caractere, a função utilizará

como delimitador o caractere espaço.

Para correta compreensão da sintaxe e funcionalidade envolvida na execução de comandos

com essas funções, estude o código abaixo.

clc

str1 = 'Opa! Olha como é fácil manipular matrizes no MATLAB'; str2 = 'Opa!';

strcmp(str1,str2) strncmp(str1,str2,4) findstr(str1,'Opa!') findstr(str1,'ma')

str3 = strrep(str1,'Olha','Mira!!'); disp(str3)

[a,b] = strtok(str1,'r'); %a ultima string lista os possíveis

disp(a) %delimitadores

disp(b)

[a,b] = strtok(str1,'pr'); %que podem ser vários. disp(a)

disp(b)

[a,b] = strtok(str1); %o delimitador será espaço nesse caso disp(a)

disp(b)

A

LTERAR

C

AIXA

(A

LTA

/

B

AIXA

)

(5)

clc

str1 = 'Opa! Olha como é fácil manipular matrizes no MATLAB'; str2 = upper(str1);

disp(str2);

str3 = lower(str2); disp(str3)

E

XERCÍCIOS

Exercício 1 A conversão de bases numéricas não será abordada. Como exercício, porém, leia a

saída do comando help para as seguintes funções de conversão de base: dec2bin(), dec2hex() e dec2base().

Exercício 2 Crie um script que leia seu nome em strings separadas, após, concatene horizontal e

verticalmente as strings de seu nome.

Exercício 3 Crie um script que lê seu nome e separe nome e sobrenome em strings separadas.

Exercício 4 Escreva um script que conta as vogais em uma string digitada do teclado.

Exercício 5 Escreva um script que muda a caixa (para maiúsculas) da primeira palavra de uma

Imagem

Figura 1 - Classes de dados no MATLAB.

Referências

Documentos relacionados

A Tabela 15 apresenta o valor unitário obtido pelo modelo MGEO (erro espacial) já apresentado e pelos modelos MGEO (erro espacial) obtidos através dos diversos

Desta maneira, vemos que Rousseau conclui do homem natural que este tende a viver sem se aglomerar em grupos, sociedades, e, mesmo quando começa a se agrupar, ou contar

No desenvolvemento deste proxecto realízase primeiro unha revisión da situación do turismo en España e en Galicia (cunha puntualización sobre o destino Ferrolterra - Rías Altas), a

Luiz é graduado em Engenharia Elétrica com ênfase em Sistemas de Apoio à Decisão e Engenharia de Produção com ênfase em Elétrica pela PUC/RJ e possui Mestrado

Como irá trabalhar com JavaServer Faces voltado para um container compatível com a tecnologia Java EE 5, você deverá baixar a versão JSF 1.2, a utilizada nesse tutorial.. Ao baixar

O aumento no número de neurônios da camada intermediária, assim como, a inclusão de uma segunda camada não favoreceu melhores ajustes, enquanto o aumento no número de

Foi apresentada, pelo Ademar, a documentação encaminhada pelo APL ao INMETRO, o qual argumentar sobre a PORTARIA Nº 398, DE 31 DE JULHO DE 2012 E SEU REGULAMENTO TÉCNICO

Foram feitas, ainda, aproximadamente 200 prospecções com trado para descrição dos solos em diferentes pontos da folha, além da consulta de seis perfis de solos descritos no