SELFHTML/Quickbar  JavaScript  Éléments du langage


Boucles (while/for/do-while)

Cette page est un document avec du texte et des informations

 Boucles avec "while"
 Boucles avec "for"
 Boucles avec "do-while"
 Contrôle à l'intérieur de boucle - break et continue

 

JavaScript 1.0Netscape2.0MS IE3.0 Boucles avec "while"

exemple Exemple d'affichage: aperçu

À l'aide de boucles while vous pouvez répéter des instructions de programme jusqu'à ce que la condition formulée dans la boucle soit remplie.

Exemple:

<html>
<head>
<title>Identification de l'utilisateur</title>
<script language="JavaScript">
<!--
 var motpasse = "danseuretoile";
 var entree = "";
 var compteur = 1;
 while((entree != motpasse)&&(compteur <= 3))
 {
  entree = window.prompt(compteur + ". essai: Entrez le mot de passe","");
  compteur++;
  }  
 if(entree != motpasse)
   history.back();
 else
   document.location.href="secret.htm";
// -->
</script>
</head>
<body>
</body>
</html>

Explication:

Une boucle while commence avec le mot while (while = aussi longtemps que). Suit entre parenthèses la condition. Pour formuler une condition, vous avez besoin d'  opérateurs de comparaison. Le contenu de la boucle sera répété jusqu'à ce que la condition soit vraie.

En règle générale une boucle while contient plusieurs instructions à l'intérieur de la boucle. Notez toutes ces instructions à l'intérieur de parenthèses accolade { et } (touches Alt 123 et Alt 125), comme dans l'exemple (voir aussi la partie traitant des  blocs d'instructions).

L'exemple ci-dessus représente une simple demande de mot de passe. L'utilisateur a trois essais pour entrer le mot de passe correct. Pour cela une boucle a été mise en place.

Attention:

Veillez toujours pour de telles boucles qu'il y ait au moins une possibilité de terminer la boucle après un laps de temps raisonnable. Autrement, vous créez ce qu'on appelle une "boucle sans fin", de laquelle l'utilisateur ne peut sortir qu'en interrompant brutalement son navigateur WWW. C'est particulièrement irritant au cours de sessions en ligne sur le WWW!

Pour éviter les boucles sans fin, vous avez besoin de quelque chose qui à un moment donné permette de sortir de la boucle. Le plus souvent est défini à cette fin un "compteur" - dans notre exemple: la  variable compteur. Cette variable a ici une valeur de départ de 1 et sera incrémentée de 1 à chaque passage de boucle avec l'instruction compteur++;. Quand dans l'exemple le compteur est égal ou supérieur à 3 la boucle est interrompue.

D'autres possibilités pour interrompre une boucle sont décrites  ci-après.

 

JavaScript 1.0Netscape2.0MS IE3.0 Boucles avec "for"

À l'aide de boucles for vous évitez le problème des  boucles avec "while". La condition d'une boucle for prévoit de prime abord un compteur et une condition pour l'interruption.

Exemple:

<html><head><title>Test</title>
</head><body>
<script language="JavaScript">
<!--
 for(i = 1; i <= 100; i++)
  {
   var x = i * i;
   document.write("<br>Le carré de " + i + " est " + x);
  }
// -->
</script>
</body></html>

Explication:

Une boucle for commence par le mot for. Suit entre parenthèses la condition de la boucle. Pour la boucle for entre en vigueur une syntaxe fixe. À l'intérieur même de la condition de la boucle figurent trois instructions. Dans la première instruction est défini et initialisé le compteur de boucles. Dans l'exemple, un compteur i est défini et initialisé avec la valeur 1. La deuxième condition contient la condition à partir de laquelle la boucle se termine. Pour cela, vous avez besoin d'  opérateurs de comparaison. Dans la troisième instruction, le compteur de boucles est modifié de telle façon qu'à un moment ou à un autre il remplira la deuxième condition notée. Dans l'exemple, i est incrémenté de 1 à chaque tour de boucle afin que sa valeur excède 100 à un moment quelconque de façon à remplir la condition de la deuxième instruction.
L'exemple utilise le compteur de boucles pour rechercher à chaque tour de boucles le carré le la valeur actuelle du compteur. Le résultat est ensuite formaté HTML et écrit dans la fenêtre active.

Une variante spéciale de la boucle for est nommée boucle for-in.

Exemple:

<script language="JavaScript">
<!--
  function proprieteobjet(objet, nomobjet)
   {
    var resultat = "";
    for (var propriete in objet)
     {
      resultat += nomobjet+ "." + propriete + " = " + objet[propriete ] + "<br>";
     }
    return resultat ;
   }
// -->
</script>

Explication:

Dans cet exemple la fonction proprieteobjet recherche toutes les propriétés d'un  objet JavaScript. Les propriétés recherchées sont rassemblées par la fonction en une chaîne de caractères formatée HTML pour être rendue à une fonction appelante.

 

JavaScript 1.0Netscape4.0MS IE4.0 Boucles avec "do-while"

