Les caractères et leurs codes
Pour un ordinateur, tout est nombre, même les lettres. Chaque caractère possède un code, et connaître quelques-uns de ces codes ouvre des possibilités étonnantes.
Du caractère au code, et retour
code(caractère) donne le numéro d'un caractère ; caractère(numéro) fait le chemin inverse :
affiche code('A') // 65
affiche code('a') // 97
affiche code('0') // 48
affiche caractère(72) // H
affiche caractère(105) // i
Trois plages à retenir :
- les chiffres
0 à 9 : codes 48 à 57 ; - les majuscules
A à Z : codes 65 à 90 ; - les minuscules
a à z : codes 97 à 122.
Dans chaque plage, les caractères se suivent dans l'ordre.
Fabriquer l'alphabet
Puisque les codes se suivent, une boucle peut écrire tout l'alphabet :
alphabet est un texte vaut ''
pour numero de 65 à 90
alphabet ajoute caractère(numero)
fin pour
affiche alphabet // ABCDEFGHIJKLMNOPQRSTUVWXYZ
Et la troisième lettre après une autre ? Il suffit d'ajouter 3 à son code :
lettre est un texte vaut 'K'
affiche caractère(code(lettre) + 3) // N
Question : Que renvoie caractère(code('A') + 25) ? — Z. Le code de A est 65 ; 65 + 25 = 90, le code de Z.
Des majuscules aux minuscules
Entre une majuscule et sa minuscule, l'écart est toujours le même : 97 - 65 = 32.
fonction enMinuscule(lettre)
si code(lettre) >= 65 et code(lettre) <= 90 alors
retourne caractère(code(lettre) + 32)
fin si
retourne lettre
fin fonction
affiche enMinuscule('H') // h
affiche enMinuscule('h') // h : déjà une minuscule
affiche enMinuscule('!') // ! : ce n'est pas une lettre
C'est exactement ce que fait la fonction minuscules de CoddyRun, pour chaque lettre d'un texte.
Reconnaître la sorte d'un caractère
Les plages de codes permettent de savoir à quoi on a affaire :
fonction sorte(symbole)
numero est un nombre vaut code(symbole)
si numero >= 48 et numero <= 57 alors
retourne 'chiffre'
fin si
si numero >= 65 et numero <= 90 alors
retourne 'majuscule'
fin si
si numero >= 97 et numero <= 122 alors
retourne 'minuscule'
fin si
retourne 'autre'
fin fonction
affiche sorte('7') // chiffre
affiche sorte('Q') // majuscule
affiche sorte('q') // minuscule
affiche sorte('?') // autre
Analyser un texte caractère par caractère
En parcourant un texte, on peut compter chaque sorte de caractère. Place ce programme sous la fonction sorte :
secret est un texte vaut 'Hibou2026!'
nbChiffres est un nombre vaut 0
nbMajuscules est un nombre vaut 0
nbMinuscules est un nombre vaut 0
nbAutres est un nombre vaut 0
genre est un texte
pour i de 1 à longueur(secret)
genre vaut sorte(copier(secret, i, 1))
si genre = 'chiffre' alors
nbChiffres ajoute 1
sinon si genre = 'majuscule' alors
nbMajuscules ajoute 1
sinon si genre = 'minuscule' alors
nbMinuscules ajoute 1
sinon
nbAutres ajoute 1
fin si
fin pour
affiche nbMajuscules + ' majuscule, ' + nbMinuscules + ' minuscules'
affiche nbChiffres + ' chiffres, ' + nbAutres + ' autre caractère'
Pour Hibou2026! : 1 majuscule, 4 minuscules, 4 chiffres et 1 autre caractère. C'est ainsi qu'un site vérifie la solidité d'un mot de passe.
Les lettres accentuées (é, à, ç...) ont des codes en dehors de ces plages : elles sont comptées dans « autre ».
En résumé
code(caractère) et caractère(numéro) passent du caractère au nombre, et inversement.- Chiffres : 48 à 57 ; majuscules : 65 à 90 ; minuscules : 97 à 122.
- Les codes se suivent : on peut calculer avec les lettres.
- Les plages de codes permettent de reconnaître la sorte d'un caractère.