La boucle for La boucle while L utilisation du if else. while (condition) { instruction(s) }



Documents pareils
Présentation du logiciel

IMAGES NUMÉRIQUES MATRICIELLES EN SCILAB

R - un exemple du succès des modèles libres


Présentation du PL/SQL

Introduction à R. Florence Yerly. Dept. de mathématiques, Université de Fribourg (CH) SP 2011

Cours d algorithmique pour la classe de 2nde

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

Solutions du chapitre 4

Calcul Formel et Numérique, Partie I

Etude des propriétés empiriques du lasso par simulations

Algorithmique et Programmation, IMA

R00 Installation du logiciel R sous Windows

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

Groupe symétrique. Chapitre II. 1 Définitions et généralités

Organigramme / Algorigramme Dossier élève 1 SI

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Calcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes.

Initiation à la programmation OEF pour Wims (exercices).

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Exo7. Matrice d une application linéaire. Corrections d Arnaud Bodin.

Pourquoi R devient incontournable en recherche, enseignement et développement

TP 1 Introduction à Matlab Février 2009

Initiation à la programmation en Python

ACTIVITÉ DE PROGRAMMATION

Coefficients binomiaux

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Sommaire : Pourquoi créer un site web? Qu est-ce qu un site Web? Les différents types de sites. Quelles solutions peuvent être employées?

Chapitre 2. Eléments pour comprendre un énoncé

Programmation C++ (débutant)/instructions for, while et do...while

Cours Informatique Master STEP

Reconstruction de bâtiments en 3D à partir de nuages de points LIDAR

Probabilités sur un univers fini

Archiver des messages

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

Texte Agrégation limitée par diffusion interne

STAGE IREM 0- Premiers pas en Python

Initiation au logiciel R

Logiciel de gestion de point de vente dédié à la restauration. Rapport de projet. 3 e année F5

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Simulation de variables aléatoires

Analyse Combinatoire

Présentation du langage et premières fonctions

Website Express Créer un site professionnel avec Orange

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Studio. HERITIER Emmanuelle PERSYN Elodie. SCHMUTZ Amandine SCHWEITZER Guillaume

Algorithmes et Programmes. Introduction à l informatiquel. Cycle de vie d'un programme (d'un logiciel) Cycle de vie d'un programme (d'un logiciel)

Manuel d utilisation du site web de l ONRN

Cours 1 : Qu est-ce que la programmation?

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

AWS avancé. Surveiller votre utilisation d EC2

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://

Vision industrielle et télédétection - Détection d ellipses. Guillaume Martinez 17 décembre 2007

Fiche de version N 12.28a Nov SOMMAIRE

Les structures. Chapitre 3

Capacité d un canal Second Théorème de Shannon. Théorie de l information 1/34

Moments des variables aléatoires réelles

L envoi d un formulaire par courriel. Configuration requise Mail Texte Mail HTML Check-list

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Rappels sur les suites - Algorithme

Probabilités sur un univers fini

LES DÉTERMINANTS DE MATRICES

Guide sommaire de TecLocal

Gnuplot. Chapitre Lancer Gnuplot. 3.2 Options des graphes

Saisissez le login et le mot de passe (attention aux minuscules et majuscules) qui vous ont

Initiation à l algorithmique

Conventions d écriture et outils de mise au point

Introduction à Eclipse

1 Installer des packages

Séance 0 : Linux + Octave : le compromis idéal


Chapitre 11. Séries de Fourier. Nous supposons connues les formules donnant les coefficients de Fourier d une fonction 2 - périodique :

INF 1250 INTRODUCTION AUX BASES DE DONNÉES. Guide d étude

Chapitre 2. Matrices

R, Bonnes pratiques. Christophe Genolini

Découverte de Python

Python - introduction à la programmation et calcul scientifique

Exercices - Polynômes : corrigé. Opérations sur les polynômes

Chapitre 1 Qu est-ce qu une expression régulière?

Les algorithmes de base du graphisme

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Fonctionnalités HSE PILOT. Groupe QFI

Maîtriser les fonctionnalités d un traitement de texte (Word OpenOffice)

TUTORIEL Qualit Eval. Introduction :

MIS 102 Initiation à l Informatique

Le CRM en BFI : une approche du pilotage stratégique

