<< Retour au sommaire

 

 

Les boucles

 

 

 

Le sommaire :

  1. Introduction.
  2. La boucle While.
  3. While, le moment de vérité.
  4. La boucle Do While.
  5. La boucle Do Until.
  6. La boucle For.
  7. Un exemple avec la boucle For.
  8. Un exemple avec la boucle Do-While création d’une liste de liens.

 

 

Introduction

 

Une boucle est également appelée « une répétitive », elle permet de réitérer l’exécution d’un traitement selon une condition.

« Réitérer signifiant « répéter »…

 

Il existe 3 types de boucles, la boucle While, la boucle Do et la boucle For.

 

Et, selon la boucle utilisée, il existe 2 logiques à ne pas confondre !

  1. Tant que la boucle ne remplit pas une condition attendue, le traitement qu’elle contient est exécuté.
  2. Tant qu’une condition est vraie, le traitement contenu dans la boucle est exécuté.

 

Chaque exécution du traitement contenu dans la boucle est appelée une itération. Une itération est donc une exécution du corps de la boucle.

La boucle est bien sûr délimitée par des instructions de début et de fin…

Puis, lorsque la boucle a terminé son travail, l’exécution du code reprend juste après le code de fermeture de la boucle…

 

D’ailleurs, vous devez être très prudent lorsque vous partez dans la construction d’une boucle.

Eh oui, vous apprendrez peut-être, à vos dépends, à découvrir le piège classique de la boucle !

En effet, Puisqu’il faut qu’un évènement survienne pour que la boucle soit interrompue, vous comprendrez que dans le cas d’une boucle pour laquelle l’évènement ne surviendrait pas, serait inévitablement une boucle éternelle qui risquerait de vous embêter au point peut-être, de planter tout simplement votre machine…

(« Planté » ne veut pas dire non plus « cassé » !)

 

Alors, avant d’exécuter votre boucle, je vous conseille vivement de relire attentivement votre code afin d’être sûr qu’il n’y ait aucune erreur de logique.

 

A chaque itération de la boucle, la condition est vérifiée…

« Voici pour l’introduction… »

 

 


La boucle While

 

Cette boucle retient la logique suivante :

 

Tant qu’une condition est vraie,

-         Exécuter le code situé ici,

Fin de la boucle

 

Avec la vraie syntaxe maintenant…

 

While Condition

Traitement corps de la boucle,

Wend

Traitement suite.

 

La description :

 

« Condition » est vérifiée, si elle est vraie, « Traitement du corps de la boucle » est exécuté, puis la condition est vérifiée à nouveau, si elle est vraie on réexécute « traitement du corps de la boucle » etc. etc.

Puis, lorsque la condition devient fausse, le corps de la boucle n’est plus exécuté, l’exécution saute directement après le « Wend », c’est-à-dire à « traitement suite ».

 

Dans l’exemple qui suit, nous initialisons une variable qui va jouer le rôle de compteur.

La condition de la boucle est :

Tant que Compteur est inférieur à 10…

Quant au corps de la boucle, il incrémente « Compteur » et affiche une ligne dans la page comme témoignage d’une itération de boucle…

 

Le code :

 

<pre>

<script type="text/VBscript">

' Initialisation d'un compteur à 0

Compteur = 0

' boucle : tant que Compteur est inférieur à 10

while Compteur < 10

 ' Incrémentation du compteur

 Compteur = Compteur +1

 ' Affichage du numéro de ligne

 document.writeln "Vous êtes dans la ligne numéro "&Compteur

' Fin du corps de la boucle

Wend

' affichage de la fin de boucle

document.writeln "Fin de la boucle"

</script>

</pre>

 

 


While, le moment de vérité

 

Bon, voici un exemple qui va se passer de commentaires…

 

Afficher l’exemple de la boucle While >>

 

Le code :

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >

<head>

<title>Le moment de vérité</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<body>

<script type="text/VBscript">

' initialisation de la réponse de l'utilisateur à "non"

reponse = vbNo

' La boucle : tant que la réponse est "non"

While reponse = vbNo

 ' Je pose une question à l'utilisateur, pardon, plutôt l'utilisatrice

 reponse = MsgBox ("Est-ce que vous m'aimez ? ",vbYesNo,"Question indiscrète")

wend

' enfin, elle a cliqué sur "oui"

</script>

<h1>Notre histoire</h1>

<pre>

bonjour toi,

Ah enfin, j'ai toujours su que tu m'aimais...

Lol !

</pre>

</body>

</html>

 

 


La boucle Do While

 

Cette boucle est une seconde version de la boucle « While ».

 

En effet, la seule différence entre les 2, c’est que cette fois la vérification de la condition est réalisée à la fin de la première itération. Du coup, contrairement à « While » vue dans le chapitre précédent, nous sommes certains que le corps de la boucle sera exécuté au moins une fois…

 

La syntaxe :

 

Do

Traitement,

Loop While Condition.

 

En terme d’analyse :

 

Faire

Ce traitement,

Tant que la Condition est Vraie.

 

En reprenant l’exemple du chapitre précédent dans lequel j’obligeais l’utilisateur à répondre « Oui », voici ce que ça donne avec « Do » :

 

<script type="text/VBscript">

do

 reponse = MsgBox ("Est-ce que vous m'aimez ? ",vbYesNo,"Question indiscrète")

Loop While reponse = vbNo

</script>

 

 


