CodeGym /Cours /C# SELF /Boucle do-while : découverte et subtilités d'utilisation

Boucle do-while : découverte et subtilités d'utilisation

C# SELF
Niveau 4 , Leçon 3
Disponible

1. Découverte de la boucle do-while

Allez, on fait une petite pause et imagine : tu veux coder un programme qui devine un nombre choisi par l'utilisateur. Il faut que le programme demande au moins une fois le nombre à l'utilisateur, et qu'il continue à demander tant qu'il n'a pas trouvé. Mais si la condition n'est pas remplie dès le début, la boucle while classique ne rentrera même pas dans la boucle.

C'est là que la boucle do-while entre en scène. Contrairement à while, elle exécute toujours le corps de la boucle au moins une fois — même si la condition est fausse dès le départ. C'est comme si on te filait un chewing-gum gratos, que t'aies rien acheté ou pas.

do
{
    // Corps de la boucle : ce code sera exécuté au moins une fois
}
while (condition);
Syntaxe de la boucle do-while

Fais gaffe au point-virgule ; à la fin après la parenthèse de la condition ! Dans une while classique, il n'y en a pas, mais ici si. Petit piège pour les débutants :)

Étapes de la boucle do-while

  1. Entrée dans le corps de la boucle (toujours au moins une fois).
  2. Vérification de la condition.
  3. Si la condition est vraie — on recommence le corps.
  4. Si la condition est fausse — on sort de la boucle.

2. Différence avec la boucle while classique

Souviens-toi du scénario classique d'une boucle while :

while (condition)
{
    // Corps de la boucle
}

Le corps ne s'exécutera jamais si la condition est fausse dès le début !

Maintenant, exemple avec do-while :

do
{
    // Corps de la boucle
}
while (condition);

Le corps de la boucle s'exécutera au moins une fois, même si la condition est fausse dès le départ !

On va illustrer la différence avec un peu de code :

// while classique
int count = 0;
while (count > 0)
{
    Console.WriteLine("count = " + count);
    count--;
}
// Rien ne s'affichera

// do-while
int count2 = 0;
do
{
    Console.WriteLine("count2 = " + count2);
    count2--;
}
while (count2 > 0);
// Affichera "count2 = 0" même si la condition est fausse !

Parfois ça paraît "chelou", mais c'est exactement ce qu'il faut dans certains cas (genre pour la saisie utilisateur et la validation des données).

3. Scénarios pratiques pour utiliser do-while

Où est-ce qu'on croise cette boucle le plus souvent ?

Validation de données

Le cas le plus courant — tu veux que l'utilisateur saisisse quelque chose de correct (genre que des chiffres, ou un mot de passe d'au moins 6 caractères), et tu redemandes tant que la saisie n'est pas bonne.

string password;
do
{
    Console.Write("Tape un nouveau mot de passe (au moins 6 caractères) : ");
    password = Console.ReadLine();
}
while (password.Length < 6);

Console.WriteLine("Mot de passe accepté !");

Dans cet exemple, le corps de la boucle s'exécute au moins une fois — même si l'utilisateur tape un long mot de passe du premier coup.

Menu dans les applis console

Un pattern super courant et utile : afficher un menu, attendre la commande de l'utilisateur et sortir de la boucle seulement sur une commande spéciale.

string command;
do
{
    Console.WriteLine("Menu :");
    Console.WriteLine("1. Afficher le message de bienvenue");
    Console.WriteLine("2. Quitter");
    Console.Write("Choisis une action : ");
    command = Console.ReadLine();

    if (command == "1")
    {
        Console.WriteLine("Salut, monde !");
    }
    else if (command != "2")
    {
        Console.WriteLine("Commande inconnue.");
    }
}
while (command != "2");

Console.WriteLine("Ciao !");

4. Comparaison entre while et les autres boucles

Type de boucle Vérification de la condition Combien de fois le corps peut s'exécuter Quand l'utiliser
while Avant 0 fois ou plus Quand on ne connaît pas à l'avance le nombre de répétitions
do-while Après 1 fois ou plus Quand il faut exécuter au moins une fois
for Avant 0 fois ou plus Quand on connaît déjà le nombre d'itérations
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION