\index{Scratch}\index{Algorithmique}\index[cle]{Scratch@\lstinline+Scratch+}
\begin{tcolorbox}[tikzRemarque]
  Il conviendra d'ajouter, dans le préambule :
  \begin{lstlisting}[escapechar=!,aboveskip=1em,belowskip=0.5em,gobble=6]
    % Pour la gestion des fontes.
    \usepackage{unicode-math}
    % Par exemple, une fonte sans serif pour les briques Scratch.
    \newfontfamily\myfontScratch[]{FreeSans}
  \end{lstlisting}
\end{tcolorbox}
L'environnement \lstinline!Scratch!\footnote{Attention à la majuscule pour ne pas confondre avec l'environnement scratch du package {\color{DodgerBlue}\ttfamily scratch3}.} permet d'afficher une \og reproduction\fg{} d'un algorithme Scratch\footnote{Uniquement pour la version 3 de Scratch.}. Il a la forme suivante :
\begin{lstlisting}[escapechar=!,aboveskip=1em,belowskip=0.5em]
  \begin{Scratch}[!\sffamily\textlangle clés{\sffamily\textrangle}!]
  
  \end{Scratch}
\end{lstlisting}
où {\sffamily\textlangle}\lstinline!clés!{\sffamily\textrangle} constituent un ensemble
d'options pour paramétrer l'environnement.
\begin{Codes}[listing side text]{0.5}{}
\begin{Scratch}
  Place Drapeau;
  Place Avancer("50");
  Place Repeter("10");
  Place Tournerg("36");
  Place Avancer("50");
  Place FinBlocRepeter;
\end{Scratch}
\end{Codes}
\begin{tcolorbox}[tikzRemarque]
  C'est un environnement qui fait appel à \MP{} pour la création des images. Il ne faut pas oublier le \lstinline!;! à la fin de chaque ligne d'instruction.
\end{tcolorbox}
\begin{tcolorbox}[tikzcle]
  \index[cle]{Scratch@\lstinline+Scratch+!Echelle|mygobble}
  \index[cle]{Scratch@\lstinline+Scratch+!Impression|mygobble}
  \index[cle]{Scratch@\lstinline+Scratch+!Numerotation|mygobble}
  \index[cle]{Scratch@\lstinline+Scratch+!Largeur|mygobble}
\begin{Key}{Echelle}{1}
  modifie l'échelle générale de la figure obtenue.
\end{Key}
\begin{Key}{Impression}{false}
  modifie les couleurs en gris pour une meilleure qualité de lecture à l'impression.
\end{Key}
\begin{Key}{Numerotation}{false}
  numérote les différentes briques.
\end{Key}
\begin{Key}{Largeur}{\{\}}
  permet d'imposer une largeur fixée au script.
\end{Key}
\end{tcolorbox}
\clearpage
\begin{Codes}[listing side text]{0.42}{\small}
\begin{Scratch}
  Place Drapeau;
  Place ReleverStylo;
  Place Aller("0","0");
  Place Orienter("90");
  Place PoserStylo;
  Place MettreVar("i","1");
  Place RepeterJ(TestOpEgal(OvalVar("i"),"200"));
  Place Avancer(OvalVar("i"));
  Place AjouterVar("1","i");
  Place Tournerd("121");
  %Place FinBlocRepeter;
\end{Scratch}
\end{Codes}
\begin{Codes}[listing side text,listing options={frame=,classoffset=1,deletekeywords={Bloc},classoffset=0}]{0.55}{}
\begin{Scratch}[Echelle=0.7]
  Place NouveauBloc("Point");
  Place PoserStylo;
  Place ReleverStylo;
\end{Scratch}
\begin{Scratch}[Echelle=0.7]
  Place QPresse("espace");
  Place Effacer;
  Place MettreCouleur(1,0,0);
  Place MettreTS("10");
  Place Repeter("24");
  Place Bloc("Point");
  Place Avancer("20");
  Place Tournerd("15");
  Place FinBlocRepeter;
\end{Scratch}
\end{Codes}
\begin{Codes}[listing side text]{0.5}{}
\begin{Scratch}[Impression]
  Place Drapeau;
  Place Avancer("50");
  Place Repeter("10");
  Place Tournerg("36");
  Place Avancer("50");
  Place FinBlocRepeter;
