1. Introduction
En programmation, on doit régulièrement exécuter les mêmes actions de nombreuses fois de suite. Par exemple :
- Parcourir tous les éléments d’une liste.
- Lire des valeurs au clavier tant que l’utilisateur n’a pas saisi la bonne.
- Calculer la somme de tous les nombres de 1 à 100.
- Demander le mot de passe à l’utilisateur jusqu’à ce qu’il soit correct.
Si vous essayez de faire tout cela sans boucles, ce sera long, ennuyeux et non évolutif. Imaginez que vous écriviez une calculatrice et que vous décidiez d’additionner les nombres de 1 à 10 manuellement :
int sum = 0;
sum = sum + 1;
sum = sum + 2;
sum = sum + 3;
// ... et ainsi 10 fois. Mouais.
Vous vous ennuierez avant d’avoir terminé ! La solution — les boucles. Elles permettent de décrire la répétition d’actions de façon concise et claire. Aujourd’hui, nous allons faire connaissance avec la boucle la plus basique mais diablement utile — while.
2. Découverte de la boucle while
Syntaxe et schéma de base
La boucle while — c’est le « perroquet » du monde de la programmation : elle répète le même fragment de code tant qu’une certaine condition est vraie. Dès que la condition cesse d’être vraie, le perroquet se tait (la boucle se termine).
Syntaxe :
while (condition)
{
// Corps de la boucle
}
Diagramme
Voici un organigramme simple pour comprendre le fonctionnement de la boucle while :
3. Exemples : la boucle while en action
Compteur classique
Écrivons un petit programme qui compte de 1 à 5 et affiche les nombres :
int i = 1;
while (i <= 5)
{
System.out.println("Étape n° " + i);
i++; // N’oubliez pas d’incrémenter le compteur !
}
// Affichera :
// Étape n° 1
// Étape n° 2
// Étape n° 3
// Étape n° 4
// Étape n° 5
Attention : si vous oubliez d’augmenter la variable i, la boucle ne se terminera jamais (notre perroquet deviendra immortel et répétera à l’infini). On appelle cela une boucle infinie — c’est plutôt effrayant.
Saisie au clavier jusqu’à la valeur attendue
Il est courant d’utiliser une boucle pour « pousser » l’utilisateur jusqu’à la bonne réponse :
String password = "";
while (!password.equals("qwerty"))
{
System.out.print("Entrez le mot de passe : ");
password = console.nextLine();
}
System.out.println("Bienvenue !");
Ici, le programme demande de saisir le mot de passe jusqu’à ce que vous tapiez le magique "qwerty". N’oubliez pas : si vous supprimez la ligne password = console.nextLine();, la boucle redeviendra infinie (elle demandera le mot de passe sans lire l’entrée — elle restera bloquée pour toujours, comme un robot cassé).
4. Types et scénarios d’utilisation de la boucle while
Boucle while « classique »
Cette boucle, comme montré plus haut, évalue la condition avant la première itération. Si la condition est fausse d’emblée — le corps de la boucle ne s’exécute pas une seule fois.
Exemple : condition fausse dès le départ
int i = 10;
while (i < 5)
{
System.out.println(i); // Ne s’exécutera jamais !
}
Ce qui est, somme toute, logique. C’est exactement ce qui est écrit.
Boucles while imbriquées
Parfois, il faut mettre une boucle dans une autre. Par exemple, parcourir toutes les lignes et, dans chacune, vérifier tous les caractères. À ce stade, c’est plutôt audacieux, mais voici un exemple simple :
int i = 1;
while (i <= 3)
{
int j = 1;
while (j <= 2)
{
System.out.println("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
Nous détaillerons les boucles imbriquées dans deux ou trois leçons, je voulais juste vous faire un peu peur :)
Boucle infinie
Parfois, les boucles se terminent, et parfois — elles vivent pour toujours.
while (true)
{
System.out.println("Je suis éternel !");
}
Elle est rare, généralement pour des traitements en arrière-plan (par exemple, le fonctionnement d’un serveur), mais elle existe en pratique.
5. Éviter les bêtises : erreurs fréquentes avec while
En programmation, une boucle — c’est comme l’électricité : c’est génial, mais il 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 « indéfiniment », et il faut arrêter le programme de force (par exemple avec Ctrl + C).
int i = 1;
while (i <= 5)
{
System.out.println(i);
// i++; // Oups ! On a oublié d’incrémenter i
}
Problème 2 : condition mal définie
Parfois, le développeur se tire une balle dans le pied : la condition n’est jamais vraie. En conséquence, la boucle ne s’exécute pas du tout.
int i = 10;
while (i < 5)
{
System.out.println(i); // Ce code ne s’exécutera jamais.
i++;
}
Problème 3 : erreur de types de données
La condition d’une boucle doit toujours être une expression booléenne — c’est-à-dire que le résultat doit être true ou false.
int number = 5;
while (number) // Erreur ! Un boolean était attendu, pas un int.
{
number--;
}
GO TO FULL VERSION