Peut-être que certains l’ont remarqué, j’ai rajouté un colorateur syntaxique. C’est un plugin WordPress : wp-syntax. Je l’ai préféré au Google Syntax Highlighter for WordPress qui lui n’était pas valide XHTML Strict… Bref, tout ça pour vous dire que la lecture du code en est nettement améliorée! Mais revenons à nos moutons boucles.
Les boucles permettent d’effectuer une ou plusieurs tâches un nombre fini de fois, éventuellement sous certaines conditions. C’est très pratique pour répéter la même tache sans avoir à écrire beaucoup de code.
Boucles conditionnelles
Ce sont des boucles qui s’effectuent tant qu’une condition est effectué (while)e, ou bien jusqu’à ce qu’une condition n’est plus valable (until).
While
a=0 while a<5 print a a+=1 end → 01234
On établit la variable a à 0. Puis on entre dans le boucle. Le test effectué est une comparaison. Tant que ce test est vrai (en l’occurence, tant que a est strictement inférieur à 5), on effectue le code dans la boucle. Le code est “print a” (c’est comme le “puts”, sauf qu’on ne revient pas à la ligne). Ensuite, j’incrémente a pour qu’il change de valeur avant de sortir de la boucle. Si on ne fait pas ça, a restera indéfiniment à 0 et la boucle sera infinie (comme la bêtise humaine).
Until
C’est comme le while mais à l’envers. C’est à dire que l’on boucle tant que le test est faux, et donc jusqu’à ce que le test est vrai (c’est comme le until pour le if, rappelez-vous).
a=0 until a>5 print a a+=1 end → 012345
Les boucles conditionnelles sont bien pour les tâches répétitives. Attention néanmoins à faire en sorte que l’on rentre au moins une fois dans la boucle (sinon, à quoi bon l’écrire), et que l’on en sorte à un moment donné (l’infini n’est pas apprécié en informatique). Donc vérifiez que vous altérez la variable que vous testez, sinon…
Boucles itératives
Si on a un ensemble de valeurs (un tableau par exemple) et que l’on veut effectuer des actions à chacune d’elle, on pourrait faire une boucle de ce type :
mon_tableau = [23,45,95] i=0 while i<mon_tableau.length puts mon_tableau[i] i+=1 end →23 45 95
Beaucoup de lignes pour pas grand chose. On va utiliser une autre méthode.
mon_tableau = [23,45,95] for ma_valeur in mon_tableau puts ma_valeur end
On obtient le même résultat, et sans itérateur (le “i” précédent). On ouvre le bloc avec for suivi de la variable locale sur laquelle on va effectuer des actions (ici, un simple puts), suivi de l’objet contenant la collection (en l’occurence “mon_tableau”).
On peut aussi utiliser un bloc do/end :
mon_tableau = [23,45,95] mon_tableau.each do |ma_valeur| puts ma_valeur end
L’avantage par rapport aux boucles conditionneles est que l’on n’a pas besoin d’un itérateur. La boucle s’effectue normalement, en passant d’une valeur à la suivante, jusqu’à la dernière.
L’inconvénient est lié à ce manque d’itérateur justement : on a moins de flexibilité. Si on veut boucler différement (en ajoutant 2 à l’itérateur par exemple), on ne peut pas.
Je vois les boucles itératives comme des cas particuliers de boucles condionnelles. C’est boucles itératives servent donc dans un contexte bien précis, avec un rôle limité mais efficace.
Les boucles c’est long… et continuent demain.
Flux RSS
Juste une petite remarque à propos du plugin de coloration syntaxique. J’ai fait un petit test dans IE7, et le résultat est assez catastrophique.
Oui j’ai vu ça (aaah si on commence à avoir des problèmes avec IE7 aussi…). C’était un problème de float bizarre. Merci de l’avoir notifié!