1 \documentclass[12pt
]{article
}
2 \usepackage[utf8
]{inputenc}
3 \usepackage[T1]{fontenc}
4 \usepackage[a4paper,margin=
2cm,nohead,includefoot
]{geometry
}
6 \usepackage[scaled=
0.875]{helvet
}
8 \usepackage[frenchb
]{babel
}
11 \graphicspath{{figures/
}}
12 \DeclareGraphicsRule{*
}{mps
}{*
}{}
16 \usepackage{listingsutf8
}
17 \usepackage{filecontents
}
18 \lstset{language=MetaPost,inputencoding=utf8
}
19 \title{\includegraphics[scale=
0.05]{Scratch_cat.png
}\kern0.05
\linewidth Scratch et
\MP\kern0.05
\linewidth\includegraphics{Carre
.1}}
25 Utiliser
\MP\ pour produire des algorithmes
\og papier
\fg\ avec les conventions de Scratch.
28 \setcounter{tocdepth}{1}
31 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
32 \
\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.
35 \includegraphics[scale=
0.85]{Scratch1.png
}\kern0.05
\linewidth\includegraphics{Algo1.1
}
36 \caption{Algorithme de création d'un carré - Versions Scratch et
\MP\protect\footnotemark}
39 \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.
}
40 \section{Installation
}
41 Le package
{\sffamily mp-scratch
} est indépendant d'autres packages personnels. On trouvera l'archive à l'adresse
43 \url{melusine.eu.org/
}
45 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.
}
47 \begin{minipage
}{0.4\linewidth}
48 \includegraphics{Algo1.1
}
51 \begin{minipage
}{0.5\linewidth}
53 \begin{lstlisting
}[firstnumber=
1,frame=tb
]
61 draw FinBlocRepeter1(
10);
66 \par\vspace{1em
}\par Reprenons l'exemple de l'algorithme du carré pour faire les premières constatations suivantes :
68 \item la syntaxe est très proche du vocabulaire utilisé par Scratch;
69 \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;
70 \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.
71 \par\vspace{1em
}\par\begin{minipage
}{0.4\linewidth}
72 \includegraphics{Algo2.1
}
75 \begin{minipage
}{0.5\linewidth}
77 \begin{lstlisting
}[firstnumber=
1,frame=tb
]
86 draw FinBlocRepeter1(
10);
88 draw FinBlocRepeter2(
10);
93 \item Très peu de nouvelles commandes à apprendre
\ldots
95 \subsection{Commandes Scratch
}
97 \item[Groupe
{\sffamily Mouvement
}]\hfil\newline
99 \item[\textbullet]\lstinline!draw Avancer(
10);!
100 \par\hfill\includegraphics{CommandeMouvement
.1}
101 \item[\textbullet]\lstinline!draw Tournerd(
90);!
102 \par\hfill\includegraphics{CommandeMouvement
.2}
103 \item[\textbullet]\lstinline!draw Tournerg(
90)!
104 \par\hfill\includegraphics{CommandeMouvement
.3}
105 \item[\textbullet]\lstinline!draw Orienter(
90);!
106 \par\hfill\includegraphics{CommandeMouvement
.4}
107 \item[\textbullet]\lstinline!draw Orienterdirection("pointeur de souris");!
108 \par\hfill\includegraphics{CommandeMouvement
.5}
109 \item[\textbullet]\lstinline!draw Aller(
50,
100);!
110 \par\hfill\includegraphics{CommandeMouvement
.6}
111 \item[\textbullet]\lstinline!draw Allera("pointeur de souris");!
112 \par\hfill\includegraphics{CommandeMouvement
.7}
113 \item[\textbullet]\lstinline!draw Glisser(
2,
50,
100);!
114 \par\hfill\includegraphics{CommandeMouvement
.8}
115 \item[\textbullet]\lstinline!draw Ajouter(
10,"x");!
116 \par\hfill\includegraphics{CommandeMouvement
.9}
117 \item[\textbullet]\lstinline!draw Mettre(
10,"x");!
118 \par\hfill\includegraphics{CommandeMouvement
.10}
119 \item[\textbullet]\lstinline!draw Ajouter(
50,"y");!
120 \par\hfill\includegraphics{CommandeMouvement
.11}
121 \item[\textbullet]\lstinline!draw Mettre(
10,"y");!
122 \par\hfill\includegraphics{CommandeMouvement
.12}
123 \item[\textbullet]\lstinline!draw Rebondir;!
124 \par\hfill\includegraphics{CommandeMouvement
.13}
125 \item[\textbullet]\lstinline!draw FixerSensRotation("position \`a gauche ou \`a droite"';!
126 \par\hfill\includegraphics{CommandeMouvement
.14}
128 \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\
129 \
[\includegraphics{CommandeMouvement
.18}\kern0.1
\linewidth\includegraphics{CommandeMouvement
.19}\kern0.1
\linewidth\includegraphics{CommandeMouvement
.20}\
]
130 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 :
132 \item[\textbullet]\lstinline!draw Avancer("
\opOp{$
\opMouv{abscisse x
}\bm{+
}\opSimple{10}$
}");!
133 \par\hfill\includegraphics{CommandeMouvement
.15}
134 \item[\textbullet]\lstinline!draw Mettre("
\opMouv{abscisse x
}","y");!
135 \par\hfill\includegraphics{CommandeMouvement
.16}
136 \item[\textbullet]\lstinline!draw Ajouter("
\opMouv{direction
}","y");!
137 \par\hfill\includegraphics{CommandeMouvement
.17}
139 \item[Groupe
{\sffamily Apparence
}]\hfil\newline
141 \item[\textbullet]\lstinline!draw DireT("Hello",
2);!
142 \par\hfill\includegraphics{CommandeApparence
.1}
143 \item[\textbullet]\lstinline!draw Dire("Hello");!
144 \par\hfill\includegraphics{CommandeApparence
.2}
145 \item[\textbullet]\lstinline!draw PenserT("Hmm...",
2);!
146 \par\hfill\includegraphics{CommandeApparence
.3}
147 \item[\textbullet]\lstinline!draw Penser("Hmm...");!
148 \par\hfill\includegraphics{CommandeApparence
.4}
149 \item[\textbullet]\lstinline!draw Montrer;!
150 \par\hfill\includegraphics{CommandeApparence
.5}
151 \item[\textbullet]\lstinline!draw Cacher;!
152 \par\hfill\includegraphics{CommandeApparence
.6}
153 \item[\textbullet]\lstinline!draw Basculer("
\opAp{costume2
}");!
154 \par\hfill\includegraphics{CommandeApparence
.7}
155 \item[\textbullet]\lstinline!draw CostumeSuivant;!
156 \par\hfill\includegraphics{CommandeApparence
.8}
157 \item[\textbullet]\lstinline!draw BasculerAR("
\opAp{arriere-plan2
}");!
158 \par\hfill\includegraphics{CommandeApparence
.9}
159 \item[\textbullet]\lstinline!draw AjouterEffet("
\opAp{couleur
}",
10);!
160 \par\hfill\includegraphics{CommandeApparence
.10}
161 \item[\textbullet]\lstinline!draw MettreEffet("
\opAp{couleur
}",
10);!
162 \par\hfill\includegraphics{CommandeApparence
.11}
163 \item[\textbullet]\lstinline!draw AnnulerEffet;!
164 \par\hfill\includegraphics{CommandeApparence
.12}
165 \item[\textbullet]\lstinline!draw AjouterTaille(
10);!
166 \par\hfill\includegraphics{CommandeApparence
.13}
167 \item[\textbullet]\lstinline!draw MettreA("
\opOp{$
\opSimple{10}\bm{+
}\opSimple{5}$
}");!
168 \par\hfill\includegraphics{CommandeApparence
.14}
169 \item[\textbullet]\lstinline!draw AllerPPlan;!
170 \par\hfill\includegraphics{CommandeApparence
.15}
171 \item[\textbullet]\lstinline!draw DeplacerAP("
\opOp{$
\opMouv{abscisse x
}\bm{+
}\opSimple{10}$
}");!
172 \par\hfill\includegraphics{CommandeApparence
.16}
174 \par\vspace*
{2em
}\par Les
\og opérateurs
\fg\
175 \
[\includegraphics{CommandeApparence
.17}\kern0.1
\linewidth\includegraphics{CommandeApparence
.18}\kern0.1
\linewidth\includegraphics{CommandeApparence
.19}\
]
176 s'obtiennent avec la commande
\LaTeX\
\lstinline!
\opAp{}!.
177 \item[Groupe
{\sffamily Son
}]\hfil\newline
179 \item[\textbullet]\lstinline!draw Jouer("miaou");!
180 \par\hfill\includegraphics{CommandeSon
.1}
181 \item[\textbullet]\lstinline!draw JouerT("miaou");!
182 \par\hfill\includegraphics{CommandeSon
.2}
183 \item[\textbullet]\lstinline!draw ArreterSon;!
184 \par\hfill\includegraphics{CommandeSon
.3}
185 \item[\textbullet]\lstinline!draw Tambour(
2,
0.25);!
186 \par\hfill\includegraphics{CommandeSon
.4}
187 \item[\textbullet]\lstinline!draw Pause(
0.25);!
188 \par\hfill\includegraphics{CommandeSon
.5}
189 \item[\textbullet]\lstinline!draw JouerNote(
50,
0.25);!
190 \par\hfill\includegraphics{CommandeSon
.6}
191 \item[\textbullet]\lstinline!draw ChoisirInstrument(
17);!
192 \par\hfill\includegraphics{CommandeSon
.7}
193 \item[\textbullet]\lstinline!draw AjouterVol(-
10);!
194 \par\hfill\includegraphics{CommandeSon
.8}
195 \item[\textbullet]\lstinline!draw MettreVol(
15);!
196 \par\hfill\includegraphics{CommandeSon
.9}
197 \item[\textbullet]\lstinline!draw AjouterTempo(
20);!
198 \par\hfill\includegraphics{CommandeSon
.10}
199 \item[\textbullet]\lstinline!draw MettreTempo(
15);!
200 \par\hfill\includegraphics{CommandeSon
.11}
202 Les
\og opérateurs
\fg\ s'obtiennent par la commande
\LaTeX\
\lstinline!
\opSon{}!.
203 \
[\includegraphics{CommandeSon
.12}\kern0.1
\linewidth\includegraphics{CommandeSon
.13}\
]
204 \item[Groupe
{\sffamily Stylo
}]\hfil\newline
206 \item[\textbullet]\lstinline!draw Effacer!
207 \par\hfill\includegraphics{CommandeStylo
.1}
208 \item[\textbullet]\lstinline!draw Estampiller!
209 \par\hfill\includegraphics{CommandeStylo
.2}
210 \item[\textbullet]\lstinline!draw PoserStylo!
211 \par\hfill\includegraphics{CommandeStylo
.3}
212 \item[\textbullet]\lstinline!draw ReleverStylo!
213 \par\hfill\includegraphics{CommandeStylo
.4}
214 \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
}.
}
215 \par\hfill\includegraphics{CommandeStylo
.5}
216 \item[\textbullet]\lstinline!draw AjouterCS("
\opOp{$
\opSimple{15}\bm{+
}\opSimple{10}$
}");!
217 \par\hfill\includegraphics{CommandeStylo
.6}
218 \item[\textbullet]\lstinline!draw MettreCS(
25);!
219 \par\hfill\includegraphics{CommandeStylo
.7}
220 \item[\textbullet]\lstinline!draw AjouterIS("
\opOp{$
\opSimple{25}\bm{-
}\opSimple{10}$
}");!
221 \par\hfill\includegraphics{CommandeStylo
.8}
222 \item[\textbullet]\lstinline!draw MettreIS(
15);!
223 \par\hfill\includegraphics{CommandeStylo
.9}
224 \item[\textbullet]\lstinline!draw AjouterTS(
12);!
225 \par\hfill\includegraphics{CommandeStylo
.10}
226 \item[\textbullet]\lstinline!draw MettreTS("
\opOp{$
\opSimple{15}\bm{\times}\opSimple{10}$
}");!
227 \par\hfill\includegraphics{CommandeStylo
.11}
229 \item[Groupe
{\sffamily Données
}]\hfil\newline
231 \item[\textbullet]\lstinline!draw MettreVar("pi",
0);!
232 \par\hfill\includegraphics{CommandeVariable
.1}
233 \item[\textbullet]\lstinline!draw AjouterVar("pi","
\opOp{$
\opSimple{15}\bm{+
}\opSimple{10}$
}");!
234 \par\hfill\includegraphics{CommandeVariable
.2}
235 \item[\textbullet]\lstinline!draw MontrerVar("pi");!
236 \par\hfill\includegraphics{CommandeVariable
.3}
237 \item[\textbullet]\lstinline!draw CacherVar("pi");!
238 \par\hfill\includegraphics{CommandeVariable
.4}
239 \item[\textbullet]\lstinline!draw AjouterList("
\opSimple{\LaTeX}","Listepi");!
240 \par\hfill\includegraphics{CommandeVariable
.5}
241 \item[\textbullet]\lstinline!draw SupprimerList("
\opSimple{\LaTeX}","Listepi");!
242 \par\hfill\includegraphics{CommandeVariable
.6}
243 \item[\textbullet]\lstinline!draw InsererList("
\opSimple{\MP}",
1,"Listepi");!
244 \par\hfill\includegraphics{CommandeVariable
.7}
245 \item[\textbullet]\lstinline!draw RemplacerList(
3,"Listepi","
\opOp{$
\opSimple{4}\bm{+
}\opSimple{5}$
}");!
246 \par\hfill\includegraphics{CommandeVariable
.8}
247 \item[\textbullet]\lstinline!draw MontrerList("Listepi");!
248 \par\hfill\includegraphics{CommandeVariable
.9}
249 \item[\textbullet]\lstinline!draw CacherList("Listepi");!
250 \par\hfill\includegraphics{CommandeVariable
.10}
252 \par\vspace*
{2em
}\par Les
\og opérateurs
\fg
254 \begin{minipage
}{0.8\linewidth}
255 \includegraphics{CommandeVariable
.11}\hfill\includegraphics{CommandeVariable
.12}\hfill \includegraphics{CommandeVariable
.13}\par
256 \includegraphics{CommandeVariable
.14}\hfill \includegraphics{CommandeVariable
.15}
259 s'obtiennent par les commandes
\LaTeX\
\lstinline!
\opVar{}!,
\lstinline!
\opList{}! et
\lstinline!
\opSousList!.
260 \item[Groupe
{\sffamily \'Evènement
}]\hfil\newline
262 \item[\textbullet]\lstinline!draw Drapeau!
263 \par\hfill\includegraphics{CommandeEvenements
.1}
264 \item[\textbullet]\lstinline!draw Presse("espace");!
265 \par\hfill\includegraphics{CommandeEvenements
.2}
266 \item[\textbullet]\lstinline!draw LutinPresse;!
267 \par\hfill\includegraphics{CommandeEvenements
.3}
268 \item[\textbullet]\lstinline!draw BasculeAR("arriere-plan1");!
269 \par\hfill\includegraphics{CommandeEvenements
.4}
270 \item[\textbullet]\lstinline!draw VolumeSup("Volume sonore",
10);!
271 \par\hfill\includegraphics{CommandeEvenements
.5}
272 \item[\textbullet]\lstinline!draw RecevoirMessage("message1");!
273 \par\hfill\includegraphics{CommandeEvenements
.6}
274 \item[\textbullet]\lstinline!draw EnvoyerMessage("message1");!
275 \par\hfill\includegraphics{CommandeEvenements
.7}
276 \item[\textbullet]\lstinline!draw EnvoyerMessageA("message1");!
277 \par\hfill\includegraphics{CommandeEvenements
.8}
279 \item[Groupe
{\sffamily Contrôle
}]\hfil\newline
281 \item[\textbullet]\lstinline!draw Attendre("
\opOp{$
\opSimple{10}\bm{+
}\opSimple{40}$
}");!
282 \par\hfill\includegraphics{CommandeControle
.1}
284 \begin{lstlisting
}[frame=tb
]
285 draw Repeter1("
\opOp{$
\opSimple{10}\bm{+
}\opSimple{40}$
}");
287 draw FinBlocRepeter1(
10);
289 \par\hfill\includegraphics{CommandeControle
.2}
291 \begin{lstlisting
}[frame=tb
]
294 draw FinBlocRepeter1(
10);
296 \par\hfill\includegraphics{CommandeControle
.3}
298 \begin{lstlisting
}[frame=tb
]
299 draw Si1("
\opOp{$
\opSimple{10}\bm{+
}\opMouv{Abscisse x
}%
300 \bm{=
}\opSimple{20}$
}");
304 \par\hfill\includegraphics{CommandeControle
.4}
306 \begin{lstlisting
}[frame=tb
]
307 draw Si1("
\opOp{$
\opSimple{10}\bm{+
}\opMouv{Abscisse x
}%
308 \bm{=
}\opSimple{20}$
}");
314 \par\hfill\includegraphics{CommandeControle
.5}
315 \item[\textbullet]{\footnotesize\lstinline!draw AttendreJ("
\opOp{$
\opSimple{10}\bm{+
}\opMouv{Abscisse x
}\bm{=
}\opSimple{20}$
}");!
}
316 \par\hfill\includegraphics{CommandeControle
.6}
318 \begin{lstlisting
}[frame=tb
]
319 draw RepeterJ1("
\opOp{$
\opSimple{10}\bm{+
}\opMouv{Abscisse x
}%
320 \bm{=
}\opSimple{20}$
}");
322 draw FinBlocRepeter1(
10);
324 \par\hfill\includegraphics{CommandeControle
.7}
325 \item[\textbullet]\lstinline!draw Stop("ce script");!
326 \par\hfill\includegraphics{CommandeControle
.8}
327 \item[\textbullet]\lstinline!draw CommencerClone;!
328 \par\hfill\includegraphics{CommandeControle
.9}
329 \item[\textbullet]\lstinline!draw CreerClone("Lutin1");!
330 \par\hfill\includegraphics{CommandeControle
.10}
331 \item[\textbullet]\lstinline!draw SupprimerClone;!
332 \par\hfill\includegraphics{CommandeControle
.11}
334 \item[Groupe
{\sffamily Capteurs
}]\hfil\newline
336 \item[\textbullet]\begin{filecontents*
}{capteur1.txt
}
337 draw Demander("Quel est votre prénom ?");
339 \lstinputlisting[inputencoding=utf8/
latin1]{capteur1.txt
}
340 \par\hfill\includegraphics{CommandeCapteurs
.1}
341 \item[\textbullet]\lstinline!draw ActiverVideo("active");!
342 \par\hfill\includegraphics{CommandeCapteurs
.2}
343 \item[\textbullet]\lstinline!draw TransparenceVideo("
\opOp{$
\opSimple{17}\bm{+
}\opSimple{25}$
}");!
344 \par\hfill\includegraphics{CommandeCapteurs
.3}
345 \item[\textbullet]\lstinline!draw ReinitChrono;!
346 \par\hfill\includegraphics{CommandeCapteurs
.4}
348 \par\vspace*
{2em
}\par Les
\og opérateurs
\fg\ s'obtiennent par les commandes
\LaTeX\
\lstinline!
\opCap{}! et
\lstinline!
\opCapCap!.
350 \begin{minipage
}{0.8\linewidth}
351 \includegraphics{CommandeCapteurs
.5}\par
352 \includegraphics{CommandeCapteurs
.6}\hfill \includegraphics{CommandeCapteurs
.7}\par
353 \includegraphics{CommandeCapteurs
.19}\par
354 \includegraphics{CommandeCapteurs
.20}\hfill\includegraphics{CommandeCapteurs
.8}
355 \par\includegraphics{CommandeCapteurs
.9}\hfill \includegraphics{CommandeCapteurs
.10}\hfill\includegraphics{CommandeCapteurs
.11}
356 \par\includegraphics{CommandeCapteurs
.12}\hfill \includegraphics{CommandeCapteurs
.13}\par
357 \includegraphics{CommandeCapteurs
.14}\hfill\includegraphics{CommandeCapteurs
.15}
358 \par\includegraphics{CommandeCapteurs
.16}\hfill
359 \includegraphics{CommandeCapteurs
.17}\hfill\includegraphics{CommandeCapteurs
.18}
362 Néanmoins, il faut parfois un codage conséquent. Par exemple, voici un capteur et son code.
363 \par\begin{minipage
}{0.2\linewidth}
364 \includegraphics{CommandeCapteurs
.7}
367 \begin{minipage
}{0.75\linewidth}
369 \begin{lstlisting
}[frame=tb
]
371 \definecolor{Magenta
}{rgb
}{1,
0,
1}%
372 \colorbox{Magenta
}{\textcolor{white
}{\phantom{t
}}}%
374 \definecolor{LGray
}{gray
}{0.85}%
375 \colorbox{LGray
}{\textcolor{white
}{\phantom{t
}}} ?
%
379 \
\Un peu barbare, non ? Mais, cela ne nécessitera qu'un simple copier-coller pour les autres utilisations
\ldots%}
380 \item[Groupe
{\sffamily Opérateurs
}]\hfil\newline
381 Les éléments de ce groupe s'obtiennent par les commandes
\LaTeX\
\lstinline!
\opOp{}! et
\lstinline!
\opSousOp{}!.
383 \begin{minipage
}{0.8\linewidth}
384 \includegraphics{CommandeOperateurs
.1}\hfill\includegraphics{CommandeOperateurs
.2}\hfill\includegraphics{CommandeOperateurs
.3}\hfill
385 \includegraphics{CommandeOperateurs
.4}\par
386 \includegraphics{CommandeOperateurs
.5}\par
387 \includegraphics{CommandeOperateurs
.6}\hfill \includegraphics{CommandeOperateurs
.7}\hfill\includegraphics{CommandeOperateurs
.8}
388 \par\includegraphics{CommandeOperateurs
.9}\hfill \includegraphics{CommandeOperateurs
.10}\hfill\includegraphics{CommandeOperateurs
.11}
389 \par\includegraphics{CommandeOperateurs
.12}\hfill \includegraphics{CommandeOperateurs
.13}\par
390 \includegraphics{CommandeOperateurs
.14}
391 \par\includegraphics{CommandeOperateurs
.15}\hfill\includegraphics{CommandeOperateurs
.16}\hfill\includegraphics{CommandeOperateurs
.17}
394 \item[Groupe
{\sffamily Ajouter blocs
}]\hfil\newline
396 \item[\textbullet]\lstinline!draw NouveauBloc("Pentagone");!
397 \par\hfill\includegraphics{CommandeBloc
.1}
398 \item[\textbullet]\lstinline!draw NouveauBloc("Pentagone
\opBloc{cote
}");!
399 \par\hfill\includegraphics{CommandeBloc
.3}
400 \item[\textbullet]\lstinline!draw Bloc("Pentagone");!
401 \par\hfill\includegraphics{CommandeBloc
.2}
404 Terminons cette liste de commandes par un algorithme associé à la suite de Syracuse :)
405 \
[\includegraphics[scale=
0.8]{Syracuse
.1}\
]
406 \begin{filecontents*
}{Syracuse.txt
}
409 draw SupprimerList("
\opSimple{tout
}","Suite");
410 draw Demander("
\opSimple{Quel est le nombre choisi ?
}");
411 draw AjouterList("
\opCap{réponse
}","Suite");
412 draw MettreVar("pas",
1);
414 draw Si2("
\opOp{\opList{élément
\opVar{pas
} de
\opSousList{Suite
}} modulo
\opSimple{2}%
415 \,$
\bm{=
}$\,
\opSimple{0}}");
416 draw MettreVar("résultat","
\opOp{\opList{élément
\opVar{pas
} de
\opSousList{Suite
}}%
417 \,$
\bm{/
}$\,
\opSimple{2}}");
419 draw MettreVar("résultat","
\opOp{\opSimple{3}\,$
\bm{\times}$\,
\opList{élément
\opVar{pas
}%
420 de
\opSousList{Suite
}}\,$
\bm{+
}$\,
\opSimple{1}}");
422 draw Si3("
\opList{\opSousList{Suite
} contient
\opVar{résultat
} ?
}");
425 draw AjouterList("
\opVar{résultat
}","Suite");
426 draw AjouterVar("pas",
1);
428 draw FinBlocRepeter1(
10);
434 \lstinputlisting[inputencoding=utf8/
latin1,frame=tb
]{Syracuse.txt
}
437 \section{Quelques exemples
}
438 \subsection{Sujet de Brevet des collèges
}
442 % \includegraphics{Scratch2-2}
443 %\caption{Figure du Sujet 0 de mathématiques du Brevet des Collèges}
448 \includegraphics{Scratch2-
2}\par
449 \includegraphics[scale=
0.85]{Scratch2-
3}\kern0.05
\linewidth\includegraphics{Algo3.1
}
450 \caption{Figure du Sujet
0 - versions Scratch et
\MP}
453 %\begin{minipage}{0.5\linewidth}
455 \begin{lstlisting
}[firstnumber=
1,frame=tb
]
465 draw FinBlocRepeter1(
10);
469 draw FinBlocRepeter2(
10);
474 \subsection{\OE uvre d'art
}
477 \includegraphics[width=
0.7\linewidth]{Morellet
}
479 \caption{François Morellet - Oeuvre Pi piquant,
1=
1°,
38 décimales
}
481 \
[\includegraphics[width=
0.75\linewidth]{Ex-Morellet
.1}\
]
482 \begin{filecontents*
}{Morellet.txt
}
483 beginfig(
1)
%François Morellet - Oeuvre Pi piquant, 1=1°, 38 décimales
489 draw Tournerg("
\opList{élément
\opSimple{1} de
\opSousList{Pi
}}");
491 draw MettreVar("varpi","
\opSimple{2}");
492 draw RepeterJ1("
\opOp{\opVar{varpi
}\,$
\bm{>
}$\,
38}");
493 draw Si2("$
\opOp{\opVar{varpi
}\mbox{ modulo
}\opSimple{2}\,=\,
\opSimple{0}}$");
494 draw Tournerg("$
\opOp{\opSimple{180}}\bm{-
}\opList{élément
\opVar{varpi
} de
\opSousList{pi
}}$");
496 draw Tournerd("$
\opOp{\opSimple{180}}-
\opList{élément
\opVar{varpi
} de
\opSousList{pi
}}$");
499 draw AjouterVar("varpi","
\opSimple{1}");
500 draw FinBlocRepeter1(
10);
505 \lstinputlisting[inputencoding=utf8/
latin1,frame=tb
]{Morellet.txt
}
508 \subsection{Une
\og spirale
\fg}
511 \begin{minipage
}{0.4\linewidth}
512 \
[\includegraphics[scale=
0.8]{ex-tice74.1
}\
]
513 {\tiny Source :
\url{http://www.ac-grenoble.fr/tice74/spip.php?article1219
}}
516 \begin{minipage
}{0.55\linewidth}
517 \begin{lstlisting
}[frame=tb
]
524 draw MettreVar("i",
1);
525 draw RepeterJ1("
\opOp{$
\opVar{i
}\bm{=
}%
527 draw Avancer("
\opVar{i
}");
528 draw AjouterVar("i",
1);
530 draw FinBlocRepeter1(
10);
534 \caption{Figure géométrique - Code Scratch
}
537 \
[\includegraphics[scale=
1]{ex-tice74-scratch
.1}\
]
539 \subsection{Triangle de Sierpinski
}
542 \includegraphics[scale=
0.5]{Ex-Serpinski
.1}\par
543 \includegraphics{Ex-Serpinski-scratch
.1}
544 \caption{Triangle de Sierpinski - Code Scratch et
\MP}
547 %\begin{lstlisting}[frame=tb]
548 \begin{filecontents*
}{Sierpinski.txt
}
549 beginfig(
1);
%https://sites.google.com/site/stjomaths/scratch
551 draw Aller(-
200,-
150);
555 draw Demander("
\opSimple{rang ?
}");
556 draw MettreVar("rang","
\opCap{réponse
}");
557 draw Demander("
\opSimple{dimension du motif ?
}");
558 draw MettreVar("rang","
\opCap{réponse
}");
559 draw Bloc("Sierpinski
\opBloc{rang
} \opBloc{triangles
}");
561 draw NouveauBloc("Sierpinski
\opBloc{rang
} \opBloc{triangles
}");
562 draw Si1("
\opOp{non $
\opBloc{rang
}\bm{=
}0$
}");
564 draw Bloc("Sierpinski
\opOp{$
\opBloc{rang
}\bm{-
}\opSimple{1}$
}%
565 \opOp{$
\opBloc{triangles
}\,
\bm{/
}\,
\opSimple{2}$
}");
566 draw Avancer("
\opBloc{triangles
}");
568 draw FinBlocRepeter2(
10);
574 \lstinputlisting[inputencoding=utf8/
latin1,frame=tb
]{Sierpinski.txt
}
579 \item[21/
01/
2017] {\bfseries Version
0.5} - Publication sur
\url{www.melusine.eu.org/syracuse/
}
580 \item[19/
01/
2017] {\bfseries Version
0.32} - Ajout d'éléments de présentation ($
\blacktriangledown$).
581 \item[18/
01/
2017] {\bfseries Version
0.31} - Ajout du groupe
{\sffamily Son
}.
582 \item[15/
01/
2017] {\bfseries Version
0.3} - Modification du code. Conception de la documentation.
583 \item[08/
01/
2017] {\bfseries Version
0.2} - Ajout des commandes des groupes
{\sffamily Données
} et
{\sffamily Capteurs
}.
584 \item[06/
01/
2017] {\bfseries Version
0.15} - Ajout des commandes du groupe
{\sffamily Ajouter blocs
}.
585 \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
}.