1. Introduction
En programmation, on doit souvent faire la même action plein de fois d'affilée. Par exemple :
- Parcourir tous les éléments d'une liste.
- Lire des valeurs au clavier tant que l'utilisateur n'a pas tapé ce qu'il faut.
- Calculer la somme de tous les nombres de 1 à 100.
- Demander le mot de passe à l'utilisateur jusqu'à ce qu'il soit correct.
Si tu essaies de faire tout ça sans boucle, ça va être long, chiant et impossible à maintenir. Imagine que tu codes une calculatrice et que tu additionnes les nombres de 1 à 10 à la main :
int sum = 0;
sum += 1;
sum += 2;
sum += 3;
// ... et ainsi de suite 10 fois. Pfff.
Tu vas t'ennuyer avant d'avoir fini ! La solution — ce sont les boucles. Elles permettent de décrire la répétition d'actions de façon claire et concise. Aujourd'hui, on va voir la plus basique, mais super utile : la boucle while.
2. Découverte de la boucle while
Syntaxe et schéma de base
La boucle while, c'est un peu le "perroquet" de la prog : elle répète le même bout de code tant qu'une condition est vraie. Dès que la condition n'est plus vraie, le perroquet se tait (la boucle s'arrête).
while (condition)
{
// Corps de la boucle
}
while avec un bloc de commandes
Diagramme
Voilà un schéma tout simple pour piger comment marche la boucle while :
3. Exemples : la boucle while en action
Le compteur classique
On va faire un petit programme qui compte de 1 à 5 et affiche les nombres :
int i = 1;
while (i <= 5)
{
Console.WriteLine($"Étape n° {i}");
i++; // N'oublie pas d'incrémenter le compteur !
}
// Va afficher :
// Étape n° 1
// Étape n° 2
// Étape n° 3
// Étape n° 4
// Étape n° 5
Fais gaffe : si tu oublies d'incrémenter la variable i, la boucle ne s'arrêtera jamais (ton perroquet devient immortel et répète à l'infini). On appelle ça une boucle infinie — ça fait flipper !
Saisie clavier jusqu'à la bonne valeur
Souvent, on utilise une boucle pour "forcer" l'utilisateur à donner la bonne réponse :
string password = "";
while (password != "qwerty")
{
Console.Write("Tape ton mot de passe : ");
password = Console.ReadLine();
}
Console.WriteLine("Bienvenue !");
Ici, le programme demande le mot de passe tant que tu n'as pas tapé le fameux "qwerty". Attention : si tu vires la ligne password = Console.ReadLine();, la boucle devient encore une fois infinie (il va demander le mot de passe mais ne lira jamais l'entrée — il va freezer comme un robot cassé).
4. Types et scénarios d'utilisation de la boucle while
Boucle while classique
Cette boucle, comme on l'a vu, vérifie la condition avant la première itération. Si la condition est fausse direct — le corps de la boucle ne s'exécutera jamais.
Exemple : condition fausse dès le début
int i = 10;
while (i < 5)
{
Console.WriteLine(i); // Ne s'exécutera jamais !
}
Ce qui, franchement, est logique. C'est exactement ce qui est écrit ici.
Boucles while imbriquées
Parfois, il faut faire une boucle dans une boucle. Par exemple, parcourir toutes les lignes, et dans chacune vérifier tous les caractères. Pour l'instant, c'est un peu chaud, mais voilà un exemple simple :
int i = 1;
while (i <= 3)
{
int j = 1;
while (j <= 2)
{
Console.WriteLine($"i = {i}, j = {j}");
j++;
}
i++;
}
// i = 1, j = 1
// i = 1, j = 2
// i = 2, j = 1
// i = 2, j = 2
// i = 3, j = 1
// i = 3, j = 2
On verra les boucles imbriquées plus en détail dans quelques leçons, c'était juste pour te faire flipper :)
Boucle infinie
Parfois les boucles s'arrêtent, parfois — elles vivent pour toujours.
while (true)
{
Console.WriteLine("Je suis éternel !");
}
On l'utilise rarement, en général pour des trucs en arrière-plan (genre un serveur), mais ça existe aussi en vrai.
5. Comment éviter les boulettes : erreurs fréquentes avec while
En programmation, une boucle c'est comme l'électricité : c'est cool, mais faut connaître les règles de sécurité.
Problème 1 : boucle infinie par inattention
Très souvent, les débutants oublient de mettre à jour la variable dont dépend la condition. Résultat : la boucle tourne "à l'infini", et tu dois forcer l'arrêt du programme (genre avec Ctrl + C).
int i = 1;
while (i <= 5)
{
Console.WriteLine(i);
// i++; // OUPS ! On a oublié d'incrémenter i
}
Problème 2 : condition mal écrite
Parfois, le dev se piège tout seul : la condition n'est jamais vraie. Du coup, la boucle ne s'exécute jamais.
int i = 10;
while (i < 5)
{
Console.WriteLine(i); // Ce code ne s'exécutera jamais.
i++;
}
Problème 3 : erreur de type de données
Dans la condition d'une boucle, il faut toujours une expression booléenne — c'est-à-dire que le résultat doit être true ou false.
int number = 5;
while (number) // Erreur ! On attendait un bool, pas un int.
{
number--;
}
GO TO FULL VERSION