Instructions BREAK et CONTINUE de JavaScript

Une boucle peut contenir les instructions break et continue.
Mais quel est l'intérêt d'utiliser ces instructions. En fait elles simplifient la programmation JS !
En particulier elles sont très utiles pour gérer les erreurs de saisie.

Je rappelle que JavaScript est sensible à la casse : il faut écrire ces deux instructions en minuscules dans les scripts !!!

Instruction BREAK dans une boucle

L'instruction break permet une sortie anticipée d'une boucle.
Cette instruction est toujours dans un test.

Exemple : trois tentatives maximales pour saisie le mot de passe. Possibilité de sortir de la boucle dès la première saisie si cette dernière est correcte.

Le script correspondant

var valide =false; var vcompteur =0; alert('pour la saisie du mot de passe vous avez droit à trois essais') ; while (vcompteur < 3) { var vmot = prompt('saisir le mot de passe') ; if(vmot=="sesame") {valide =true ; break;} vcompteur++; } if (valide) alert("vous êtes connecté!"); else alert("connexion impossible");

Commentaire

Une boucle est normalement exécutable 3 fois pour saisir le mot de passe.
Mais dès que le mot de passe saisi est valide ("sesame") valide passe à vrai et sortie de la boucle (commande break).
Testez ce code !

L'instruction break existe aussi dans la structure switch pour sortir du test multiple après exécution d'un case.

Seriez vous capable de produire le même programme mais cette fois construit avec une instruction do ... while ?

Instruction CONTINUE dans une boucle

L'instruction continue dans une boucle permet l'arrêt de l'itération en cours et le passage à la suivante.
Comme break l'instruction continue est exécutée si un test est vérifié.

Exemple : le programme doit afficher les N premiers nombres pairs.
Donc si le reste de la division entière du nombre par 2 ne donne pas zéro il ne faut pas afficher ce nombre et passer à l'itération suivante.

Le script correspondant

var maxi =prompt("saisir un entier inférieur ou égal à 60"); maxi = parseInt(maxi); if (maxi >60) maxi =60; // la limite ne peut dépasser 60 for (var compteur = 0 ; compteur <= maxi; compteur++) { if(compteur%2 != 0) continue; document.write(compteur + " est un nombre pair ! <br>"); }

Commentaire

Notez le test : si le reste de la division entière est différent de zéro alors passage à l'itération suivante (commande continue) Testez ce code !

Seriez vous capable d'imaginer le code affichant les N premiers nombres impairs ???

Utilisation de BREAK et CONTINUE dans le même script

Imaginons un programme qui permet de calculer la moyenne simple de N notes.

Dans les deux cas il faut un contrôle de saisie puisqu'à chaque fois il y a risque de saisir du texte ou de se tromper dans le séparateur décimal.

Le code de la page

... <script> var vnote ; vsomme = 0 ; vcompteur = 0; while (vcompteur < 3) { // 3 essais pour saisir le nombre de notes var vnombre =prompt('saisir le nombre de notes'); if ( !isNaN(vnombre)) {alert('saisie correcte') ; break;} else {alert('erreur saisie'); } // notez la double négation qui vaut affirmation vcompteur++; } for(var vcompteur = 1; vcompteur <= vnombre ; vcompteur++) { vnote = prompt('saisir une note'); if (isNaN(vnote)) {alert('erreur de saisie'); continue; } // si la valeur saisie n'est pas numérique on passe à l'itération suivante vsomme += parseFloat(vnote) ; } // fin for var vmoyenne = vsomme / vnombre; document.write('<br><br><br>'); document.write('<br> points : ' + vsomme); document.write('<br> nombre de notes : ' + vnombre); document.write('<br> moyenne : ' + vmoyenne) ; document.write('<br><br><br>'); </script> </head> <body> <h1>Ci-dessus moyenne simple de N notes</h1> </body></html>

Commentaire

Remarquez tout d'abord que le script est ici ET c'est exceptionnel, dans la partie HEAD de la page !
Ainsi le script va s'exécuter avant que ne soit chargé le DOM.
Si le script s'exécutait après le chargement du DOM alors la balise H1 serait effacée à cause des instructions document.write dans le script ...

L'utilisation d'un formulaire HTML pour les saisies donnerait un programme plus ergonomique surtout avec les nouveaux types de champs : type number en particulier. Testez ce code !
Retour menu