1.4 - Laboratoire 1


Réaliser un programme Ruby permettant d'encoder et décoder un message via l'algorithme fournit. Cet algorithme associe chaque charactère d'un message à un autre selon la clé utilisée, via le code ASCII.

Algorithme

  • Télécharger le fichier cryptor.rb pour exploiter l'algorithme dans votre programme
    • Consulter le code pour un exemple d'utilisation de la librairie
    • Vous ne devez PAS modifier ce fichier

Exemple

Un nombre est associé à chaque caractère affichable de la table ASCII

abcdefghijklmnopqrstuvwxyz
0123456789...

Pour encoder position + clé

allo

encodé avec la clé 2 devient

cnnq

car l'alphabet original est décallé de 2 lettres

abcdefghijklmnopqrstuvwxyz

cdefghijklmnopqrstuvwxyzab

Pour décoder, on effectue le calcul inverse position - clé via l'alphabet de référence

abcdefghijklmnopqrstuvwxyz

donc c - 2 positions devient a, et ainsi de suite.

Le code fournit s'assure de retourner une valeur dans l'interval de caractères affichables

Fonctionnalités attendues

  • Menu permettant de choisir entre 3 options: e pour encoder, d pour décoder ou q pour quitter le programme

    • Le menu redemande un choix tant qu'une option valide n'est pas fournie
    • Le menu est répété tant que l'utilisateur ne quitte pas avec l'option q
    • Le menu accepte les majuscules OU les minuscules

  • Pour encoder/décoder, le programme demande à l'utilisateur de saisir un message ET une clé

    • La clé servira à calculer le décalage, si aucune clé n'est saisie, le programme utilise 0 par défaut
    • Le message de l'utilisateur est converti, un caractère à la fois, en considérant le décalage, puis affiché à l'écran

  • Assurez-vous de gérer les erreurs possibles lors de la saisie ou du traitement des messages

Exemple d'exécution

Appuyer sur 'd' pour décoder, 'e' pour encoder ou 'q' pour quitter: e
Contenu a traiter: Allo le monde!
Clé: 42
Secret = dFFimFtmWisptv 

Appuyer sur 'd' pour décoder, 'e' pour encoder ou 'q' pour quitter: d
Contenu a traiter: dFFimFtmWisptv
Clé: 42
Message = Allo le monde!

Appuyer sur 'd' pour décoder, 'e' pour encoder ou 'q' pour quitter: d
Contenu a traiter: allo
Clé: 
Message = allo

Appuyer sur 'd' pour décoder, 'e' pour encoder ou 'q' pour quitter: d
Contenu a traiter: allo
Clé: 56
Message = e77m

Appuyer sur 'd' pour décoder, 'e' pour encoder ou 'q' pour quitter: q

Remise

12 septembre, 8h AM via LÉA

  • Envoyer uniquement le fichier Ruby .rb contenant votre programme
  • Inscrire votre nom en commentaire sur la première ligne

Critères d’évaluation

Laboratoire 1 - 5% / 24

Nom: ____________________________________

Qualité de rédaction: Nomenclature, Formatage, Syntaxe 0 1 1.5 2
Respect du format d'affichage 0 0.5 1
Menu
Affichage des 3 options du menu 0 0.5 1
Redemande si choix invalide 0 0.5 1
Accepte minuscules ou majuscules 0 0.5 1
Affichage répété tant que ne quitte pas 0 0.5 1
Option 'q' quitte le programme 0 0.5 1
Encoder
Option 'e' pour encoder 0 0.5 1
Saisie du message 0 0.5 1
Saisie de la clé 0 0.5 1
Encodage en considérant la clé, affichage du résultat 0 1 2 3.5 4
Décoder
Option 'd' pour décoder 0 0.5 1
Saisie du message 0 0.5 1
Saisie de la clé 0 0.5 1
Décodage du message en considérant la clé, affichage du résultat 0 1 2 3.5 4
Validations 0 1 1.5 2