Aller au contenu

Ruby/Boucles

Leçons de niveau 14
Une page de Wikiversité, la communauté pédagogique libre.
Début de la boite de navigation du chapitre
Boucles
Icône de la faculté
Chapitre no 8
Leçon : Ruby
Chap. préc. :Tableaux et hachages
Chap. suiv. :Classes et objets
fin de la boite de navigation du chapitre
En raison de limitations techniques, la typographie souhaitable du titre, « Ruby : Boucles
Ruby/Boucles
 », n'a pu être restituée correctement ci-dessus.

Les boucles sont utilisées dans l'objectif de répéter une instruction donnée un certain nombre de fois. Là aussi, il existe plusieurs manières d'accomplir la même chose.

La boucle while

[modifier | modifier le wikicode]


La condition que vous placez entre les parenthèses (facultatives) est de même type que celles des conditions if, unless, etc.

Début de l'exemple
Fin de l'exemple


Ici, la condition est toujours vraie : la boucle se répétera alors à l'infini. Donc, dans une boucle, on modifie la valeur d'une donnée prise en compte dans la condition, qui est ici un nombre, mais qui pourrait aussi bien être une valeur booléenne, ou autre :

Début de l'exemple
Fin de l'exemple


La valeur de estConnecte est mise à false dès le premier tour de boucle ; ainsi la condition du while n'est plus vérifiée et la boucle n'est plus parcourue.

On peut régler l'exécution d'une boucle while en utilisant un compteur et ainsi exécuter une instruction un certain nombre de fois. Voici comment procéder :

Début de l'exemple
Fin de l'exemple


La valeur de compteur augmente de 1 à chaque tour de boucle : lorsqu'elle atteint 5, la boucle n'est plus parcourue.

Il est possible de réécrire cette boucle en mettant la condition à la fin :

Début de l'exemple
Fin de l'exemple


Cette boucle, délimitée par begin et end while, est toujours exécutée au moins une fois, la condition n'est évaluée qu'après le premier tour de boucle.

La boucle loop

[modifier | modifier le wikicode]


Étant donné qu'elle est infinie, il vous faudra utiliser l'instruction break pour en sortir.

Début de l'exemple
Fin de l'exemple


La boucle est parcourue jusqu'à ce que n soit supérieur à 6.


La boucle until

[modifier | modifier le wikicode]


Début de l'exemple
Fin de l'exemple


La boucle est parcourue jusqu'à ce que n soit supérieur à 5.

Tout comme la boucle while, on peut réécrire cette boucle de cette manière :

Début de l'exemple
Fin de l'exemple


Les instructions placées entre begin et end until seront exécutées au moins une fois car la condition n'est évaluée qu'après le premier tour de boucle.


Par exemple pour obtenir la liste de tous les nombres de l’ensemble [O; 7]. Il nous faut écrire :

Début de l'exemple
Fin de l'exemple


print n est exécutée pour chaque élément de [0; 7], n prend successivement les valeurs de cet ensemble.

Une boucle for se termine par un end. Le mot-clé do peut être placé après l’ensemble à parcourir, il est facultatif si les instructions à exécuter sont précédées d'un retour à la ligne.


Ceci est notamment utile pour les chaînes de caractères : si on considère : s = "chaine", alors puts s[0..3] affichera chai, on remarque alors que la chaîne de caractère est considérée comme un tableau (la première lettre porte l'indice 0).

On peut donc tout aussi bien utiliser la boucle for pour parcourir un tableau :

Début de l'exemple
Fin de l'exemple


Il est tout à fait possible de mettre en association plusieurs conditions et plusieurs boucles : les enchaîner, les emboîter, etc., du moment que vous les refermez toutes avec end.