Comparer des textes
Vérifier un mot de passe, reconnaître une réponse « oui », ranger des prénoms par ordre alphabétique : tout cela demande de comparer des textes. Il y a quelques pièges à connaître.
Égal ou différent
Les opérateurs = et <> fonctionnent avec les textes :
motSecret est un texte vaut 'hibou'
essai est un texte
demande 'Le mot secret ? ' dans essai
si essai = motSecret alors
affiche 'Bravo !'
sinon
affiche 'Ce n’est pas ça.'
fin si
Le piège des majuscules
Pour l'ordinateur, Hibou et hibou sont deux textes différents : une majuscule n'est pas le même caractère qu'une minuscule.
affiche 'hibou' = 'hibou' // vrai
affiche 'Hibou' = 'hibou' // faux
affiche 'hibou ' = 'hibou' // faux : il y a une espace en trop
Pour une comparaison tolérante, on nettoie les deux textes avant de comparer : tout en minuscules, sans espaces au début ni à la fin.
fonction memeTexte(texte1, texte2)
propre1 est un texte vaut minuscules(supprime_espace(texte1))
propre2 est un texte vaut minuscules(supprime_espace(texte2))
retourne propre1 = propre2
fin fonction
affiche memeTexte('Hibou', 'hibou') // vrai
affiche memeTexte(' HIBOU ', 'hibou') // vrai
affiche memeTexte('hibou', 'chouette') // faux
Question : Que donne 'Oui' = 'oui' ? — faux. Le « O » majuscule et le « o » minuscule sont deux caractères différents. Il faut passer les deux textes en minuscules avant de comparer.
L'ordre alphabétique
Les opérateurs < et > comparent aussi les textes : un texte est « plus petit » s'il vient avant dans l'ordre alphabétique.
affiche 'abricot' < 'banane' // vrai : a vient avant b
affiche 'chat' < 'chien' // vrai : c et h sont égaux, puis a < i
affiche 'zèbre' < 'ane' // faux
La comparaison se fait lettre par lettre, comme dans un dictionnaire : on regarde la première lettre ; si elle est identique, la deuxième, et ainsi de suite.
Toutes les majuscules sont classées avant les minuscules : 'Zoé' < 'alice' est vrai ! Pour un vrai classement alphabétique, compare les textes en minuscules.
Qui vient en premier ?
prenom1 est un texte
prenom2 est un texte
demande 'Un prénom ? ' dans prenom1
demande 'Un autre prénom ? ' dans prenom2
si minuscules(prenom1) < minuscules(prenom2) alors
affiche prenom1 + ' vient avant ' + prenom2
sinon si minuscules(prenom1) > minuscules(prenom2) alors
affiche prenom2 + ' vient avant ' + prenom1
sinon
affiche 'Ce sont les mêmes prénoms.'
fin si
Trier une liste de mots
trier range aussi les tableaux de textes. Si tous les mots sont écrits de la même façon (tout en minuscules, par exemple), on obtient l'ordre alphabétique :
animaux est un tableau vaut ['renard', 'hibou', 'blaireau', 'écureuil', 'cerf']
trier(animaux)
affiche joindre(animaux, ', ')
Le programme affiche blaireau, cerf, hibou, renard, écureuil. Surprise : « écureuil » arrive en dernier ! Pour l'ordinateur, la lettre accentuée é est un caractère à part, classé après toutes les lettres sans accent.
Pour chercher le premier mot d'une liste dans l'ordre alphabétique sans la trier, utilise la recherche du minimum : on garde le plus petit texte rencontré, avec <.
En résumé
= et <> comparent deux textes, caractère par caractère.- Majuscules, minuscules et espaces comptent : on nettoie avec
minuscules et supprime_espace. < et > suivent l'ordre du dictionnaire, lettre par lettre.- Les majuscules passent avant les minuscules, et les lettres accentuées après les autres.