\end{Scratch}
\end{Codes}

\begin{Codes}[listing side text]{0.45}{}
\begin{Scratch}[Numerotation,Echelle=0.8]
  Place Drapeau;
  Place PoserStylo;
  Place Avancer("50");
  Place Repeter("10");
  Place Tournerg("36");
  Place Avancer("50");
  Place FinBlocRepeter;
  Place ReleverStylo;
\end{Scratch}
\end{Codes}
\begin{Codes}[listing side text]{0.45}{\small}
\begin{Scratch}[Numerotation]
  % Par défaut, la fin des blocs Repeter
  % n'est pas numérotée.
  NumeroteFinBloc:=true;
  % On change les numéros des lignes
  Nblignes:=2;
  Placer Avancer("200");
  Nblignes:=5;
  Placer Repeter("4");
  Nblignes:=1;
  Placer Avancer("100");
  Nblignes:=4;
  Placer Tournerd("90");
  Nblignes:=6;
  Placer FinBlocRepeter;
\end{Scratch}
\end{Codes}
On trouvera, dans les pages suivantes, la définition des différents blocs accessibles.
\clearpage
\begin{center}
  \begin{Scratch}[Echelle=1.5]
    Place BlocUser(BleuMouvTrois)("Catégorie Mouvement");
  \end{Scratch}
