summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordakkar <dakkar@luxion>2008-08-09 09:28:43 +0000
committerdakkar <dakkar@luxion>2008-08-09 09:28:43 +0000
commit8c8bbe8d000831b58190d4fc76e7babae2806086 (patch)
treef05e11f1d74bad84e3be8dd8b81cc017e4c94ac7
parentarray, manca il contesto (diff)
downloadintro-perl-8c8bbe8d000831b58190d4fc76e7babae2806086.tar.gz
intro-perl-8c8bbe8d000831b58190d4fc76e7babae2806086.tar.bz2
intro-perl-8c8bbe8d000831b58190d4fc76e7babae2806086.zip
contesto, e spostato hash prima di sub
git-svn-id: svn://luxion/repos/intro-perl@352 fcb26f47-9200-0410-b104-b98ab5b095f3
-rw-r--r--corso.content.tex87
1 files changed, 82 insertions, 5 deletions
diff --git a/corso.content.tex b/corso.content.tex
index 0a71925..623b4c2 100644
--- a/corso.content.tex
+++ b/corso.content.tex
@@ -713,17 +713,84 @@ Questo {\em cambia il valore} degli elementi dell'array \lstinline!@fratelli!.
\end{frame}
%$
+\begin{frame}[fragile]\frametitle{Assegnamenti nel ciclo}
+\begin{lstlisting}
+foreach my $fratello (qw(Cino Dino Gino Lino)) {
+ $fratello="<$fratello>";
+}
+\end{lstlisting}
+
+Questo {\em è un errore}.
+\end{frame}
+%$
+
\subsection{Il contesto}
-\section{Subroutine}
+\begin{frame}\frametitle{Contesto scalare e lista}
+\begin{itemize}
+\item ciascuna espressione in un programm \Perl\ viene valutata in un certo {\em contesto}
+\item il contesto può essere {\em scalare} o {\em lista}
+\item molte funzioni restituiscono risultati diversi a seconda del contesto
+\end{itemize}
+\end{frame}
-\subsection{Definizione}
+\begin{frame}[fragile]\frametitle{Contesto scalare: esempi}
+\begin{lstlisting}[escapeinside=«»]
+$nome = «{\em \sffamily qualcosa}»;
+$totali[3] = «{\em \sffamily qualcosa}»;
+10 + «{\em \sffamily qualcosa}»;
+«{\em \sffamily qualcosa}» + 10;
+if («{\em \sffamily qualcosa}») { ... }
+while («{\em \sffamily qualcosa}») { ... }
+$persone[«{\em \sffamily qualcosa}»] = «{\em \sffamily qualcos'altro}»;
+\end{lstlisting}
+\end{frame}
+%$
-\subsection{Invocazione}
+\begin{frame}[fragile]\frametitle{Contesto lista: esempi}
+\begin{lstlisting}[escapeinside=«»]
+@persone = «{\em \sffamily qualcosa}»;
+($primo, $secondo) = «{\em \sffamily qualcosa}»;
+($primo) = «{\em \sffamily qualcosa}»;
+push @totali, «{\em \sffamily qualcosa}»;
+print «{\em \sffamily qualcosa}»;
+foreach my $nome («{\em \sffamily qualcosa}») { ... }
+\end{lstlisting}
+\end{frame}
-\subsection{Argomenti e valore di ritorno}
+\begin{frame}[fragile]\frametitle{Contesto scalare: casi particolari}
+\begin{itemize}
+\item un array in contesto scalare restituisce il numero di elementi: \lstinline!my @a=('a'..'z');my $c=@a;print $c! scrive \lstinline!26!
+\item una {\em lista} in contesto scalare restituisce l'ultimo elemento (e spesso genera warning): \lstinline!my $a=qw(a b c);print $a! scrive \lstinline!c!
+\end{itemize}
+\end{frame}
+
+\begin{frame}[fragile]\frametitle{Contesto lista: casi particolari}
+\begin{itemize}
+\item \lstinline!my @a=(1..10);@a=()! svuota l'array
+\item \lstinline!my @a=(1..10);@a=undef! {\em non} svuota: \lstinline!@a! contiene un elemento, il cui valore è \lstinline!undef!
+\end{itemize}
+\end{frame}
+
+\begin{frame}[fragile]\frametitle{Forzare il contesto}
+\begin{lstlisting}
+my @a;print scalar @a; # forza contesto scalare
+
+# forza contesto lista, e assegna a scalare
+my $lunghezza=()=funzione_lista();
+\end{lstlisting}
+\end{frame}
+%$
+
+\begin{frame}[fragile]\frametitle{Input in contesto lista}
+\begin{lstlisting}
+my @linee=<>; # legge tutto l'input in memoria
+chomp(@linee); # toglie tutti gli "a capo"
+\end{lstlisting}
+
+\visible<2->{{\em Non} fatelo se non siete sicuri che l'input sia piccolo}
+\end{frame}
-\subsection{Variabili lessicali}
\section{Hash}
@@ -733,6 +800,16 @@ Questo {\em cambia il valore} degli elementi dell'array \lstinline!@fratelli!.
\subsection{Funzioni}
+\section{Subroutine}
+
+\subsection{Definizione}
+
+\subsection{Invocazione}
+
+\subsection{Argomenti e valore di ritorno}
+
+\subsection{Variabili lessicali}
+
\section{Input/Output}
\subsection{Qualche dettaglio in più}