source: tags/20080918/perl/perl.variables.tex @ 190

Last change on this file since 190 was 189, checked in by nanardon, 16 years ago
  • various fix point during talk
  • Property svn:keywords set to Id
File size: 5.4 KB
Line 
1% $Id$
2
3\section{Variables}
4
5\subsection{Variables de Perl}
6
7\begin{frame}
8\frametitle{types de variables}
9\textbf{15} types de variables:
10\pause
11\begin{itemize}
12\item scalaires (scalar)
13\pause
14\item tableaux (array)
15\pause
16\item hash (hash)
17\pause
18\end{itemize}
19\vfill
20\onslide<2->
21\includegraphics[height=40mm]{Angel_fish}
22\onslide<3->
23\includegraphics[height=40mm]{tableau}
24\onslide<4->
25\includegraphics[height=40mm]{hache}
26\onslide<5->
27\vfill
28Et les autres on s'en moque...
29\end{frame}
30
31\subsection{Scalaire}
32
33\begin{frame}[fragile]
34\frametitle{scalaire}
35\begin{block}{Un \textbf{scalaire} est une simple valeur:}
36\begin{itemize}
37\pause
38\item \emph{undef}
39\pause
40\item définie:
41    \begin{itemize}
42    \item un chiffre, nombre
43    \item une chaine de caractères
44    \item \ldots
45    \end{itemize}
46\end{itemize}
47\end{block}
48\pause
49\vfill
50\begin{block}{Convertion}
51Perl évalue et converti les valeurs numériques au vol!
52\end{block}
53\pause
54\vfill
55
56\begin{exampleblock}{Exemple de valeur de scalaire}
57\begin{verbatim}
58$rien = undef;
59$chiffre = 42; $chaine = "1";
60print $chaine + $chiffre;
61print $chaine . $chiffre;
62\end{verbatim}
63\end{exampleblock}
64\end{frame}
65
66\begin{frame}[fragile]
67\frametitle{Scalair: Vrai ou Faux ?}
68\begin{block}{}
69Valeur \textit{fausses}: \textit{undef}, 0, "0", ""
70
71Valeur \textit{vraies}: le reste: 1, "1", "un chien ?"
72\end{block}
73\pause
74\vfill
75
76\begin{exampleblock}{Exemple de test}
77\begin{verbatim}
78$valeur = "0";
79if ($valeur) # faux, "0" => 0
80if ($valeur == 0) # vrai "0" => 0
81if ($valeur eq "") # faux, chaine non vide
82\end{verbatim}
83\end{exampleblock}
84\pause
85\vfill
86
87\begin{exampleblock}{0 but True}
88\begin{verbatim}
89$valeur = "0E0";
90\end{verbatim}
91\end{exampleblock}
92\end{frame}
93
94\subsection{Les tableaux}
95
96\begin{frame}[fragile]
97\frametitle{Tableau (array)}
98\begin{block}{Les tableaux sont des piles de scalaires}
99\begin{verbatim}
100$valeur = 3;
101@tableau = ($valeur, "chaines");
102\end{verbatim}
103\end{block}
104\pause
105
106\vfill
107\begin{block}{}
108Ils sont dynamiques, et a une seule dimension
109\end{block}
110\end{frame}
111
112\begin{frame}[fragile]
113\frametitle{Tableau: Exemples}
114\begin{exampleblock}{Utilisation:}
115\begin{verbatim}
116@tableau = (1, 2, 3);
117$tableau[3] = 4;
118$tableau[-1]; # dernier élément
119\end{verbatim}
120\end{exampleblock}
121\pause
122\vfill
123\begin{alertblock}{Attention au \$}
124\begin{verbatim}
125@tableau;
126$tableau[1];
127\end{verbatim}
128\end{alertblock}
129\pause
130\vfill
131\begin{block}{}
132Nombre d'éléments: \verb+scalar(@tableau)+
133
134Dernier indice: \verb+$#tableau+
135\end{block}
136\pause
137\vfill
138\begin{block}{Les bouts du tableau}
139\begin{tabular}{rcl}
140shift <=&\verb+0$$$$$n+&<= push\\
141unshift =>&\verb+0$$$$$n+&=> pop\\
142\end{tabular}
143\end{block}
144\end{frame}
145
146\subsection{Les tables de hashage}
147
148\begin{frame}[fragile]
149\frametitle{hash}
150\begin{block}{tables de hashage}
151Ce sont des tableaux indexés \verb+clef => valeur+.
152
153Ils sont dynamiques.
154
155\pause
156\begin{itemize}
157\item la clef est une valeur textuelle simple
158\item la valeur est un \textbf{scalaire}
159\item l'ordre des clefs n'est pas conservé !!!
160\end{itemize}
161\end{block}
162
163\end{frame}
164\begin{frame}[fragile]
165\frametitle{hash: exemple}
166\begin{exampleblock}{Utiliser tableau de hashage:}
167\begin{verbatim}
168%hash = ( foo => "un",
169          bar => 2, );
170print $hash{'bar'};
171$clef = 'clef'; $hash{$clef};
172\end{verbatim}
173\end{exampleblock}
174\pause
175\vfill
176\begin{alertblock}{Attention au \$}
177\begin{verbatim}
178%hash;
179$hash{baz};
180\end{verbatim}
181\end{alertblock}
182\vfill
183\pause
184\begin{block}{keys: renvois les clefs}
185\begin{verbatim}
186keys(%hash);
187\end{verbatim}
188\end{block}
189
190\end{frame}
191
192\subsection{Les listes}
193
194\begin{frame}[fragile]
195\frametitle{Comprendre les listes}
196\begin{alertblock}{Perl aplati les listes !}
197
198Le concept est simple, mais redoutable:
199\end{alertblock}
200\pause
201
202\vfill
203\vfill
204\begin{exampleblock}{Prenons deux tableaux de trois entrées:}
205\begin{verbatim}
206@tab1 = (1, 2, 3);
207@tab2 = (4, 5, 6);
208\end{verbatim}
209\end{exampleblock}
210\vfill
211\pause
212
213\begin{exampleblock}{}
214\begin{semiverbatim}
215(\only<6>{undef, }$un\only<4->{, @reste}) = \only<5->{(}@tab1\only<5->{, @tab2)};
216\end{semiverbatim}
217\end{exampleblock}
218\begin{block}{}
219\only<3>{On copie la première entrée du tableau dans \$un}
220\only<4>{pareil, mais la fin du tableaux va dans @reste}
221\only<5>{@tab1 et @tab2 ne forme plus qu'un lors de la copie}
222\only<6>{la première entrée est ignoré (undef)}
223\end{block}
224\end{frame}
225
226\begin{frame}[fragile]
227\frametitle{Comprendre les listes: les hash}
228\begin{block}{}
229'\verb+=>+' est un séparateur comme la '\verb+,+', donc c'est une liste:
230\begin{verbatim}
231%hash = (un => 1, deux => 2);
232%hash = (un, 1, deux, 2);
233@tab = %hash; %hash = @tableau;
234\end{verbatim}
235\verb+@tab+ contient "un", 1\ldots
236\end{block}
237\pause
238\begin{block}{hash vers hash}
239\begin{verbatim}
240%unhash = (%hash2, %hash3);
241\end{verbatim}
242\verb+%hash+ contient 1 \verb+=>+ 2, 3 \verb+=>+ 4\ldots
243\end{block}
244\pause
245\begin{alertblock}{}
246Les clefs dupliquées sont ecrasées, la dernière gagne !
247\end{alertblock}
248\end{frame}
249
250\subsection{les variables magiques}
251
252\begin{frame}[fragile]
253\begin{block}{Elles existent dans tout programme perl.}
254Les principales à connaitre:\\
255\pause
256\vfill
257
258\begin{tabular}{ll}
259\verb+$_+&stockage par défaut\\
260\pause
261\verb+@_+&paramètres des subroutines\\
262\pause
263&\\
264\verb+@ARGV+&les arguments passés aux programmes\\
265\pause
266&\\
267\verb+$a+ et \verb+$b+&utilisé par sort\\
268\end{tabular}
269\end{block}
270\pause
271
272\vfill
273\vfill
274\begin{alertblock}{Attention à \$\_}
275\verb+$_+ permet d'écrire du code succin, mais n'augmente pas la visibilité:
276\begin{verbatim}
277$entier = int;
278\end{verbatim}
279\end{alertblock}
280\end{frame}
Note: See TracBrowser for help on using the repository browser.