\end{center}
\begin{multicols}{2}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place Avancer("50");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place Tournerg("50");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place Tournerd("50");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place Allera("position aléatoire");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place Aller("50","100");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place Glisser("1","50","50");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place Glissera("1","position aléatoire");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place Orienter("90");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place OrienterVers("pointeur de souris");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place Ajouter("10","x");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place Mettre("y","10");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place Rebondir;
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place FixerSensRotation("gauche-droite");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place OvalMouv("abscisse x");
\end{Scratch}
\end{Codes}
\end{multicols}
Sur une idée de Jean-Yves {\sc Labouche}\footnote{\url{https://www.monclasseurdemaths.fr/profs/algorithmique-scratch/note-la-couleur/}}, une boussole est disponible pour mieux comprendre la brique \raisebox{-0.33\height}{\begin{Scratch}[Echelle=0.75]
  Place Orienter("90");
\end{Scratch}}.
%\clearpage
  \begin{multicols}{2}
    \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place Boussole("0");
\end{Scratch}
\end{Codes}

\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place Boussole("90");
\end{Scratch}
\end{Codes}

\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place Boussole("180");
\end{Scratch}
\end{Codes}

\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place Boussole("-90");
\end{Scratch}
\end{Codes}
\end{multicols}
\begin{center}
  \begin{Scratch}[Echelle=1.5]
    Place BlocUser(VioletAppTrois)("Catégorie Apparence");
  \end{Scratch}
\end{center}
\begin{multicols}{2}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place DireT("Bonjour !","2");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place Dire("Bonjour !");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place PenserT("Hmmm\dots","2");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place Penser("Hmmm\dots");
\end{Scratch}
\end{Codes}
\end{multicols}
\clearpage
\begin{multicols}{2}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place BasculerCostume("costume 2");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place CostumeSuivant;
\end{Scratch}
\end{Codes}
\end{multicols}
%\clearpage
\begin{multicols}{2}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place BasculerAR("arrière-plan 1");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place BasculerARA("arrière-plan 1");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place ARSuivant;
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place AjouterTaille("10");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place MettreTaille("100");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place AjouterEffet("10","couleur");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place MettreEffet("saturation","10");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place AnnulerEffets;
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place Montrer;
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place Cacher;
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place BasculerAR("arrière-plan 1");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place AllerPlan("avant");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place DeplacerPlan("1","arrière");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place OvalApp("taille");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place AppCostume("numéro");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place AppAP("numéro");
\end{Scratch}
\end{Codes}
\end{multicols}
\begin{center}
  \begin{Scratch}[Echelle=1.5]
    Place BlocUser(SonTrois)("Catégorie Son");
  \end{Scratch}
\end{center}
\begin{multicols}{2}
  \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place JouerT("Miaou");
\end{Scratch}
\end{Codes}
  \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place Jouer("Miaou");
\end{Scratch}
\end{Codes}
  \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place ArreterSon;
\end{Scratch}
\end{Codes}
  \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place AjouterVol("$-$10");
\end{Scratch}
\end{Codes}
  \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place MettreVol("100");
\end{Scratch}
\end{Codes}
  \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place AjouterEffetSon("10","hauteur");
\end{Scratch}
\end{Codes}
\end{multicols}
\begin{multicols}{2}
  \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place MettreEffetSon("hauteur","100");
\end{Scratch}
\end{Codes}
  \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place OvalSon("volume");
\end{Scratch}
\end{Codes}
\end{multicols}
\clearpage
\begin{center}
  \begin{Scratch}[Echelle=1.5]
    Place BlocUser(StyloTrois)("Catégorie Musique");
  \end{Scratch}
\end{center}
  \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place Tambour("(1) Caisse claire","0.25");
\end{Scratch}
\end{Codes}
\begin{multicols}{2}
  \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place Pause("0.25");
\end{Scratch}
  \end{Codes}
  \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place JouerNote("60","0.25");
\end{Scratch}
\end{Codes}
  \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place ChoisirInstrument("(1) Piano");
\end{Scratch}
\end{Codes}
  \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place MettreTempo("60");
\end{Scratch}
\end{Codes}
  \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place AjouterTempo("20");
\end{Scratch}
\end{Codes}
  \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place OvalMusique("tempo");
\end{Scratch}
\end{Codes}
\end{multicols}
\begin{center}
  \begin{Scratch}[Echelle=1.5]
    Place BlocUser(EvenementTrois)("Catégorie Évènements");
  \end{Scratch}
\end{center}
\begin{multicols}{2}
    \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place Drapeau;
\end{Scratch}
\end{Codes}
    \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place QPresse("espace");
\end{Scratch}
\end{Codes}
    \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place QLutinPresse;
\end{Scratch}
\end{Codes}
    \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place QScenePressee;
\end{Scratch}
\end{Codes}
    \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place QBasculeAR("arrière-plan 1");
\end{Scratch}
\end{Codes}
    \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place QVolumeSup("volume sonore","10");
\end{Scratch}
\end{Codes}
    \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place QRecevoirMessage("message 1");
\end{Scratch}
\end{Codes}
    \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place EnvoyerMessage("message 1");
\end{Scratch}
\end{Codes}
    \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place EnvoyerMessageA("message 1");
\end{Scratch}
\end{Codes}
\end{multicols}
\begin{center}
  \begin{Scratch}[Echelle=1.5]
    Place BlocUser(OrangeConTrois)("Catégorie Contrôle");
  \end{Scratch}
\end{center}
\begin{multicols}{2}
      \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place Attendre("1");
\end{Scratch}
\end{Codes}
    \begin{Codes}[]{0.5}{\footnotesize}
\begin{Scratch}[Echelle=0.75]
  Place AttendreJ(TestOpSup(OvalVar("n"),"5"));
\end{Scratch}
\end{Codes}
    \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place Repeter("10");
  Place LigneVide;
  Place FinBlocRepeter;
\end{Scratch}
\end{Codes}
%\end{multicols}
%\begin{multicols}{2}
    \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place Si(TestOpSup(OvalVar("n"),"5"));
  Place LigneVide;
  Place Sinon;
  Place LigneVide;
  Place FinBlocSi;
\end{Scratch}
\end{Codes}
    \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place RepeterI;
\end{Scratch}
\end{Codes}
    \begin{Codes}[]{0.5}{\footnotesize}
\begin{Scratch}[Echelle=0.75]
  Place RepeterJ(TestOpSup(OvalVar("n"),"5"));
\end{Scratch}
\end{Codes}
    \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place Stop("tout");
\end{Scratch}
\end{Codes}
    \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place CommencerClone;
\end{Scratch}
\end{Codes}
    \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place CreerClone("moi-même");
\end{Scratch}
\end{Codes}
    \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place SupprimerClone;
\end{Scratch}
\end{Codes}
\end{multicols}
\begin{center}
\begin{Scratch}[Echelle=1.5]
  Place BlocUser(CapteurTrois)("Catégorie Capteurs");
\end{Scratch}
\end{center}
  \begin{Codes}[listing side text]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place Demander("Quel est ton nom ?");
\end{Scratch}
\end{Codes}
\begin{multicols}{2}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place ReinitChrono;
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place MettreGlissement("glissable");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place TestCapToucheObjet("pointeur de souris");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place TestCapCouleur((1,0,0));
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place TestCapCouleurs((1,0,0),(1,1,0));
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place TestCapTouche("espace");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place TestCapSouris;
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place CapDistance("pointeur de souris");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place CapTemps("année");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place CapNumero("numéro de l'arrière-plan","de la scène");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place OvalCap("réponse");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place OvalCap("souris x");
\end{Scratch}
\end{Codes}
\end{multicols}
\begin{center}
\begin{Scratch}[Echelle=1.5]
  Place BlocUser(FondOvalOp)("Catégorie Opérateurs");
\end{Scratch}
\end{center}
\begin{multicols}{2}
  \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place OpAdd("10","20");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place OpSous("10","20");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place OpMul("10","20");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place OpDiv("10","20");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place OpMulS("10","20");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place OpDivS("10","20");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place OpAlea("10","20");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place OpRegrouper("pomme","banane");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place OpLettre("1","pomme");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place OpLongueur("pomme");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place OpModulo("7","2");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place OpArrondi("9.256");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place OpFonction("abs","$-$5");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place TestOpSup("10","20");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place TestOpInf("10","20");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place TestOpEgal("10","20");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place TestOpEt("10","20");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place TestOpOu("10","20");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place TestOpNon("10");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place TestOpContient("pomme","p");
\end{Scratch}
\end{Codes}
\end{multicols}
% \clearpage
\begin{center}
\begin{Scratch}[Echelle=1.5]
  Place BlocUser(OrangeTrois)("Catégorie Variables");
\end{Scratch}
\end{center}
\begin{multicols}{2}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place MettreVar("ma variable","0");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place AjouterVar("1","ma variable");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place MontrerVar("ma variable");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place CacherVar("ma variable");
\end{Scratch}
\end{Codes}
\end{multicols}
\begin{Codes}[listing side text]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place OvalVar("ma variable");
\end{Scratch}
\end{Codes}
\begin{center}
\begin{Scratch}[Echelle=1.5]
  Place BlocUser(OrangeListTrois)("Catégorie Listes");
\end{Scratch}
\end{center}
\begin{multicols}{2}
  \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place AjouterListe("chose","ListeA");
\end{Scratch}
\end{Codes}
  \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place SupprimerListe("1","ListeA");
\end{Scratch}
\end{Codes}
  \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place SupprimerListeAll("ListeA");
\end{Scratch}
\end{Codes}
  \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place InsererListe("chose","1","ListeA");
\end{Scratch}
\end{Codes}
  \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place RemplacerListe("1","ListeA","chose");
\end{Scratch}
\end{Codes}
  \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place MontrerListe("ListeA");
\end{Scratch}
\end{Codes}
\end{multicols}
\begin{multicols}{2}
  \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place CacherListe("ListeA");
\end{Scratch}
\end{Codes}
  \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place TestListeContient("ListeA","chose");
\end{Scratch}
\end{Codes}
  \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place ListeElement("1","ListeA");
\end{Scratch}
\end{Codes}
  \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place ListePosition("chose","ListeA");
\end{Scratch}
\end{Codes}
\end{multicols}
  \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place ListeLongueur("ListeA");
\end{Scratch}
\end{Codes}
\begin{center}
\begin{Scratch}[Echelle=1.5]
  Place BlocUser(StyloTrois)("Catégorie Stylo");
\end{Scratch}
\end{center}
\begin{multicols}{2}
    \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place Effacer;
\end{Scratch}
\end{Codes}
  \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place Estampiller;
\end{Scratch}
\end{Codes}
    \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place PoserStylo;
\end{Scratch}
\end{Codes}
  \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place ReleverStylo;
\end{Scratch}
\end{Codes}
  \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place MettreCouleur(1,0,1);
\end{Scratch}
\end{Codes}
  \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place AjouterCS("10","couleur");
\end{Scratch}
\end{Codes}
  \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place MettreCS("couleur","50");
\end{Scratch}
\end{Codes}
  \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place AjouterTS("10");
\end{Scratch}
\end{Codes}
\end{multicols}
  \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place MettreTS("50");
\end{Scratch}
\end{Codes}
\begin{center}
  \clearpage
\begin{Scratch}[Echelle=1.5]
  Place BlocUser(StyloTrois)("Catégorie Vidéo");
\end{Scratch}
\end{center}
\begin{multicols}{2}
    \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place ActiverVideo("on");
\end{Scratch}
\end{Codes}
    \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place TransparenceVideo("50");
\end{Scratch}
\end{Codes}
    \begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place QuandMV("10");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.5}{\small}