La boucle do-while est une variante de la  boucle "While" normale. La différence entre les deux réside en ce que, pour la boucle while normale la condition de la boucle est vérifiée avant l'exécution du code, tandis que pour la boucle do-while le code est d'abord exécuté et qu'après seulement la condition de la boucle est vérifiée. De cette façon il vous est possible d'imposer que les instructions de la boucle soient exécutées dans tous les cas au moins une fois, même quand la condition de la boucle s'avère fausse dés le départ.

Exemple:

une fois comme ceci:
<script language="JavaScript">
<!--
var x = 10;
do
 {
  document.write("<br>x * x = " + (x * x));
  x = x + 1;
 } 
while(x < 10);
// -->
</script>
<p>
et une fois comme cela:
<script language="JavaScript">
<!--
var x = 10;
while(x < 10)
{
  document.write("<br>x * x = " + (x * x));
    x = x + 1;
}
// -->
</script>

Explication:

Dans l'exemple deux petits passages JavaScript sont définis. Dans les deux passages, une  variable x est définie et la valeur 10 lui est affectée. Dans le premier passage, le carré de x (qui est incrémenté de 1 à chaque boucle) sera écrit aussi longtemps que x est plus petit que 10. Étant donné que x a déjà au début une valeur de 10, la condition d'interruption est remplie dés le départ. Malgré tout, le carré de x sera sorti une une fois étant donné que la condition de la boucle n'est vérifiée qu'après l'exécution des instructions qui se trouvent dans la boucle.
Dans le deuxième passage Script, les mêmes conditions sont posées au départ, cependant il a été notée une boucle while normale. Étant donné que x n'est pas plus petit que 10 dés le départ, les instructions de la boucle while ne seront pas exécutées une seule fois. La vérification de la condition de la boucle qui se fait au début l'empêche.

 

JavaScript 1.0Netscape2.0MS IE3.0 Contrôle à l'intérieur de boucle - break et continue

Les boucles sont des "facteurs critiques" dans un script. Pour certaines tâches plus compliquées, il n'est quelquefois pas simple de programmer une boucle de façon à ce qu'elle soit dans chaque cas à un moment donné interrompue. C'est pourquoi il existe des commandes complémentaires pour contrôler ce qui se passe dans une boucle.

Exemple 1:

<script language="JavaScript">
<!--
 var i = 0;
 while (i < 6)
 {
  if (i == 3) break;
  i++;
 }
alert("i = " + i);
// -->
</script>

Explication:

Avec break vous pouvez arrêter une boucle immédiatement. Pour cela, il vous faut noter dans le corps de la boucle une instruction if de laquelle dépend le mot break comme instruction. Dans l'exemple la boucle va s'interrompre dés que i aura comme valeur 3, bien que d'après l'instruction de la boucle i puisse atteindre la valeur 6.

Exemple 2:

<script language="JavaScript">
<!--
 var i = 0;
 while (i < 6)
 {
  fin:  
  if (i == 3)
   {
    alert("Et voila, car i a atteint la valeur de " + i);
	break fin;
   }
  i++;
 }
// -->
</script>

Explication:

Ceci est une variante particulière de break. Vous pouvez noter, avant la question (if) dont vous faites dépendre une instruction break, une étiquette. C'est un nom que vous donnez vous même suivi de deux points, dans l'exemple fin:. Derrière le mot break vous pouvez alors mentionner le nom de l'étiquette. Ainsi vous vous assurez dans l'exemple que l'instruction break se rapporte à chaque fois à la demande if dans laquelle il est demandé si i est égal à 3. Dans des cas simples comme dans l'exemple ci-dessus, c'est à vrai dire superflu. Mais conservez cette possibilité dans l'esprit au cas où il vous arriverait de programmer des demande if imbriquées dans des boucles et que vous utilisiez là aussi des instructions break. Pensez aussi que cette variante de l'instruction break fait partie de JavaScript 1.2 et qu'elle mène à des messages d'erreur pour des versions antérieures à Netscape Version 4.x et à l'Explorer Internet MS 4.x, étant donné que la syntaxe du double point pour l'étiquette n'est connu qu'à partir de ces versions.

Exemple 3:

<script language="JavaScript">
<!--
 var i = 0, j = 0;
 while (i < 6)
 {
  i++;
  if (i == 3) continue;
  j++;
 }
alert("i est égal à " + i + " et j est égal à " + j);
// -->
</script>

Explication:

Avec continue vous imposez la poursuite immédiate du prochain tour de boucle. Les autres instructions qui suivent dans la boucle ne sont pas exécutées. Dans l'exemple ci-dessus deux compteurs i et j sont incrémentés de 1 à chaque tour de boucle. Quand i est égal à 6 la boucle est interrompue. Entre temps i a aussi la valeur 3. Ce cas de figure est traité par la demande if. Quand i est égal à 3, le tour de boucle suivant est démarré aussitôt. L'instruction j++; n'est donc pas exécutée dans le tour de boucle où i a la valeur 3. Pour cette raison, i aura à la fin la valeur 6 alors que j n'aura que la valeur 5.

après: Mots réservés
avant: Instructions conditionnelles (if-else/switch)
 

SELFHTML/Quickbar  JavaScript  Éléments du langage

© 1998 Stefan Münz / © 2001 Traduction  Serge François, 13405@free.fr