Voici des "petits" cours de javascript que j'avais, à l'origine, écrit pour expliquer un tant soit peu le fonctionnement du javascript à des amis.
Comme il ne faut pas réinventer la roue, je conseillerais de lire cette page qui est bien plus fournie :
Introduction au javascript par la Mozilla Foundation
LES STRUCTURES DE CONTRÔLE (2)
Les instructions de boucle
- La structure for (...) ... qui permet de répéter une séquence tout en faisant progresser la valeur d'une variable.
- La strucure while (...) qui répète l'exécution d'instruction tant que (while) une condition sera remplie.
- La strucure do ... while(..) qui fait la même chose que le while sauf que la condition n'est vérifiée qu'après le passage dans la boucle.
L'instruction FOR
C'est l'instruction de boucle qui est certainement la plus utilisée.
sa forme générale est :
for (expression initaile; condition de répétition;progression)
{
bloc d'instructions à: répéter.
}
Très souvent l'expression initiale est un compteur.
par exemple, si on veut faire la somme des 20 premiers nombres on fera :
var valeur_final;
for (var i=1;i<=20;i++) {
valeur_final+=i;
}
document.write("La somme des 20 premiers entiers vaut :"+somme_final);
Soit uen somme finale de 210.
On pourrais faire de même avec une factorielle! (20*19*18*17*......).
Une remarque, la valeur du compteur est accessible endehors de la boucle, c'est à dire qu'une fois la boucle finie
i vaudra 20.
On peut très bien imbriquer des structures de contrôle entre elles :
var valeur_final;
for (var i=1;i<=20;i++) {
if (i!=15) {
valeur_final+=i;
}
}
document.write("La somme des 20 premiers entiers sans le 15 vaut :"+somme_final);
Mais cette exemple peut s'écrire plus simplement avec une instruction
continue :
var valeur_final;
for (var i=1;i<=20;i++) {
if (i==15) continue;
valeur_final+=i;
}
document.write("La somme des 20 premiers entiers sans le 15 vaut :"+somme_final);
Le
continue permet de "sauter" le reste des instructions de la boucle, et de repartir pour un nouveau tour.
De même l'instruction
break; permet d'arrêter la boucle :
var valeur_final;
for (i=0;i<20;i++) {
somme_final+=i;
if (i==15) break;
}
Là on obtiendrait la somme des entiers de 1 à 15, soit 120 !
L'instruction WHILE
La forme générale de l'instruction est :
while(condition)
{
bloc d'instructions
}
Dans le cas du
while, on vérifie en premier la condition et si elle est
true, alors on exécute le bloc d'instructions.
Il ne faut pas oublier que la condition de boucle doit évoluer! Pour cela il est logique qu'elle dépende d'au moins une des variables
contenue dans le bloc d'instructions.
Ou alors il faut utiliser une autre structure de contrôle avec l'instruction
break;.
L'instruction
continue permet, comme dans l'instruction
for.
En prenant comme exemple :
var compteur =0;
var somme_final;
while (compteur<20) {
compteur++;
if (compteur==15) continue;
if (compteur==17) break;
somme_final += compteur;
}
J'applique exactement ce que je viens de dire, si je n'avais pas le
break,
le while continuerait jusqu'a ce que
compteur=20 en sautant le
compteur==15.
Avec le break il s'arrête à 17.
Dans cet exemple, j'aurais
somme_final=121 soit la somme des entiers jusqu'à 14 plus 16,
car le
somme_final+=compteur; est placé après le
break;.
Mais il n'est pas forcément besoin de faire
compteur++ à l'intérieur du
while :
var compteur =0;
var somme_final;
while (compteur++<20) {
if (compteur==15) continue;
if (compteur==17) break;
somme_final += compteur;
}
(Pour rappel,
while(compteur++<20) teste compteur par rapport à 20 et ensuite lui rajoute 1,
alors que
while(++compteur<20) ajoute 1 à compteur et ensuite le teste par rapport à 20.)
L'instruction DO ...WHILE
La forme générale de l'instruction est :
do
{
bloc d'instructions
} while(condition)
Quasiment identique au
while, sauf au fait qu'on passe forcément dans la boucle au moins une fois,
puisque la condition est testée après le passage.
Les instructions
break; et
continue marchent élement là.
Pour l'instruction
break; il existe une structure de contrôle par étiquettes,
mais pour le moment je ne pense pas qu'il soit besoin de le voir ;-)
< précédent