Aller au contenu

Travail Pratique – Énumérations

"L’expérience est la meilleure des écoles, surtout en programmation."

Un formateur expérimenté

Objectif du TP

Mettre en pratique l’utilisation d’une énumération (enum) dans un programme interactif simple.


Scénario

Vous développez un petit programme de gestion de commandes de boissons pour une machine automatique.

  1. Le programme propose un menu à l'utilisateur avec des choix de boissons :

    • Eau
    • Thé
    • Café
    • Soda
  2. L'utilisateur entre un chiffre correspondant à la boisson désirée.

  3. Le programme affiche un message du type :

    "Vous avez choisi : Café"

  4. Si le choix ne correspond à rien, il affiche :

    "Sélection invalide."


Contraintes

  • Utiliser une énumération Beverage (Boisson)
  • Utiliser un switch pour déterminer la boisson
  • Gérer les cas non valides avec default
  • Ne pas utiliser directement de string dans les comparaisons

Pseudocode !

Tout n'est pas définis dans ce pseudocode mais ça permet de bien démarrer.

Clique ici pour le découvrir.

Début du programme

Afficher le menu : 1 - Eau 2 - Thé 3 - Café 4 - Soda

Lire la saisie utilisateur (int)

Convertir la valeur en énumération

Afficher la boisson choisie selon la valeur :

Si 1 → Eau Si 2 → Thé Si 3 → Café Si 4 → Soda Sinon → Invalide

Fin du programme


Astuces

  • Créez l’énumération avant le Main()
  • Pensez à utiliser les conversions string -> int et int -> à l'énumération
  • N’oubliez pas break dans le switch

Bonus

  • Ajouter un champ de confirmation : “Souhaitez-vous une autre boisson ?”
  • Répéter la commande tant que l'utilisateur répond “oui”
  • Testez avec des saisies valides et invalides (ex : 0 ou 99)

Solution TP

Avez-vous essayez avant ? Clique pour découvrir une solution.
    using System;

    namespace boisson
    {
        // 1. Définition de l'énumération
        enum Beverage
        {
            Eau = 1,
            The = 2,
            Cafe = 3,
            Soda = 4
        }

        class Program
        {
            static void Main(string[] args)
            {
                bool repeat = true;

                while (repeat)
                {
                    Console.Clear();
                    Console.WriteLine("=== MENU BOISSONS ===");
                    Console.WriteLine("1 - Eau");
                    Console.WriteLine("2 - Thé");
                    Console.WriteLine("3 - Café");
                    Console.WriteLine("4 - Soda");
                    Console.Write("Votre choix (1 à 4) : ");

                    // 2. Lecture de l’entrée
                    string usrValue = Console.ReadLine();

                    // 3 Conversion de string à int
                    int choice = Convert.ToInt32(usrValue);

                    // 4 Conversion du choix de l'utilisateur dans le type enum Beverage
                    Beverage usrChoice = (Beverage)choice;

                    // 5. Traitement avec switch
                    switch (usrChoice)
                    {
                        case Beverage.Eau:
                            Console.WriteLine("Vous avez choisi : Eau");
                            break;
                        case Beverage.The:
                            Console.WriteLine("Vous avez choisi : Thé");
                            break;
                        case Beverage.Cafe:
                            Console.WriteLine("Vous avez choisi : Café");
                            break;
                        case Beverage.Soda:
                            Console.WriteLine("Vous avez choisi : Soda");
                            break;
                        default:
                            Console.WriteLine("Sélection invalide.");
                            break;
                    }


                    // 5. Demander si l'utilisateur veut recommencer
                    Console.Write("\nSouhaitez-vous une autre boisson ? (oui/non) : ");
                    string reponse = Console.ReadLine().Trim().ToLower();
                    repeat = (reponse == "oui" || reponse == "o");

                    Console.WriteLine();
                }

                Console.WriteLine("Merci et à bientôt !");
            }
        }
    }

Navigation

Introduction Déclaration Utilisation Travail pratique