Vous êtes sur la page 1sur 4

Programmer ses fonctions R : conditions et boucles

Dans cette partie, il vous est demandé de vous familiariser avec les notions de
« conditions » et de « boucles ».

Consultez les ressources pédagogiques mises à votre disposition, l’aide en ligne du logiciel R,
d’autres ressources pédagogiques de votre choix,…

Vous devez effectuer ce travail en travaillant avec un script R et rendre votre travail sous la
forme d’un rapport au format .Rmd. Pour cela, reportez-vous à la section « Compléments
utiles pour la programmation statistique avec R » et consultez les ressources mises à votre
disposition.

Remarque : dans ce travail préparatoire aux séances 3 et 4, il vous est demandé de ne pas
utiliser l’instruction ifelse, qui sera abordée ultérieurement

I. Conditions
1. Définition « algorithmique »
Comme l’illustre le schéma ci-dessous, l’ordinateur teste une condition (la valeur d’un
booléen). Si le booléen est évalué à vrai, alors on exécute les instructions qui suivent le
« alors », puis on passe aux instructions qui suivent. Sinon, les instructions après le « sinon »
sont exécutées.

1
2. Questions
a. Affecter à une variable x la valeur -2 et à une variable y la valeur 5.
b. Affecter 0 à une variable nbre et implémenter dans R avec l’instruction
if(…){

}else{

}
l’algorithme suivant :
SI nbre > 0
ALORS : ECRIRE "Ce nombre est positif”
SINON
ECRIRE "Ce nombre est negatif ou nul"
Quel est le résultat affiché ?
c. Exécuter votre code lorsque nbre = x.
d. Exécuter votre code lorsque nbre = y.

II. Boucles « Pour … allant de … à … »


1. Exemple « pas à pas »
On veut écrire un code affichant les six premiers nombres pairs (0, 2, 4, 6, 8, 10). Pour
cela, on va écrire un code basé sur la répétition d’une instruction en fonction d’un
indice.
a. On considère que l’instruction « afficher 0 » s’écrit « afficher 2*(i=0) ».
Comment s’écrivent les instructions « afficher 2 », « afficher 4 », « afficher 6 »,
« afficher 8 », « afficher 10 » en fonction de l’indice i ?
b. Quelle est la plus petite valeur que prend i ? La plus grande ?
c. Traduire l’algorithme suivant sous forme de code R (on utilisera une boucle for)

Pour i allant de 0 à 5
Début du Pour
Instructions :
Afficher 2*i
Aller à la ligne
Fin du Pour

2
2. Factorielle d’un nombre entier positif
a. Affecter à une variable t la valeur 5.
b. Initialiser une variable fact à 1 et écrire une boucle pour calculer la factorielle du
nombre entier t. Le résultat sera stocké dans fact. Vous pouvez utiliser la relation
𝑡! = 𝑡 ∗ (𝑡 − 1)!
c. Vérifier votre code en appliquant la fonction factorial() de R sur t.

III. Boucle « Tant que … faire »


1. Définition « algorithmique »

On utilise plutôt ce type de boucle lorsqu’on ne connait pas a priori le nombre d’itérations.
On évalue une condition. Si elle est vraie, on exécute des instructions. Cela signifie que pour
exécuter au moins une fois les instructions (« entrer dans la boucle »), la condition doit être
vraie au départ.
Tant que la condition est vraie, on exécute les instructions.
Pour arrêter (« sortir de ») la boucle, la condition doit devenir fausse. Cela implique que les
instructions modifient la condition !

3
Dans R, ce type de boucle s’exécute avec l’instruction while.

2. Implémentation d’un jeu


a. On veut faire deviner le nombre 15. On demande d’entrer un nombre à un utilisateur.
Tant qu’il ne trouve pas le nombre à deviner (ici, 15), on réitère la question et on
compte le nombre d’essais de l’utilisateur.
Pour cela, créer une variable A contenant le nombre à deviner. Initialiser deux variables,
essai, et nb.essais à 0. Elles représentent, respectivement, le nombre donné par
l’utilisateur et le nombre d’essais. On supposera que l’utilisateur n’entre que des
nombres.
b. Implémenter l’algorithme suivant :
Tant que « essai est différent du nb à deviner »
Début du tant que
Incrémenter le nombre d’essais de 1
Lire le nombre entré par l’utilisateur et l’affecter à la variable adéquate
Fin du tant que
Indications : on utilisera les instructions readline et as.numeric.