\begin{Scratch}[Echelle=0.75]
  Place VideoSur("mouvement","lutin");
\end{Scratch}
\end{Codes}
\end{multicols}
%Quelques exemples supplémentaires.
%\begin{Codes}[listing side text]{0.475}{\small}
\begin{Exemple}[listing options={frame=,classoffset=1,deletekeywords={Bloc},classoffset=0}]{\footnotesize}
\begin{Scratch}[Echelle=0.75]
  Place Drapeau;
  Place Demander("choisir un nombre");
  Place DireT("Le résultat est\dots","2");
  Place DireT(OpMul(OpAdd(OvalCap("réponse"),"10"),"2"),"2");
\end{Scratch}

\begin{Scratch}[Echelle=0.75]
  Place NouveauBloc("Sierpinski",OvalBloc("rang"),OvalBloc("triangles"));
  Place Si(TestOpNon(TestOpEgal(OvalBloc("rang"),"0")));
  Place Repeter("3");
  Place Bloc("Sierpinski",OpSous(OvalBloc("rang"),"1"),OpDiv(OvalBloc("triangles"),"2"));
  Place Avancer(OvalBloc("triangles"));
  Place Tournerd("120");
  Place FinBlocRepeter;
  Place FinBlocSi;
\end{Scratch}
\end{Exemple}
%\end{Codes}
%\begin{Codes}[listing side text,listing options={frame=,classoffset=1,deletekeywords={Bloc},classoffset=0}]{0.5}{\small}
%\end{Codes}
\clearpage
On dispose aussi de quelques facilités pour l'enseignant.
\begin{Codes}[listing side text]{0.3}{\small}
\begin{Scratch}[Echelle=0.75]
  Place Avancer("50");
  Place LigneVide;
  Place Avancer("50");
  Place CommandeVide("5");%5 cm
  Place Avancer("50");
  Place LignePointilles;
  Place Avancer("50");
  Place Commentaires("La ligne précédente est inutile\dots");
  Place Avancer("50");
  Place CommentairesLigne("C'est un exemple :)");
