Changeset 171


Ignore:
Timestamp:
08/25/08 04:27:50 (16 years ago)
Author:
nanardon
Message:
  • beautify and clarify
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/perl/syntaxe.tex

    r162 r171  
    2020\item tout ce qui suit un \verb+#+ est un commentaire 
    2121\pause 
    22 \item \verb+__END__+ mets fin au script 
     22\item \verb+__END__+ indique la fin des instructions 
    2323\end{itemize} 
    2424\pause 
    2525 
    26 Tout est permis, y compris apporter de la lisibilité à votre code: 
     26\begin{exampleblock}{Tout est permis, y compris apporter de la lisibilité à votre code:} 
    2727\begin{verbatim} 
    2828      push # création du tableau 
    2929(         @tableau 
    30   , $valeur, 
    31     $valeur2                   ); 
    32 \end{verbatim} 
    33 Sauf si vous tenez à faire dans l'obfu ! 
     30  , $valeur,    $valeur2     ); 
     31\end{verbatim} 
     32\end{exampleblock} 
    3433\end{frame} 
    3534 
     
    6564\begin{frame}[fragile] 
    6665\frametitle{if} 
     66\begin{exampleblock}{Bah... if quoi...} 
    6767\onslide<1-> 
    68 Bah... if quoi... 
    6968\vfill 
    7069\begin{verbatim} 
     
    8584} 
    8685\end{verbatim} 
     86\end{exampleblock} 
    8787\onslide<4-> 
    88 Forme suffixée: 
     88\begin{block}{Forme suffixée:} 
    8989\begin{verbatim} 
    9090print "var vaut 0\n" if ($var == 0); 
    9191\end{verbatim} 
     92\end{block} 
    9293\end{frame} 
    9394 
    9495\begin{frame}[fragile] 
    9596\frametitle{while} 
    96 Boucle tant qu'une condition est vraie: 
    97  
     97\begin{exampleblock}{Boucle tant qu'une condition est vraie:} 
    9898\begin{verbatim} 
    9999while ($i < 100) { 
     
    102102} 
    103103\end{verbatim} 
    104 \vfill 
    105 \pause 
    106 Forme suffixée: 
    107  
     104\pause 
     105\begin{verbatim} 
     106do { 
     107    print "$i\n"; 
     108    $i++; 
     109} while($i < 100; 
     110\end{verbatim} 
     111\end{exampleblock} 
     112\vfill 
     113\pause 
     114\begin{block}{Forme suffixée:} 
    108115\begin{verbatim} 
    109116$i++ while($i < 100); 
    110117\end{verbatim} 
     118\end{block} 
    111119\end{frame} 
    112120 
    113121\begin{frame}[fragile] 
    114122\frametitle{foreach} 
    115 Boucle \textbf{pour chaque} élément d'une liste: 
    116  
     123\begin{exampleblock}{Boucle \textbf{pour chaque} élément d'une liste:} 
    117124\begin{verbatim} 
    118125foreach $elem (@tableau) { 
     
    120127} 
    121128\end{verbatim} 
     129\end{exampleblock} 
    122130 
    123131Très pratique, cela évite de s'embeter avec les indices du tableau. 
     
    125133\pause 
    126134 
    127 Forme suffixée: 
    128  
     135\begin{block}{Forme suffixée:} 
    129136\begin{verbatim} 
    130137print "$_\n" foreach(@tableau); 
    131138\end{verbatim} 
     139\end{block} 
    132140\end{frame} 
    133141 
    134142\begin{frame}[fragile] 
    135143\frametitle{Sortez moi de là} 
    136 \textbf{next} fait passer à la prochaine itération d'une boucle: 
    137  
     144\begin{block}{\textbf{next} fait passer à la prochaine itération d'une boucle:} 
    138145\begin{verbatim} 
    139146foreach $val (@tableau) { 
     
    142149} 
    143150\end{verbatim} 
    144 \pause 
    145 \vfill 
    146 \textbf{last} quitte une boucle: 
    147  
     151\end{block} 
     152\pause 
     153\vfill 
     154\begin{block}{\textbf{last} quitte une boucle:} 
    148155\begin{verbatim} 
    149156foreach $val (@tableau) { 
     
    155162} 
    156163\end{verbatim} 
     164\end{block} 
    157165\end{frame} 
    158166 
     
    161169\begin{frame}[fragile] 
    162170\frametitle{Fonctions} 
    163 Déclarer une fonction: 
    164  
     171\begin{block}{Déclarer une fonction:} 
    165172\begin{verbatim} 
    166173sub fonction { 
     
    168175} 
    169176\end{verbatim} 
    170 \pause 
    171 On l'appelle: 
    172  
     177\end{block} 
     178\pause 
     179\begin{block}{Utilisation} 
    173180\begin{verbatim} 
    174181fonction(); 
    175 \end{verbatim} 
    176  
    177 ou tout simplement: 
    178 \begin{verbatim} 
     182 
    179183fonction; 
    180184\end{verbatim} 
    181 \pause 
    182 \vfill 
    183 Sub anonyme, plus rarement utilisé: 
    184  
     185\end{block} 
     186\pause 
     187\vfill 
     188\begin{block}{\textit{Sub anonyme}, plus rarement utilisé:} 
    185189\begin{verbatim} 
    186190my $sub = sub { }; 
    187191$sub->(); 
    188192\end{verbatim} 
    189  
    190 \end{frame} 
    191  
    192 \begin{frame}[fragile] 
    193 \frametitle{Fonction passage d'arguments} 
    194 Perl est un langage qui fonctionne avec un pile: 
    195 \pause 
    196 \vfill 
     193\end{block} 
     194\end{frame} 
     195 
     196\begin{frame}[fragile] 
     197\frametitle{Fonction: passage d'arguments} 
     198\begin{block}{les arguments sont passé dans \textbf{@\_}} 
     199\only<2>{On passe 1 arguments} 
     200\only<3>{On n arguments (ici 2)} 
     201\only<5>{on rends le premier arguments obligatoire, les autres 
     202sont optionnels} 
     203\onslide<4>{Via un hash: 
    197204\begin{itemize} 
    198 \item on pouse des élément sur la piles 
    199 \item on récupère la pile 
    200 \item on pose les résultat sur la pile 
    201 \item on récupère la pile 
     205\item arguments nommés 
     206\item arguments optionnels 
     207\end{itemize}} 
     208\end{block} 
     209\begin{exampleblock}{} 
     210\pause 
     211\begin{semiverbatim} 
     212sub affiche \{ 
     213    (\only<2-3,5->{$arg}\only<3,5->{, }\only<3>{$arg2}\only<4->{\%hash}) = @_; 
     214    print \only<2-3,5->{"$arg\\n"}\only<4>{$hash\{key1\}}; 
     215\} 
     216 
     217affiche(\only<2,3,5->{"foo"}\only<3,5->{, }\only<3>{"bar"}\only<4->{key1 => "val1"}); 
     218\end{semiverbatim} 
     219\end{exampleblock} 
     220\end{frame} 
     221 
     222\begin{frame}[fragile] 
     223\frametitle{Retours des valeurs} 
     224\begin{block}{la dernière valeur est retournée} 
     225\pause 
     226\only<2-3>{On renvoit \only<2>{explicitement}\only<3>{implicitement} \$res 
     227\only<3>{ (dernière valeur)}} 
     228\only<4>{On renvoit explicitement le résultat} 
     229\only<5>{le resultat est la dernière valeur\ldots} 
     230\end{block} 
     231\begin{exampleblock}{} 
     232\begin{semiverbatim} 
     233sub addition \{ 
     234    ($un, $deux) = @\_; 
     235    \only<2-3>{$res = }\only<4>{return }$un + $deux; 
     236    \only<2>{return }\only<2-3>{$res} 
     237\} 
     238 
     239print addition(2, 4); 
     240\end{semiverbatim} 
     241\end{exampleblock} 
     242\end{frame} 
     243 
     244\subsection{Déclarer ses variables} 
     245 
     246\begin{frame}[fragile] 
     247\frametitle{my and compagny} 
     248\begin{block}{Perl est très laxiste:} 
     249\pause 
     250\only<2>{Voici un code qui fonctionne, mais pas comme on veut\ldots} 
     251\onslide<3->{ 
     252Deux moyens de forcer les décalarations: 
     253\pause 
     254\begin{itemize} 
     255\item \textbf{use strict;} force la declaration des variables 
     256\pause 
     257\item \textbf{use warnings;} produit des warnings sur les actions douteuses 
    202258\end{itemize} 
    203 \vfill 
    204 La pile est une liste. 
    205 \end{frame} 
    206  
    207 \begin{frame}[fragile] 
    208 \frametitle{Fonction passage d'arguments} 
    209 Exemple: 
    210 \pause 
    211  
    212 \onslide<2-> 
    213 \begin{verbatim} 
    214 sub fonction { 
    215 \end{verbatim} 
    216 \onslide<3-> 
    217 \begin{verbatim} 
    218     my ($param) = @_; 
    219 \end{verbatim} 
     259} 
     260\only<6->{\textbf{my} sert à déclarer une variable\\ 
     261} 
     262\pause 
     263\only<8->{Voilà qui est parfait !} 
     264\end{block} 
     265 
     266\onslide<5,7>{ 
     267\begin{alertblock}{l'erreur:} 
     268\only<5>{Global symbol "\$latitude" requires explicit package} 
     269\only<7>{Global symbol "\$latitud" requires explicit package} 
     270\end{alertblock} 
     271} 
     272 
     273\onslide<1-> 
     274\begin{exampleblock}{} 
     275\begin{semiverbatim} 
     276\onslide<5->{use strict; 
     277} 
     278\only<6->{my }$latitude = 5; 
     279print "$latitud\only<8->{e}\\n"; 
     280\end{semiverbatim} 
     281\end{exampleblock} 
     282 
     283\end{frame} 
     284 
     285\begin{frame} 
     286\frametitle{The use strict rules} 
     287 
     288\begin{alertblock}{J'ai bien pris note que:} 
     289\only<2->{ 
     290J'utiliserais au moins \textit{use strict}\\ 
     291} 
     292\only<3->{ 
     293J'utiliserais \textbf{toujours} au moins \textit{use strict}\\ 
     294} 
     295\only<4->{ 
     296\textbf{Jamais} je ne dérangerais un gourou Perl si je n'ai pas utilisé 
     297\textit{use strict}\\ 
     298} 
     299 
     300\end{alertblock} 
     301\end{frame} 
     302 
     303\begin{frame}[fragile] 
     304\frametitle{Portée des variables} 
     305\begin{alertblock}{} 
     306\verb+$var+ différent de \verb+@var+ différent de \verb+%var+ ! 
     307\end{alertblock} 
     308\pause 
     309\begin{block}{les règles} 
     310Sans \verb+use strict;+ ni \verb+my+ Perl fait au mieux.\\ 
     311\pause 
     312Les déclarations se font n'importe où, mais avant leur utilisation. 
     313\end{block} 
     314\pause 
     315\begin{exampleblock}{example:} 
    220316\onslide<4-> 
    221 \begin{verbatim} 
    222     return("-- $param --"); 
    223 \end{verbatim} 
    224 \onslide<2-> 
    225 \begin{verbatim} 
    226 } 
    227 \end{verbatim} 
    228 \onslide<2> 
    229 \begin{verbatim} 
    230 fonction(); 
    231 \end{verbatim} 
    232 \onslide<4-> 
    233 \begin{verbatim} 
    234 my $resultat = 
    235 \end{verbatim}  
    236 \onslide<3-> 
    237 \begin{verbatim} 
    238     fonction("perl"); 
    239 \end{verbatim} 
    240  
    241 \end{frame} 
    242  
    243 \subsection{Déclarer ses variables} 
    244  
    245 \begin{frame}[fragile] 
    246 \frametitle{my and co} 
    247 Perl est très laxiste: 
    248 \pause 
    249  
    250 \onslide<2-4> 
    251 \begin{verbatim} 
    252 $latitude = 5; 
    253 print "$latitud\n"; 
    254 \end{verbatim} 
    255  
    256 \onslide<2-> 
    257 Deux moyens de forcer les décalarations: 
    258 \pause 
    259 \begin{itemize} 
    260 \item \verb+use strict;+ force la declaration des variables 
    261 \pause 
    262 \item \verb+use warnings;+ produit des warnings sur les actions douteuses 
    263 \end{itemize} 
    264  
    265 \onslide<5> 
    266 \begin{verbatim} 
     317\begin{semiverbatim} 
    267318use strict; 
    268  
    269 my $latitude = 5; 
    270 print "$latitude\n"; 
    271 \end{verbatim} 
    272  
    273  
    274 \end{frame} 
    275  
    276 \begin{frame}[fragile] 
    277 \frametitle{Portée des variables} 
    278 \verb+$var+ différent de \verb+@var+ différent de \verb+%var+ ! 
    279  
    280 Sans \verb+use strict;+ Perl fait au mieux. 
    281  
    282 \pause 
    283 Les déclarations se font n'importe où, mais avant leur utilisation: 
    284  
    285 \onslide<3-> 
    286 \vfill 
    287 \only<3>{Un script propre:} 
    288 \only<4>{Déclaration d'une variable globale:} 
    289 \only<5>{Au sein d'un bloc, on déclare un variable:} 
    290 \only<6>{On peut utiliser la variable globale:} 
    291 \only<7>{Attention avant l'initialisation !:} 
    292  
    293 \onslide<3-> 
    294 \begin{verbatim} 
    295 use strict; 
    296 \end{verbatim} 
    297  
    298 \onslide<7-> 
    299 \begin{verbatim} 
    300 mafonction(); 
    301 \end{verbatim} 
    302  
    303 \onslide<4-> 
    304 \begin{verbatim} 
     319\onslide<5->{mafonction();} 
    305320my $var = 1 
    306 \end{verbatim} 
    307  
    308 \onslide<5-> 
    309 \begin{verbatim} 
    310 sub mafonction { 
    311 \end{verbatim} 
    312 \onslide<6-> 
    313 \begin{verbatim} 
     321sub mafonction \{ 
    314322    print $var; 
    315 \end{verbatim} 
    316 \onslide<5-> 
    317 \begin{verbatim} 
    318323    my $fvar = 3; 
    319 } 
    320 \end{verbatim} 
     324\} 
     325\end{semiverbatim} 
     326\end{exampleblock} 
    321327\end{frame} 
    322328 
Note: See TracChangeset for help on using the changeset viewer.