\documentclass[12pt]{beamer}

\usepackage[latin1]{inputenc}
\usepackage{fontenc}
\usepackage[frenchb]{babel}
\usepackage{aeguill}

\usetheme{Madrid}
\definecolor{BackGroundColor}{rgb}{0.95, 0.95, 0.95}
\definecolor{White}{rgb}{1.0, 1.0, 1.0}
\definecolor{Red}{rgb}{1.0, 0.0, 0.0}
\beamertemplatesolidbackgroundcolor{BackGroundColor!50!White}

\title[Perl pour physiciens]{Perl pour physiciens}
\author{Nicolas Regnault}
\institute{Laboratoire Pierre Aigrain}
\date{16 novembre 2004}

\begin{document}

\frame{\titlepage}

\frame{
S\'eances:
\begin{itemize}
\item mardi 16 novembre 11h T4-5
\item vendredi 19 novembre 14h T4-5
\item mardi 23 novembre 11h T4-5
\item vendredi 26 novembre 14h T4-5
\visible<2>{\item mardi 30 novembre 11h T4-5}
\end{itemize}
}

\frame{
PERL pour les physiciens sur le web:\\

\begin{center}
{\it http://www.phys.ens.fr/{\textasciitilde}regnault/perl}
\end{center}

\begin{itemize}
\item codes des exemples
\item pr\'esentation
\item notes de cours
\end{itemize}
}

\frame{
Plan du cours:
\begin{itemize}
\item introduction
\item les variables
\item \color<3>[gray]{0.7}{les tableaux}
\item \color<3>[gray]{0.7}{les fichiers}
\item \color<3>[gray]{0.7}{les expressions r\'eguli\`eres}
\item \color<3>[gray]{0.7}{les fonctions}
\item \color<3>[gray]{0.7}{hygi\`ene et programmation (les 10 commandements)}
\item \color<3>[gray]{0.7}{PERL ma\^itre du monde}
\visible<2->{\item \color<3>[gray]{0.7}{Exemples \`a la demande}}
\end{itemize}
}

\frame{
\begin{center}
\begin{beamerboxesrounded}[shadow=true]{}
\begin{center}Chapitre 1:\\
Introduction
\end{center}
\end{beamerboxesrounded}
\end{center}
}

\frame{
\frametitle{chapitre 1: Introduction}
\framesubtitle{Qu'est-ce que PERL?}

PERL est l'acronyme de:\\
\begin{flushleft}
``Practical Extraction and Report Language''\\
\visible<2->{ou "Pathologically Exclectic Rubbish Lister"}
\end{flushleft}

\begin{itemize}
\item scripts UNIX sous st\'ero\"{\i}des
\item puissant outil de traitement de texte
\item interface avec les autres programmes
\visible<3>{\item information quantique}
\end{itemize}
}

\frame{
\frametitle{chapitre 1: Introduction}
\framesubtitle{PERL sur votre ordinateur}
Par d\'efaut sous Linux/Unix/BSD/MacOSX
\begin{center}
\includegraphics[width=7cm]{linux.png}
\end{center}
}

\frame{
\frametitle{chapitre 1: Introduction}
\framesubtitle{PERL sur votre ordinateur}
Sous Windows, ActivePERL et OpenPERL IDE
\begin{center}
\includegraphics[width=8cm]{windows.png}
\end{center}
}

\frame{
\frametitle{chapitre 1: Introduction}
\framesubtitle{Hello World!}
\begin{center}
\begin{beamerboxesrounded}[shadow=true]{helloworld.pl}
\alert<3-4>{\#!/usr/bin/perl}\\
\\
\alert<3>{\# premier exemple : Hello World!}\\
\alert<5>{print ("Hello World!{\textbackslash}n");}\\
\end{beamerboxesrounded}
\end{center}

\begin{center}
\includegraphics[width=7cm]{linux2.png}
\end{center}
}

\frame{
\begin{center}
\begin{beamerboxesrounded}[shadow=true]{}
\begin{center}Chapitre 2:\\
Introduction
\end{center}
\end{beamerboxesrounded}
\end{center}
}

\frame{
\frametitle{chapitre 2: Les variables}
\framesubtitle{G\'en\'eralit\'es}
\begin{itemize}
\item variables non typ\'ees
\item type pouvant changer en cours d'ex\'ecution
\item nom de la variable commen\c{c}ant par \$
\end{itemize}

\begin{center}
\begin{beamerboxesrounded}[shadow=true]{}
\$a = 1;\\
\$a = "Newton";\\
\end{beamerboxesrounded}
\end{center}
}

\frame{
\frametitle{chapitre 2: Les variables}
\framesubtitle{G\'en\'eralit\'es}

\begin{center}
\begin{beamerboxesrounded}[shadow=true]{newton.pl}
\#!/usr/bin/perl\\
\\
\alert<2>{\$a = "Newton";}\\
\alert<3>{print (\$a);}\\
\end{beamerboxesrounded}
\end{center}
}

\frame{
\frametitle{chapitre 2: Les variables}
\framesubtitle{les cha\^{\i}nes de caract\`eres}

concat\'enation de cha\^{\i}nes:

\only<1-2>{\begin{center}
\begin{beamerboxesrounded}[shadow=true]{helloworld2.pl}
\#!/usr/bin/perl\\
\\
\$a = "Hello";\\
\$b = "World";\\
\alert<2>{\$c = \$a.\$b;}\\
print (\$c);\\
\end{beamerboxesrounded}
\end{center}}

\only<3>{\begin{center}
\includegraphics[width=7cm]{linux4.png}
\end{center}}

\only<4-5>{\begin{center}
\begin{beamerboxesrounded}[shadow=true]{helloworld2bis.pl}
\#!/usr/bin/perl\\
\\
\$a = "Hello";\\
\$b = "World";\\
\alert<5>{print (\$a.\$b);}\\
\end{beamerboxesrounded}
\end{center}}

\only<6-7>{\begin{center}
\begin{beamerboxesrounded}[shadow=true]{helloworld2ter.pl}
\#!/usr/bin/perl\\
\\
\$a = "Hello";\\
\$b = "World";\\
\alert<7>{print (\$a." ".\$b."{\textbackslash}n");}\\
\end{beamerboxesrounded}
\end{center}}
}

\frame{
\frametitle{chapitre 2: Les variables}
\framesubtitle{les cha\^{\i}nes de caract\`eres}

\begin{center}
\begin{beamerboxesrounded}[shadow=true]{}
\only<1,2>{if (condition)\\}
\only<3>{if (!(condition))\\}
\hspace{0.25cm}\{ \\
\only<1,2>{\hspace{0.5cm}bloc d'instruction \`a ex\'ecuter si la condition est v\'erifi\'ee\\}
\only<3>{\hspace{0.5cm}bloc d'instruction \`a ex\'ecuter si la condition n'est pas v\'erifi\'ee\\}
\;\;\}\\
\only<1>{else\\
\;\;\{\\
\;\;\;\;bloc d'instruction \`a ex\'ecuter si la condition n'est pas v\'erifi\'ee\\ 
\;\;\}\\}
\end{beamerboxesrounded}
\end{center}

}

\frame{
\frametitle{chapitre 2: Les variables}
\framesubtitle{les cha\^{\i}nes de caract\`eres}

Comparer deux cha\^{\i}nes
\begin{itemize}
\item {\bf eq} teste si deux cha\^{\i}nes sont identiques.
\item {\bf ne} teste si deux cha\^{\i}nes sont diff\'erentes.
\item {\bf le} (resp. {\bf lt}) teste si la cha\^{\i}ne \`a gauche de l'op\'erateur est plus petite (resp. strictement plus petite) que celle \`a droite de l'op\'erateur.
\item {\bf ge} (resp. {\bf gt}) teste si la cha\^{\i}ne \`a gauche de l'op\'erateur est plus grande (resp. strictement plus grande) que celle \`a droite de l'op\'erateur.
\end{itemize}
}

\frame{
\frametitle{chapitre 2: Les variables}
\framesubtitle{les cha\^{\i}nes de caract\`eres}

Exemple:
\begin{center}
\begin{beamerboxesrounded}[shadow=true]{comparaison.pl}
\#!/usr/bin/perl\\
\\
\$a = "toto";\\
if (\$a eq "toto");\\
  \{\\
    print ("la cha\^{\i}ne de caract\`eres vaut toto{\textbackslash}n");\\
  \}\\
else\\
  \{\\
    print ("la cha\^{\i}ne de caract\`eres est diff\'erente de toto{\textbackslash}n");\\
  \}\\
\end{beamerboxesrounded}
\end{center}
}

\frame{
\frametitle{chapitre 2: Les variables}
\framesubtitle{les cha\^{\i}nes de caract\`eres}

R\'ecuperer une cha\^{\i}ne de caract\`eres (interactif)
\begin{center}
\begin{beamerboxesrounded}[shadow=true]{entree.pl}
\#!/usr/bin/perl\\
\\
\alert<2>{{\textdollar}a = {\textless}STDIN{\textgreater};}\\
print ("vous venez de taper ".{\textdollar}a);\\
\end{beamerboxesrounded}
\end{center}
}

\frame{
\frametitle{chapitre 2: Les variables}
\framesubtitle{les nombres}

\begin{itemize}
\item entiers:  de $-10^{14}$ \`a $10^{14}$.
\item flottants (double): mantisse de 14 chiffres, exposant de -308 \`a +308
\end{itemize}

\visible<2>{
\begin{center}
entiers=flottants
\end{center}
}
}

\frame{
\frametitle{chapitre 2: Les variables}
\framesubtitle{les nombres}

Les op\'erateurs

\begin{itemize}
\item l'addition $(+)$.
\item la soustraction $(-)$.
\item la multiplication $(*)$.
\item la division $(/)$.
\item le reste de la division enti\`ere ou modulo $(\%)$.
\item la puissance $(**)$.
\end{itemize}

}

\frame{
\frametitle{chapitre 2: Les variables}
\framesubtitle{les nombres}

Les fonctions de base:

\begin{itemize}
\item {\bf abs}: valeur absolue.
\item {\bf int}: partie enti\`ere.
\item {\bf sqrt}: racine carr\'e.
\item {\bf atan2}: arctangente du rapport de deux nombres atan2(\$y, \$x)
\item {\bf cos}: cosinus.
\item {\bf sin}: sinus.
\item {\bf exp}: exponentiel.
\item {\bf log}: logarithme en base n\'eperienne.
\item {\bf rand}: retourne un nombre al\'eatoire entre 0 et 1.
\item {\bf srand}: fixe la graine du g\'en\'erateur de nombres al\'eatoires.
\end{itemize}

}

\frame{
\frametitle{chapitre 2: Les variables}
\framesubtitle{les nombres}

comparaison entre nombre

\begin{itemize}
\item $==$ teste si deux nombres sont \'egaux.
\item $!=$ teste si deux nombres sont diff\'erents.
\item $<=$ ($<$) teste si le nombre \`a gauche de l'op\'erateur est plus petit ou \'egal (resp. strictement plus petit) que celui \`a droite de l'op\'erateur.
\item $>=$ ($>$) teste si le nombre \`a gauche de l'op\'erateur est plus grand ou \'egal (resp. strictement plus grand) que celui \`a droite de l'op\'erateur.
\end{itemize}
}

\frame{

\only<1,3->{\begin{center}
\begin{beamerboxesrounded}[shadow=true]{comparaison\_chaine\_nombre.pl}
\#!/usr/bin/perl\\
\$a = 4;\\
\$b = 23;\\
\alert<4>{if (\$a $ < $ \$b )}\\
\{\\
  print (\$a." est plus petit que ".\$b."{\textbackslash}n");\\
\}\\
\alert<5>{if (\$a lt \$b )}\\
\{\\
  print (\$a." est plus petit que ".\$b."{\textbackslash}n");\\
\}\\
\end{beamerboxesrounded}
\end{center}}


\only<2>{\begin{center}
\includegraphics[width=7cm]{linux3.png}
\end{center}}
}

\frame{
\frametitle{chapitre 2: Les variables}
\framesubtitle{les nombres}
Les boucles: {\bf while}

\begin{center}
\begin{beamerboxesrounded}[shadow=true]{while.pl}
\#!/usr/bin/perl\\
\\
\$a = 0;\\
\alert<2>{while (\$a $<$ 10)}\\
  \{\\
    print ("Hello World{\textbackslash}n");\\
\only<1-3>{\alert<3>{\$a =\$a + 1;\\}}
\only<4>{\alert<4>{\$a += 1;\\}}
\only<5>{\alert<5>{\$a++;\\}}
  \}\\
\end{beamerboxesrounded}
\end{center}
}

\frame{
\frametitle{chapitre 2: Les variables}
\framesubtitle{les nombres}
Les boucles: {\bf for}

\begin{center}
\begin{beamerboxesrounded}[shadow=true]{for.pl}
\#!/usr/bin/perl\\
\\
\alert<2>{for (\$a = 0; \$a $<$ 10; \$a++)}\\
  \{\\
    print ("Hello World{\textbackslash}n");\\
  \}\\
\end{beamerboxesrounded}
\end{center}
}

\frame{
\frametitle{chapitre 2: Les variables}
\framesubtitle{exercice}
Calcul de $\pi$\\
\vspace{0.5cm}
\only<1>{
Mont\'e Carlo
\begin{itemize}
\item  nombre d'it\'erations \$M \`a demander (\`a v\'erifier)
\item  $x$ et $y$ al\'eatoires entre 0 et 1. \$N++ si $x^{2} + y^{2} <= 1$.
\item  $N/M \longrightarrow \pi / 4$.
\end{itemize}
}

\only<2>{
Int\'egrale de $\int_0^{+\infty} dx\;\; \exp(-x^{2}/2)$
\begin{itemize}
\item  m\'ethode des trap\`ezes
\item  nombre de subdivisions (\`a v\'erifier)
\item  borne sup\'erieure (\`a v\'erifier)
\end{itemize}
}
}

\end{document}