\end{Scratch}
\end{Codes}
\begin{Codes}[listing side text]{0.35}{\small}
\begin{Scratch}
  Place BlocUser(LightSteelBlue)("ProfCollege");
\end{Scratch}
\begin{Scratch}
  BlocE:=true;
  Place BlocUser(LightSteelBlue)("ProfCollege");
\end{Scratch}
\end{Codes}
\begin{Codes}[listing side text]{0.35}{\small}
\begin{Scratch}
  BlocR:=true;
  Place BlocUser(LightSteelBlue)("\textbf{répéter tant que}",TestOpInf(OvalVar("n"),OvalNb("10")));
  Place Avancer("50");
  Place BlocUserFinRepeter(LightSteelBlue);
\end{Scratch}
\end{Codes}
Sur une idée de Thomas {\sc Dehon}\footnote{Et avec un petit regard sur le package \lstinline!inlinegraphicx! de Cédric {\sc Pierquet}.}, on dispose de la commande \lstinline!\ScratchEnLigne! permettant ainsi de placer les briques Scratch dans un texte, la version étoilée déterminant automatiquement l'échelle correcte pour conserver l'interligne.
\begin{Codes}[listing side text]{0.4}{}
On donne le programme suivant, pour lequel
on rappelle que le bloc
\ScratchEnLigne*{Orienter("90")}
permet de s'orienter vers la droite.

