% -*- mode: latex; -*- mustache tags:  
\ifx\wholebook\relax\else

	\documentclass[10pt,twoside,english]{root/support/latex/sbabook/sbabook}
  \usepackage{import}
  \subimport{root/support/latex/}{common.tex}

  \hypersetup{pdfinfo = {
    Title = {{Pharo Mooc}},
    Author = {},
    Keywords = {pharo, smalltalk}}}
  \begin{document}
\fi

\chapter{R\'{e}\'{e}criture d'expressions}
Dans cet exercice, nous vous demandons de r\'{e}\'{e}crire des expressions ou de comprendre les diff\'{e}rentes formes que la solution peut prendre. 
Quelques-uns de ces expressions sont expliqu\'{e}es dans : \url{https://medium.com/concerning-pharo/elegant-pharo-code-bb590f0856d0}
\subsection{Exercice : Examinons les expressions de block}
\begin{displaycode}{smalltalk}
| sum |
sum := 0.
#(21 23 53 66 87) do: [:item | sum := sum + item].
sum
\end{displaycode}

\begin{itemize}
\item Quel est le r\'{e}sultat final ?
\end{itemize}

\begin{itemize}
\item R\'{e}\'{e}crire ce morceau de code pour utiliser une indexation explicit du tableau pour acc\'{e}der aux \'{e}l\'{e}ments du tableau (message \textcode{at:}). Tester votre version. 
\end{itemize}

\begin{itemize}
\item R\'{e}\'{e}crire ce morceau de code en utilisant le message  \textcode{inject:into:} (Regarder l'implantation d'\textcode{inject:into:} et ces utilisateurs dans le syst\`{e}me pour comprendre comment l'utiliser).
\end{itemize}
\subsection{Exercice : Comparer les expressions}
Nous pouvons exprimer de diff\'{e}rentes mani\`{e}re le m\^{e}me calcul. Regarder chacune des expression et v\'{e}rifier les messages que vous ne connaissez pas. Regardez leur implantation. 

\begin{displaycode}{smalltalk}
| array |
array := #(2 4 4 4 5 5 7 9).
((array - array average) squared sum / (array size - 1)) sqrt 
\end{displaycode}

\begin{displaycode}{smalltalk}
[ :input | ((input - input average) squared sum / (input size - 1)) sqrt ] 
    value: #(2 4 4 4 5 5 7 9) 
\end{displaycode}

\begin{displaycode}{smalltalk}
#(2 4 4 4 5 5 7 9) in: [ :input |
    ((input - input average) squared sum / (input size - 1)) sqrt ]
\end{displaycode}

\begin{displaycode}{smalltalk}
#(2 4 4 4 5 5 7 9) stddev
\end{displaycode}


\ifx\wholebook\relax\else
\end{document}
\fi