apenas uma figura bonitinha

2.  Letras

 

Então, nós já aprendemos tudo sobre números, mas e as letras? Palavras? Textos?

Nós nos referimos a grupos de letras em um programa como strings (Você pode pensar em letras impressas juntas ao longo de um banner). Para ficar mais fácil de entender quais partes do código são strings, Eu vou colorir as strings em vermelho. Aqui tem alguns exemplos de strings:

'Olá.'
'Ruby rocks.'
'5 é meu número favorito... qual é o seu?'
'Snoopy diz #%^?&*@! quando alguém pisa no seu pé.'
'     '
''

Como você pode ver, strings podem ter pontuação, dígitos, símbolos e espaços... muito mais do que apenas letras. A última string não tem nada: nós a chamamos de string vazia.

Nós estávamos usando puts para imprimir os números; vamos tentar ele de novo com algumas strings:

puts 'Olá, mundo!'
puts ''
puts 'Até logo.'
Olá, mundo!

Até logo.

Isso funcionou bem. Agora, tente umas strings você mesmo.

Aritimética das String

Assim como você pode fazer aritimética com números, você também pode fazer aritimética com strings! Bem, uma parte dela... você pode adicionar strings, de qualquer forma. Vamos tentar adicionar duas strings e ver o que o puts faz.

puts 'Eu gosto de' + 'torta de maçã.'
Eu gosto detorta de maçã.

Ops! Eu esqueci de adicionar um espaço entre 'Eu gosto de' e 'torta de maçã.'. Espaços não fazem importância normalmente, mas eles fazem sentido dentro de strings. (É verdade o que dizem: computadores não fazem o que você quer que eles façam, apenas o que você manda eles fazerem). Vamos tentar de novo:

puts 'Eu gosto de ' + 'torta de maçã.'
puts 'Eu gosto de' + ' torta de maçã.'
Eu gosto de torta de maçã.
Eu gosto de torta de maçã.

(Como você pode ver, não importa em qual string eu adicione o espaço.)

Então você pode somar strings. Mas você pode, também, multiplicá-las! (Por um número, de qualquer forma). Veja isso:

puts 'piscar ' * 4
piscando os olhos dela

(Estou brincando... ele na verdade faz isso:)

piscar piscar piscar piscar 

Se você parar para pensar, isso realmente faz sentido. Afinal, 7*3 realmente quer dizer 7+7+7, então 'moo'*3 apenas significa 'moo'+'moo'+'moo'.

12 vs '12'

Antes de irmos mais longe, nós devemos ter certeza de que entendemos a diferença entre números e dígitos. 12 é um número, mas '12' é uma string de dois dígitos.

Vamos brincar com isso um pouco:

puts  12  +  12
puts '12' + '12'
puts '12  +  12'
24
1212
12  +  12

Que tal isso?

puts  2  *  5
puts '2' *  5
puts '2  *  5'
10
22222
2  *  5

Esses exemplos foram muito diretos. De qualquer forma, se você não for muito cauteloso quando misturar strings e números, você pode cair em...

Problemas

Nesse ponto, você já deve ter tentado algumas coisas que não funcionaram. Se não, aqui tem algumas:

puts '12' + 12
puts '2' * '5'
#<TypeError: can't convert Fixnum into String>

Hmmm... Uma mensagem de erro. O problema é que você não pode, realmente, adicionar um número a uma string, ou multiplicar uma string por outra string. Isso não faz muito sentido como isso:

puts 'Betty' + 12
puts 'Fred' * 'John'

Uma coisa que você deve saber: você pode escrever 'porco'*5 em um programa, já que isso apenas quer dizer 5 conjuntos da string 'porco', todas adicionadas entre si. Entretanto, você não pode escrever 5*'porco', já que isso significa 'porco' conjuntos do número 5, o que é um pouco insano.

Finalmente, e que tal um programa que imprima Isso é um apóstrofo: '? Nós podemos tentar isso:

puts 'Isso é um apóstrofo: ''

Bem, aquilo não vai funcionar; Eu nem vou tentar executar aquilo. O computador me disse que nós terminamos com uma string. (É por isso que é bom ter um editor de texto que tenha realçador de sintaxe para você). Então, como podemos fazer com que o computador saiba que nós queremos continuar dentro da string? Nós temos que escapar o apóstrofo, assim:

puts 'Isso é um apóstrofo: \''
Isso é um apóstrofo: '

A barra invertida é um caractere de escape. Em outras palavras, se você tem uma barra invertida seguida de um caractere, isso pode ser, algumas vezes, traduzido em um novo caractere. As únicas coisas que uma barra invertida escapa, porém, são o apóstrofo e a própria barra invertida (Se você pensar a respeito, caracteres de escape devem sempre escapar a si mesmos).) Acho que uns exemplos são bons agora:

puts 'Isso é um apóstrofo: \''
puts 'uma barra invertida no fim da string:  \\'
puts 'acima\\embaixo'
puts 'acima\embaixo'
Isso é um apóstrofo: '
uma barra invertida no fim da string:  \
acima\embaixo
acima\embaixo

Uma vez que a barra invertida não escapa'e', mas escapa a si mesma, as últimas duas strings são idênticas. Elas não se parecem no código, mas no seu computador elas são as mesmas.

Se você tiver outra dúvida, apenas continue lendo! Eu não posso responder a todas as questões nesta página.

 

© 2003-2014 Chris Pine