source: trunk/perl/variables.tex @ 176

Last change on this file since 176 was 175, checked in by nanardon, 16 years ago
  • add missing subsection
  • 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
202Prenons deux tableaux de trois entrées:
203\begin{verbatim}
204@tab1 = (1, 2, 3);
205@tab2 = (4, 5, 6);
206\end{verbatim}
207\pause
208
209Récupérer la première entrée, et le reste de \verb+@tab1+
210\begin{verbatim}
211($un, @reste) = @tab1;
212\end{verbatim}
213\pause
214Récupérer la première entrée, et le reste de \verb+@tab1+ et \verb+@tab2+
215\begin{verbatim}
216($un, @reste) = (@tab1, @tab2);
217\end{verbatim}
218\pause
219Récupérer la deuxième entrée, et le reste de \verb+@tab1+ et \verb+@tab2+
220\begin{verbatim}
221(undef, $deux, @reste) = (@tab1, @tab2);
222\end{verbatim}
223\end{frame}
224
225\begin{frame}[fragile]
226\frametitle{Comprendre les listes: les hash}
227\begin{block}{}
228'\verb+=>+' est un séparateur comme la '\verb+,+', donc c'est une liste:
229\begin{verbatim}
230%hash = (un => 1, deux => 2);
231%hash = (un, 1, deux, 2);
232@tab = %hash; %hash = @tableau;
233\end{verbatim}
234\verb+@tab+ contient "un", 1\ldots
235\end{block}
236\pause
237\begin{block}{hash vers hash}
238\begin{verbatim}
239%unhash = (%hash2, %hash3);
240\end{verbatim}
241\verb+%hash+ contient 1 \verb+=>+ 2, 3 \verb+=>+ 4\ldots
242\end{block}
243\pause
244\begin{alertblock}{}
245Les clefs dupliquées sont ecrasées, la dernière gagne !
246\end{alertblock}
247\end{frame}
248
249\subsection{les variables magiques}
250
251\begin{frame}[fragile]
252\begin{block}{Elles existent dans tout programme perl.}
253Les principales à connaitre:\\
254\pause
255\vfill
256
257\begin{tabular}{ll}
258\verb+$_+&stockage par défaut\\
259\pause
260\verb+@_+&paramètres des subroutines\\
261\pause
262&\\
263\verb+@ARGV+&les arguments passés aux programmes\\
264\pause
265&\\
266\verb+$a+ et \verb+$b+&utilisé par sort\\
267\end{tabular}
268\end{block}
269\pause
270
271\vfill
272\vfill
273\begin{alertblock}{Attention à \$\_}
274\verb+$_+ permet d'écrire du code succin, mais n'augmente pas la visibilité:
275\begin{verbatim}
276$entier = int;
277\end{verbatim}
278\end{alertblock}
279\end{frame}
Note: See TracBrowser for help on using the repository browser.