La boucle while

Parent Previous Next

La boucle while

Une boucle est une structure analogue aux structures conditionnelles vues dans le chapitre précédent sauf qu'ici il s'agit de répéter une série d'instructions. La répétition se fait jusqu'à ce qu'on dise à la boucle de s'arrêter. À chaque fois que la boucle se répète on parle d'itération (qui est en fait un synonyme de répétition).



Pour faire fonctionner une boucle, il est nécessaire de définir une condition. Tant que celle-ci est vraie (true), la boucle se répète. Dès que la condition est fausse (false), la boucle s'arrête. 

Voici un exemple de la syntaxe d'une boucle while : 

Code : JavaScript 

1

2

3

4

5

while (condition) {

   instruction_1;

   instruction_2;

   instruction_3;

}



Répéter tant que…



La boucle while se répète tant que la condition est validée. Cela veut donc dire qu'il faut s'arranger, à un moment, pour que la condition ne soit plus vraie, sinon la boucle se répéterait à l'infini, ce qui serait fâcheux.

En guise d'exemple, on va incrémenter un nombre, qui vaut 1, jusqu'à ce qu'il vaille 10 : 

Code : JavaScript 

1

2

3

4

5

6

7

var number = 1;

       

while (number < 10) {

   number++;

}

         

alert(number); // Affiche : « 10 »



Au départ, number vaut 1. Arrive ensuite la boucle qui va demander si number est strictement plus petit que 10. Comme c'est vrai, la boucle est exécutée, et number est incrémenté. À chaque fois que les instructions présentes dans la boucle sont exécutées, la condition de la boucle est réévaluée pour savoir s'il faut réexécuter la boucle ou non. Dans cet exemple, la boucle se répète jusqu'à ce que number soit égal à 10. Si number vaut 10, la condition number < 10 est fausse, et la boucle s'arrête. Quand la boucle s'arrête, les instructions qui suivent la boucle (la fonction alert() dans notre exemple) sont exécutées normalement.


Exemple pratique



Imaginons un petit script qui va demander à l'internaute son prénom, ainsi que les prénoms de ses frères et sœurs. Ce n'est pas compliqué à faire direz-vous, puisqu'il s'agit d'afficher une boîte de dialogue à l'aide de prompt() pour chaque prénom. Seulement, comment savoir à l'avance le nombre de frères et sœurs ? 

Nous allons utiliser une boucle while, qui va demander, à chaque passage dans la boucle, un prénom supplémentaire. La boucle ne s'arrêtera que lorsque l'utilisateur choisira de ne plus entrer de prénom. 

Code : JavaScript 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

var nicks = '', nick,

   proceed = true;

     

while (proceed) {

   nick = prompt('Entrez un prénom :');

           

   if (nick) {

       nicks += nick + ' '; // Ajoute le nouveau prénom ainsi qu'une espace juste après

   } else {

       proceed = false; // Aucun prénom n'a été entré, donc on fait en sorte d'invalider la condition

   }

}

         

alert(nicks); // Affiche les prénoms à la suite





La variable proceed est ce qu'on appelle une variable témoin, ou bien une variable de boucle. C'est une variable qui n'intervient pas directement dans les instructions de la boucle mais qui sert juste pour tester la condition. Nous avons choisi de la nommer proceed, qui veut dire « poursuivre » en anglais. 

À chaque passage dans la boucle, un prénom est demandé et sauvé temporairement dans la variable nick. On effectue alors un test sur nick pour savoir si elle contient quelque chose, et dans ce cas, on ajoute le prénom à la variable nicks. Remarquez que j'ajoute aussi une simple espace, pour séparer les prénoms. Si par contre nick contient la valeur null — ce qui veut dire que l'utilisateur n'a pas entré de prénom ou a cliqué sur Annuler — on change la valeur de proceed en false, ce qui invalidera la condition, et cela empêchera la boucle de refaire une itération.


Quelques améliorations


Utilisation de break



Dans l'exemple des prénoms, nous utilisons une variable de boucle pour pouvoir arrêter la boucle. Cependant, il existe un mot-clé pour arrêter la boucle d'un seul coup. Ce mot-clé est break, et il s'utilise exactement comme dans la structure conditionnelle switch, vue au chapitre précédent. Si l'on reprend l'exemple, voici ce que ça donne avec un break : 

Code : JavaScript 

1

2

3

4

5

6

7

8

9

10

11

12

13

var nicks = '', nick;

       

while (true) {

   nick = prompt('Entrez un prénom :');

       

   if (nick) {

       nicks += nick + ' '; // Ajoute le nouveau prénom ainsi qu'une espace juste après

   } else {

       break; // On quitte la boucle

   }

}

     

alert(nicks); // Affiche les prénoms à la suite




Utilisation de continue



Cette instruction est plus rare, car les opportunités de l'utiliser ne sont pas toujours fréquentes. continue, un peu comme break, permet de mettre fin à une itération, mais attention, elle ne provoque pas la fin de la boucle : l'itération en cours est stoppée, et la boucle passe à l'itération suivante.


Créé avec HelpNDoc Personal Edition: Produire des livres Kindle gratuitement

Site à deux balles