Atelier Le gestionnaire de fichier

WINDOWS SHAREPOINT SERVICES 2007

Algorithmique et structures de données I

Utilisation d objets : String et ArrayList

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

TP 2 Réseaux. Adresses IP, routage et sous-réseaux

Algorithmes récursifs

Résolution de systèmes linéaires par des méthodes directes

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Recherche dans un tableau

Tutoriel : Ecrire un article sur le site de la TEAM GSAS

Manuel du logiciel PrestaTest.

Transcription:

VI Initiation à la programmation sous Comme nous l avons constaté tout au long du document, offre de nombreuses fonctionnalités En tant que nouvelles utilisateurs de il vous est désormais PRESQUE possible de participer à l évolution de en proposant des nouveaux outils d analyse Il faut avant cela revenir au langage et à la programmation Nous allons voir des idées simples et susceptibles d être mises en pratique aisément Le point fort de par rapport à un logiciel à menu déroulant type SPSS est dans la possibilité de programmer, de façon simple une suite d analyses qui seront exécutées successivement Cette possibilité est propre à tout langage informatique, mais possède des particularités qui rendent la programmation accessible à des non-spécialistes VI1 Boucles et vectorisation La boucle for La boucle while L utilisation du if else for (i in 1 : n) instruction(s) while (condition) instruction(s) if (condition) instruction1(s) else instruction2(s) Remarque : On peut exécuter plusieurs instructions si elles sont encadrées par des accolades y = rnorm(20) ; y [1] 113088474-032506118 -021300185-040149019 -073160051-076896992 [7] 020388507 172975780 058476297 134209095-058889570 -033435842 [13] -077073270 129515298-066902960 043934088-006785511 -041360195 [19] 139177097-187708783 for (i in 1:length(y)) if (y[i] < 0) y[i] = 0 else y[i] = 1 y [1] 1 0 0 0 0 0 1 1 1 1 0 0 0 1 0 1 0 0 1 0 Il est préférable d éviter, les boucles et/ou les structures de contrôle Ceci est rendu possible grâce à une caractéristique du langage : «La vectorisation» Ainsi, les boucles et structures de contrôle de l exemple précédent peuvent être évité de la manière suivante : x = y; x[y < 0] = 0 ; x[y >= 0] = 1 x [1] 1 0 0 0 0 0 1 1 1 1 0 0 0 1 0 1 0 0 1 0 VI2 Quelques petits programmes sympathiques 1

Premier exemple On souhaite d une part évaluer si un nombre, rentré par l utilisateur, est pair ou impair d autre part calculer son carré pair_carre = function(nombre) if (nombre%%2 == 0) print(paste("le nombre", nombre, "est pair")) else print(paste("le nombre ", nombre, " est impair")) carre = nombre^2 print(paste("qu'il soit pair ou impair, une chose est sure, le carre de", nombre, "est ", carre)) pair_carre(8) [1] "Le nombre 8 est pair" [1] "qu'il soit pair ou impair, une chose est sure, le carre de 8 est 64" pair_carre(15) [1] "Le nombre 15 est impair" [1] "qu'il soit pair ou impair, une chose est sure, le carre de 15 est 225" 2

Deuxième exemple On souhaite calculer le factoriel d un nombre rentré par l utilisateur Plusieurs manières de procédé Utilisation de la boucle for factoriel1 = function(nombre) facto = 1 for (i in 1 : nombre) facto = facto*i print(paste(" Le factoriel de", nombre, "est", facto)) factoriel1(5) [1] " Le factoriel de 5 est 120" factoriel1(10) [1] " Le factoriel de 10 est 3628800" Utilisation de la boucle while factoriel2 = function(nombre) facto = 1 i = 1 while (i <= nombre) facto = facto*i i = i+1 print(paste(" Le factoriel de", nombre, "est", facto)) factoriel2(3) [1] " Le factoriel de 3 est 6" factoriel2(5) [1] " Le factoriel de 5 est 120" Notons que dans le cadre de la fonction factoriel1, une seule instruction est contenue dans la boucle for si bien que les accolades ne sont pas indispensables En revanche, les accolades de la boucle while sont indispensables car le nombre d instructions à effectuer est égal à 2 Notons qu il est utile de s assurer que la fonction à programmer n est pas disponible dans un package En effet, la fonction factorial(), disponible dans le package base calcule le factoriel d un nombre : factorial(5) [1] 120 factorial(10) [1] 3628800 3

