Boucles while et do-while en C++ – Maîtriser la répétition dans votre code
Boucles while et do-while en C++ – Maîtriser la répétition dans votre code
Ce guide explique les boucles while et do-while en C++ avec des exemples clairs, des flux et des conseils de bonnes pratiques.
Les boucles sont une pierre angulaire de la programmation efficace : elles vous permettent d'exécuter un bloc de code répétitivement sans dupliquer les lignes. Que vous itériez sur une plage ou attendiez une saisie utilisateur, choisir le bon type de boucle est crucial pour un code lisible et maintenable.
En C++, il y a trois constructions de boucle principales :
forboucle – idéale quand le nombre d'itérations est connu.whileboucle – s'exécute tant qu'une condition reste vraie.do…whileboucle – garantit au moins une exécution avant de tester la condition.
Alors que la boucle for a été couverte dans un tutoriel précédent, cet article se concentre sur les boucles while et do…while, détaillant la syntaxe, le flux d'exécution, les pièges courants et les cas d'utilisation réels.
Boucle while C++
La syntaxe d'une boucle while est simple :
while (condition) {
// corps de la boucle
}
La boucle évalue condition avant chaque itération :
- Si
conditionesttrue, le corps de la boucle s'exécute. - La condition est réévaluée après que le corps se termine.
- Le processus se répète jusqu'à ce que
conditiondeviennefalse, moment où la boucle se termine.
Pour plus de détails sur les opérateurs relationnels et logiques C++, référez-vous au guide Opérateurs relationnels et logiques C++.
Flux de la boucle while

Exemple 1 : Afficher les nombres de 1 à 5
// Programme C++ pour afficher les nombres de 1 à 5
#include <iostream>
using namespace std;
int main() {
int i = 1;
// boucle while de 1 à 5
while (i <= 5) {
cout << i << " ";
++i;
}
return 0;
}
Sortie
1 2 3 4 5
Voici une décomposition étape par étape de l'exécution du programme :
| Itération | Variable | i <= 5 | Action |
|---|---|---|---|
| 1ère | i = 1 | true | 1 affiché, i devient 2 |
| 2ème | i = 2 | true | 2 affiché, i devient 3 |
| 3ème | i = 3 | true | 3 affiché, i devient 4 |
| 4ème | i = 4 | true | 4 affiché, i devient 5 |
| 5ème | i = 5 | true | 5 affiché, i devient 6 |
| 6ème | i = 6 | false | Boucle terminée |
Exemple 2 : Somme des nombres positifs seulement
// programme pour trouver la somme des nombres positifs
// si l'utilisateur entre un nombre négatif, la boucle se termine
// le nombre négatif entré n'est pas ajouté à la somme
#include <iostream>
using namespace std;
int main() {
int nombre;
int somme = 0;
// prendre la saisie de l'utilisateur
cout << "Entrez un nombre : ";
cin >> nombre;
while (nombre >= 0) {
// additionner tous les nombres positifs
somme += nombre;
// prendre la saisie à nouveau si le nombre est positif
cout << "Entrez un nombre : ";
cin >> nombre;
}
// afficher la somme
cout << "\nLa somme est " << somme << endl;
return 0;
}
Sortie
Entrez un nombre : 6 Entrez un nombre : 12 Entrez un nombre : 7 Entrez un nombre : 0 Entrez un nombre : -2 La somme est 25
Dans cet exemple, le programme continue de demander des nombres à l'utilisateur. Tant que le nombre entré est non-négatif, il est ajouté à somme. Une saisie négative signale la fin de la boucle, et la somme finale est affichée.
Boucle do…while C++
La boucle do…while diffère de while en exécutant son corps au moins une fois avant d'évaluer la condition. C'est utile quand le corps de la boucle doit s'exécuter avant que la condition de sortie puisse être vérifiée.
Sa syntaxe est :
do {
// corps de la boucle
} while (condition);
Flux d'exécution :
- Le corps s'exécute.
- La condition est évaluée.
- Si
true, le corps se répète. - Le processus continue jusqu'à ce que la condition devienne
false.
Flux de la boucle do…while

