CoddyRun

Parcours Les messages secrets Étape 1

Étape 1 sur 6

Décaler une lettre

Trouver la position d'une lettre dans l'alphabet et afficher la lettre décalée de 3 rangs, en revenant au début après le Z.

Notions :positionindex d'un textemod

Le résultat final du parcours : Les messages secrets
Le résultat final du projet
Ce qu'il faut savoir

Le code de César remplace chaque lettre par celle qui se trouve 3 rangs plus loin : A devient D, B devient E… Pour cela, on range l'alphabet dans un texte, et position donne le rang d'une lettre :

p vaut position("C", alphabet)

p vaut 3, car les positions d'un texte commencent à 1. Si la lettre n'est pas dans l'alphabet, position renvoie 0.

Revenir au début après le Z

X décalé de 3 devrait donner la 27e lettre… qui n'existe pas. Il faut revenir au début : X donne A. C'est le travail de mod, le reste de la division :

alphabet[(p - 1 + cle) mod 26 + 1]
  • on passe d'une position de 1 à 26 à un rang de 0 à 25 (p - 1) ;
  • on ajoute le décalage, et mod 26 ramène le résultat entre 0 et 25 ;
  • on revient à une position de texte (+ 1).

Pour X (24) : (23 + 3) mod 26 = 0, et 0 + 1 = 1, c'est A.

Code de départ

Ouvrez CoddyRun et partez d'un programme vide : tout commence ici.

Pas encore CoddyRun ?

Il te faut le logiciel pour faire cette étape. Il est gratuit : crée ton compte pour le télécharger, puis reviens ici, ta place t'attend.

Créer mon compte et télécharger
Besoin d'aide ?
Indice 1

Déclarez alphabet, lettre est un texte et p, cle est un nombre.

Indice 2

Mettez la lettre saisie en majuscule : lettre vaut majuscules(lettre).

Indice 3

Si p vaut 0, ce n'est pas une lettre : affichez un message au lieu de chiffrer.

Voir la solution complète

Essayez d'abord par vous-même : c'est en cherchant qu'on apprend. La solution sert à vérifier ou à se débloquer.

@ Les déclarations
alphabet, lettre est un texte
p, cle est un nombre

@ Le décalage
alphabet vaut "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
cle vaut 3
html("<h2>Le code de César</h2>")
demande "Une lettre : " dans lettre
lettre vaut majuscules(lettre)
p vaut position(lettre, alphabet)
si p = 0 ou longueur(lettre) <> 1 alors
    affiche "Ce n'est pas une lettre de A à Z."
sinon
    affiche lettre + " devient " + alphabet[(p - 1 + cle) mod 26 + 1]
fin si

Ce parcours te plaît ?

Crée ton compte gratuit et construis le projet en entier, étape par étape.

Créer mon compte gratuit J'ai déjà un compte