Diferenças entre edições de "Strings, Horas e Datas"

De GNU Octave
Ir para: navegação, pesquisa
(Exercício)
(Exercício)
Linha 127: Linha 127:
  
 
# Pegue numa frase, contendo espaços, maiúsculas e minúsculas e verifique se é um [http://pt.wikipedia.org/wiki/Pal%C3%ADndromo palíndromo]. Use, por exemplo, a frase: '''"A base do teto desaba"'''
 
# Pegue numa frase, contendo espaços, maiúsculas e minúsculas e verifique se é um [http://pt.wikipedia.org/wiki/Pal%C3%ADndromo palíndromo]. Use, por exemplo, a frase: '''"A base do teto desaba"'''
 +
# Dado o nome completo de uma pessoa, calcule o apelido. Ou seja, aplique uma composição de funções a um nome de maneira a ficar só com o apelido.
  
 
{| class="collapsible collapsed wikitable"
 
{| class="collapsible collapsed wikitable"
Linha 148: Linha 149:
 
>> all(fraselimpa == fliplr(fraselimpa))
 
>> all(fraselimpa == fliplr(fraselimpa))
 
ans =  1
 
ans =  1
 +
</syntaxhighlight>
 +
|-
 +
| 2
 +
| Apelido: do último espaço até ao fim
 +
| <syntaxhighlight>>> nome = 'Jorge Gustavo Rocha'
 +
nome = Jorge Gustavo Rocha
 +
>> nome(find(isspace(nome))(end):end)
 +
ans =  Rocha
 
</syntaxhighlight>
 
</syntaxhighlight>
 
|}
 
|}

Revisão das 00h58min de 9 de outubro de 2013

Em Octave, podem-se representar e manipular strings, isto é, cadeias de caracteres.

Constantes

Uma string consiste numa sequência de caracteres. Um string pode ser declarada usando " (aspas) ou ' (pelicas).

Exemplo:

	"asterix"
	'asterix'

Como há carateres especiais como o newline (para indicar o fim de linha), nas strings delimitadas por aspas, é necessário usar o caracter especial '\' para indicar os caracteres especiais. Por exemplo:

octave:30> x = "Os Lusíadas\nLuís Vaz de Camões"
x = Os Lusíadas
Luís Vaz de Camões

As aspas podem ser inseridas usando o '\'. Exemplo:

octave:31> x = "Os \"Patrícios\""
x = Os "Patrícios"

Alternativamente, a string anterior podia ser introduzida com ', sem necessidade de usar o '\' para indicar os caracteres especiais.

octave:32> x = 'Os "Patrícios"'
x = Os "Patrícios"

Nas sequências delimitadas por ', o único caracter especial é a própria '. Para escrever uma string com ', usa-se:

octave:33> x = 'Vitorino d''Almeida'
x = Vitorino d'Almeida


Representação interna de strings

Cara caracter é internamente representado por um código. A função toascii devolve o código do(s) caracter(es).

octave:35> toascii('asterix')
ans =
    97   115   116   101   114   105   120

Significa que o caracter 'a' é representado internamente pelo número 97, o 's' pelo número 115 e assim sucessivamente.

Inversamente, a função char devolve o caracter correspondente a um determinado código.

octave:38> char(97)
ans = a

Uma string é representada internamente como um vetor. Ou seja, a string 'bruno' é representada internamente como o vetor:

[98, 114, 117, 110, 111]

Usando a função whos comprova-se que a variável x é um vetor com a dimensão 1x5.

octave:54> x = 'bruno'
x = bruno
octave:55> whos
Variables in the current scope:
  Attr Name        Size                     Bytes  Class
  ==== ====        ====                     =====  ===== 
       x           1x5                          5  char
Total is 5 elements using 5 bytes

Assim sendo, utilizando as funções toascii e char podemos apresentar a string ora com os respetivos códigos, ora com os caracteres.

octave:49> x = 'bruno'
x = bruno
octave:50> y = toascii(x)
y =
    98   114   117   110   111
octave:51> z = char(y)
z = bruno
Exercício
  1. Pegue numa string e converta-a numa mensagem secreta, adicionando 3 ao código de cada letra da mensagem.
  2. Pegue numa string e escreva-a ao contrário.
  3. Pegue numa string e verifique se é um palíndromo. Veja a lista de palíndromos.


Exercício
  1. Pegue numa frase, contendo espaços, maiúsculas e minúsculas e verifique se é um palíndromo. Use, por exemplo, a frase: "A base do teto desaba"
  2. Dado o nome completo de uma pessoa, calcule o apelido. Ou seja, aplique uma composição de funções a um nome de maneira a ficar só com o apelido.