Cours
4. XHTML et Javascript
4.12. Boucles
Voici une énumération des différentes boucles permettant des itérations en Javascript:
4.12.1 La boucle for
|
for (instructionInitiale; condition; instructionIncrémentale) { instructions } |
Lorsqu'une boucle for est exécutée, voici ce qui se produit :
- L'instruction initiale
instructionInitiale, si présente, est exécutée. - L'expression
conditionest évaluée. - Si la valeur de
conditionesttrue, les instructions de la boucle sont exécutées. Si sa valeur estfalse, la boucleforse termine. - L'instruction de mise à jour
instructionIncrémentale, si présente, est exécutée, et l'on retourne à l'étape 2.
Voici un →exemple simple:
.................
<script>
document.write("Somme des 100 premiers carrés :<br />")
for( i=0 ; i<100 ; i++ )
{
document.write( i + "<sup>2</sup> = " + i*i + "<br />");
}
</script>
.................
Pour mieux comprendre ce qui se passe, écrivez à la 5e ligne:
document.writeln( i*i );
Tout le reste ne sert qu'au formatage!
4.12.2 La boucle do...while
|
do
{ instructions; } while (condition) |
Lorsqu'une boucle do...while est exécutée, voici ce qui se produit :
- Les instructions sont exécutés.
- L'expression
conditionest évaluée. - Si la valeur de
conditionesttrue, les instructions de la boucle sont de nouveau exécutées. Si sa valeur estfalse, la boucle se termine.
Les instructions sont donc au moins exécutées une fois!
Voici un →exemple:
.................
<script>
jour = new Array("dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi");
x=1;
temps = new Date();
maintenant = temps.getTime();
date = temps.getDay();
document.write("Aujourdhui: " + jour[date]+"<br />");
do
{
alors = maintenant + (2 * x * 24 * 60 * 60 * 1000);
temps.setTime(alors);
date = temps.getDay();
document.write("Dans " + 2*x + " jours: " + jour[date]+"<br />");
x++ ;
}
while
(
x<10
)
</script>
.................
Pour comprendre ce qui se passe, il faut revoir les →tableaux et la →date en Javascript! La variable x compte les jours à partir de maintenant. L'essentiel est d'incrémenter x dans les instructions de do{}, pour que la boucle puisse rencontrer une condition qui la termine!
4.12.3 La boucle while
|
while (condition) { instructions; } |
Lorsqu'une boucle while est exécutée, voici ce qui se produit :
- L'expression
conditionest évaluée. - Si la valeur de
conditionesttrue, les instructions de la boucle sont exécutées. Si sa valeur estfalse, la boucle se termine.
Voici un →exemple basé sur la série:
$\frac{\pi}{4}=1-\frac{1}{3}+\frac{1}{5}-\frac{1}{7}+\frac{1}{9}-\frac{1}{11}+....$
.................
<script>
document.write("Valeur du nombre π correcte jusqu'à la 5e décimale: "+"<br />");
p=1;
difference=1;
avant=1;
apres=2;
nombre=-3;
signe=-1;
while(difference>Math.pow(10,-6))
{
avant=p;
p=p + 1/nombre;
apres=p;
signe=signe*(-1);
nombre=(Math.abs(nombre)+2)*signe;
difference=Math.abs(avant-apres);
}
document.write(Math.round(400000*p)/100000);
</script>
.................
Pour comprendre ce qui se passe, il faut revoir les →calculs en Javascript! La condition du while stipule que la boucle persiste, il faut qu'il y ait une différence entre ancienne valeur calculée et nouvelle qui soit plus grande que $10^{-6}$. Que fait l'avant-dernière ligne?
Voici comment on peur sortir des boucles à un moment voulu:
4.12.4 L'instruction break
|
break |
Lorsqu'une instruction break est exécutée à l'intérieur d'une boucle, voici ce qui se produit :
- On sort de de l'itération courante de la boucle
- La boucle se termine que la
conditionsoittrueoufalse.
Voici un →exemple simple:
.................
<script>
document.write("Somme avortée des 100 premiers carrés :<br />")
for( i=0 ; i<100 ; i++ )
{
if (i==6){break;}
document.write( i + "<sup>2</sup> = " + i*i + "<br />");
}
</script>
.................
4.12.5 L'instruction continue
|
continue |
Lorsqu'une instruction continue est exécutée à l'intérieur d'une boucle, voici ce qui se produit :
- On sort seulement de l'itération courante de la boucle.
-
La boucle continue, si la
conditionest toujourstrue, autrement elle se termine.
Voici un →exemple simple:
.................
<script>
document.write("Somme amputée des 100 premiers carrés :<br />")
for( i=0 ; i<100 ; i++ )
{
if (i==6){continue;}
document.write( i + "<sup>2</sup> = " + i*i + "<br />");
}
</script>
.................
Regardez à la position 6!