Troisième exemple Considérons un jeu de données X définit par n observations et p variables Soient x et y deux Ê observations La fonction K( x, y) = exp - x - y 2 ˆ Ë 2s 2 fournit un indice de similarité entre les observations x et y L objectif est décrire une fonction qui à toute matrice X associe la matrice K Ê x 11 x 12 x 1p ˆ x 21 x 22 x 2 p Ë x n1 x np Æ ( ) K( x 1,x 2 ) K( x 1,x n ) ( ) K( x 2, x 2 ) K( x 2, x n ) Ê K x 1,x 1 K x 1,x 2 Ë K x n,x 1 ( ) K( x n,x n ) ˆ Afin d alléger le code, on peut remarquer que la matrice K est symétrique noyau_gaussien = function(x, sigma) K = matrix(0, dim(x)[1], dim(x)[1]) for (i in 1 : dim(x)[1]) for (j in i : dim(x)[1]) K[i, j]=(sum((abs(x[i, ]-X[j, ]))^2)) K[j, i] = K[i, j] K= exp(-k/ sigma); return(k) Pour appeler la fonction noyau_gaussien et retourner la matrice K, on procède de la manière suivante : K = noyau_gaussien(x, 1) où sigma = 1 Quatrième exemple On souhaite écrire une fonction qui à toute matrice X associe la matrice K à travers la fonction suivante K x i,x j ( ) n où c et n sont des paramètres à fixer par l utilisateur ( ) = x i, x j + c noyau_polynomial = function(x, c, n) K = matrix(0, dim(x)[1], dim(x)[1]) for (i in 1 : dim(x)[1]) for (j in i: dim(x)[1]) K[i, j] = (sum(x[i, ] * X[j, ]) + c)^n 4

return(k) K[j, i] = K[i, j] Pour appeler la fonction noyau_polynomial et retourner la matrice K on procède de la manière suivante : K = noyau_polynomial(x, 1, 2) où c =1 et n = 2 Remarque : Un programme avec boucle est lent par rapport à un programme sans boucle L utilisation de la vectorisation est systématiquement préférée mais ce n est pas toujours possible 5

VII Conclusion est un logiciel libre offrant un panel d outil statistique de visualisation et d analyse très complet La communauté des utilisateurs de augmente très rapidement si bien que les méthodes les plus récentes sont disponibles très vite via les packages fournit par le CRAN Le site du CRAN receuille également toutes les informations utiles à la compréhesion et l utilisation de On peut y trouver une liste de publications (livres et articles) liées à ainsi que des documents d explications des méthodes statistiques développées : wwwr-projectorg/doc/bib/r-publicationshtml et wwwcranr-projectorg/other-docshtml On trouve également sur le site du CRAN un FAQ (Frequently Asked Questions) Le «- FAQ» est régulièrement mise à jour et est consultable à l adresse sivante: wwwcranr-projectorg/doc/faq/r-faqhtml Les listes de discussions de «-help» sont une source intéressante d informations pour les utilisateurs On y trouve les solutions à de nombreux problèmes rencontrés par les utilisateurs de, les annonces de nouvelles versions et de nouveaux packages : http://wwwrprojectorg/mailhtml Remarque : De nombreux utilisateurs ont envoyé sur «-help» des fonctions ou des programmes disponibles dans les archives Il est donc important si l on a un problème avec de procéder dans l ordre avant d envoyer un message à «-help» : 1 Consulter attentivement l aide-en-ligne 2 Consulter le «-FAQ» 3 Chercher dans les archives de «-help» 4 Envoyer un message à «-help» Ajoutons que la revue électronique «News» comble l espace entre les listes de discussion électroniques et les publications scientifiques traditionnelles Le premier numéro a été publié en janvier 2001 et le rythme de sortie est de trois numéros par an Kurt Hornik et Friedrich Leisch sont les éditeurs de cette revue : http://cranr-projectorg/doc/rnews/ Enfin, si vous mentionnez dans une publication, il faut citer l article original : Ihaka R & Gentleman R R: a language for data analysis and graphics Journal of Computational and Graphical Statistics 5 : 299 314, 1996 6