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 :
(Ruby) | |
1 2 3 4 5 6 7 8 |
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 panier de bouteilles, et que ma fonction consiste à vider chaque bouteille.
Code |
Fonction : ViderMesBouteilles Variables : monPanier est un panier de bouteille contenant du liquide Debut : | Pour chaque bouteille de monPanier | | 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 :
(Ruby) | |
1 2 3 4 5 6 7 8 |
def viderMesBouteilles
monPanier = ["eau","vin rouge", "jus d'orange", "cola", "lait"] for maBouteille in monPanier 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.