La boucle Do Until

 

Un peu comparable à la boucle « Do While », la boucle « Do Until » permet juste d’inverser le sens de la question…

 

  1. Avec « Do While », on exécute le traitement tant que la condition est vraie.
  2. Avec « Do Until », on exécute le traitement jusqu’à ce que la condition soit vraie.

 

Du coup, nous inversons le sens de la vérification !

 

En analysant l’exemple des chapitres précédents, voici ce que ça donne.

 

Avec la boucle « Do While » :

 

Faire

Traitement (Question à l’utilisatrice,)

Tant que la réponse est « Non ».

 

Avec la boucle « Do Until » maintenant :

Faire

Traitement (question à l’utilisatrice),

Jusqu’à ce que la réponse soit « Oui ».

 

Voici donc le code :

 

<script type="text/VBscript">

do

 reponse = MsgBox ("Est-ce que vous m'aimez ? ",vbYesNo,"Question indiscrète")

Loop Until reponse = vbYes

</script>

 

 


La boucle For

 

La boucle For permet d’exécuter un traitement dont le nombre d’itération est déterminé par un compteur qui sera incrémenté à chaque  itération.

 

Voici la syntaxe en français :

 

Pour Compteur allant de 1 à 10 par pas de 1,

Exécute ce traitement.

Incrémente le compteur.

 

La véritable syntaxe :

 

For Compteur = Val1 To Val2 Step Val3

Traitement

Next

 

La description :

Compteur est une variable de type entier.

Val1, est la valeur initiale que devra prendre Compteur.

Val2, est la dernière valeur que devra prendre Compteur.

Val3, est la valeur de l’incrémentation de Compteur, si ce paramètre est omis, la valeur par défaut est 1.

Traitement, est le code qui sera exécuté à chaque itération.

Next, c’est le code de fin de boucle et qui déclenche l’incrémentation du compteur.

 

Voici un petit exemple qui affiche :

Ligne numéro 1

Ligne numéro 2

Ligne numéro 3

Ligne numéro 4

Ligne numéro 5

 

Ici, le compteur est « i ».

 

<script type="text/VBscript">

for i=1 To 5 Step 1

 document.writeln "Ligne numéro "&i

Next

</script>

 


Un exemple avec la boucle For

 

dans ce nouvel exemple, c’est l’utilisateur qui va décider le nombre de lignes à afficher dans la variable « NBLignes ».

 

Cette variable sera donc utilisée comme valeur de sortie de la boucle dont le compteur sera « i ».

 

Afficher l’exemple de la boucle For >>

 

Le code :

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >

<head>

<title>Apprentissage du For</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<body>

<pre>

<script type="text/VBscript">

' Demande à l'utilisateur combien de lignes doit on afficher

NBLignes = InputBox ("Combien d'itérations désirez-vous réaliser ?","La boucle For")

' Vérifie si l'utilisateur a demandé au moins une ligne

If NBLignes > 0 then

 ' Oui c'est bon, allons-y...

 Document.writeln "Vous avez demandé "&NBLignes&" ligne(s), les voici :"

 for i=1 To NBLignes Step 1

  document.writeln "Ligne numéro "&i

 Next

else

 ' Bon, c'est raté, il ne veut rien faire...

 document.write "Ok, pas de ligne ça marche..."

End If

</script>

</pre>

<p>Fin de l'exemple</p>

</body>

</html>

 

 


Un exemple avec Do-While création d’une liste de sites.

 

Dans cet exemple, la page boucle sur un traitement par l’intermédiaire de la boucle « do-while ».

 

Le traitement demande à l’utilisateur de saisir l’adresse URL d’un site.

Puis, si l’utilisateur a réalisé une saisie, et que le bouton « Ok » du « InputBox » est validé, la nouvelle adresse est insérée dans un nouvel élément de liste de type « <ul> ».

Toujours dans le traitement, et par l’intermédiaire cette fois d’un « MsgBox », on demande à l’utilisateur s’il désire saisir une nouvelle adresse URL.

 

La condition de la boucle traitera la réponse !

-         Puisque tant que la réponse sera « oui », on boucle…

 

Afficher l’exemple de la boucle Do-While >>

 

Le code de la page :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >

<head>

<title>Création d'une liste de liens</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<body>

<h1>Affichage de liens</h1>

<pre>

Voici une liste de sites plutôt sympas :

<!-- création d'une liste non ordonnée -->

<ul>

<script type="text/VBscript">

' début de la boucle

Do

 ' demande à l'utilisateur de saisir une adresse URL

 URL_site = InputBox ("Saisissez l'adresse URL d'un site ","Nouveau site")

 ' vérifie si l'utilisateur a bien réalisé une saisie et s'il n'a pas cliqué sur "Annuler"

 If (URL_site<>"")And(URL_site<>False) then

  ' Ok c'est bon, affichage d'un nouvel élément de liste

  document.write "<li><a href='"&URL_site&"'>"&URL_site&"</a></li>"

 End If

 ' demande à l'utilisateur s'il désire saisir une nouvelle adresse URL

 interrogation = MsgBox ("désirez-vous ajouter un site ?",vbYesNo,"Question")

' vérification de la condition de la boucle

' tant que la réponse de l'utilisateur est "oui"

Loop While interrogation=vbYes

</script>

<!-- fermeture de la liste -->

</ul>

</pre>

</body>

</html>

 

Philippe BOULANGER