Begin'R
Les statistiques avec R
Navigation
[Retour au sommaire]
# Préambule : de l'algorithme au programme :Objectifs Introduction Un **algorithme** est un ensemble fini de règles opératoires propres à un calcul. La notion de calcul peut être étendue à tout traitement informatique. On peut donc considérer qu'un algorithme est une méthode de traitement. La rédaction de l'algorithme est une phase préalable à la programmation ayant pour but de synthétiser cette méthode de traitement sous une forme normalisée et adaptée aux possibilités des langages de programmation. La programmation devient alors une simple opération de codage dans un langage informatique particulier. Les algorithmes sont beaucoup moins précis que les programmes. Ils ne servent qu'à définir les grandes lignes du traitement et à spécifier certaines parties plus critiques. Ils sont décrits dans un langage communément désigné par le terme "pseudo-code", à mi chemin entre le français et un langage de programmation, qui permettra une traduction simple dans un langage de programmation particulier. L'objectif de ce chapitre est de montrer comment les principales structures algorithmiques se traduisent en langage R. Cette séquence part d'algorithmes existants, écrits en pseudo-code, qui seront par la suite traduits en langage R. :Exemple : Un exemple introductif {#remarque_algo, toggle=collapse, title-display=show} En guise d'introduction, l'exemple ci-dessous donne un aperçu de ce à quoi peut ressembler un algorithme et sa traduction en langage R. Il permet également d'introduire quelques éléments de langage qui seront explicités par la suite. Cet algorithme permet de calculer la somme des `N` premiers entiers pairs, `N` étant un entier saisi par l'utilisateur. Le pseudo-code est le suivant :
```r Début Affection de N Somme <- 0 i <- 1 Tant que (i <= N) faire Si (i modulo 2 == 0) alors Somme <- Somme + i Fin du Si i <- i + 1 Fin du Tant que Afficher Somme Fin ```
En langage R, la saisie du paramètre d'entrée `N` ne sera pas demandé. `N` sera défini par défaut (égal à 5 ici), au début du programme. L'algorithme se traduit de la façon suivante : ```r # Definition du parametre d'entree N <- 5 # Initialisations Somme <- 0 i <- 0 # Boucle de calcul while (i <= N) { if(i %% 2 == 0){ Somme <- Somme + i # incrémentation de Somme } i <- i + 1 } print(Somme) # Affichage du résultat ``` ``` ## [1] 6 ``` Cet exemple illustre l'utilisation de commentaires. Ceux-ci sont précédés du signe `#`. Sur une même ligne, tout ce qui suit ce symbole n'est pas interprété par R. Les commentaires sont d'une grande utilité en programmation : * Ils permettent une prise en main et une maintenance rapides par quelqu'un qui n'a pas écrit le programme. * Lorsqu'une fonction a été écrite, il est difficile d'en comprendre certaines subtilités après quelques mois. Un commentaire permet de donner des pistes. Cet exemple montre également l'utilisation de deux structures algorithmiques. La structure alternative `if` permet ici d'exécuter l'instruction `Somme <- Somme + i` uniquement lorsque la condition `i %% 2 == 0` est vraie. La structure itérative `while` permet quant à elle de répéter le bloc d'instructions se trouvant entre ses accolades tant que la condition `i <= N` est vraie. L'utilisation de la fonction `print()` permet ici d'afficher à l'écran la valeur de la variable `Somme`. Enfin, différents opérateurs sont utilisés comme les opérateurs arithmétiques tels que l'addition (`+`) et le modulo (`%%`) ainsi que des opérateurs logiques tels que l'égalité logique (`==`) et l'opérateur inférieur ou égal (`<=`). :Suite Structure algorithmiques et fonctions {#algo, toggle=collapse, title-display=hidden} [Préambule : de l'algorithme au programme](caps_algo_1_de_l_algo_au_programme.html) [Les opérateurs](caps_algo_2_operateurs.html) [Structures algorithmiques](caps_algo_3_structures_algorithmiques.html) [Structures alternatives](caps_algo_4_structures_test.html) [Structures itératives](caps_algo_5_structures_iteratives.html) [Fonctions](caps_algo_6_fonctions.html) [Exercices bilan](caps_algo_7_exercice_bilan_programmation_R.html)