< Ruby
fin de la boite de navigation du chapitre

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

Définition

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.

Exemple
a = 2 ; b = 5

while (a < b)
  puts "a < b"
end
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 :

Exemple
estConnecte = true

while(estConnecte)
  puts "vous etes connecte"
  estConnecte = false
end

puts "vous avez ete deconnecte"
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 :

Exemple
compteur = 0

while (compteur <= 4)
  print compteur
  compteur += 1
end
# => 0 1 2 3 4
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 :

Exemple
begin
  print compteur
  compteur += 1
end while (compteur <= 4)
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

Définition

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.

Exemple
n = 0

loop
 {
  print n
  n += 2
  break if (n > 6)
 }
# => 0 2 4 6
Fin de l'exemple


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

Propriété

Les accolades {} peuvent être remplacées par les mots-clés do et end.


La boucle until

Définition

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).


Exemple
n = 0

until n>5
  print n
  n += 2
end
# => 0 2 4
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 :

Exemple
begin
  print n
  n += 2
end until n>5
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.

La boucle for

Définition

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 :

Exemple
for n in (0..7)
do
  print n
end
# => 0 1 2 3 4 5 6 7
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.

Propriété

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 :

Exemple
t = [4, 7, 11]

for i in t
  puts i**3
end
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.


Cet article est issu de Wikiversity. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.