Travaux Pratiques #1
Algo & Prog avec R
Table des matières
Cette séance de travaux pratiques peut être réalisée en distanciel.
1. Installation de R et RStudio HOME KEY
Nous allons vous expliquer comment installer R et RStudio sur votre machine personnelle.
Installer l’interpréteur R
- Allez sur le site du projet R : http://www.r-project.org/
- Télécharger la version de R correspondant à votre système d’exploitation (Linux, Windows, Mac OS)
- Double cliquer sur le fichier téléchargé pour installer R.
Sous Linux, il est recommandé de passer directement par le gestionnaire de paquet :
sudo dnf install R
(Fedora)sudo apt-get install r-base
(Debian/Ubuntu)
Installer l’environnement de développement RStudio
- Allez sur la page de téléchargement de RStudio.
- Télécharger la version de RStudio correspondant à votre système d’exploitation (Linux, Windows, Mac OS)
- Double cliquer sur le fichier téléchargé pour installer RStudio
Quand R et Rstudio sont installés, ouvrez RStudio en vérifiant l’absence de message d’erreur.
2. Découverte de la console R HOME
Vous avez trois possibilités pour coder :
- sur votre machine personnelle ;
- sur les machines du CRIPS, Windows (2ème étage) ou Linux (3ème étage) ;
- avec l’éditeur en ligne (à titre exceptionnel).
La fenêtre en bas à gauche de rstudio est la console. Elle contient un programme read-eval-print loop (REPL), aussi appelé interactive toplevel or language shell. C’est un environnement typique des langages interprétés (ne nécessitant pas de compilation) :
- takes single user inputs (i.e. single expressions),
- evaluates them,
- and returns the result to the user;
Expressions arithmétiques
Quelle est la valeur de chacune des expressions suivantes :
4 %/% 5 * 3 + 5 %/% 3 4 %/% 5 * (3 + 5) %/% 3
N.B. Il est de bonne pratique de laisser un espace de part et d’autre d’un opérateur : il est plus facile de lire 2 – x // y
que 2-x%/%y
…
- Si
n
est un entier écrit en décimal, que représentent au niveau des chiffres les opérationsn %/% 10
etn %% 10
? - Quelle opération permet de savoir si un entier
n
est un multiple d’un entierd
? - Quelle opération arithmétique permet de savoir si un entier
n
est pair ? - Demandez en une ligne si 5^4 est plus grand que 4^5.
- Calculez la moyenne des entiers de 1 à 10. Le résultat est un nombre flottant (à virgule).
- Calculez la moyenne des entiers de 1 à 11. Ne retapez pas la formule complète, mais modifiez la précédente en tapant la flèche haut qui va chercher les lignes précédemment entrées (ce que les programmeurs nomment l’historique). On utilise la flèche bas en sens inverse.
- Vérifiez que les règles de calcul sur l’infini sont à peu près respectées.
# À l'infini cat('3 * Inf =',3 * Inf, '\n') cat('-2 * Inf =',-2 * Inf, '\n') cat('1 / 0 =',1/0, '\n') # À zéro cat('1 / Inf =',1 / Inf, '\n') cat('0 / Inf =',0 / Inf, '\n') ## NaN signifie "Not A Number", forme indeterminee. cat('Inf / Inf =',Inf / Inf, '\n') cat('0 / 0 =',0 / 0, '\n')
Affectations, affichage et échanges de valeurs
- Définissez deux variables: p ayant pour valeur 5 et q ayant pour valeur 3p.
- Avec une seule instruction
cat(...)
, faites afficher la phrase suivante :
p vaut 5 et q vaut 15, leur somme fait 20
N.B. La solution suivante n’est PAS celle que l’on attend :cat('p vaut 5 et q vaut 15, leur somme fait 20\n')
. - Demandez en R « q est-il un multiple de p? ».
- Au toplevel, traduisez en R la phrase suivante : si q est un multiple de p, afficher OUI sinon afficher NON
- Sans consulter vos notes de cours, écrivez au toplevel les lignes de code permettant d’échanger les valeurs de
p
etq
, en utilisant une variable temporairetmp
. Vérifiez ensuite que les valeurs de p et q ont bien été permutées. - Echangez à nouveau les valeurs de p et q, mais SANS utiliser de variable temporaire! Soyez astucieux, jouez avec des opérations arithmétiques …
Obtenir de l’aide
Comme tout langage de programmation, R est constitué d’un noyau relativement réduit et d’un nombre important de modules. Un module fournit un ensemble de fonctions spécialisées dans une tâche donnée (maths, Internet, images, musique, etc).
Il est essentiel de savoir obtenir de l’aide pour trouver ou utiliser les fonctions adéquates.
help.start() # sommaire general de l'aide help(foo) # aide sur la fonction foo ?foo # la même chose apropos("foo") # liste toutes les fonctions contenant la chaîne foo example(foo) # exécute les exemples de la fonction foo RSiteSearch("foo") # recherche la chaîne foo dans les manuels et les listes de diffusion
- À quoi sert la fonction
print
?cat
?paste
? - Est-ce que la fonction printf existe ? Existe-t’il d’autres fonctions de la famille printf ? Lesquelles ?
3. Découverte des exercices UCAnCODE
Tout au long du semestre, nous proposerons des exercices UCAnCODE sur Sphere Engine, certains notés, d’autres non. Ces exercices sont corrigés par un juge automatique. Un cours magistral leur sera consacré en milieu de semestre.
En attendant, nous introduisons progressivement ces exercices en vous guidant. Au début, nous vous fournirons un modèle et vous devrez écrire votre code à un endroit précis. À la fin, vous n’aurez plus de modèle.
Commencez avec ce premier exercice pour vous familiariser avec le juge automatique. Il a un petit côté mathématique pour être stimulant (mais complètement hors programme), car nous ne connaissons encore que peu d’éléments du langage.