\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[a4paper,margin=2cm,nohead,includefoot]{geometry}
\usepackage{fourier}
\usepackage[scaled=0.875]{helvet}
\pagestyle{empty}
\usepackage[frenchb]{babel}
\input{Christ5}
\usepackage{graphicx}
\graphicspath{{figures/}}
\DeclareGraphicsRule{*}{mps}{*}{}
\usepackage{mflogo}
\usepackage{url}
\usepackage{multicol}
\usepackage{listingsutf8}
\usepackage{filecontents}
\lstset{language=MetaPost,inputencoding=utf8}
\title{\includegraphics[scale=0.05]{Scratch_cat.png}\kern0.05\linewidth Scratch et \MP\kern0.05\linewidth\includegraphics{Carre.1}}
\author{C.Poulain}
\date{Janvier 2017}
\begin{document}
\maketitle
\begin{abstract}
  Utiliser \MP\ pour produire des algorithmes \og papier\fg\ avec les conventions de Scratch.
\end{abstract}
\vspace{2em}
\setcounter{tocdepth}{1}
\tableofcontents
\vspace{2em}
Avec les nouveaux programmes 2016 du Cycle 4 (Classes de 5\ieme\ à 3\ieme\ de collège) est apparu l'enseignement de l'algorithmique et l'utilisation de Scratch. Développé par le laboratoire Média du MIT, il permet de mettre en \oe uvre des algorithmes sous forme {\em ludique}. Sans rentrer dans un débat \og pour ou contre\fg, son emploi doit donc être enseigné aux élèves aux travers de différentes activités : questions {\em flash}\footnote{Sans aucun lien avec le langage informatique. Il s'agit de questions rapides posées en début de séance.}, questions de compréhension, modification, correction d'algorithmes\ldots\ Il fallait donc trouver une solution me permettant de proposer des algorithmes Scratch dans mes devoirs.\par La première solution envisagée a été, bien évidemment, la capture d'écran. Simple, facile, rapide\ldots\ ses avantages sont nombreux. Cependant, la qualité d'impression est parfois \og moyenne\fg\ldots
\\Soucieux de proposer quelque chose de plus {\em cohérent} avec le \og monde\fg\ \LaTeX, je me suis lancé dans la création de {\sffamily mp-scratch} avec pour objectif principal de proposer une syntaxe et une présentation très proche de celles utilisées par Scratch.
\begin{figure}[h]
  \centering
  \includegraphics[scale=0.85]{Scratch1.png}\kern0.05\linewidth\includegraphics{Algo1.1}
  \caption{Algorithme de création d'un carré - Versions Scratch et \MP\protect\footnotemark}
  \label{fig:1}
\end{figure}
\footnotetext{Ce premier algorithme me permet de remercier Maximum Chupin et son package {\sffamily bclogo} : le drapeau vert a été créé à partir des sources de son package et notamment la construction, en \MP, de ses drapeaux.}
\section{Installation}
Le package {\sffamily mp-scratch} est indépendant d'autres packages personnels. On trouvera l'archive à l'adresse
\begin{center}
  \url{melusine.eu.org/}
\end{center}
et l'ensemble des fichiers sera à placer correctement dans une arborescence \TeX\footnote{Arborescence locale de préférence, par exemple dans {\sffamily /home/christophe/texmf/metapost/} sous linux.}
\section{Utilisation}
\begin{minipage}{0.4\linewidth}
  \includegraphics{Algo1.1}
\end{minipage}
\hfill
\begin{minipage}{0.5\linewidth}
\small
\begin{lstlisting}[firstnumber=1,frame=tb]
input mp-scratch;

beginfig(1);
  draw Drapeau;
  draw Repeter1(4);
  draw Avancer(50);
  draw Tournerd(90);
  draw FinBlocRepeter1(10);
endfig;
end
  \end{lstlisting}
\end{minipage}
\par\vspace{1em}\par Reprenons l'exemple de l'algorithme du carré pour faire les premières constatations suivantes :
\begin{Enumerate}
  \item la syntaxe est très proche du vocabulaire utilisé par Scratch;
  \item les couleurs\footnote{Peut-être, sont-elles un peu ternes. Cela reste, bien évidemment, paramétrable.} sont proches de celles utilisées par Scratch;
  \item le bloc {\sffamily Répéter} est un peu particulier car il nécessite l'ajout {\em manuel} d'un nombre (ou chiffre)\footnote{{\sffamily Repeter2}, {\sffamily Repeter5}\ldots} qui permettra  à \MP\ de faire la liaison correcte lors de la présence de multiples blocs {\sffamily Répéter} comme le montre l'exemple ci-dessous.
\par\vspace{1em}\par\begin{minipage}{0.4\linewidth}
  \includegraphics{Algo2.1}
\end{minipage}
\hfill
\begin{minipage}{0.5\linewidth}
\small
\begin{lstlisting}[firstnumber=1,frame=tb]
  input mp-scratch;

beginfig(1);
  draw Drapeau;
  draw Repeter2(10);
  draw Repeter1(4);
  draw Avancer(50);
  draw Tournerd(90);
  draw FinBlocRepeter1(10);
  draw Avancer(60);
  draw FinBlocRepeter2(10);
endfig;
end
  \end{lstlisting}
\end{minipage}
\item Très peu de nouvelles commandes à apprendre\ldots
\end{Enumerate}
\subsection{Commandes Scratch}
\begin{description}
  \item[Groupe {\sffamily Mouvement}]\hfil\newline
    \begin{itemize}
    \item[\textbullet]\lstinline!draw Avancer(10);!
      \par\hfill\includegraphics{CommandeMouvement.1}
    \item[\textbullet]\lstinline!draw Tournerd(90);!
      \par\hfill\includegraphics{CommandeMouvement.2}
    \item[\textbullet]\lstinline!draw Tournerg(90)!
      \par\hfill\includegraphics{CommandeMouvement.3}
    \item[\textbullet]\lstinline!draw Orienter(90);!
      \par\hfill\includegraphics{CommandeMouvement.4}
    \item[\textbullet]\lstinline!draw Orienterdirection("pointeur de souris");!
      \par\hfill\includegraphics{CommandeMouvement.5}
    \item[\textbullet]\lstinline!draw Aller(50,100);!
      \par\hfill\includegraphics{CommandeMouvement.6}
    \item[\textbullet]\lstinline!draw Allera("pointeur de souris");!
      \par\hfill\includegraphics{CommandeMouvement.7}
    \item[\textbullet]\lstinline!draw Glisser(2,50,100);!
      \par\hfill\includegraphics{CommandeMouvement.8}
    \item[\textbullet]\lstinline!draw Ajouter(10,"x");!
      \par\hfill\includegraphics{CommandeMouvement.9}
    \item[\textbullet]\lstinline!draw Mettre(10,"x");!
      \par\hfill\includegraphics{CommandeMouvement.10}
    \item[\textbullet]\lstinline!draw Ajouter(50,"y");!
      \par\hfill\includegraphics{CommandeMouvement.11}
    \item[\textbullet]\lstinline!draw Mettre(10,"y");!
      \par\hfill\includegraphics{CommandeMouvement.12}
    \item[\textbullet]\lstinline!draw Rebondir;!
      \par\hfill\includegraphics{CommandeMouvement.13}
    \item[\textbullet]\lstinline!draw FixerSensRotation("position \`a gauche ou \`a droite"';!
      \par\hfill\includegraphics{CommandeMouvement.14}
    \end{itemize}
    \par\vspace*{2em}\par Les \og opérateurs\footnote{Je nomme \og opérateurs\fg\ les variables ou commandes Scratch pouvant s'inclure dans les blocs-commande. Je me demande si je suis assez clair\ldots}\fg\ 
\[\includegraphics{CommandeMouvement.18}\kern0.1\linewidth\includegraphics{CommandeMouvement.19}\kern0.1\linewidth\includegraphics{CommandeMouvement.20}\]
 s'obtiennent avec la commande \LaTeX\footnote{Oui, une commande \LaTeX. Cela signifie donc que cette commande sera passée comme un élément de type {\sffamily string} de \MP.} \lstinline!\opMouv{}! comme le montre les exemples ci-dessous :
    \begin{itemize}
    \item[\textbullet]\lstinline!draw Avancer("\opOp{$\opMouv{abscisse x}\bm{+}\opSimple{10}$}");!
      \par\hfill\includegraphics{CommandeMouvement.15}
    \item[\textbullet]\lstinline!draw Mettre("\opMouv{abscisse x}","y");!
      \par\hfill\includegraphics{CommandeMouvement.16}
    \item[\textbullet]\lstinline!draw Ajouter("\opMouv{direction}","y");!
      \par\hfill\includegraphics{CommandeMouvement.17}
    \end{itemize}
  \item[Groupe {\sffamily Apparence}]\hfil\newline
    \begin{itemize}
    \item[\textbullet]\lstinline!draw DireT("Hello",2);!
      \par\hfill\includegraphics{CommandeApparence.1}
    \item[\textbullet]\lstinline!draw Dire("Hello");!
      \par\hfill\includegraphics{CommandeApparence.2}
    \item[\textbullet]\lstinline!draw PenserT("Hmm...",2);!
      \par\hfill\includegraphics{CommandeApparence.3}
    \item[\textbullet]\lstinline!draw Penser("Hmm...");!
      \par\hfill\includegraphics{CommandeApparence.4}
    \item[\textbullet]\lstinline!draw Montrer;!
      \par\hfill\includegraphics{CommandeApparence.5}
    \item[\textbullet]\lstinline!draw Cacher;!
      \par\hfill\includegraphics{CommandeApparence.6}
    \item[\textbullet]\lstinline!draw Basculer("\opAp{costume2}");!
      \par\hfill\includegraphics{CommandeApparence.7}
    \item[\textbullet]\lstinline!draw CostumeSuivant;!
      \par\hfill\includegraphics{CommandeApparence.8}
    \item[\textbullet]\lstinline!draw BasculerAR("\opAp{arriere-plan2}");!
      \par\hfill\includegraphics{CommandeApparence.9}
    \item[\textbullet]\lstinline!draw AjouterEffet("\opAp{couleur}",10);!
      \par\hfill\includegraphics{CommandeApparence.10}
    \item[\textbullet]\lstinline!draw MettreEffet("\opAp{couleur}",10);!
      \par\hfill\includegraphics{CommandeApparence.11}
    \item[\textbullet]\lstinline!draw AnnulerEffet;!
      \par\hfill\includegraphics{CommandeApparence.12}
    \item[\textbullet]\lstinline!draw AjouterTaille(10);!
      \par\hfill\includegraphics{CommandeApparence.13}
    \item[\textbullet]\lstinline!draw MettreA("\opOp{$\opSimple{10}\bm{+}\opSimple{5}$}");!
      \par\hfill\includegraphics{CommandeApparence.14}
    \item[\textbullet]\lstinline!draw AllerPPlan;!
      \par\hfill\includegraphics{CommandeApparence.15}
    \item[\textbullet]\lstinline!draw DeplacerAP("\opOp{$\opMouv{abscisse x}\bm{+}\opSimple{10}$}");!
      \par\hfill\includegraphics{CommandeApparence.16}
    \end{itemize}
    \par\vspace*{2em}\par Les \og opérateurs\fg\ 
\[\includegraphics{CommandeApparence.17}\kern0.1\linewidth\includegraphics{CommandeApparence.18}\kern0.1\linewidth\includegraphics{CommandeApparence.19}\]
s'obtiennent avec la commande \LaTeX\ \lstinline!\opAp{}!.
  \item[Groupe {\sffamily Son}]\hfil\newline
    \begin{itemize}
    \item[\textbullet]\lstinline!draw Jouer("miaou");!
      \par\hfill\includegraphics{CommandeSon.1}
    \item[\textbullet]\lstinline!draw JouerT("miaou");!
      \par\hfill\includegraphics{CommandeSon.2}
    \item[\textbullet]\lstinline!draw ArreterSon;!
      \par\hfill\includegraphics{CommandeSon.3}
    \item[\textbullet]\lstinline!draw Tambour(2,0.25);!
      \par\hfill\includegraphics{CommandeSon.4}
    \item[\textbullet]\lstinline!draw Pause(0.25);!
      \par\hfill\includegraphics{CommandeSon.5}
    \item[\textbullet]\lstinline!draw JouerNote(50,0.25);!
      \par\hfill\includegraphics{CommandeSon.6}
    \item[\textbullet]\lstinline!draw ChoisirInstrument(17);!
      \par\hfill\includegraphics{CommandeSon.7}
    \item[\textbullet]\lstinline!draw AjouterVol(-10);!
      \par\hfill\includegraphics{CommandeSon.8}
    \item[\textbullet]\lstinline!draw MettreVol(15);!
      \par\hfill\includegraphics{CommandeSon.9}
    \item[\textbullet]\lstinline!draw AjouterTempo(20);!
      \par\hfill\includegraphics{CommandeSon.10}
    \item[\textbullet]\lstinline!draw MettreTempo(15);!
      \par\hfill\includegraphics{CommandeSon.11}
    \end{itemize}
Les \og opérateurs\fg\ s'obtiennent par la commande \LaTeX\ \lstinline!\opSon{}!.
\[\includegraphics{CommandeSon.12}\kern0.1\linewidth\includegraphics{CommandeSon.13}\]
  \item[Groupe {\sffamily Stylo}]\hfil\newline
    \begin{itemize}
    \item[\textbullet]\lstinline!draw Effacer!
      \par\hfill\includegraphics{CommandeStylo.1}
    \item[\textbullet]\lstinline!draw Estampiller!
      \par\hfill\includegraphics{CommandeStylo.2}
    \item[\textbullet]\lstinline!draw PoserStylo!
      \par\hfill\includegraphics{CommandeStylo.3}
    \item[\textbullet]\lstinline!draw ReleverStylo!
      \par\hfill\includegraphics{CommandeStylo.4}
    \item[\textbullet]\lstinline!draw MettreCouleur("Magenta",1,0,1);!\footnote{La couleur est définie par son tripler {\sffamily rgb}. Le nom de la couleur est libre mais ne doit pas rentrer en conflit avec les couleurs déjà définies dans le sous-package {\sffamily LATEXScratch.mp}.}
      \par\hfill\includegraphics{CommandeStylo.5}
    \item[\textbullet]\lstinline!draw AjouterCS("\opOp{$\opSimple{15}\bm{+}\opSimple{10}$}");!
      \par\hfill\includegraphics{CommandeStylo.6}
    \item[\textbullet]\lstinline!draw MettreCS(25);!
      \par\hfill\includegraphics{CommandeStylo.7}
    \item[\textbullet]\lstinline!draw AjouterIS("\opOp{$\opSimple{25}\bm{-}\opSimple{10}$}");!
      \par\hfill\includegraphics{CommandeStylo.8}
    \item[\textbullet]\lstinline!draw MettreIS(15);!
      \par\hfill\includegraphics{CommandeStylo.9}
    \item[\textbullet]\lstinline!draw AjouterTS(12);!
      \par\hfill\includegraphics{CommandeStylo.10}
    \item[\textbullet]\lstinline!draw MettreTS("\opOp{$\opSimple{15}\bm{\times}\opSimple{10}$}");!
      \par\hfill\includegraphics{CommandeStylo.11}
    \end{itemize}
\item[Groupe {\sffamily Données}]\hfil\newline
  \begin{itemize}
  \item[\textbullet]\lstinline!draw MettreVar("pi",0);!
    \par\hfill\includegraphics{CommandeVariable.1}
  \item[\textbullet]\lstinline!draw AjouterVar("pi","\opOp{$\opSimple{15}\bm{+}\opSimple{10}$}");!
    \par\hfill\includegraphics{CommandeVariable.2}
  \item[\textbullet]\lstinline!draw MontrerVar("pi");!
    \par\hfill\includegraphics{CommandeVariable.3}
  \item[\textbullet]\lstinline!draw CacherVar("pi");!
    \par\hfill\includegraphics{CommandeVariable.4}
  \item[\textbullet]\lstinline!draw AjouterList("\opSimple{\LaTeX}","Listepi");!
    \par\hfill\includegraphics{CommandeVariable.5}
  \item[\textbullet]\lstinline!draw SupprimerList("\opSimple{\LaTeX}","Listepi");!
    \par\hfill\includegraphics{CommandeVariable.6}
  \item[\textbullet]\lstinline!draw InsererList("\opSimple{\MP}",1,"Listepi");!
    \par\hfill\includegraphics{CommandeVariable.7}
  \item[\textbullet]\lstinline!draw RemplacerList(3,"Listepi","\opOp{$\opSimple{4}\bm{+}\opSimple{5}$}");!
    \par\hfill\includegraphics{CommandeVariable.8}
  \item[\textbullet]\lstinline!draw MontrerList("Listepi");!
    \par\hfill\includegraphics{CommandeVariable.9}
  \item[\textbullet]\lstinline!draw CacherList("Listepi");!
    \par\hfill\includegraphics{CommandeVariable.10}
  \end{itemize}
  \par\vspace*{2em}\par Les \og opérateurs\fg
  \begin{center}
    \begin{minipage}{0.8\linewidth}
      \includegraphics{CommandeVariable.11}\hfill\includegraphics{CommandeVariable.12}\hfill \includegraphics{CommandeVariable.13}\par
    \includegraphics{CommandeVariable.14}\hfill \includegraphics{CommandeVariable.15}
    \end{minipage}
\end{center}
s'obtiennent par les commandes \LaTeX\ \lstinline!\opVar{}!, \lstinline!\opList{}! et \lstinline!\opSousList!.
\item[Groupe {\sffamily \'Evènement}]\hfil\newline
  \begin{itemize}
  \item[\textbullet]\lstinline!draw Drapeau!
    \par\hfill\includegraphics{CommandeEvenements.1}
  \item[\textbullet]\lstinline!draw Presse("espace");!
    \par\hfill\includegraphics{CommandeEvenements.2}
  \item[\textbullet]\lstinline!draw LutinPresse;!
    \par\hfill\includegraphics{CommandeEvenements.3}
  \item[\textbullet]\lstinline!draw BasculeAR("arriere-plan1");!
    \par\hfill\includegraphics{CommandeEvenements.4}
  \item[\textbullet]\lstinline!draw VolumeSup("Volume sonore",10);!
    \par\hfill\includegraphics{CommandeEvenements.5}
  \item[\textbullet]\lstinline!draw RecevoirMessage("message1");!
    \par\hfill\includegraphics{CommandeEvenements.6}
  \item[\textbullet]\lstinline!draw EnvoyerMessage("message1");!
    \par\hfill\includegraphics{CommandeEvenements.7}
  \item[\textbullet]\lstinline!draw EnvoyerMessageA("message1");!
    \par\hfill\includegraphics{CommandeEvenements.8}
  \end{itemize}
\item[Groupe {\sffamily Contrôle}]\hfil\newline
  \begin{itemize}
  \item[\textbullet]\lstinline!draw Attendre("\opOp{$\opSimple{10}\bm{+}\opSimple{40}$}");!
    \par\hfill\includegraphics{CommandeControle.1}
  \item[\textbullet]
    \begin{lstlisting}[frame=tb]
draw Repeter1("\opOp{$\opSimple{10}\bm{+}\opSimple{40}$}");
draw LigneVide(10);
draw FinBlocRepeter1(10);
    \end{lstlisting}
    \par\hfill\includegraphics{CommandeControle.2}
  \item[\textbullet]
    \begin{lstlisting}[frame=tb]
draw RepeterI1;
draw LigneVide(10);
draw FinBlocRepeter1(10);
    \end{lstlisting}
    \par\hfill\includegraphics{CommandeControle.3}
  \item[\textbullet]
    \begin{lstlisting}[frame=tb]
draw Si1("\opOp{$\opSimple{10}\bm{+}\opMouv{Abscisse x}%
\bm{=}\opSimple{20}$}");
draw LigneVide(10);
draw FinBlocSi1;
    \end{lstlisting}
    \par\hfill\includegraphics{CommandeControle.4}
  \item[\textbullet]
    \begin{lstlisting}[frame=tb]
draw Si1("\opOp{$\opSimple{10}\bm{+}\opMouv{Abscisse x}%
\bm{=}\opSimple{20}$}");
draw LigneVide(10);
draw Sinon1;
draw LigneVide(10);
draw FinBlocSi1;
    \end{lstlisting}
    \par\hfill\includegraphics{CommandeControle.5}
  \item[\textbullet]{\footnotesize\lstinline!draw AttendreJ("\opOp{$\opSimple{10}\bm{+}\opMouv{Abscisse x}\bm{=}\opSimple{20}$}");!}
    \par\hfill\includegraphics{CommandeControle.6}
  \item[\textbullet]
    \begin{lstlisting}[frame=tb]
draw RepeterJ1("\opOp{$\opSimple{10}\bm{+}\opMouv{Abscisse x}%
 \bm{=}\opSimple{20}$}");
draw LigneVide(10);
draw FinBlocRepeter1(10);
    \end{lstlisting}
    \par\hfill\includegraphics{CommandeControle.7}
  \item[\textbullet]\lstinline!draw Stop("ce script");!
    \par\hfill\includegraphics{CommandeControle.8}
  \item[\textbullet]\lstinline!draw CommencerClone;!
    \par\hfill\includegraphics{CommandeControle.9}
  \item[\textbullet]\lstinline!draw CreerClone("Lutin1");!
    \par\hfill\includegraphics{CommandeControle.10}
  \item[\textbullet]\lstinline!draw SupprimerClone;!
    \par\hfill\includegraphics{CommandeControle.11}
  \end{itemize}
\item[Groupe {\sffamily Capteurs}]\hfil\newline
  \begin{itemize}
  \item[\textbullet]\begin{filecontents*}{capteur1.txt}
draw Demander("Quel est votre prénom ?");
\end{filecontents*}
\lstinputlisting[inputencoding=utf8/latin1]{capteur1.txt}
    \par\hfill\includegraphics{CommandeCapteurs.1}
  \item[\textbullet]\lstinline!draw ActiverVideo("active");!
    \par\hfill\includegraphics{CommandeCapteurs.2}
  \item[\textbullet]\lstinline!draw TransparenceVideo("\opOp{$\opSimple{17}\bm{+}\opSimple{25}$}");!
    \par\hfill\includegraphics{CommandeCapteurs.3}
  \item[\textbullet]\lstinline!draw ReinitChrono;!
    \par\hfill\includegraphics{CommandeCapteurs.4}    
  \end{itemize}
\par\vspace*{2em}\par Les \og opérateurs\fg\ s'obtiennent par les commandes \LaTeX\ \lstinline!\opCap{}! et \lstinline!\opCapCap!.
  \begin{center}
    \begin{minipage}{0.8\linewidth}
      \includegraphics{CommandeCapteurs.5}\par
      \includegraphics{CommandeCapteurs.6}\hfill \includegraphics{CommandeCapteurs.7}\par
      \includegraphics{CommandeCapteurs.19}\par
      \includegraphics{CommandeCapteurs.20}\hfill\includegraphics{CommandeCapteurs.8}
\par\includegraphics{CommandeCapteurs.9}\hfill \includegraphics{CommandeCapteurs.10}\hfill\includegraphics{CommandeCapteurs.11}
\par\includegraphics{CommandeCapteurs.12}\hfill \includegraphics{CommandeCapteurs.13}\par
\includegraphics{CommandeCapteurs.14}\hfill\includegraphics{CommandeCapteurs.15}
\par\includegraphics{CommandeCapteurs.16}\hfill
      \includegraphics{CommandeCapteurs.17}\hfill\includegraphics{CommandeCapteurs.18}
    \end{minipage}
\end{center}
Néanmoins, il faut parfois un codage conséquent. Par exemple, voici un capteur et son code.
\par\begin{minipage}{0.2\linewidth}
  \includegraphics{CommandeCapteurs.7}
\end{minipage}
\hfill
\begin{minipage}{0.75\linewidth}
\small
\begin{lstlisting}[frame=tb]
  \opCap{couleur %
    \definecolor{Magenta}{rgb}{1,0,1}%
    \colorbox{Magenta}{\textcolor{white}{\phantom{t}}}%
    touche%
    \definecolor{LGray}{gray}{0.85}%
    \colorbox{LGray}{\textcolor{white}{\phantom{t}}} ?%
  }
\end{lstlisting}
\end{minipage}
\\Un peu barbare, non ? Mais, cela ne nécessitera qu'un simple copier-coller pour les autres utilisations\ldots%}
\item[Groupe {\sffamily Opérateurs}]\hfil\newline
Les éléments de ce groupe s'obtiennent par les commandes \LaTeX\ \lstinline!\opOp{}! et \lstinline!\opSousOp{}!.
  \begin{center}
    \begin{minipage}{0.8\linewidth}
      \includegraphics{CommandeOperateurs.1}\hfill\includegraphics{CommandeOperateurs.2}\hfill\includegraphics{CommandeOperateurs.3}\hfill
      \includegraphics{CommandeOperateurs.4}\par
      \includegraphics{CommandeOperateurs.5}\par
      \includegraphics{CommandeOperateurs.6}\hfill \includegraphics{CommandeOperateurs.7}\hfill\includegraphics{CommandeOperateurs.8}
\par\includegraphics{CommandeOperateurs.9}\hfill \includegraphics{CommandeOperateurs.10}\hfill\includegraphics{CommandeOperateurs.11}
\par\includegraphics{CommandeOperateurs.12}\hfill \includegraphics{CommandeOperateurs.13}\par
\includegraphics{CommandeOperateurs.14}
\par\includegraphics{CommandeOperateurs.15}\hfill\includegraphics{CommandeOperateurs.16}\hfill\includegraphics{CommandeOperateurs.17}
    \end{minipage}
\end{center}
\item[Groupe {\sffamily Ajouter blocs}]\hfil\newline
  \begin{itemize}
  \item[\textbullet]\lstinline!draw NouveauBloc("Pentagone");!
    \par\hfill\includegraphics{CommandeBloc.1}
  \item[\textbullet]\lstinline!draw NouveauBloc("Pentagone \opBloc{cote}");!
    \par\hfill\includegraphics{CommandeBloc.3}
  \item[\textbullet]\lstinline!draw Bloc("Pentagone");!
    \par\hfill\includegraphics{CommandeBloc.2}
\end{itemize}
  \end{description}
Terminons cette liste de commandes par un algorithme associé à la suite de Syracuse :)
\[\includegraphics[scale=0.8]{Syracuse.1}\]
\begin{filecontents*}{Syracuse.txt}
  beginfig(1);
  draw Drapeau;
  draw SupprimerList("\opSimple{tout}","Suite");
  draw Demander("\opSimple{Quel est le nombre choisi ?}");
  draw AjouterList("\opCap{réponse}","Suite");
  draw MettreVar("pas",1);
  draw RepeterI1;
  draw Si2("\opOp{\opList{élément \opVar{pas} de \opSousList{Suite}} modulo \opSimple{2}%
\,$\bm{=}$\,\opSimple{0}}");
  draw MettreVar("résultat","\opOp{\opList{élément \opVar{pas} de \opSousList{Suite}}%
\,$\bm{/}$\,\opSimple{2}}");
  draw Sinon2;
  draw MettreVar("résultat","\opOp{\opSimple{3}\,$\bm{\times}$\,\opList{élément \opVar{pas}%
 de \opSousList{Suite}}\,$\bm{+}$\,\opSimple{1}}");
  draw FinBlocSi2;
  draw Si3("\opList{\opSousList{Suite} contient \opVar{résultat} ?}");
  draw Stop("tout");
  draw Sinon3;
  draw AjouterList("\opVar{résultat}","Suite");
  draw AjouterVar("pas",1);
  draw FinBlocSi3;
  draw FinBlocRepeter1(10);
endfig;

end
\end{filecontents*}
{\footnotesize
\lstinputlisting[inputencoding=utf8/latin1,frame=tb]{Syracuse.txt}
}
\newpage
\section{Quelques exemples}
\subsection{Sujet de Brevet des collèges}
\vspace{-2em}
%  \begin{figure}[h]
%  \centering
%  \includegraphics{Scratch2-2}
%\caption{Figure du Sujet 0 de mathématiques du Brevet des Collèges}
%\label{fig:4}
%\end{figure}
\begin{figure}[h]
  \centering
  \includegraphics{Scratch2-2}\par
  \includegraphics[scale=0.85]{Scratch2-3}\kern0.05\linewidth\includegraphics{Algo3.1}
  \caption{Figure du Sujet 0 - versions Scratch et \MP}
  \label{fig:3}
\end{figure}
%\begin{minipage}{0.5\linewidth}
{\small
\begin{lstlisting}[firstnumber=1,frame=tb]
beginfig(1);
  draw Drapeau;
  draw Effacer;
  draw MettreTS(1);
  draw Repeter2(6);
  draw PoserStylo;
  draw Repeter1(4);
  draw Avancer(50);
  draw Tournerd(90);
  draw FinBlocRepeter1(10);
  draw ReleverStylo;
  draw AjouterTS(1);
  draw Avancer(60);
  draw FinBlocRepeter2(10);
endfig;
  \end{lstlisting}
}
\newpage
  \subsection{\OE uvre d'art}
\begin{figure}[h]
  \centering
  \includegraphics[width=0.7\linewidth]{Morellet}
  \label{fig:5}
  \caption{François Morellet - Oeuvre Pi piquant, 1=1°, 38 décimales}
\end{figure}
\[\includegraphics[width=0.75\linewidth]{Ex-Morellet.1}\]
\begin{filecontents*}{Morellet.txt}
beginfig(1)%François Morellet - Oeuvre Pi piquant, 1=1°, 38 décimales
  draw Drapeau;
  draw Effacer;
  draw Aller(-50,0);
  draw Orienter(180);
  draw PoserStylo;
  draw Tournerg("\opList{élément \opSimple{1} de \opSousList{Pi}}");
  draw Avancer(150);
  draw MettreVar("varpi","\opSimple{2}");
  draw RepeterJ1("\opOp{\opVar{varpi}\,$\bm{>}$\,38}");
  draw Si2("$\opOp{\opVar{varpi}\mbox{ modulo }\opSimple{2}\,=\,\opSimple{0}}$");
  draw Tournerg("$\opOp{\opSimple{180}}\bm{-}\opList{élément \opVar{varpi} de \opSousList{pi}}$");
  draw Sinon2;
  draw Tournerd("$\opOp{\opSimple{180}}-\opList{élément \opVar{varpi} de \opSousList{pi}}$");
  draw FinBlocSi2;
  draw Avancer(150);
  draw AjouterVar("varpi","\opSimple{1}");
  draw FinBlocRepeter1(10);
  draw ReleverStylo;
endfig;
\end{filecontents*}
{\footnotesize
\lstinputlisting[inputencoding=utf8/latin1,frame=tb]{Morellet.txt}
}
\newpage
\subsection{Une \og spirale\fg}
    \begin{figure}[h!]
      \centering
\begin{minipage}{0.4\linewidth}
      \[\includegraphics[scale=0.8]{ex-tice74.1}\]
{\tiny Source : \url{http://www.ac-grenoble.fr/tice74/spip.php?article1219}}
\end{minipage}
\hfill
\begin{minipage}{0.55\linewidth}
  \begin{lstlisting}[frame=tb]
beginfig(1);
  draw Drapeau;
  draw ReleverStylo;
  draw Aller(0,0);
  draw Orienter(90);
  draw PoserStylo;
  draw MettreVar("i",1);
  draw RepeterJ1("\opOp{$\opVar{i}\bm{=}%
    \opSimple{200}$}");
  draw Avancer("\opVar{i}");
  draw AjouterVar("i",1);
  draw Tournerd(121);
  draw FinBlocRepeter1(10);
endfig;
  \end{lstlisting}
\end{minipage}
      \caption{Figure géométrique - Code Scratch}
      \label{fig:10}
    \end{figure}
\[\includegraphics[scale=1]{ex-tice74-scratch.1}\]
\newpage
\subsection{Triangle de Sierpinski}
\begin{figure}[h]
  \centering
  \includegraphics[scale=0.5]{Ex-Serpinski.1}\par
  \includegraphics{Ex-Serpinski-scratch.1}
  \caption{Triangle de Sierpinski - Code Scratch et \MP}
  \label{fig:11}
\end{figure}
%\begin{lstlisting}[frame=tb]
\begin{filecontents*}{Sierpinski.txt}
beginfig(1);%https://sites.google.com/site/stjomaths/scratch
  draw Drapeau;
  draw Aller(-200,-150);
  draw Orienter(0);
  draw Effacer;
  draw PoserStylo;
  draw Demander("\opSimple{rang ?}");
  draw MettreVar("rang","\opCap{réponse}");
  draw Demander("\opSimple{dimension du motif ?}");
  draw MettreVar("rang","\opCap{réponse}");
  draw Bloc("Sierpinski \opBloc{rang} \opBloc{triangles}");
  _coinprec:=(10cm,0);
  draw NouveauBloc("Sierpinski \opBloc{rang} \opBloc{triangles}");
  draw Si1("\opOp{non $\opBloc{rang}\bm{=}0$}");
  draw Repeter2(3);
  draw Bloc("Sierpinski \opOp{$\opBloc{rang}\bm{-}\opSimple{1}$}%
 \opOp{$\opBloc{triangles}\,\bm{/}\,\opSimple{2}$}");
  draw Avancer("\opBloc{triangles}");
  draw Tournerd(120);
  draw FinBlocRepeter2(10);
  draw FinBlocSi1;
endfig;
\end{filecontents*}
%\end{lstlisting}
{\footnotesize
\lstinputlisting[inputencoding=utf8/latin1,frame=tb]{Sierpinski.txt}
}
\newpage
\section{Historique}
\begin{description}
  \item[21/01/2017] {\bfseries Version 0.5} - Publication sur \url{www.melusine.eu.org/syracuse/}
  \item[19/01/2017] {\bfseries Version 0.32} - Ajout d'éléments de présentation ($\blacktriangledown$).
  \item[18/01/2017] {\bfseries Version 0.31} - Ajout du groupe {\sffamily Son}.
  \item[15/01/2017] {\bfseries Version 0.3} - Modification du code. Conception de la documentation.
  \item[08/01/2017] {\bfseries Version 0.2} - Ajout des commandes des groupes {\sffamily Données} et {\sffamily Capteurs}.
  \item[06/01/2017] {\bfseries Version 0.15} - Ajout des commandes du groupe {\sffamily Ajouter blocs}.
  \item[05/01/2017] {\bfseries Version 0.1} - Sont disponibles les commandes des groupes {\sffamily Mouvement}, {\sffamily Apparence}, {\sffamily Stylo}, {\sffamily Evènements}, {\sffamily Contrôle}.
\end{description}
\end{document}
