02. Lettres
Alors, nous avons tout appris sur les nombres, mais qu'en est-il des lettres ? Des mots ? Du texte ?
Nous appelons les groupes de lettres dans un programme des chaînes de caractères (ou strings). (Vous pouvez penser à des lettres imprimées ensemble le long d'une bannière). Pour qu'il soit plus facile de voir quelles parties du code sont des chaînes, je vais colorer les chaînes en rouge. Voici quelques exemples de chaînes :
'Bonjour.'
'Ruby déchire.'
'5 est mon chiffre préféré... quel est le vôtre ?'
'Snoopy dit #%^?&*@! quand quelqu\'un lui marche sur le pied.'
' '
''
Comme vous pouvez le voir, les chaînes peuvent contenir de la ponctuation, des chiffres, des symboles et des espaces... bien plus que de simples lettres. La dernière chaîne ne contient rien ; nous l'appelons une chaîne vide.
Nous avons utilisé puts pour afficher des nombres ; essayons encore avec quelques chaînes :
puts 'Bonjour le monde !'
puts ''
puts 'Au revoir.'
Bonjour le monde !
Au revoir.
Cela a bien fonctionné. Maintenant, essayez quelques chaînes vous-même.
Arithmétique des chaînes
Tout comme vous pouvez faire de l'arithmétique avec des nombres, vous pouvez aussi en faire avec des chaînes ! Enfin, en partie... vous pouvez additionner des chaînes, en tout cas. Essayons d'ajouter deux chaînes et voyons ce que puts fait.
puts 'J\'aime la ' + 'tarte aux pommes.'
J'aime latarte aux pommes.
Oups ! J'ai oublié de mettre un espace entre 'J\'aime la ' et 'tarte aux pommes.'. Les espaces ne comptent généralement pas dans votre code, mais ils comptent à l'intérieur des chaînes. (C'est vrai ce qu'on dit : les ordinateurs ne font pas ce que vous voulez qu'ils fassent, seulement ce que vous leur dites de faire). Essayons encore :
puts 'J\'aime la ' + 'tarte aux pommes.'
puts 'J\'aime la' + ' tarte aux pommes.'
J'aime la tarte aux pommes.
J'aime la tarte aux pommes.
(Comme vous pouvez le voir, peu importe à quelle chaîne j'ajoute l'espace.)
Donc vous pouvez additionner des chaînes. Mais vous pouvez aussi les multiplier ! (Par un nombre, en tout cas). Regardez ça :
puts 'cligner ' * 4
battant des cils
(Je plaisante... ça fait vraiment ça :)
cligner cligner cligner cligner
Si vous y réfléchissez, cela a tout son sens. Après tout, 7*3 signifie vraiment 7+7+7, donc 'meuh'*3 signifie juste 'meuh'+'meuh'+'meuh'.
12 vs '12'
Avant d'aller plus loin, nous devons nous assurer de bien comprendre la différence entre les nombres et les chiffres. 12 est un nombre, mais '12' est une chaîne de deux chiffres.
Jouons un peu avec ça :
puts 12 + 12
puts '12' + '12'
puts '12 + 12'
24
1212
12 + 12
Et ça ?
puts 2 * 5
puts '2' * 5
puts '2 * 5'
10
22222
2 * 5
Ces exemples étaient assez simples. Cependant, si vous ne faites pas attention en mélangeant des chaînes et des nombres, vous pourriez rencontrer...
Problèmes
À ce stade, vous avez peut-être essayé des choses qui n'ont pas fonctionné. Si ce n'est pas le cas, en voici quelques-unes :
puts '12' + 12
puts '2' * '5'
#<TypeError: can't convert Fixnum into String>
Hmmm... Un message d'erreur. Le problème est que vous ne pouvez pas vraiment ajouter un nombre à une chaîne, ou multiplier une chaîne par une autre chaîne. Cela n'a pas beaucoup de sens, tout comme :
puts 'Betty' + 12
puts 'Fred' * 'John'
Une chose que vous devez savoir : vous pouvez écrire 'cochon'*5 dans un programme, car cela signifie simplement 5 ensembles de la chaîne 'cochon' ajoutés ensemble. Cependant, vous ne pouvez pas écrire 5*'cochon', car cela signifie 'cochon' ensembles du nombre 5, ce qui est juste idiot.
L'Apostrophe (Échappement)
Enfin, qu'en est-il d'un programme qui affiche C'est super ! ? Nous pouvons essayer ceci :
puts 'C\'est super !'
Eh bien, cela ne fonctionnera pas si on n'échappe pas l'apostrophe. L'ordinateur pensait que nous avions fini avec la chaîne. (C'est pourquoi il est bon d'avoir un éditeur de texte qui fait la coloration syntaxique pour vous). Alors comment faire savoir à l'ordinateur que nous voulons rester dans la chaîne ? Nous devons échapper l'apostrophe, comme ceci :
puts 'C\'est super !'
C'est super !
L'antislash (\) est le caractère d'échappement. En d'autres termes, si vous avez un antislash et un autre caractère, ils sont parfois traduits en un nouveau caractère. Les seules choses que l'antislash échappe, cependant, sont l'apostrophe et l'antislash lui-même. (Si vous y réfléchissez, les caractères d'échappement doivent toujours s'échapper eux-mêmes).
Je pense que quelques exemples s'imposent :
puts 'C\'est une apostrophe.'
puts 'antislash à la fin de la chaîne : \\'
puts 'haut\\bas'
puts 'haut\bas'
C'est une apostrophe.
antislash à la fin de la chaîne : \
haut\bas
haut\bas
Comme l'antislash n'échappe pas 'b', mais s'échappe lui-même, les deux dernières chaînes sont identiques. Elles ne se ressemblent pas dans le code, mais dans votre ordinateur, elles sont les mêmes.
Si vous avez d'autres questions, continuez simplement à lire ! Je ne peux pas répondre à toutes les questions sur cette page.