Boucle while

Les programmes suivants permettent de saisir plusieurs nombres et d'afficher leur somme.

Dans un premier temps supposons qu'il faut additionner exactement 4 nombres, dans ce cas nous pouvons utiliser un boucle for pour réaliser cela :

var somme=0;

for(var i=1;i<=4;i=i+1){
  somme=somme+parseFloat(prompt("Entrez votre nombre"));
}

print("La somme vaut ");
println(somme);

Exécuter

Maintenant imaginons qu'on ne sache pas à l'avance la quantité de nombres à additionner, nous devons alors utiliser une boucle while et décider, par exemple, d'indiquer au programme la fin de la saisie en entrant la valeur 0.

var somme=0;
var saisie="";

while(saisie!="0"){
  saisie=prompt("Entrez votre nombre ou 0 pour terminer");
  somme=somme+parseFloat(saisie);
}

print("La somme vaut ");
println(somme);

Exécuter

Comment cela-fonctionne-t-il ?

L'instruction while contient un test, le bloc d'instructions de la boucle est exécuté tant que le résultat de ce test est true.

Pour bien comprendre le fonctionnement de ce dispositif, déroulez le diaporama :

 1/7 

while(saisie!="0"){

    saisie=prompt("Entrez votre nombre ou 0 pour terminer");

    somme=somme+parseFloat(saisie);

}

Variable somme : 0

Variable saisie : chaîne de caractères vide

Au départ, la variable somme reçoit la valeur numérique 0 et la variable saisie reçoit une chaîne de caractères vide.

Lorsque l'instruction while est rencontrée, le test saisie!="0" est fait, comme saisie est une chaîne de caractères vide, le résultat du test est true et le bloc d'instructions de la boucle va être exécuté.

 2/7 

while(saisie!="0"){

    saisie=prompt("Entrez votre nombre ou 0 pour terminer");

    somme=somme+parseFloat(saisie);

}

Variable somme : 0

Variable saisie : "15"

La première instruction du bloc provoque l'affichage d'une boite de dialogue pour inviter l'utilisateur à entrer son nombre, imaginons qu'il entre 15 : la variable saisie reçoit la chaîne de caractères « 15 ».

 3/7 

while(saisie!="0"){

    saisie=prompt("Entrez votre nombre ou 0 pour terminer");

    somme=somme+parseFloat(saisie);

}

Variable somme : 15

Variable saisie : "15"

La deuxième instruction ajoute la valeur entrée par l'utilisateur au contenu de la variable somme. Comme la variable somme contenait initialement 0, elle contient maintenant 15.

Remarquez qu'on utilise parseFloat pour convertir la chaîne de caractères saisie en nombre.

 4/7 

while(saisie!="0"){

    saisie=prompt("Entrez votre nombre ou 0 pour terminer");

    somme=somme+parseFloat(saisie);

}

Variable somme : 15

Variable saisie : "15"

Le test saisie!="0" est fait, comme saisie contient « 15 », le résultat est true et les instructions du bloc vont être exécutées

 5/7 

while(saisie!="0"){

    saisie=prompt("Entrez votre nombre ou 0 pour terminer");

    somme=somme+parseFloat(saisie);

}

Variable somme : 127

Variable saisie : "0"

De nouveau l'utilisateur est invité à entrer un nombre et la valeur est ajoutée à la somme, et ainsi de suite.

Plaçons nous à l'étape où l'utilisateur a terminé ses saisies : il a entré plusieurs nombres dont la somme est 127.

Pour indiquer qu'il a terminé il entre la chaîne de caractères « 0 ».

 6/7 

while(saisie!="0"){

    saisie=prompt("Entrez votre nombre ou 0 pour terminer");

    somme=somme+parseFloat(saisie);

}

Variable somme : 127

Variable saisie : "0"

La valeur 0 est rajoutée à la somme ce qui ne modifie rien.

 7/7 

while(saisie!="0"){

    saisie=prompt("Entrez votre nombre ou 0 pour terminer");

    somme=somme+parseFloat(saisie);

}

Variable somme : 127

Variable saisie : "0"

Le test saisie!="0" est fait, mais cette fois comme saisie contient la chaîne de caractères « 0 », le résultat est false et la boucle se termine.

Exercice

Ecrire un programme qui donne le reste de la division d'un nombre entier par 11 en procédant par soustractions successives.

Exécuter