source: trunk/perl/variables.tex @ 172

Last change on this file since 172 was 170, checked in by nanardon, 16 years ago
  • beautify and clarify
  • Property svn:keywords set to Id
File size: 5.3 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\begin{frame}[fragile]
147\frametitle{hash}
148\begin{block}{tables de hashage}
149Ce sont des tableaux indexés \verb+clef => valeur+.
150
151Ils sont dynamiques.
152
153\pause
154\begin{itemize}
155\item la clef est une valeur textuelle simple
156\item la valeur est un \textbf{scalaire}
157\item l'ordre des clefs n'est pas conservé !!!
158\end{itemize}
159\end{block}
160
161\end{frame}
162\begin{frame}[fragile]
163\frametitle{hash: exemple}
164\begin{exampleblock}{Utiliser tableau de hashage:}
165\begin{verbatim}
166%hash = ( foo => "un"
167          bar => 2 );
168print $hash{'bar'};
169$clef = 'clef'; $hash{$clef};
170\end{verbatim}
171\end{exampleblock}
172\pause
173\vfill
174\begin{alertblock}{Attention au \$}
175\begin{verbatim}
176%hash;
177$hash{baz};
178\end{verbatim}
179\end{alertblock}
180\vfill
181\pause
182\begin{block}{keys: renvois les clefs}
183\begin{verbatim}
184keys(%hash);
185\end{verbatim}
186\end{block}
187
188\end{frame}
189
190\subsection{Les listes}
191
192\begin{frame}[fragile]
193\frametitle{Comprendre les listes}
194\begin{alertblock}{Perl aplati les listes !}
195
196Le concept est simple, mais redoutable:
197\end{alertblock}
198\pause
199
200Prenons deux tableaux de trois entrées:
201\begin{verbatim}
202@tab1 = (1, 2, 3);
203@tab2 = (4, 5, 6);
204\end{verbatim}
205\pause
206
207Récupérer la première entrée, et le reste de \verb+@tab1+
208\begin{verbatim}
209($un, @reste) = @tab1;
210\end{verbatim}
211\pause
212Récupérer la première entrée, et le reste de \verb+@tab1+ et \verb+@tab2+
213\begin{verbatim}
214($un, @reste) = (@tab1, @tab2);
215\end{verbatim}
216\pause
217Récupérer la deuxième entrée, et le reste de \verb+@tab1+ et \verb+@tab2+
218\begin{verbatim}
219(undef, $deux, @reste) = (@tab1, @tab2);
220\end{verbatim}
221\end{frame}
222
223\begin{frame}[fragile]
224\frametitle{Comprendre les listes: les hash}
225\begin{block}{}
226'\verb+=>+' est un séparateur comme la '\verb+,+', donc c'est une liste:
227\begin{verbatim}
228%hash = (un => 1, deux => 2);
229%hash = (un, 1, deux, 2);
230@tab = %hash; %hash = @tableau;
231\end{verbatim}
232\verb+@tab+ contient "un", 1\ldots
233\end{block}
234\pause
235\begin{block}{hash vers hash}
236\begin{verbatim}
237%unhash = (%hash2, %hash3);
238\end{verbatim}
239\verb+%hash+ contient 1 \verb+=>+ 2, 3 \verb+=>+ 4\ldots
240\end{block}
241\pause
242\begin{alertblock}{}
243Les clefs dupliquées sont ecrasées, la dernière gagne !
244\end{alertblock}
245\end{frame}
246
247\subsection{les variables magiques}
248
249\begin{frame}[fragile]
250\begin{block}{Elles existent dans tout programme perl.}
251Les principales à connaitre:\\
252\pause
253\vfill
254
255\begin{tabular}{ll}
256\verb+$_+&stockage par défaut\\
257\pause
258\verb+@_+&paramètres des subroutines\\
259\pause
260&\\
261\verb+@ARGV+&les arguments passés aux programmes\\
262\pause
263&\\
264\verb+$a+ et \verb+$b+&utilisé par sort\\
265\end{tabular}
266\end{block}
267\pause
268
269\vfill
270\vfill
271\begin{alertblock}{Attention à \$\_}
272\verb+$_+ permet d'écrire du code succin, mais n'augmente pas la visibilité:
273\begin{verbatim}
274$entier = int;
275\end{verbatim}
276\end{alertblock}
277\end{frame}
Note: See TracBrowser for help on using the repository browser.