Programmer en R/Programmer une boucle

Boucle itérative

modifier

La structure générale d'une boucle itérative est :

for (variable in vecteur)
    instruction

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

modifier

Le 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

modifier

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