\Large On donne le programme suivant, pour
lequel on rappelle que le bloc
\ScratchEnLigne*[Impression]{Orienter("90")}
permet de s'orienter vers la droite.
\end{Codes}
\clearpage
Pour faciliter encore plus l'utilisation, une écriture simplifiée des commandes a été mise en place de manière expérimentale :
\begin{Codes}[listing options={frame=,classoffset=1,deletekeywords={Etape},classoffset=0}]{}{}
\begin{Scratch}
  drapeau
  demander("Quel est le nombre de départ ?")
  mettrevariable("N",réponse)
  commentairesligne("Si on répond 5 à la question, que vaut la variable N ?")
  mettrevariable("Etape 1",mul(variable(N),variable(N)))
  commentairesligne("Sachant que la variable N vaut 5, que vaut la variable Etape 1 ?")
  mettrevariable("Etape 2",mul(variable(Etape 1),num(4)))
  commentairesligne("\scriptsize Sachant que la variable Etape 1 vaut \pointilles[35pt], que vaut la variable Etape 2 ?")
  mettrevariable("Etape 3",sous(variable(Etape 2),num(81)))
  commentairesligne("\scriptsize Sachant que la variable Etape 2 vaut \pointilles[35pt], que vaut la variable Etape 3 ?")
  dirependant(variable(Etape 3),num(2));
\end{Scratch}
\end{Codes}
\clearpage
\begin{tcolorbox}[tikzcle]
  \index[cle]{Scratch@\lstinline+Scratch+!Naturel|mygobble}
\begin{Key}{Naturel}{false}
  affiche l'algorithme dans un langage naturel.
\end{Key}%  Place PoserStylo;
\end{tcolorbox}
\begin{Codes}[listing side text]{0.45}{}
\begin{Scratch}[Numerotation,Naturel]
  Place Repeter("10");
  Place Tournerg("36");
  Place Avancer("50");
  Place FinBlocRepeter;
\end{Scratch}
\end{Codes}
%\begin{comment}
%\clearpage
On notera la légère différence lorsqu'on définit un nouveau bloc.
\begin{multicols}{2}
  \begin{Codes}[]{0.5}{}
\begin{Scratch}[Naturel]
Place NouveauBloc("Point");
Place PoserStylo;
Place ReleverStylo;
Place FinNouveauBloc;
\end{Scratch}    
\end{Codes}
\begin{Codes}[]{0.5}{}
\begin{Scratch}[Echelle=0.7]
Place NouveauBloc("Point");
Place PoserStylo;
Place ReleverStylo;
\end{Scratch}
\end{Codes}
\end{multicols}
%\clearpage
Il est possible de ne pas se limiter aux blocs Scratch originaux.
\begin{multicols}{2}
\begin{Codes}[]{0.4}{\footnotesize}
\begin{Scratch}[Echelle=0.7]
  BlocE:=true;
  Place BlocUser(Crimson)("Quand je prends le départ de la course :");
  BlocE:=false;
  Place BlocUser(LightSteelBlue)("Courir",OvalNb("200"),"mètres");
  Place Repeter("3");
  Place BlocUser(LightSteelBlue)("Sauter une barrière");
  Place BlocUser(LightSteelBlue)("Courir",OvalNb("80"),"mètres");
  Place FinBlocRepeter;
  Place BlocUser(LightGreen)("Franchir la ligne d'arrivée");
\end{Scratch}
\end{Codes}
\begin{Codes}[]{0.4}{\footnotesize}
\begin{Scratch}[Naturel]
  BlocE:=true;
  Place BlocUser(Crimson)("Quand je prends le départ de la course :");
  BlocE:=false;
  Place BlocUser(LightSteelBlue)("Courir","200","mètres");
  Place Repeter("3");
  Place BlocUser(LightSteelBlue)("Sauter une barrière");
  Place BlocUser(LightSteelBlue)("Courir","80","mètres");
  Place FinBlocRepeter;
  Place BlocUser(LightGreen)("Franchir la ligne d'arrivée");
\end{Scratch}
\end{Codes}
\end{multicols}