\clearpage
\section{Une tortue}\label{DocTortue}\index{Algorithmique}
\PfCMAJ{0.99-z-b}Sans atteindre (loin de là) les possibilités de GeoTortue\footnote{\url{http://geotortue.free.fr/index.php}}, la commande \lstinline!\Tortue! permet d'afficher des constructions {\em simples} :
\begin{center}
  \Tortue[TortueD,TortueF]{Pour Hexagone Cote,Rep,(,Av Cote,Td 60,) 6,Fin,MP cote:=30;,Rep,(,Hexagone cote,Lc,Av cote*2+10,MP cote:=cote+10;,Bc,) 4}
\end{center}

Elle a la forme suivante :

\begin{lstlisting}[escapechar=!,aboveskip=1em,belowskip=0.5em,classoffset=1,deletekeywords={Liste},classoffset=0]
  \Tortue[!\sffamily\textlangle clés\textrangle!]{Liste des commandes}
\end{lstlisting}
où
\begin{itemize}
\item\textlangle\lstinline!clés!\textrangle{} constituent un ensemble
  d'options pour paramétrer la commande (paramètres optionnels);
\item \textlangle{\ttfamily Liste des commandes}\textrangle{} indique ce que \og la tortue\fg{} doit faire. Quelques commandes de GeoTortue sont implantées :
  \begin{itemize}
  \item[] {\ttfamily Av} indique à \og la tortue\fg{} d'avancer du nombre de pas indiqué;
  \item[] {\ttfamily Re} indique à \og la tortue\fg{} de reculer du nombre de pas indiqué;
  \item[] {\ttfamily Td} indique à \og la tortue\fg{} de tourner à droite de l'angle indiqué (en degrés);
  \item[] {\ttfamily Tg} indique à \og la tortue\fg{} de tourner à gauche de l'angle indiqué (en degrés);
  \item[] {\ttfamily Lc} indique à \og la tortue\fg{} de ne pas dessiner lors de ses prochains déplacements;
  \item[] {\ttfamily Bc} indique à \og la tortue\fg{} de dessiner lors de ses prochains déplacements (le crayon est baissé par défaut);
  \item[] {\ttfamily Tlp} téléporte \og la tortue\fg{} au point indiqué par son abscisse et son ordonnée.
  \end{itemize}
  \begin{Codes}[listing side text]{0.6}{}
\Tortue{%
  Av 60,%
  Tg 90,%
  Av 30,%
  Td 90,%
  Av 50,%
  Lc,%
  Tlp 150 50,%
  Bc,%
  Av 50  
}
\end{Codes}
D'autres nécessitent une syntaxe un peu différente de GeoTortue :
\begin{itemize}
\item {\ttfamily Rep} indique la répétition d'une action;
\item {\ttfamily Pour} indique la création d'une commande pouvant être appelée.
\end{itemize}
De plus, une commande a été ajoutée : la commande \lstinline!MP! permettant d'inclure du code \MP{} au sein des commandes GeoTortue.
\end{itemize}
\clearpage
\begin{multicols}{3}
\begin{Codes}{0.2}{}
\Tortue{%
  Rep,(,%
  Av 60,%
  Tg 90,%
  ) 4%
}%
% Le nombre de
% répétitions s'indique
% à la fin
% des instructions
% à répéter.
\end{Codes}
\begin{Codes}[listing options={frame=,classoffset=1,deletekeywords={Fin,Cote},classoffset=0}]{0.2}{}
\Tortue{
  Pour Hexagone Cote,%
  Rep,(,%
  Av Cote,%
  Td 60,%
  ) 6,%
  Fin,%
  Hexagone 50%
}
% Noter la commande Fin
% et la variable Cote
% obligatoire même si
% elle n'est pas
% utilisée.
\end{Codes}

\begin{Codes}[listing options={frame=,classoffset=1,deletekeywords={Fin,Cote},classoffset=0}]{0.5}{}
% Brevet
% Polynésie Juin 2021.
\Tortue{%
  Pour Hexagone Cote,%
  Rep,(,%
  Av Cote,%
  Td 60,) 6,%
  Fin,%
  MP cote:=10;,%
  Rep,(,%
  Hexagone cote,%
  Lc,%
  Av cote*2+10,%
  MP cote:=cote+10;,%
  Bc,%
  ) 4%
}
\end{Codes}
\end{multicols}
\begin{tcolorbox}[tikzRemarque]
  Chaque appel à la commande \lstinline!\Tortue! crée un fichier dont l'extension est \lstinline!turtle!. Ils peuvent être effacés en fin de compilation.
\end{tcolorbox}
\begin{tcolorbox}[tikzcle]
  \index[cle]{\lstinline+\Tortue+}
  \index[cle]{\lstinline+\Tortue+!Pas|mygobble}
  \index[cle]{\lstinline+\Tortue+!Epaisseur|mygobble}
  \index[cle]{\lstinline+\Tortue+!TortueD|mygobble}
  \index[cle]{\lstinline+\Tortue+!TortueF|mygobble}
  \index[cle]{\lstinline+\Tortue+!Angle|mygobble}
  \index[cle]{\lstinline+\Tortue+!Couleur|mygobble}
  \index[cle]{\lstinline+\Tortue+!Etape|mygobble}
  \index[cle]{\lstinline+\Tortue+!Grille|mygobble}
  \index[cle]{\lstinline+\Tortue+!Grille!LargeurG|mygobble}
  \index[cle]{\lstinline+\Tortue+!Grille!LargeurH|mygobble}
  \index[cle]{\lstinline+\Tortue+!Grille!Axes|mygobble}
  \index[cle]{\lstinline+\Tortue+!Grille!Origine|mygobble}
  \index[cle]{\lstinline+\Tortue+!Grille!Cases|mygobble}
  \index[cle]{\lstinline+\Tortue+!Grille!Depart|mygobble}
\begin{Key}{Pas}{\Lg[mm]{0.2}}
  modifie la longueur du pas unité.
\end{Key}
\begin{Key}{Epaisseur}{1}
  modifie l'épaisseur du tracé.
\end{Key}
\begin{KEYSl}{TortueD/TortueF}{false/false}
  affichent, en étant positionnées à \lstinline!true!, la tortue en position initiale et/ou finale.
\end{KEYSl}
\begin{Key}{Angle}{0}
  modifie l'angle de la position de départ de la tortue.
\end{Key}
\begin{Key}{Couleur}{black}
  modifie la couleur du tracé effectué par la tortue.
\end{Key}
\begin{Key}{Etape}{-}
  arrête le tracé à l'étape demandée. {\em L'affichage de la tortue est automatique.}
\end{Key}
\begin{Key}{Grille}{false}
  affiche, lorsqu'elle est positionnée à \lstinline!true!, une grille de 30 pas pour chacune des unités.
  \begin{SousDescription}
  \item[La clé \Cle{LargeurG}]\DefautR{10}
    modifie le nombre d'unités {\em en abscisse} dans la partie négative ainsi que dans la partie positive.
  \item[La clé \Cle{LargeurH}]\DefautR{10}
    modifie le nombre d'unités {\em en ordonnée} dans la partie négative ainsi que dans la partie positive.
  \item[La clé \Cle{Axes}]\DefautR{false}
    affiche, lorsqu'elle est positionnée à \lstinline!true!, les axes des abscisses et des ordonnées.
  \item[La clé \Cle{Origine}]\DefautR{\{0,0\}}
    modifie la position de l'origine du repère. Ses coordonnées seront données par multiples de 30 : elles indiquent le déplacement par rapport au centre de la grille.
  \item[La clé \Cle{Cases}]\DefautR{false}
    affiche, lorsqu'elle est positionnée à \lstinline!true!, une numérotation des cases. La tortue sera alors positionnée au centre de la case correspondant au départ de la tortue.
  \item[La clé \Cle{Depart}]\DefautR{\{0,0\}}
    modifie la position de départ de la tortue. Ses coordonnées seront données par multiples de 30 : elles indiquent le déplacement par rapport au centre de la grille.
  \end{SousDescription}
\end{Key}
\end{tcolorbox}
  \begin{Exemple}[]{}
\Tortue{Av 30,Tg 90,Av 30}

\Tortue[Pas=0.4mm]{Av 30,Tg 90,Av 30}

\Tortue[Epaisseur=2]{Av 30,Tg 90,Av 30}

\Tortue[Couleur=red]{Av 30,Tg 90,Av 30}

\Tortue[TortueD]{Av 30,Tg 90,Av 30}

\Tortue[TortueF]{Av 30,Tg 90,Av 30}
\end{Exemple}
\begin{multicols}{2}
  \begin{Codes}[]{0.4}{\small}
\Tortue[TortueD,TortueF]{Av 30,Tg 90,Av 30}
  \end{Codes}
  \begin{Codes}[]{0.4}{\small}
\Tortue[Angle=45,TortueD]{Av 30,Tg 90,Av 30}
  \end{Codes}
\end{multicols}
\begin{Codes}[]{0.4}{}
\Tortue[Etape=0]{Av 30,Tg 90,Av 30}    
\hfill
\Tortue[Etape=1]{Av 30,Tg 90,Av 30}    
\hfill
\Tortue[Etape=2]{Av 30,Tg 90,Av 30}    
\hfill
\Tortue[Etape=3]{Av 30,Tg 90,Av 30}    
  \end{Codes}
\begin{multicols}{2}
  \begin{Codes}[]{0.4}{}
\Tortue[%
Grille,%
LargeurG=5,%
HauteurG=5,%
Axes,%
Origine={(-60,-60)},%
  ]{Av 30,Tg 90,Av 30}
\end{Codes}
\begin{Codes}[]{0.4}{}
\Tortue[%
Grille,%
LargeurG=5,%
HauteurG=5,%
Cases,%
Depart={(30,-60)}%
  ]{Av 30,Tg 90,Av 30}
\end{Codes}
\end{multicols}
\clearpage
Un exemple\footnote{Tiré de la page \url{https://www.monclasseurdemaths.fr/profs/algorithmique-scratch/note-la-couleur/}.} utilisant l'environnement \lstinline!Scratch! (page \pageref{DocScratch}) et la commande \lstinline!\Tortue!.\par
\begin{minipage}{0.35\linewidth}
  \begin{Scratch}
  Place Drapeau;
  Place Orienter("90");
  Place BlocUser(BleuMouvTrois)("Aller à la case",OvalNb("D5"));
  Place Avancer("150");
  Place BlocUser(0.45[red,white])("Note la case");
  Place Tournerd("90");
  Place Avancer("120");
  Place BlocUser(0.45[red,white])("Note la case");
  Place Tournerd("90");
  Place Avancer("210");
  Place BlocUser(0.45[red,white])("Note la case");
  Place Tournerd("90");
  Place Avancer("60");
  Place BlocUser(0.45[red,white])("Note la case");
  Place Tournerd("90");
  Place Avancer("150");
  Place BlocUser(0.45[red,white])("Note la case");
  Place Stop("ce script");
\end{Scratch}
\end{minipage}
\hfill
\begin{minipage}{0.6\linewidth}
  \Tortue[Grille,LargeurG=7,HauteurG=5,Cases,Depart={(-120,0)}]{%
    MP t:=1;
}

\bigskip

\Tortue[Grille,LargeurG=7,HauteurG=5,Cases,Depart={(-120,0)}]{%
  Av 150,
  Td 90,
  Av 120,
  Td 90,
  Av 210,
  Td 90,
  Av 60,
  Td 90,
  Av 150
}
\end{minipage}
\begin{comment}
  \begin{Codes}[listing side text,listing options={frame=,classoffset=1,deletekeywords={Fin,Rectangle,Epaisseur},classoffset=0}]{0.5}{}
% Brevet Polynésie Septembre 2020
\Tortue{%
  Pour Rectangle Cote,%
  Bc,%
  Rep,(,%
  Av Cote,%
  Tg 90,%
  Av 2*Cote,%
  Tg 90,%
  ) 4,%
  Lc,%
  Fin,%
  Rep,(,%
  Rectangle 20,%
  Av 40,%
  Td 90,%
  Av 20,%
  Tg 90,%
  MP Epaisseur:=Epaisseur+1;,%
  ) 5%
}
\end{Codes}
\end{comment}