Changeset 153 for trunk/perl


Ignore:
Timestamp:
07/27/08 05:59:42 (16 years ago)
Author:
nanardon
Message:
  • structure de controle
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/perl/presentation.tex

    r152 r153  
    4444\begin{frame} 
    4545\frametitle{PERL} 
    46 Perl \textbf{5}, écrit par Larry Wall en 1987. 
     46Perl, écrit par Larry Wall en 1987. 
    4747\vfill 
    4848\emph{Practical Extraction and Report Language} 
     
    5252(\emph{collectionneur de déchets pathétiquement éclectiques}) 
    5353\vfill 
     54 
     55Je parle de Perl \textbf{5} ! 
    5456 
    5557Dernière version 5.10.0 (Rafael Garcia-Suarez) 
     
    6264\frametitle{Pourquoi PERL ?} 
    6365\begin{itemize} 
     66\item langage scripté, non compilé 
     67\pause 
     68\item portable 
     69\pause 
    6470\item permet une écriture rapide 
    6571\pause 
     
    127133\section{Variables} 
    128134 
     135\subsection{Variables de Perl} 
     136 
    129137\begin{frame} 
    130138\frametitle{types de variables} 
     
    141149Et les autres on s'en moque... 
    142150\end{frame} 
     151 
     152\subsection{Scalaire} 
    143153 
    144154\begin{frame}[fragile] 
     
    174184\end{frame} 
    175185 
     186\subsection{Les tableaux} 
     187 
    176188\begin{frame}[fragile] 
    177189\frametitle{tableau (array)} 
     
    289301@tab = (1, 2, 3, 4); 
    290302%hash = @tab; 
     303%unhash = (%hash2, %hash3); 
    291304\end{verbatim} 
    292305\verb+%hash+ contient 1 \verb+=>+ 2, 3 \verb+=>+ 4\ldots 
    293306 
    294307Les clef dupliquées sont ecrasées, la dernière gagne ! 
     308 
     309\end{frame} 
     310 
     311\section{Syntaxe} 
     312 
     313\subsection{Syntaxe générale} 
     314 
     315\begin{frame}[fragile] 
     316\frametitle{Grandes lignes} 
     317\begin{itemize} 
     318\item les espaces sépare les mots 
     319\pause 
     320\item le '\verb+;+' sépare les instructions 
     321\pause 
     322\item le '\verb+,+' sépare les valeurs 
     323\pause 
     324\item \verb+( )+ limite une liste 
     325\pause 
     326\item \verb+{ }+ limite un bloc 
     327\pause 
     328\item tout ce qui suit un \verb+#+ est un commentaire 
     329\pause 
     330\item \verb+__END__+ mets fin au script 
     331\end{itemize} 
     332\pause 
     333 
     334Tout est permis, y compris apporter de la lisibilité à votre code: 
     335\begin{verbatim} 
     336      push # création du tableau 
     337(         @tableau 
     338  , $valeur, 
     339    $valeur2                   ); 
     340\end{verbatim} 
     341Sauf si vous tenez à faire dans l'obfu ! 
     342\end{frame} 
     343 
     344\begin{frame}[fragile] 
     345\frametitle{Structure classique d'un script} 
     346\onslide<1-6>{un shell bang:} 
     347\onslide<2-> 
     348\begin{verbatim} 
     349#!env perl 
     350\end{verbatim} 
     351\onslide<3-6>{charger les modules dont on a besoin:} 
     352\onslide<4-> 
     353\begin{verbatim} 
     354use strict; 
     355use warnings; 
     356\end{verbatim} 
     357\onslide<5-6>{arrive le code:} 
     358\onslide<6-> 
     359\begin{verbatim} 
     360while (<STDIN>) { 
     361    s/ //g; 
     362    print $_; 
     363} 
     364\end{verbatim} 
     365\onslide<7-> 
     366\begin{verbatim} 
     367__END__ 
     368\end{verbatim} 
     369\end{frame} 
     370 
     371\subsection{Controles d'execution} 
     372 
     373\begin{frame}[fragile] 
     374\frametitle{if} 
     375\onslide<1-> 
     376Bah... if quoi... 
     377\vfill 
     378\begin{verbatim} 
     379if ($var == 0) { 
     380    print "var vaut 0\n"; 
     381} 
     382\end{verbatim} 
     383\onslide<3-> 
     384\begin{verbatim} 
     385 elsif ($var == 1) { 
     386    print "var vaut 1\n"; 
     387} 
     388\end{verbatim} 
     389\onslide<2-> 
     390\begin{verbatim} 
     391 else { 
     392    print "var vaut $var\n"; 
     393} 
     394\end{verbatim} 
     395\onslide<4-> 
     396Forme suffixée: 
     397\begin{verbatim} 
     398print "var vaut 0\n" if ($var == 0); 
     399\end{verbatim} 
     400\end{frame} 
     401 
     402\begin{frame}[fragile] 
     403\frametitle{while} 
     404Boucle tant qu'une condition est vraie: 
     405 
     406\begin{verbatim} 
     407while ($i < 100) { 
     408    print "$i\n"; 
     409    $i++; 
     410} 
     411\end{verbatim} 
     412\vfill 
     413\pause 
     414Forme suffixée: 
     415 
     416\begin{verbatim} 
     417$i++ while($i < 100); 
     418\end{verbatim} 
     419\end{frame} 
     420 
     421\begin{frame}[fragile] 
     422\frametitle{foreach} 
     423Boucle \textbf{pour chaque} élément d'une liste: 
     424 
     425\begin{verbatim} 
     426foreach $elem (@tableau) { 
     427    print "$elem\n"; 
     428} 
     429\end{verbatim} 
     430 
     431Très pratique, cela évite de s'embeter avec les indices du tableau. 
     432\vfill 
     433\pause 
     434 
     435Forme suffixée: 
     436 
     437\begin{verbatim} 
     438print "$_\n" foreach(@tableau); 
     439\end{verbatim} 
     440\end{frame} 
     441 
     442\begin{frame}[fragile] 
     443\frametitle{Sortez moi de là} 
     444\textbf{next} fait passer à la prochaine itération d'une boucle: 
     445 
     446\begin{verbatim} 
     447foreach $val (@tableau) { 
     448    next if(!$val); 
     449    print "$val\n"; 
     450} 
     451\end{verbatim} 
     452\pause 
     453\vfill 
     454\textbf{last} quitte une boucle: 
     455 
     456\begin{verbatim} 
     457foreach $val (@tableau) { 
     458    if ($val > 1000) { 
     459        print "$val est trop haut, arret\n"; 
     460        last; 
     461    } 
     462    print "$val\n"; 
     463} 
     464\end{verbatim} 
    295465\end{frame} 
    296466 
Note: See TracChangeset for help on using the changeset viewer.