Exemple 3 : Afficher les nombres de 1 à 5
// Programme C++ pour afficher les nombres de 1 à 5
#include <iostream>
using namespace std;
int main() {
int i = 1;
// boucle do…while de 1 à 5
do {
cout << i << " ";
++i;
} while (i <= 5);
return 0;
}
Sortie
1 2 3 4 5
Étapes d'exécution :
| Itération | Variable | i <= 5 | Action |
|---|---|---|---|
| Initial | i = 1 | Pas encore vérifié | 1 affiché, i devient 2 |
| 1ère | i = 2 | true | 2 affiché, i devient 3 |
| 2ème | i = 3 | true | 3 affiché, i devient 4 |
| 3ème | i = 4 | true | 4 affiché, i devient 5 |
| 4ème | i = 5 | true | 5 affiché, i devient 6 |
| 5ème | i = 6 | false | Boucle terminée |
Exemple 4 : Somme des nombres positifs seulement
// programme pour trouver la somme des nombres positifs
// Si l'utilisateur entre un nombre négatif, la boucle se termine
// le nombre négatif entré n'est pas ajouté à la somme
#include <iostream>
using namespace std;
int main() {
int nombre = 0;
int somme = 0;
do {
somme += nombre;
// prendre la saisie de l'utilisateur
cout << "Entrez un nombre : ";
cin >> nombre;
} while (nombre >= 0);
// afficher la somme
cout << "\nLa somme est " << somme << endl;
return 0;
}
Sortie 1
Entrez un nombre : 6 Entrez un nombre : 12 Entrez un nombre : 7 Entrez un nombre : 0 Entrez un nombre : -2 La somme est 25
Sortie 2
Entrez un nombre : -6 La somme est 0.
Quand la première saisie est négative, la boucle s'exécute une fois et se termine immédiatement, laissant somme inchangé.
Boucles infinies
Une boucle infinie se produit quand la condition de la boucle n'évalue jamais à false. Cela peut arriver intentionnellement (ex. un serveur qui tourne pour toujours) ou accidentellement (erreurs de logique).
// boucle while infinie
while (true) {
// corps de la boucle
}
De même, une boucle do…while peut être infinie :
int compteur = 1;
do {
// corps de la boucle
} while (compteur == 1);
De telles boucles consomment des ressources jusqu'à ce que le programme soit terminé ou que le système manque de mémoire.
Boucles for vs while
La boucle for est la plus appropriée quand le nombre d'itérations est connu à l'avance :
// boucle itérée 5 fois
for (int i = 1; i <= 5; ++i) {
// corps de la boucle
}
En contraste, les boucles while et do…while sont idéales quand le nombre d'itérations dépend de données d'exécution, comme la saisie utilisateur ou le résultat d'une condition complexe.
Explorez plus d'exemples de boucles C++ :
- Programme C++ pour afficher la suite de Fibonacci
- Programme C++ pour trouver le PGCD
- Programme C++ pour trouver le PPCM
Langue C
- Classes et objets C++ : Guide pratique de la programmation orientée objet
- Maîtriser la gestion de mémoire en C++ : Utilisation experte de new et delete
- Maîtriser l'héritage C++ : Public, Protected et Private expliqués
- Fonctions amies et classes amies en C++ : Maîtriser le contrôle d'accès
- Boucle do-while en C++ : Syntaxe, exemples pratiques et boucles imbriquées
- Boucles While vs Do-While : Comparaison claire avec exemples pratiques
- Vérificateur de nombre palindrome en Java : algorithmes avec boucles while et for
- Guide complet sur la date et l'heure en C++
- Maîtriser la surcharge en C++ : Fonctions et opérateurs expliqués