# Ruby/Boucles

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

La boucle while équivaut à un if qui se répète tant qu'une certaine condition est considérée comme true.
La condition que vous placez entre les parenthèses (facultatives) est de même type que celles des conditions if, unless, etc.
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 :
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 :
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 :
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

La boucle loop est infinie, et ne teste donc pas de condition, elle équivaut à une boucle while(true).
Étant donné qu'elle est infinie, il vous faudra utiliser l'instruction break pour en sortir.
La boucle est parcourue jusqu'à ce que n soit supérieur à 6.
Les accolades peuvent être remplacées par les mots-clés do et end.

## La boucle until

La boucle until est à la boucle while ce que unless est à if. Cette boucle s'exécute jusqu'à ce qu'une condition soit vraie. Elle est donc totalement équivalente à while!(condition).
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 :
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.

## La boucle for

La boucle for exécute des instructions données pour chaque élément d'un ensemble.
Par exemple pour obtenir la liste de tous les nombres de l’ensemble [O; 7]. Il nous faut écrire :
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.
La notation t..n désigne les éléments compris dans l'intervalle délimité par t et n, où t et n sont des nombres et considérés comme étant inclus dans cet intervalle.
La notation t...n désigne le même ensemble, à la différence que la seconde borne de l’ensemble est exclue.
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 :
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.
| Tableaux et hachages | Classes et objets |