Voici comment on construit une boucle while :
Code : C1
2
3
4 | while (/* Condition */)
{
// Instructions à répéter
}
|
C'est aussi simple que cela

While signifie "Tant que". On dit donc à l'ordinateur "
Tant que la condition est vraie : répète les instructions entre accolades".
Je vous propose de faire un test simple : on va demander à l'utilisateur de taper le nombre 47. Tant qu'il n'a pas tapé le nombre 47, on recommence à lui demander le nombre. Le programme ne pourra s'arrêter que si l'utilisateur tape le nombre 47 (je sais je sais, je suis diabolique

) :
Code : C1
2
3
4
5
6
7 | int nombreEntre = 0;
while (nombreEntre != 47)
{
printf("Tapez le nombre 47 ! ");
scanf("%d", &nombreEntre);
}
|
Voici maintenant le test que j'ai fait. Notez que j'ai fait exprès de me planter 2-3 fois avant de taper le bon nombre
Code : Console | Tapez le nombre 47 ! 10
Tapez le nombre 47 ! 27
Tapez le nombre 47 ! 40
Tapez le nombre 47 ! 47 |
Le programme s'est arrêté après avoir tapé le nombre 47.
Cette boucle while se répète donc tant que l'utilisateur n'a pas tapé 47, c'est assez simple.
Maintenant, essayons de faire quelque chose d'un peu plus intéressant : on veut que notre boucle se répète un certain nombre de fois.
On va pour cela créer une variable "compteur" qui vaudra 0 au début du programme et que l'on va
incrémenter au fur et à mesure. Vous vous souvenez de l'incrémentation ? Ca consiste à ajouter 1 à la variable en faisant "
variable++;".
Regardez attentivement ce bout de code et, surtout, essayez de le comprendre :
Code : C1
2
3
4
5
6
7 | int compteur = 0;
while (compteur < 10)
{
printf("Salut les Zeros !\n");
compteur++;
}
|
Résultat :
Code : Console | Salut les Zeros !
Salut les Zeros !
Salut les Zeros !
Salut les Zeros !
Salut les Zeros !
Salut les Zeros !
Salut les Zeros !
Salut les Zeros !
Salut les Zeros !
Salut les Zeros ! |
Ce code répète 10 fois l'affichage de "Salut les Zeros !".
Comment ça marche exactement ?
- Au départ, on a une variable compteur initialisée à 0. Elle vaut donc 0 au début du programme.
- La boucle while ordonne la répétition TANT QUE compteur est inférieur à 10. Comme compteur vaut 0 au départ, on rentre dans la boucle.
- On affiche la phrase "Salut les Zeros !" via un printf.
- On incrémente la valeur de la variable compteur, grâce à l'instruction "compteur++;". Compteur valait 0, il vaut maintenant 1.
- On arrive à la fin de la boucle (accolade fermante), on repart donc au début, au niveau du while. On refait le test du while : "Est-ce que compteur est toujours inférieur à 10 ?". Ben oui, compteur vaut 1
Donc on recommence les instructions de la boucle.
Et ainsi de suite... Compteur va valoir progressivement 0, 1, 2, 3, ..., 8, 9, et 10. Lorsque compteur vaut 10, la condition "compteur < 10" est fausse. Comme l'instruction est fausse, on sort de la boucle.
On pourrait voir d'ailleurs que la variable compteur augmente au fur et à mesure dans la boucle, en l'affichant dans le printf :
Code : C1
2
3
4
5
6
7 | int compteur = 0;
while (compteur < 10)
{
printf("La variable compteur vaut %d\n", compteur);
compteur++;
}
|
Code : Console | La variable compteur vaut 0
La variable compteur vaut 1
La variable compteur vaut 2
La variable compteur vaut 3
La variable compteur vaut 4
La variable compteur vaut 5
La variable compteur vaut 6
La variable compteur vaut 7
La variable compteur vaut 8
La variable compteur vaut 9 |
Voilà, si vous avez compris ça, vous avez tout compris

Vous pouvez vous amuser à augmenter la limite du nombre de boucles ("< 100" au lieu de "< 10"). Cela m'aurait été d'ailleurs très pratique plus jeune pour rédiger les punitions que je devais réécrire 100 fois
Attention aux boucles infinies
Lorsque vous créez une boucle,
assurez-vous toujours qu'elle peut s'arrêter à un moment ! Si la condition est toujours vraie, votre programme ne s'arrêtera jamais !
Voici un exemple de boucle infinie :
Code : C1
2
3
4 | while (1)
{
printf("Boucle infinie\n");
}
|
Souvenez-vous des booléens : 1 = vrai, 0 = faux. Ici, la condition est toujours vraie, donc ce programme affichera "Boucle infinie" sans arrêt !
Pour arrêter un tel programme sous Windows, vous n'avez pas d'autre choix que de fermer la console en cliquant sur la croix en haut à droite. Sous Linux faites Ctrl + C.
Faites donc très attention : évitez à tout prix de tomber dans une boucle infinie.
Notez toutefois que les boucles infinies peuvent s'avérer utiles, notamment, nous le verrons plus tard, lorsque nous réaliserons des jeux.