JavaScript : instructions BREAK et CONTINUE

Une boucle peut contenir les instructions break et continue.
Mais quel est l'intérêt d'utiliser ces instructions dans une boucle ? En fait elles simplifient la programmation JavaScript ! Entre autres, 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"), la variable valide passe à VRAI et il y a sortie prématurée 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 de l'un des 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 (nombre impaire et alors 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 ! 
"); }

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 script

Il est situé dans la partie HEAD de la page.

		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('


'); document.write('
points : ' + vsomme); document.write('
nombre de notes : ' + vnombre); document.write('
moyenne : ' + vmoyenne) ; document.write('


');

Notez 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 H3 serait effacée à cause des instructions document.write du script.

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