Eric Laporte Institut Gaspard-Monge Université de Marne-la-Vallée France Introduction à Perl.

Slides:



Advertisements
Présentations similaires
Premier programme en C :
Advertisements

Fonctionnement d’une machine à pile :
Introduction au langage C
Formation universitaire à .NET: Introduction à C#
Conception de Site Webs dynamiques Cours 5
Algorithmes et structures de données avancées Partie Conception de Sites Web dynamiques Cours 9 Patrick Reuter.
Introduction à l’Algorithmique
Programmation Tcl/Tk Raymond Ripp janvier 2009
Pour débutant … et autre Raymond Ripp
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
Bioinformatique et Perl
Objectifs Présentation et utilisation du langage PERL
Élise VAREILLES Introduction à la programmation en Perl There is more than one way to do it Élise VAREILLES
Introduction à l'informatique linguistique
INTRODUCTION A MATLAB ENVIRONNEMENT MATLAB.
Points importants de la semaine Les commentaires. Les variables. Les instructions conditionnelles. Les instructions itératives (les boucles).
CPI/BTS 2 Programmation Web Introduction au PHP
Récursivité.
Expressions et assignations
Les éléments de base de l’algorithmique
Analyse lexicale Généralités Expressions rationnelles Automates finis
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données
Les instructions PHP pour l'accès à une base de données MySql
Programmation fonctionnelle Le langage LISP
Python La programmation objet
Introduction à la programmation (Java)
Bases de la programmation en C++ 1 Les enchaînementsdinstruction Séquentiels. Exécutions dinstructions les unes à la suite des autres. Instructions séparées.
Structures de données IFT-2000 Abder Alikacem Standard Template library Édition Septembre 2009 Département dinformatique et de génie logiciel.
Le langage Javascript pour le web
Perl, un langage de programmation pour les données textuelles
1Info III Perlsous-programmessyntaxe de base sub foo { my $arg1 = shift; my $arg2 = shift; # do stuff with $arg1, $arg2,…, compute $result.
Les Fonctions. Définir une fonction Sections de code indépendantes que lon peut appeler à nimporte quel moment et dans nimporte quel ordre. Bout de code.
Introduction à la programmation I Fonctions Structures de contrôle Structures de données (arrays simples et indexés) Variables locales et globales.
Principes de programmation
CSI2520, Hiver 2007 Python Un langage de programmation par scripting et plus…
CSI3525: Concepts des Langages de Programmation
PHP Gestion des systèmes d’information Classe terminale
Ift 2251 Introduction au Génie Logiciel
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
L3 Module Libre Année universitaire Initiation à la Bioinformatique Jean-Michel RICHER.
Structures de données IFT-10541
L’essentiel du langage C
Animateur : Med HAIJOUBI
PHP 1° PARTIE : LES BASES © BTS IRIS 2002 [tv] Présentation Historique
PHP & My SQL.
Shell Equipe ID Bioinformatics Training Course June 2014.
Ch. PAUL - Piles et Files à l'aide de listes chainées
Algorithmique Les structures Rappel L'enchaînement séquentiel
LES PILES ET FILES.
JavaScript.
SIF-1053 Architecture des ordinateurs
Scripts shell intro Un script bash est un fichier contenant une suite de commandes shell, exécutables par l'interpréteur (ici le programme /bin/bash),
Un survol du language C.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Les erreurs communes en Java.
 Syntaxe du langage PHP
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
1 File::Tabular Recherche et édition dans des fichiers tabulaires
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Jean-Jacques Girardot
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
CSI2520 Un langage de programmation par scripting orienté-objet (et fonctionnel)
1. Ook Christophe Delagarde, septembre 1999 I.U.T., Université de la Méditerrainée 2.
1 Système d’exploitation Les scripts csh 1 ère Année Année Tienté HSU.
06:34:37 Programmation Web PHP Fonctions associées aux tableaux Jérôme CUTRONA
 Formulaires HTML : traiter les entrées utilisateur
1 PHP 5 Notions fondamentales (niveau 1 – cours #2) Formation continue – Cégep de Sainte-Foy.
Cours de :.
1. Spoon Christophe Delagarde, septembre 1998 I.U.T., Université de la Méditerrainée 2.
Une aide pour débutant éclairé
Initiation aux bases de données et à la programmation événementielle
Introduction à Perl … en trois heures. Plan  Syntaxe  variables  scalaires  listes  tables de hachages  spécial…  Plus de syntaxe  fonctions définies.
Transcription de la présentation:

Eric Laporte Institut Gaspard-Monge Université de Marne-la-Vallée France Introduction à Perl

Schwartz, R., Christiansen, T., 1998 (2e édition), Introduction à Perl, O'Reilly, 303 p. Wall, L., Christiansen, T., Orwant, J., 2001 (3e édition), Programmation en Perl, O'Reilly, 1045 p. Ray, E., McIntosh, J., 2003, Perl & XML, O'Reilly, 211 p. Bibliographie

Développement collaboratif, logiciel libre Principal auteur : Larry WallVersion : 5 Comprehensive Perl Archive Network ( ) : sources, binaires, modules, documentation Philosophie : faire ce que l'utilisateur cherche à faire Compilation et interprétation - un interpréteur Perl compile le programme puis l'exécute sans sauvegarder la forme compilée (utilisation la plus courante) - un compilateur Perl compile le programme (plusieurs langages cibles sont possibles) et le sauvegarde sans l'exécuter Notions de base (1/2)

# villePays.pl open(INFILE, "villePays.lst") or die "Impossible d'ouvrir villePays.lst en lecture : $!"; my %table; while ( ) { chomp; my ($ville, $pays) = split /, /; $ville; } foreach $pays (sort keys %table) { print "$pays: "; print join ', ', print ".\n"; }

Pas de programme principal, mais il peut y avoir des fonctions # marque un commentaire d'une ligne Les parenthèses autour des fonctions prédéfinies sont facultatives $! $_ etc. variables : tableau %table : table de hachage $ville : scalaire (= types simples) Notions de base (2/2)

#motDePasse.pl my $secretword = "lama" ; print "Votre nom ? " ; my $name = ; chomp ($name) ; print "Hello, $name !\n" ; print "Quel est le mot de passe ? " ; my $guess = ; chomp $guess ; while ($guess ne $secretword) { print "Faux, essayez encore. Quel est le mot de passe ? "; $guess = ; chomp ($ guess) ; } Entrées-sorties, scalaires (1/2)

my : opérateur qui déclare une variable locale (si on ne déclare pas la variable, elle est globale) : opérateur qui lit une ligne dans un descripteur de fichier chomp() : fonction qui supprime la fin de ligne finale (modifie la variable à laquelle elle s'applique) ne : opérateur de comparaison de chaînes (ordre alphabétique) Entrées-sorties, scalaires (2/2)

#tableau.pl = ("alpaca", "dromadaire", "lama") ; #liste print "Quel est le mot de passe ? " ; my $guess = ; chomp $guess ; my $i = 0 ; my $correct = "maybe" ; while ($correct eq "maybe") { if ($words[$i] eq $guess) { $correct = "yes" ; } elsif ($i ; chomp ($ guess) ; $i = 0 ; } } Tableaux (1/2)

Un tableau est un nom de liste, il commence et il est initialisé par une liste Pas de distinction entre nombres et chaînes à la déclaration Accès à un tableau : avec $ et [] Eléments numérotés à partir de 0 < : opérateur de comparaison de nombres if () {} elsif () {}... else {} accolades obligatoires même pour une seule instruction Tableaux (2/2)

#hachage.pl my %words = ( "dominique" => "alpaca", "fabien" => "dromadaire", "lionel" => "lama", "nicolas" => "alpaca") ; print "Votre nom ? " ; my $name = ; chomp ($name) ; print "Salut, $name !\n" ; my $secretword = $words{$name} ; print "Quel est le mot de passe ? " ; my $guess = ; chomp $guess ; while ($guess ne $secretword) { print "Faux, essayez encore. Quel est le mot de passe ? "; $guess = ; chomp ($ guess) ; } Tables de hachage (1/2)

Le nom d'une table de hachage commence par % et elle est initialisée par une liste (on peut remplacer les => par des virgules) Accès aux valeurs : avec $ et {} Si la clé n'est pas trouvée, la valeur est undef. Tables de hachage (2/2)

#controle.pl my $stops = 0 ; if ($stops) { print "Arret $stops. \n" ; } else { print "Depart. \n" ; } while ($stops ) ; } unless ($stops) { print "Depart. \n" ; } else { print "Arret $stops. \n" ; } until ($stops eq 0) { $stops -- ; print "Prochain arret ? " ; chomp($location = ) ; } print "Terminus.\n" if ($stops eq 0) ; Structures conditionnelles (1/4)

unless(condition) : équivalent à if(not(condition)) until(condition) : équivalent à while(not(condition)) expression if(condition) ; L'expression ne peut pas être une instruction complexe. Possible aussi avec unless, while, until. expression until(condition) ; La condition est évaluée avant l'expression. do {instructions} until (condition) ; Les instructions sont exécutées avant la condition. Structures conditionnelles (2/4)

#controle2.pl my $stops = 0 ; do { $stops ++ ; print "Prochain arret ? " ; chomp($location = ) ; } while ($stops ) ; } until ($stops eq 0) ; print "Terminus.\n" ; for ($stops = 0 ; $stops ) ; } print "Terminus. \n" if ($stops == 5) ; Structures conditionnelles (3/4)

#controle3.pl my $i = 0 ; foreach $i (1,2,3,4,5) { # $i est local а foreach print "Prochain arret ? " ; chomp($location = ) ; } print "$i. \n" ; # vaut toujours 0. = ("alpaca", "chameau", "dromadaire", "lama") ; foreach $i { print "$i" ; } print "\n" ; foreach { # Variable par defaut print "$_" ; } print "\n" ; foreach { print ; } print "\n" ; Structures conditionnelles (4/4)

#lireFichier.pl my $secretword = "lama" ; print "Quel est le mot de passe ? " ; my $guess ; while ($guess= ) { chomp $guess ; if($guess ne $secretword) { print "Faux, essayez encore. Quel est le mot de passe ? "; } else { die "Exact.\n" ; } } print "Quel est le mot de passe ? " ; while ( ) {# Variable par défaut $_ chomp $_ ;# On peut supprimer $_ if($_ ne $secretword) {#Ici on ne peut pas le supprimer print "Faux, essayez encore. Quel est le mot de passe ? "; } else { die "Exact.\n" ; } } Lecture d'un fichier

#joinSplit.pl = (1, 3, 5, 7) ; my $string = ; print $string, "\n" ; my $line = "merlyn::118:10:Randal:/home/merlyn:/usr/bin/perl:" ; = split(/:/,$line) ; print "$fields[0], $fields[1], $fields[2]...\n" = split(/:+/,$line) ; print "$fields[0], $fields[1], $fields[2]...\n" ; join, split

#piles.pl = (1, 3, 5, 7) ; print "\n" ; 9, 11, 13) ; #empiler print "\n" ; my $last = ; #depiler print "\n" ; -5, -3, -1) ; #empiler a gauche print "\n" ; my $first = ; #depiler a gauche print "\n" ; Piles

$aref = # $aref est maintenant une référence $href = \%hash; # $href est maintenant une référence à %hash $aref = [ 1, "foo", undef, 13 ]; # $aref est maintenant une référence à une liste $href = { APR => 4, AUG => 8 }; # $href est maintenant une référence à une table de hachage Créer des références

{$aref} peut être utilisé comme un tableau {$href} peut être utilisé comme une table Un tableau Retourner le tableau $a[3] ${$aref}[3] Un élément du tableau $a[3] = 17; ${$aref}[3] = 17 Affecter un élément %h %{$href}Une table de hachage keys %hkeys %{$href} Liste des clés de la table $h{'red'} ${$href}{'red'} Un élément de la table $h{'red'} = 17 ${$href}{'red'} = 17 Affecter un élément Utiliser des références (1/2)

${$aref}[3] est abrégé en $aref->[3] ${$href}{'red'} est abrégé en $href->{'red'} Utiliser des références (2/2)