Programmer en R/Programmer une boucle
Boucle itérative
modifierLa structure générale d'une boucle itérative est :
for (variable in vecteur)
instruction
où variable est un nom de variable, et vecteur est un vecteur contenant les valeurs successive que va prendre la variable. Par exemple, pour calculer 10! (factorielle dix) « à la main » :
factorielle <-1
for (i in seq(1, 10))
factorielle <- factorielle*i
On pourra comparer cette valeur avec celle de Γ(11) = 10! : gamma(11)
.
Boucle anté- ou postconditionée
modifierLe logiciel R dispose de deux instructions : repeat
et while
.
La structure
repeat bloc
répète le bloc. La structure ne possède pas en elle-même de condition d'arrêt ; celle-ci doit être incluse dans le bloc considéré, la sortie de la boucle se faisant par la commande break
. Par exemple, le code ci-dessous calcule 10!, la variable i étant décrémentée :
i <- 10
factorielle <- 1
repeat {
factorielle <- factorielle*i
i <- (i - 1)
if (i == 1) break
}
La structure while
a pour syntaxe :
while (instruction1) instruction2
où l'évaluation de instruction1 est un booléen, et instruction2 est exécutée si cette évaluation renvoie « vrai ». Le calcul de la factorielle devient
i <- 10
factorielle <- 1
while (i > 1) {
factorielle <- factorielle*i
i <- (i - 1 )
}
Pilotage des boucles
modifierIl existe deux instruction permettant de piloter les boucles :
- l'instruction
break
, comme nous l'avons déjà vu, permet d'interrompre une boucle ; l'interpréteur exécute ensuite l'instruction qui suit la boucle ; - l'instruction
next
force le passage à l'itération suivantes : l'interpréteur exécute la première instruction de la boucle.