From 8c8bbe8d000831b58190d4fc76e7babae2806086 Mon Sep 17 00:00:00 2001 From: dakkar Date: Sat, 9 Aug 2008 09:28:43 +0000 Subject: contesto, e spostato hash prima di sub git-svn-id: svn://luxion/repos/intro-perl@352 fcb26f47-9200-0410-b104-b98ab5b095f3 --- corso.content.tex | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file 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ù} -- cgit v1.2.3