La boucle for ("Pour" en français) est sensiblement identique aux autres structures de boucle. Elle permet juste en plus de modifier une variable définit dans sa structure.
Retournons dans la cuisine, pour trouvez un lot de bouteilles vides. J'ai 5 bouteilles numérotées de 0 à 4. Je souhaite toutes les remplir d'eau, je vais donc faire ces actions :
- Code:
-
Fonction : RemplirMesBouteilles
Variables :
mesBouteilles est un lot de bouteille contenant du liquide
Début :
| mesBouteilles[0] <- eau
| mesBouteilles[1] <- eau
| mesBouteilles[2] <- eau
| mesBouteilles[3] <- eau
| mesBouteilles[4] <- eau
Fin
Heureusement que je n'en ai pas touvé 50, sinon ça devient très vite répétitif. Cependant, on constate que chaque ligne est identique, sauf pour le numéro de mes bouteilles, c'est là que l'on va pouvoir voir l'avantage de la boucle 'For'.
Je revide mes bouteilles pour recommencer le remplissage, mais en algorythme, je vais utiliser 'for' (Pour) :
- Code:
-
Fonction : RemplirMesBouteilles
Variables :
mesBouteilles est un lot de bouteille contenant du liquide
numBouteille est un entier
Début :
| Pour numBouteille allant de 0 à 4 par pas de 1
| | mesBouteilles[numBouteille] <- eau
| FinPour
Fin
Vous pouvez constater que cela prend moins de place en écriture. Bon d'accord, avec 5 bouteilles, c'est pas vraiment flagrant, mais imaginez avec 50!!
Et hop en Ruby, voila ce que ça donne :
- Code:
-
def remplirMesBouteilles
mesBouteilles = []
numBouteille = 0
for numBouteille in 0..4
mesBouteilles[numBouteille] = "eau"
end
end
donc pour la syntaxe :
for [nom de la variable] in [valeur de départ]..[valeur de fin]
[Action]
end
Lors de l'entrée dans la structure la variable prend la valeur de début, puis à chaque boucle, la valeur est incrémenté d'un. Dans ce cas la valeur de fin est prise en compte. Si l'on met :
for [nom de la variable] in [valeur de départ]...[valeur de fin]
[Action]
end
La valeur de fin n'est pas prise en compte. Attention donc au nombre de '.', c'est souvent une grande source d'incompréhension dans cette structure de boucle.
On peut trouver aussi une autre utilité à la boucle For. Supposons que je reprenne un pannier de bouteilles, et que ma fonction consiste à vider chaque bouteille.
- Code:
-
Fonction : ViderMesBouteilles
Variables :
monPannier est un pannier de bouteille contenant du liquide
Debut :
| Pour chaque bouteille de monPannier
| | vider la bouteille
| FinPour
Fin
Dans cette algorythme, il n'y a plus de notion de valeur de fin ou de début pour la boucle. La boucle 'Pour', va parcourir chaque élément d'un tableau et mettre son contenu dans la variable utilisé. Le même exemple en ruby :
- Code:
-
def viderMesBouteilles
monPannier = ["eau","vin rouge", "jus d'orange", "cola", "lait"]
for maBouteille in monPannier
vider(maBouteille)
end
end
Dans ce cas, à chaque boucle, la variable prend pour valeur le contenue d'un élément successif du tableau, du premier élément au dernier.
pour le prochain cours : fonction et procédure