Warning, /education/kturtle/po/fr/docs/kturtle/programming-reference.docbook is written in an unsupported language. File is not indexed.

0001 <chapter id="reference">
0002 <title
0003 >Référence de programmation &turtlescript;</title>
0004 <para
0005 >Ceci est le chapitre de référence &turtlescript; de &kturtle;. La première section de ce chapitre donne quelques aspects de la <link linkend="grammar"
0006 >grammaire</link
0007 > des programmes en &turtlescript;. La deuxième section traite exclusivement des <link linkend="mathematical-operators"
0008 >opérateurs mathématiques</link
0009 >, des <link linkend="boolean-operators"
0010 >opérateurs booléens (vrai / faux)</link
0011 > et des <link linkend="comparing-operators"
0012 >opérateurs de comparaison</link
0013 >. La troisième partie est une énorme liste de toutes les <link linkend="commands"
0014 >commandes</link
0015 >, expliquées une par une. La section quatre explique comment <link linkend="assignment-of-variables"
0016 >assigner</link
0017 > des valeurs aux <link linkend="assignment-of-variables"
0018 >variables</link
0019 >. Enfin, nous expliquons comment arranger l'exécution des commandes avec les <link linkend="controlling-execution"
0020 >instructions de contrôle d'exécution</link
0021 > dans la section cinq, et comment créer vos propres commandes avec <link linkend="learn"
0022 >apprends</link
0023 > dans la section six.</para>
0024 
0025 <sect1 id="grammar">
0026 <title
0027 >La grammaire de &turtlescript;</title>
0028 <para
0029 >Comme tout langage, &turtlescript; dispose de différents types de mots et de symboles. En français, nous distinguons les verbes (comme « marcher » ou « chanter »), et les noms (comme « sœur » ou « maison »), ils sont utilisés pour différents objectifs. &turtlescript; est un langage de programmation, il est utilisé pour indiquer à &kturtle; ce qu'il faut faire.</para>
0030 <para
0031 >Dans cette section, certains types de mots et symboles de &turtlescript; sont expliqués brièvement. Nous expliquons les <link linkend="comment"
0032 >commentaires</link
0033 >, les <link linkend="command"
0034 >commandes</link
0035 > et les trois différents types de littéraux : les <link linkend="number"
0036 >nombres</link
0037 >, les <link linkend="string"
0038 >chaînes</link
0039 > et les <link linkend="boolean-value"
0040 >booléens (vrai / faux)</link
0041 >.</para>
0042 
0043 
0044 <sect2 id="comment">
0045 <title
0046 >Commentaires</title>
0047 <para
0048 >Un programme est constitué d'instructions qui sont exécutées lorsque le programme est lancé, et de commentaires. Les commentaires ne sont pas exécutés. &kturtle; les ignore simplement lors que votre programme est exécuté. Ils sont là pour aider les autres programmeurs à mieux comprendre votre programme. Tout ce qui suit le symbole <userinput
0049 >#</userinput
0050 > est considéré comme un commentaire en &turtlescript;. Par exemple, ce petit programme ne fait rien : <screen>
0051 # ce petit programme ne fait rien, c'est juste un commentaire !
0052 </screen
0053 > C'est un peu inutile, mais ça explique bien les choses.</para>
0054 <para
0055 >Les commentaires sont très utiles lorsque le programme devient un peu plus complexe. Il peut aider à donner des conseils aux autres programmeurs. Dans le programme suivant, vous pouvez voir l'utilisation des commentaires avec la commande <link linkend="print"
0056 >print</link
0057 >. <screen>
0058 # Ce programme a été écrit par Cies Breijs.
0059 écris "ce texte sera affiché sur le canevas"
0060 # la ligne précédente n'est pas un commentaire, mais la ligne suivante en est un :
0061 # écris "ce texte ne sera pas affiché : "
0062 </screen
0063 > La première ligne décrit le programme. La deuxième est exécutée par &kturtle; et écrit <userinput
0064 >Ce texte sera affiché sur le canevas</userinput
0065 > sur le canevas. La troisième ligne est un commentaire. Et la quatrième ligne est un commentaire qui contient un morceau de &turtlescript;. Si le symbole <userinput
0066 >#</userinput
0067 > était enlevé dans la quatrième ligne, l'instruction écris serait exécutée par &kturtle;. Les programmeurs disent que l'instruction écris dans la quatrième ligne est « commentée ».</para>
0068 <para
0069 >Les lignes commentées sont <glossterm
0070 >surlignées</glossterm
0071 > en gris clair dans <link linkend="the-editor"
0072 >l'éditeur de code</link
0073 >.</para>
0074 </sect2>
0075 
0076 <sect2 id="command">
0077 <title
0078 >Commandes</title>
0079 <para
0080 >À l'aide des commandes, vous dites à la tortue ou à &kturtle; de faire quelque chose. Certaines commandent nécessitent un paramètre, d'autres donnent une sortie. <screen>
0081 # avance est une commande qui nécessite un paramètre, dans ce cas le nombre 100 :
0082 avance 100
0083 </screen
0084 > La première ligne est un <link linkend="comment"
0085 >commentaire</link
0086 >. La seconde ligne contient la commande <userinput
0087 >avance</userinput
0088 > et le <link linkend="number"
0089 >nombre</link
0090 > <userinput
0091 >100</userinput
0092 >. Le nombre ne fait pas partie de la commande, mais est considéré comme un « paramètre  » de la commande.</para>
0093 <para
0094 >Certaines commandes comme par exemple <userinput
0095 >va</userinput
0096 > nécessitent plus d'un paramètre en entrée. Plusieurs valeurs doivent être séparées un utilisant le caractère <userinput
0097 >,</userinput
0098 > (virgule).</para>
0099 <para
0100 >Pour une étude détaillée de toutes les commandes gérées par &kturtle;, allez <link linkend="commands"
0101 >ici</link
0102 >. Les commandes internes sont <glossterm
0103 >surlignées</glossterm
0104 > en bleu foncé.</para>
0105 </sect2>
0106 
0107 <sect2 id="number">
0108 <title
0109 >Nombres</title>
0110 <para
0111 >Vous savez probablement certaines choses sur les nombres. La façon dont ils sont utilisés dans &kturtle; n'est pas très différente de la façon dont on les utilise dans le langage parlé, ou avec les mathématiques. </para>
0112 <para
0113 >Nous avons les nombres appelés nombre naturels : <userinput
0114 >0</userinput
0115 >, <userinput
0116 >1</userinput
0117 >, <userinput
0118 >2</userinput
0119 >, <userinput
0120 >3</userinput
0121 >, <userinput
0122 >4</userinput
0123 >, <userinput
0124 >5</userinput
0125 >, etc. Les nombres négatifs : <userinput
0126 >-1</userinput
0127 >, <userinput
0128 >-2</userinput
0129 >, <userinput
0130 >-3</userinput
0131 >, etc. Enfin les nombres décimaux, où nombres à virgule, par exemple : <userinput
0132 >0.1</userinput
0133 >, <userinput
0134 >3.14</userinput
0135 >, <userinput
0136 >33.3333</userinput
0137 >, <userinput
0138 >-5.05</userinput
0139 >, <userinput
0140 >-1.0</userinput
0141 >. Le caractère <userinput
0142 >.</userinput
0143 > (point) est utilisé comme séparateur décimal. </para>
0144 <para
0145 >Les nombres peuvent être utilisés dans des <link linkend="mathematical-operators"
0146 >opérateurs mathématiques</link
0147 > et dans des <link linkend="comparing-operators"
0148 >opérateurs de comparaison</link
0149 >. Ils peuvent également être placés dans des <link linkend="assignment-of-variables"
0150 >variables</link
0151 >. Les nombres sont <glossterm
0152 >surlignés</glossterm
0153 > en rouge foncé.</para>
0154 </sect2>
0155 
0156 <!-- constants like pi? -->
0157 
0158 <sect2 id="string">
0159 <title
0160 >Chaînes</title>
0161 <para
0162 >Tout d'abord un exemple : <screen>
0163 écris "Bonjour, je suis une chaîne."
0164 </screen
0165 > Dans cet exemple, <userinput
0166 >écris</userinput
0167 > est une commande et <userinput
0168 >Bonjour, je suis une chaîne.</userinput
0169 > est une chaîne. Les chaînes commencent et se terminent par un symbole <userinput
0170 >"</userinput
0171 >. Grâce à ces symboles, &kturtle; sait qu'il s'agit d'une chaîne.</para>
0172 <para
0173 >Les chaînes peuvent être placées dans des <link linkend="assignment-of-variables"
0174 >variables</link
0175 >, tout comme les <link linkend="number"
0176 >nombres</link
0177 >. Cependant, contrairement aux nombres, les chaînes ne peuvent pas être utilisées avec les <link linkend="mathematical-operators"
0178 >opérateurs mathématiques</link
0179 > ou avec les <link linkend="comparing-operators"
0180 >opérateurs de comparaison</link
0181 >. Les chaînes sont <glossterm
0182 >surlignées</glossterm
0183 > en rouge.</para>
0184 </sect2>
0185 
0186 <sect2 id="boolean-value">
0187 <title
0188 >Les valeurs booléennes (vrai / faux)</title>
0189 <para
0190 >Il y a deux types de valeurs booléennes : <userinput
0191 >vrai</userinput
0192 > et <userinput
0193 >faux</userinput
0194 >. Parfois on les appelle également on et off, oui et non, un et zéro. Mais en &turtlescript;, on les appelle toujours <userinput
0195 >vrai</userinput
0196 > et <userinput
0197 >faux</userinput
0198 >. Regardez cet extrait de &turtlescript; : <screen>
0199 $a = vrai
0200 </screen
0201 > Si vous regardez dans l'inspecteur, vous verrez que la <link linkend="the-inspector"
0202 >variable</link
0203 > <link linkend="assignment-of-variables"
0204 >$a</link
0205 > est réglée sur <userinput
0206 >vrai</userinput
0207 >, et a le type booléen.</para>
0208 <para
0209 >Souvent, les valeurs booléennes sont le résultat d'un <link linkend="comparing-operators"
0210 >opérateur de comparaison</link
0211 >, comme dans le morceau de &turtlescript; suivant : <screen>
0212 $reponse = 10 &gt; 3
0213 </screen
0214 > La <link linkend="assignment-of-variables"
0215 >variable</link
0216 > <userinput
0217 >$reponse</userinput
0218 > est placée à <userinput
0219 >vrai</userinput
0220 > car <userinput
0221 >10</userinput
0222 > est plus grand que <userinput
0223 >3</userinput
0224 >.</para>
0225 <para
0226 >Les valeurs booléenne <userinput
0227 >vrai</userinput
0228 >et <userinput
0229 >faux</userinput
0230 > sont <glossterm
0231 >surlignées</glossterm
0232 > en rouge foncé.</para>
0233 </sect2>
0234 
0235 </sect1>
0236 
0237 
0238 
0239 <sect1 id="operators">
0240 <title
0241 >Les opérateurs mathématiques, booléens et de comparaison</title>
0242 <para
0243 >Le titre de cette section peut sembler compliqué, mais ça ne l'est pas autant que ça en a l'air.</para>
0244 
0245 <sect2 id="mathematical-operators">
0246 <title
0247 >Les opérateurs mathématiques</title>
0248 <para
0249 >Il y a les symboles mathématiques de base connus comme : l'addition (<userinput
0250 >+</userinput
0251 >), la soustraction (<userinput
0252 >-</userinput
0253 >), la multiplication (<userinput
0254 >*</userinput
0255 >), division (<userinput
0256 >/</userinput
0257 >) et la puissance (<userinput
0258 >^</userinput
0259 >).</para>
0260 
0261 <para
0262 >Voici un petit exemple sur les opérateurs mathématiques que vous pouvez utiliser dans &turtlescript; : <screen>
0263 $somme = 1 + 1
0264 $difference = 20 - 5
0265 $produit = 15 * 2
0266 $rapport = 30 / 30
0267 $puissance = 2 ^ 2
0268 </screen
0269 > Les valeurs résultant de ces opérateurs mathématiques sont <link linkend="assignment-of-variables"
0270 >assignées</link
0271 > aux différentes <link linkend="assignment-of-variables"
0272 >variables</link
0273 >. En utilisant l'<link linkend="the-inspector"
0274 >inspecteur</link
0275 >, vous pouvez voir ces valeurs.</para>
0276 <para
0277 >Si vous voulez faire simplement un calcul, vous pouvez le faire de la façon suivante : <screen
0278 >écris 2010-12
0279 </screen
0280 ></para>
0281 <para
0282 >Voici maintenant un exemple avec des parenthèses : <screen>
0283 écris ( ( 20 - 5 ) * 2 / 30 ) + 1
0284 </screen
0285 > Les expressions dans les parenthèses vont être calculées les premières. Dans cet exemple, 20-5 sera calculé, puis multiplié par 2, divisé par 30, puis 1 est ajouté (ce qui donne 2). Les parenthèses peuvent également être utilisées dans d'autres cas.</para>
0286 <para
0287 >&kturtle; dispose également de caractéristiques mathématiques plus avancées sous la forme de commandes. Jetez un œil aux commandes suivantes, mais gardez à l'esprit qu'il s'agit d'opérations avancées : <link linkend="round"
0288 >arrondi</link
0289 >, <link linkend="random"
0290 >hasard</link
0291 >, <link linkend="sqrt"
0292 >racine</link
0293 >, <link linkend="pi"
0294 >pi</link
0295 >, <link linkend="sin"
0296 >sin</link
0297 >, <link linkend="cos"
0298 >cos</link
0299 >, <link linkend="tan"
0300 >tan</link
0301 >, <link linkend="arcsin"
0302 >arcsin</link
0303 >, <link linkend="arccos"
0304 >arccos</link
0305 >, <link linkend="arctan"
0306 >arctan</link
0307 >.</para>
0308 </sect2>
0309 
0310 <sect2 id="boolean-operators">
0311 <title
0312 >Opérateurs booléens (vrai / faux)</title>
0313 <para
0314 >Tandis que les <link linkend="mathematical-operators"
0315 >opérateurs mathématiques</link
0316 > travaillent avec des <link linkend="number"
0317 >nombres</link
0318 >, les opérateurs booléens travaillent avec des <link linkend="boolean-value"
0319 >valeurs booléennes</link
0320 > (<userinput
0321 >vrai</userinput
0322 > et <userinput
0323 >faux</userinput
0324 >). Il y a seulement trois opérateurs booléens : <userinput
0325 >et</userinput
0326 >, <userinput
0327 >ou</userinput
0328 > et <userinput
0329 >non</userinput
0330 >. Le morceau de &turtlescript; suivant montre comment les utiliser :  <screen>
0331 $et_1_1 = vrai et vrai    # -> vrai
0332 $et_1_0 = vrai et faux   # -> faux
0333 $et_0_1 = faux et vrai   # -> faux
0334 $et_0_0 = faux et faux  # -> faux
0335 
0336 $ou_1_1 = vrai ou vrai    # -> vrai
0337 $ou_1_0 = vrai ou faux   # -> vrai
0338 $ou_0_1 = faux ou vrai   # -> vrai
0339 $ou_0_0 = faux ou faux  # -> faux
0340 
0341 $non_1 = non vrai   # -> faux
0342 $non_0 = non vrai   # -> vrai
0343 </screen
0344 > En utilisant l'<link linkend="the-inspector"
0345 >inspecteur</link
0346 >, vous pouvez voir les valeurs, bien que nous fournissons ces résultats en petits commentaires à la fin de chaque ligne. <userinput
0347 >et</userinput
0348 > ne vaut <userinput
0349 >vrai</userinput
0350 > seulement si les deux côtés sont <userinput
0351 >vrais</userinput
0352 >. <userinput
0353 >ou</userinput
0354 > vaut <userinput
0355 >vrai</userinput
0356 > si l'un des deux côtés est <userinput
0357 >vrai</userinput
0358 >. Et <userinput
0359 >non</userinput
0360 > passe <userinput
0361 >vrai</userinput
0362 >en <userinput
0363 >faux</userinput
0364 >, et <userinput
0365 >faux</userinput
0366 > en <userinput
0367 >vrai</userinput
0368 >.</para>
0369 <para
0370 >Les opérateurs booléens sont <glossterm
0371 >surlignés</glossterm
0372 > en rose.</para>
0373 
0374 <sect3 id="boolean-operators-advanced-examples">
0375 <title
0376 >Quelques exemples plus complexes</title>
0377 <para
0378 >Considérons l'exemple suivant avec <userinput
0379 >et</userinput
0380 > : <screen>
0381 $a = 1
0382 $b = 5
0383 si (($a &lt; 10) et ($b == 5)) et ($a &lt; $b) {
0384   écris "bonjour"
0385 }
0386 </screen
0387 > Dans ce morceau de &turtlescript;, le résultat de trois <link linkend="comparing-operators"
0388 >opérateurs de comparaison</link
0389 > sont fusionnés en utilisant des opérateurs <userinput
0390 >et</userinput
0391 >. Ceci signifie que les trois opérateurs doivent donner vrai pour que le texte « bonjour » soit affiché.</para>
0392 
0393 <para
0394 >Un exemple avec <userinput
0395 >ou</userinput
0396 > : <screen>
0397 $n = 1
0398 si ($n &lt; 10) ou ($n == 2) {
0399   écris "bonjour"
0400 }
0401 </screen
0402 > Dans ce morceau de &turtlescript;, la partie gauche du <userinput
0403 >ou</userinput
0404 > donne « vrai », la partie droite donne « faux ». Comme un des deux côtés de l'opérateur <userinput
0405 >ou</userinput
0406 > est « vrai », l'opérateur <userinput
0407 >ou</userinput
0408 > vaut « vrai ». Ceci signifie que « bonjour » sera affiché.</para>
0409 
0410 <para
0411 >Et pour terminer un exemple avec <userinput
0412 >non</userinput
0413 >, qui change « vrai » en « faux » et « faux » en « vrai ». Regardez : <screen
0414 >$n = 1
0415 si non ($n == 3) {
0416   écris "bonjour"
0417 } sinon {
0418   écris "pas bonjour ;-)"
0419 }
0420 </screen
0421 ></para>
0422 </sect3>
0423 </sect2>
0424 
0425 <sect2 id="comparing-operators">
0426 <title
0427 >Opérateurs de comparaison</title>
0428 <para
0429 >Considérons cette comparaison simple : <screen>
0430 $reponse = 10 &gt; 
0431 </screen
0432 > Ici, <userinput
0433 >10</userinput
0434 > est comparé à <userinput
0435 >trois</userinput
0436 > avec l'opérateur « plus grand que ». le résultat de cette comparaison, la <link linkend="boolean-value"
0437 >valeur booléenne</link
0438 > <userinput
0439 >vrai</userinput
0440 > est stockée dans la <link linkend="assignment-of-variables"
0441 >variable</link
0442 > <userinput
0443 >$reponse</userinput
0444 >.</para>
0445 <para
0446 >Tous les <link linkend="number"
0447 >nombres</link
0448 > et <link linkend="assignment-of-variables"
0449 >variables</link
0450 > (qui contiennent des nombres) peuvent être comparés entre eux avec les opérateurs de comparaison.</para>
0451 <para
0452 >Voici tous les opérateurs de comparaison possibles : <table
0453 > <title
0454 >Type de question</title
0455 > <tgroup cols="3"
0456 > <tbody
0457 > <row
0458 > <entry
0459 ><userinput
0460 >$A == $B</userinput
0461 ></entry
0462 > <entry
0463 >égal</entry
0464 > <entry
0465 >la réponse est <quote
0466 >vrai</quote
0467 > si <userinput
0468 >$A</userinput
0469 > est égal à <userinput
0470 >$B</userinput
0471 ></entry
0472 > </row
0473 > <row
0474 > <entry
0475 ><userinput
0476 >$A != $B</userinput
0477 ></entry
0478 > <entry
0479 >non égal</entry
0480 > <entry
0481 >la réponse est <quote
0482 >vrai</quote
0483 > si <userinput
0484 >$A</userinput
0485 > n'est pas égal à <userinput
0486 >$B</userinput
0487 ></entry
0488 > </row
0489 > <row
0490 > <entry
0491 ><userinput
0492 >$A &gt; $B</userinput
0493 ></entry
0494 > <entry
0495 >plus grand que</entry
0496 > <entry
0497 >la réponse est <quote
0498 >vrai</quote
0499 > si <userinput
0500 >$A</userinput
0501 > est plus grand que <userinput
0502 >$B</userinput
0503 ></entry
0504 > </row
0505 > <row
0506 > <entry
0507 ><userinput
0508 >$A &lt; $B</userinput
0509 ></entry
0510 > <entry
0511 >plus petit que</entry
0512 > <entry
0513 >la réponse est <quote
0514 >vrai</quote
0515 > si <userinput
0516 >$A</userinput
0517 > est plus petit que <userinput
0518 >$B</userinput
0519 ></entry
0520 > </row
0521 > <row
0522 > <entry
0523 ><userinput
0524 >$A &gt;=$ B</userinput
0525 ></entry
0526 > <entry
0527 >supérieur ou égal</entry
0528 > <entry
0529 >la réponse est <quote
0530 >vrai</quote
0531 > si <userinput
0532 >$A</userinput
0533 > est plus grand ou égal à <userinput
0534 >$B</userinput
0535 ></entry
0536 > </row
0537 > <row
0538 > <entry
0539 ><userinput
0540 >$A &lt;= $B</userinput
0541 ></entry
0542 > <entry
0543 >inférieur ou égal</entry
0544 > <entry
0545 >la réponse est <quote
0546 >vrai</quote
0547 > si <userinput
0548 >$A</userinput
0549 > est plus petit ou égal à <userinput
0550 >$B</userinput
0551 ></entry
0552 > </row
0553 > </tbody
0554 > </tgroup
0555 > </table
0556 > Notes que $A et $B doivent être des <link linkend="number"
0557 >nombres</link
0558 > ou des <link linkend="assignment-of-variables"
0559 >variables</link
0560 > qui contiennent ces nombres.</para>
0561 </sect2>
0562 
0563 
0564 </sect1>
0565 
0566 
0567 
0568 <sect1 id="commands">
0569 <title
0570 >Commandes</title>
0571 <para
0572 >En utilisant les commandes, vous dites à la tortue ou à &kturtle; de faire quelque chose. Certaines commandes ont besoin d'une entrée, d'autres donnent une sortie. Dans cette section, nous expliquons toutes les commandes internes de &kturtle;. Vous pouvez également créer vos propres commandes avec <link linkend="learn"
0573 >apprends</link
0574 >. Les commandes internes discutées ici sont <glossterm
0575 >surlignées</glossterm
0576 > en bleu foncé.</para>
0577 
0578 <sect2 id="moving-the-turtle">
0579 <title
0580 >Déplacer la tortue</title>
0581 <para
0582 >Il y a plusieurs commandes qui déplacent la tortue sur l'écran.</para>
0583 
0584   <variablelist>
0585     <anchor id="forward"/>
0586     <varlistentry
0587 > 
0588       <term
0589 >avance (av)<indexterm
0590 ><primary
0591 >avance (av)</primary
0592 ></indexterm
0593 ></term>
0594       <listitem
0595 ><para
0596 ><screen
0597 >avance X</screen>
0598 <userinput
0599 >avance</userinput
0600 > fait avancer la tortue sur l'écran de X pixels. Lorsque le crayon est baissé, la tortue laisse une trace (dessine une ligne). <userinput
0601 >avance</userinput
0602 > peut se contracter en <userinput
0603 >av</userinput
0604 ></para
0605 ></listitem>
0606     </varlistentry>
0607   </variablelist>
0608   <variablelist>
0609     <anchor id="backward"/>
0610     <varlistentry
0611 >  
0612       <term
0613 >recule (re)<indexterm
0614 ><primary
0615 >recule (re)</primary
0616 ></indexterm
0617 ></term>
0618       <listitem
0619 ><para
0620 ><screen
0621 >recule X</screen>
0622 <userinput
0623 >recule</userinput
0624 > fait reculer la tortue sur l'écran de X pixels. Lorsque le crayon est baissé, la tortue laisse une trace (dessine une ligne). <userinput
0625 >recule</userinput
0626 > peut se contracter en <userinput
0627 >re</userinput
0628 >.</para
0629 ></listitem>
0630     </varlistentry>
0631   </variablelist>
0632   <variablelist>
0633     <anchor id="turnleft"/>
0634     <varlistentry
0635 > 
0636       <term
0637 >tournegauche (tg)<indexterm
0638 ><primary
0639 >tournegauche (tg)</primary
0640 ></indexterm
0641 ></term>
0642       <listitem
0643 ><para
0644 ><screen
0645 >tournegauche X</screen>
0646 <userinput
0647 >tournegauche</userinput
0648 > dit à la tortue de se tourner vers la gauche de X degrés. <userinput
0649 >tournegauche</userinput
0650 > peut se contracter en <userinput
0651 >tg</userinput
0652 >.</para
0653 ></listitem>
0654     </varlistentry>
0655   </variablelist>
0656   <variablelist>
0657     <anchor id="turnright"/>
0658     <varlistentry
0659 > 
0660       <term
0661 >tournedroite (td)<indexterm
0662 ><primary
0663 >tournedroite (td)</primary
0664 ></indexterm
0665 ></term>
0666       <listitem
0667 ><para
0668 ><screen
0669 >tournedroite X</screen>
0670 <userinput
0671 >tournedroite</userinput
0672 > dit à la tortue de se tourner vers la droite de X degrés. <userinput
0673 >tournedroite</userinput
0674 > peut se contracter en <userinput
0675 >td</userinput
0676 >.</para
0677 ></listitem>
0678     </varlistentry>
0679   </variablelist>
0680   <variablelist>
0681     <anchor id="direction"/>
0682     <varlistentry
0683 > 
0684       <term
0685 >direction (dir)<indexterm
0686 ><primary
0687 >direction (dir)</primary
0688 ></indexterm
0689 ></term>
0690       <listitem
0691 ><para
0692 ><screen
0693 >direction X</screen>
0694 <userinput
0695 >direction</userinput
0696 > fixe la direction de la tortue de X degrés en comptant de zéro, et donc ne dépend pas de la position et de la direction précédentes de la tortue. <userinput
0697 >direction</userinput
0698 > peut se contracter en <userinput
0699 >dir</userinput
0700 >.</para
0701 ></listitem>
0702     </varlistentry>
0703   </variablelist>
0704   <variablelist>
0705     <anchor id="getdirection"/>
0706     <varlistentry
0707 > 
0708       <term
0709 >obtenirdirection<indexterm
0710 ><primary
0711 >obtenirdirection</primary
0712 ></indexterm
0713 ></term>
0714       <listitem
0715 ><para
0716 ><screen
0717 >obtenirdirection</screen>
0718 <userinput
0719 >obtenirdirection</userinput
0720 > renvoie la direction de la tortue en degrés en partant de zéro, où zéro correspond à la tortue pointant vers le haut.</para
0721 ></listitem>
0722     </varlistentry>
0723   </variablelist>
0724   <variablelist>
0725     <anchor id="center"/>
0726     <varlistentry
0727 > 
0728       <term
0729 >centre<indexterm
0730 ><primary
0731 >centre</primary
0732 ></indexterm
0733 ></term>
0734       <listitem
0735 ><para
0736 ><screen
0737 >centre</screen>
0738 <userinput
0739 >centre</userinput
0740 > déplace la tortue au centre du canevas.</para
0741 ></listitem>
0742     </varlistentry>
0743   </variablelist>
0744   <variablelist>
0745     <anchor id="go"/>
0746     <varlistentry
0747 > 
0748       <term
0749 >va<indexterm
0750 ><primary
0751 >va</primary
0752 ></indexterm
0753 ></term>
0754       <listitem
0755 ><para
0756 ><screen
0757 >va X,Y</screen>
0758 <userinput
0759 >va</userinput
0760 > commande à la tortue d'aller à un certain endroit sur le canevas. Cet endroit est à X <glossterm linkend="pixels"
0761 >pixels</glossterm
0762 > depuis la gauche du canevas et à Y <glossterm linkend="pixels"
0763 >pixels</glossterm
0764 > depuis le haut du canevas.</para
0765 ></listitem>
0766     </varlistentry>
0767   </variablelist>
0768   <variablelist>
0769     <anchor id="gox"/>
0770     <varlistentry
0771 > 
0772       <term
0773 >vax<indexterm
0774 ><primary
0775 >vax (vx)</primary
0776 ></indexterm
0777 ></term>
0778       <listitem
0779 ><para
0780 ><screen
0781 >vax X</screen>
0782 <userinput
0783 >vax</userinput
0784 > : en utilisant cette commande, la tortue va se déplacer de X <glossterm linkend="pixels"
0785 >pixels</glossterm
0786 > depuis la gauche du canevas tandis qu'elle restera à la même hauteur. <userinput
0787 >vax</userinput
0788 > peut être abrégé en <userinput
0789 >vx</userinput
0790 >.</para
0791 ></listitem>
0792     </varlistentry>
0793   </variablelist>
0794   <variablelist>
0795     <anchor id="goy"/>
0796     <varlistentry
0797 > 
0798       <term
0799 >vay<indexterm
0800 ><primary
0801 >vay (vy)</primary
0802 ></indexterm
0803 ></term>
0804       <listitem
0805 ><para
0806 ><screen
0807 >vay Y</screen>
0808 <userinput
0809 >vay</userinput
0810 > : en utilisant cette commande, la tortue va se déplacer de Y <glossterm linkend="pixels"
0811 >pixels</glossterm
0812 > depuis le haut du canevas tandis qu'elle restera à la même distance de la bordure gauche du canevas. <userinput
0813 >vay</userinput
0814 > peut être abrégé en <userinput
0815 >vy</userinput
0816 >.</para
0817 ></listitem>
0818     </varlistentry>
0819   </variablelist>
0820   <note
0821 ><para
0822 >En utilisant les commandes <userinput
0823 >vas</userinput
0824 >, <userinput
0825 >vax</userinput
0826 >, <userinput
0827 >vay</userinput
0828 > et <userinput
0829 >centre</userinput
0830 > la tortue ne dessinera pas une ligne, peut importe si le crayon est levé ou baissé.</para>
0831   </note>
0832 </sect2>
0833 
0834 <sect2 id="locate-the-turtle">
0835 <title
0836 >Où est la tortue ?</title>
0837 <para
0838 >Il y a deux commandes qui donnent la position de la tortue sur l'écran.</para>
0839 
0840   <variablelist>
0841     <anchor id="getx"/>
0842     <varlistentry
0843 > 
0844       <term
0845 >positionx<indexterm
0846 ><primary
0847 >positionx</primary
0848 ></indexterm
0849 ></term>
0850       <listitem
0851 ><para
0852 ><userinput
0853 >positionx</userinput
0854 > retourne le nombre de pixels séparant la gauche du canevas de la position courante de la tortue.</para
0855 ></listitem>
0856     </varlistentry>
0857   </variablelist>
0858   <variablelist>
0859     <anchor id="gety"/>
0860     <varlistentry
0861 > 
0862       <term
0863 >positiony<indexterm
0864 ><primary
0865 >positiony</primary
0866 ></indexterm
0867 ></term>
0868       <listitem
0869 ><para
0870 ><userinput
0871 >positiony</userinput
0872 > retourne le nombre de pixels séparant le haut du canevas de la position courante de la tortue.</para
0873 ></listitem>
0874     </varlistentry>
0875   </variablelist>
0876 </sect2>
0877 
0878 <sect2 id="pen">
0879 <title
0880 >La tortue a un crayon</title>
0881 <para
0882 >La tortue a un crayon qui trace une ligne lorsqu'elle se déplace. Il y a peu de commandes pour contrôler le crayon. Nous expliquons ces commandes dans ce paragraphe.</para>
0883   <variablelist>
0884     <anchor id="penup"/>
0885     <varlistentry
0886 > 
0887       <term
0888 >lèvecrayon (lc)<indexterm
0889 ><primary
0890 >lèvecrayon (lc)</primary
0891 ></indexterm
0892 ></term>
0893       <listitem
0894 ><para
0895 ><screen
0896 >lèvecrayon</screen>
0897 <userinput
0898 >lèvecrayon</userinput
0899 > relève le crayon du canevas. Lorsque le crayon est <quote
0900 >levé</quote
0901 >, aucune ligne n'est tracée lorsque la tortue se déplace. Voir aussi <userinput
0902 >baissecrayon</userinput
0903 >. <userinput
0904 >lèvecrayon</userinput
0905 > peut se contracter en <userinput
0906 >lc</userinput
0907 >.</para
0908 ></listitem>
0909     </varlistentry>
0910   </variablelist>
0911   <variablelist>
0912     <anchor id="pendown"/>
0913     <varlistentry
0914 > 
0915       <term
0916 >baissecrayon (bc)<indexterm
0917 ><primary
0918 >baissecrayon (bc)</primary
0919 ></indexterm
0920 ></term>
0921       <listitem
0922 ><para
0923 ><screen
0924 >baissecrayon</screen>
0925 <userinput
0926 >baissecrayon</userinput
0927 > abaisse le crayon sur le canevas. Lorsque le crayon est <quote
0928 >baissé</quote
0929 > sur le canevas, une ligne est tracée lorsque la tortue se déplace. Voir aussi <userinput
0930 >lèvecrayon</userinput
0931 >. <userinput
0932 >baissecrayon</userinput
0933 > peut se contracter en <userinput
0934 >bc</userinput
0935 >.</para
0936 ></listitem>
0937     </varlistentry>
0938   </variablelist>
0939   <variablelist>
0940     <anchor id="setpenwidth"/>
0941     <varlistentry
0942 > 
0943       <term
0944 >largeurcrayon (lac)<indexterm
0945 ><primary
0946 >largeurcrayon (lac)</primary
0947 ></indexterm
0948 ></term>
0949       <listitem
0950 ><para
0951 ><screen
0952 >largeurcrayon X</screen>
0953 <userinput
0954 >largeurcrayon</userinput
0955 > fixe l'épaisseur (la largeur du trait) du crayon à X <glossterm linkend="pixels"
0956 >pixels</glossterm
0957 >. <userinput
0958 >largeurcrayon</userinput
0959 > peut se contracter en <userinput
0960 >lac</userinput
0961 >.</para
0962 ></listitem>
0963     </varlistentry>
0964   </variablelist>
0965   <variablelist>
0966     <anchor id="setfgcolor"/>
0967     <varlistentry
0968 > 
0969       <term
0970 >couleurcrayon (cc)<indexterm
0971 ><primary
0972 >couleurcrayon (cc)</primary
0973 ></indexterm
0974 ></term>
0975       <listitem
0976 ><para
0977 ><screen
0978 >couleurcrayon R, G, B</screen>
0979 <userinput
0980 >couleurcrayon</userinput
0981 > fixe la couleur du crayon. <userinput
0982 >couleurcrayon</userinput
0983 > demande une <glossterm linkend="rgb"
0984 >combinaison RVB</glossterm
0985 > comme entrée. <userinput
0986 >couleurcrayon</userinput
0987 > peut se contracter en <userinput
0988 >cc</userinput
0989 >.</para
0990 ></listitem>
0991     </varlistentry>
0992   </variablelist>
0993 </sect2>
0994 
0995 <sect2 id="canvas">
0996 <title
0997 >Commandes pour contrôler le canevas</title>
0998 <para
0999 >Voici les différentes commandes pour contrôler le canevas.</para>
1000   <variablelist>
1001     <anchor id="resizecanvas"/>
1002     <varlistentry>
1003       <term
1004 >taillecanevas (tc)<indexterm
1005 ><primary
1006 >taillecanevas (tc)</primary
1007 ></indexterm
1008 ></term>
1009       <listitem
1010 ><para
1011 ><screen
1012 >taillecanevas X, Y</screen>
1013 Avec la commande <userinput
1014 >taillecanevas</userinput
1015 >, vous pouvez fixer la taille du canevas. Elle reçoit X et Y comme entrée, où X est la nouvelle largeur du canevas en <glossterm linkend="pixels"
1016 >pixels</glossterm
1017 >, et Y est la nouvelle hauteur du canevas en <glossterm linkend="pixels"
1018 >pixels</glossterm
1019 >. <userinput
1020 >taillecanevas</userinput
1021 > peut se contracter en <userinput
1022 >tc</userinput
1023 >.</para
1024 ></listitem>
1025     </varlistentry>
1026   </variablelist>
1027   <variablelist>
1028     <anchor id="setbgcolor"/>
1029     <varlistentry
1030 > 
1031       <term
1032 >couleurcanevas (cca)<indexterm
1033 ><primary
1034 >couleurcanevas (cca)</primary
1035 ></indexterm
1036 ></term>
1037       <listitem
1038 ><para
1039 ><screen
1040 >couleurcanevas R, G, B</screen>
1041 <userinput
1042 >couleurcanevas</userinput
1043 > fixe la couleur du canevas. <userinput
1044 >couleurcanevas</userinput
1045 > reçoit une <glossterm linkend="rgb"
1046 >combinaison RVB</glossterm
1047 > comme entrée. <userinput
1048 >couleurcanevas</userinput
1049 > peut se contracter en <userinput
1050 >cca</userinput
1051 >.</para
1052 ></listitem>
1053     </varlistentry>
1054   </variablelist>
1055 </sect2>
1056 
1057 <sect2 id="clean">
1058 <title
1059 >Commandes pour nettoyer</title>
1060 <para
1061 >Il existe deux commandes pour nettoyer le canevas après avoir mis le désordre.</para>
1062   <variablelist>
1063     <anchor id="clear"/>
1064     <varlistentry
1065 > 
1066       <term
1067 >nettoietout (ntt)<indexterm
1068 ><primary
1069 >nettoietout (ntt)</primary
1070 ></indexterm
1071 ></term>
1072       <listitem
1073 ><para
1074 ><screen
1075 >nettoietout</screen>
1076 Avec <userinput
1077 >nettoietout</userinput
1078 >, vous pouvez nettoyer tous les dessins sur le canevas. Toutes les autres choses restent : la position et l'angle de la tortue, la couleur du canevas, la visibilité de la tortue et la taille du canevas.</para
1079 ></listitem>
1080     </varlistentry>
1081   </variablelist>
1082   <variablelist>
1083     <anchor id="reset"/>
1084     <varlistentry
1085 > 
1086       <term
1087 >initialise<indexterm
1088 ><primary
1089 >initialise</primary
1090 ></indexterm
1091 ></term>
1092       <listitem
1093 ><para
1094 ><screen
1095 >initialise</screen>
1096 <userinput
1097 >initialise</userinput
1098 > nettoie beaucoup plus profondément que la commande <userinput
1099 >nettoietout</userinput
1100 >. Après la commande <userinput
1101 >initialise</userinput
1102 >, tout redevient comme lorsque vous avez lancé &kturtle;. La tortue se place au milieu de l'écran, la couleur du canevas est blanche, la tortue trace une ligne noire sur le canevas et taillecanevas est défini à 400 x 400 pixels.</para
1103 ></listitem>
1104     </varlistentry>
1105   </variablelist>
1106 </sect2>
1107 
1108 <sect2 id="sprites">
1109 <title
1110 >La tortue est un lutin (<foreignphrase
1111 >sprite</foreignphrase
1112 >)</title>
1113 <para
1114 >La plupart des personnes ne savent pas ce qu'un lutin (<foreignphrase
1115 >sprite</foreignphrase
1116 >) est, voici donc une courte explication : les lutins sont de petites images qui peuvent se déplacer sur l'écran. (pour plus d'information, voir le glossaire sur <glossterm linkend="sprites"
1117 >lutins</glossterm
1118 >). Donc la tortue est un lutin ! </para>
1119 <para
1120 >Ce qui suit est un aperçu des commandes relatives aux lutins.</para>
1121 <para
1122 >[La version actuelle de &kturtle; ne gère pas encore l'utilisation des lutins autres que la tortue. Dans des versions futures vous pourrez remplacer la tortue par quelque chose de votre propre conception ! ]</para>
1123   <variablelist>
1124     <anchor id="spriteshow"/>
1125     <varlistentry
1126 > 
1127       <term
1128 >montre (mo)<indexterm
1129 ><primary
1130 >montre (mo)</primary
1131 ></indexterm
1132 ></term>
1133       <listitem
1134 ><para
1135 ><screen
1136 >montre</screen>
1137 <userinput
1138 >montre</userinput
1139 > rend de nouveau la tortue visible après avoir été cachée.<userinput
1140 >montre</userinput
1141 > peut être abrégé par <userinput
1142 >mo</userinput
1143 >.</para
1144 ></listitem>
1145     </varlistentry>
1146   </variablelist>
1147   <variablelist>
1148     <anchor id="spritehide"/>
1149     <varlistentry
1150 > 
1151       <term
1152 >cache (ca)<indexterm
1153 ><primary
1154 >cache (ca)</primary
1155 ></indexterm
1156 ></term>
1157       <listitem
1158 ><para
1159 ><screen
1160 >cache</screen>
1161 <userinput
1162 >cache</userinput
1163 > cache la tortue. Ceci peut être utilisé si la tortue ne s'adapte pas à votre dessin. <userinput
1164 >cache</userinput
1165 > peut se contracter en <userinput
1166 >ca</userinput
1167 >.</para
1168 ></listitem>
1169     </varlistentry>
1170   </variablelist>
1171 </sect2>
1172 
1173 <sect2 id="writing">
1174 <title
1175 >La tortue peut-elle écrire du texte ?</title>
1176 <para
1177 >La réponse est : <quote
1178 >oui</quote
1179 >. La tortue peut écrire, elle écrit tout ce que vous lui commander d'écrire.</para>
1180   <variablelist>
1181     <anchor id="print"/>
1182     <varlistentry
1183 > 
1184       <term
1185 >écris<indexterm
1186 ><primary
1187 >écris</primary
1188 ></indexterm
1189 ></term>
1190       <listitem
1191 ><para
1192 ><screen
1193 >écris X</screen>
1194 La commande <userinput
1195 >écris</userinput
1196 > est utilisée pour commander à la tortue d'écrire quelque chose sur le canevas. <userinput
1197 >écris</userinput
1198 > reçoit des nombres et des chaînes de caractères comme entrée. Vous pouvez utiliser <userinput
1199 >écris</userinput
1200 > pour écrire plusieurs nombres et chaînes en utilisant le symbole <quote
1201 >+</quote
1202 >. Voici un petit exemple : <screen
1203 >$année = 2003
1204 $auteur = "Cies"
1205 écris $auteur + " a commencé de projet KTurtle en" + $année + "et prend
1206  toujours du plaisir à travailler dessus ! "
1207 </screen>
1208       </para
1209 ></listitem>
1210     </varlistentry>
1211   </variablelist>
1212   <variablelist>
1213     <anchor id="fontsize"/>
1214     <varlistentry
1215 > 
1216       <term
1217 >taillepolice<indexterm
1218 ><primary
1219 >taillepolice</primary
1220 ></indexterm
1221 ></term>
1222       <listitem
1223 ><para
1224 ><screen
1225 >taillepolice X</screen>
1226 <userinput
1227 >taillepolice</userinput
1228 > fixe la taille de la police qui est utilisée par la commande <userinput
1229 >écris</userinput
1230 >. <userinput
1231 >taillepolice</userinput
1232 > reçoit une entrée qui doit être un nombre. La taille est fixée en <glossterm linkend="pixels"
1233 >pixels</glossterm
1234 >.</para
1235 ></listitem>
1236     </varlistentry>
1237   </variablelist>
1238 </sect2>
1239 
1240 <sect2 id="math-commands">
1241 <title
1242 >Commandes mathématiques</title>
1243 <para
1244 >Les commandes suivantes sont des commandes mathématiques de &kturtle; plus avancées.</para>
1245   <variablelist>
1246     <anchor id="round"/>
1247     <varlistentry>
1248       <term
1249 >arrondi<indexterm
1250 ><primary
1251 >arrondi</primary
1252 ></indexterm
1253 ></term>
1254       <listitem
1255 ><para
1256 ><screen
1257 >arrondi(x)</screen>
1258 <userinput
1259 >arrondi</userinput
1260 > le nombre donné à l'entier le plus proche. <screen>
1261 écris arrondi(10.8)
1262 avance 20
1263 écris arrondi(10.3)
1264 </screen
1265 > Avec ce code, la tortue écrira les nombre 11 et 10.</para
1266 ></listitem>
1267     </varlistentry>
1268   </variablelist>
1269   <variablelist>
1270     <anchor id="random"/>
1271     <varlistentry
1272 > 
1273       <term
1274 >hasard (hsd)<indexterm
1275 ><primary
1276 >hasard (hsd)</primary
1277 ></indexterm
1278 ></term>
1279       <listitem
1280 ><para
1281 ><screen
1282 >hasard X, Y</screen>
1283 <userinput
1284 >hasard</userinput
1285 > est une commande qui demande une entrée et qui vous donne une sortie. Comme entrée sont requis deux nombres, le premier (X) donne la sortie minimale, et le second (Y) fixe le maximum. La sortie est un nombre choisi au hasard qui est égal ou plus grand que le minimum et égal ou plus petit que le maximum. Voici un petit exemple : <screen>
1286  répète 500 [
1287   $x = hasard 1, 20
1288   avance $x
1289   tournedroite 10 - $x
1290 ]
1291 </screen
1292 > En utilisant la commande <userinput
1293 >hasard</userinput
1294 >, vous pouvez ajouter un peu de chaos dans votre programme.</para
1295 ></listitem>
1296     </varlistentry>
1297   </variablelist>
1298   <variablelist>
1299     <anchor id="mod"/>
1300     <varlistentry
1301 > 
1302       <term
1303 >mod<indexterm
1304 ><primary
1305 >mod</primary
1306 ></indexterm
1307 ></term>
1308       <listitem
1309 ><para
1310 ><screen
1311 >mod X,Y</screen>
1312 La commande <userinput
1313 >mod</userinput
1314 > renvoie le reste de la division entière du premier nombre par le second.</para
1315 ></listitem>
1316     </varlistentry>
1317   </variablelist>
1318   <variablelist>
1319     <anchor id="sqrt"/>
1320     <varlistentry
1321 > 
1322       <term
1323 >racine<indexterm
1324 ><primary
1325 >racine</primary
1326 ></indexterm
1327 ></term>
1328       <listitem
1329 ><para
1330 ><screen
1331 >racine X</screen>
1332 La commande <userinput
1333 >racine</userinput
1334 > est utilisée pour trouver la racine carrée d'un nombre X.</para
1335 ></listitem>
1336     </varlistentry>
1337   </variablelist>
1338 <!--
1339   <variablelist>
1340     <anchor id="exp"/>
1341     <varlistentry
1342 > 
1343       <term
1344 >exp<indexterm
1345 ><primary
1346 >exp</primary
1347 ></indexterm
1348 ></term>
1349       <listitem
1350 ><para
1351 ><screen
1352 >sqrt X</screen>
1353       </para
1354 ></listitem>
1355     </varlistentry>
1356   </variablelist>
1357 -->
1358   <variablelist>
1359     <anchor id="pi"/>
1360     <varlistentry
1361 > 
1362       <term
1363 >pi<indexterm
1364 ><primary
1365 >pi</primary
1366 ></indexterm
1367 ></term>
1368       <listitem
1369 ><para
1370 ><screen
1371 >pi</screen>
1372 Cette commande renvoie la constante PI, <userinput
1373 >3,14159</userinput
1374 >.</para
1375 ></listitem>
1376     </varlistentry>
1377   </variablelist>
1378   <variablelist>
1379     <anchor id="sin"/>
1380     <anchor id="cos"/>
1381     <anchor id="tan"/>
1382     <varlistentry>
1383       <term
1384 >sin<indexterm
1385 ><primary
1386 >sin</primary
1387 ></indexterm
1388 >, cos<indexterm
1389 ><primary
1390 >cos</primary
1391 ></indexterm
1392 >, tan<indexterm
1393 ><primary
1394 >tan</primary
1395 ></indexterm
1396 ></term>
1397       <listitem
1398 ><para>
1399 <screen
1400 >sin X
1401 cos X
1402 tan X
1403 </screen>
1404 Ces trois commandes représentent les fameuses fonctions trigonométriques <userinput
1405 >sin</userinput
1406 >, <userinput
1407 >cos</userinput
1408 > et <userinput
1409 >tan</userinput
1410 >. L'argument en entrée pour ces trois commandes, X, est un <link linkend="number"
1411 >nombre</link
1412 >.</para
1413 ></listitem>
1414     </varlistentry>
1415   </variablelist>
1416   <variablelist>
1417     <anchor id="arcsin"/>
1418     <anchor id="arccos"/>
1419     <anchor id="arctan"/>
1420     <varlistentry>
1421       <term
1422 >arcsin<indexterm
1423 ><primary
1424 >arcsin</primary
1425 ></indexterm
1426 >, arccos<indexterm
1427 ><primary
1428 >arccos</primary
1429 ></indexterm
1430 >, arctan<indexterm
1431 ><primary
1432 >arctan</primary
1433 ></indexterm
1434 ></term>
1435       <listitem
1436 ><para>
1437 <screen
1438 >arcsin X
1439 arccos X
1440 arctan X
1441 </screen>
1442 Ces commandes sont les fonctions inverse des fonctions <link linkend="sin"
1443 >sin</link
1444 >, <link linkend="cos"
1445 >cos</link
1446 > et <link linkend="tan"
1447 >tan</link
1448 >. L'argument en entrée pour ces trois commandes, X, est un <link linkend="number"
1449 >nombre</link
1450 >.</para
1451 ></listitem>
1452     </varlistentry>
1453   </variablelist>
1454 </sect2>
1455 
1456 <sect2 id="dialogs">
1457 <title
1458 >Entrée et retour avec les boîtes de dialogue</title>
1459 <para
1460 >Une boîte de dialogue est une petite fenêtre contextuelle qui fournit du retour ou demande des choses en entrée. &kturtle; possède deux commandes pour les boîtes de dialogue : <userinput
1461 >message</userinput
1462 > et <userinput
1463 >demande</userinput
1464 ></para>
1465   <variablelist>
1466     <anchor id="message"/>
1467     <varlistentry
1468 > 
1469       <term
1470 >message<indexterm
1471 ><primary
1472 >message</primary
1473 ></indexterm
1474 ></term>
1475       <listitem
1476 ><para
1477 ><screen
1478 >message X</screen>
1479 La commande <userinput
1480 >message</userinput
1481 > prend une <link linkend="string"
1482 >chaîne</link
1483 > en entrée. Elle affiche une boîte de dialogue contenant le texte de la <link linkend="string"
1484 >chaîne</link
1485 >. <screen
1486 >message "Cies a commencé à travailler sur KTurtle en 2003 et s'amuse toujours à travailler dessus ! "
1487 </screen>
1488       </para
1489 ></listitem>
1490     </varlistentry>
1491   </variablelist>
1492   <variablelist>
1493     <anchor id="ask"/>
1494     <varlistentry
1495 > 
1496       <term
1497 >demande<indexterm
1498 ><primary
1499 >demande</primary
1500 ></indexterm
1501 ></term>
1502       <listitem
1503 ><para
1504 ><screen
1505 >demande X</screen>
1506 <userinput
1507 >demande</userinput
1508 > prend une <link linkend="string"
1509 >chaîne</link
1510 > en entrée. Elle affiche cette chaîne une boîte de dialogue (similaire à <link linkend="message"
1511 >message</link
1512 >), ainsi qu'un champ d'entrée. Après que l'utilisateur a saisi un <link linkend="number"
1513 >nombre</link
1514 > ou une <link linkend="string"
1515 >chaîne</link
1516 >, le résultat peut être stocké dans une <link linkend="assignment-of-variables"
1517 >variable</link
1518 > ou passé comme argument à une <link linkend="commands"
1519 >commande</link
1520 >. Par exemple : <screen
1521 > $entree = demande "quelle est votre année de naissance ? "
1522 $sortie = 2010 - $in
1523 écris "En 2010, vous avez eu " + $sortie + " ans à un moment donné."
1524 </screen
1525 >Si l'utilisateur annule la boîte de dialogue, ou ne met rien du tous, la <link linkend="assignment-of-variables"
1526 >variable</link
1527 > est vide.</para
1528 ></listitem>
1529     </varlistentry>
1530   </variablelist>
1531 </sect2>
1532 
1533 </sect1>
1534 
1535 
1536 
1537 <sect1 id="assignment-of-variables">
1538 <title
1539 >Affectations des variables</title>
1540 <para
1541 >Nous devons d'abord regarder les variables, ensuite, nous verrons comment affecter des valeurs à ces variables. </para>
1542 
1543 <para
1544 >Les variables sont des mots qui commencent par un <quote
1545 >$</quote
1546 >, dans l'<link linkend="the-editor"
1547 >éditeur</link
1548 >, elles sont <glossterm
1549 >surlignées</glossterm
1550 > en violet.</para>
1551 
1552 <para
1553 >Les variables contiennent soit des <link linkend="number"
1554 >nombres</link
1555 >, des <link linkend="string"
1556 >chaînes</link
1557 > ou des <link linkend="boolean-value"
1558 >valeurs booléennes (vrai / faux)</link
1559 >. En utilisant une affectation, <userinput
1560 >=</userinput
1561 >, une variable reçoit son contenu. Elle le conservera jusqu'à ce que le programme se termine ou qu'on assigne quelque chose d'autre à la variable.</para>
1562 
1563 <para
1564 >Vous pouvez utiliser les variables, une fois affectées, tout comme s'il s'agissait de leur contenu. Par exemple, dans le morceau de &turtlescript; : <screen
1565 > $x = 10
1566 $x = $x / 3
1567 écris $x
1568 </screen
1569 > Tout d'abord la variable <userinput
1570 >$x</userinput
1571 > se voit affecter la valeur <userinput
1572 >10</userinput
1573 >. Ensuite, <userinput
1574 >$x</userinput
1575 > se voit de nouveau affecter sa propre valeur divisée par <userinput
1576 >3</userinput
1577 > &mdash; ceci signifie en fait que <userinput
1578 >$x</userinput
1579 > est affectée du résultat de <userinput
1580 >10 + 3</userinput
1581 >. Enfin, <userinput
1582 >$x</userinput
1583 > est affichée. Dans les lignes deux et trois, vous voyez que <userinput
1584 >$x</userinput
1585 > est utilisé comme s'il s'agissait de son contenu.</para>
1586 
1587 <para
1588 >Les variables doivent être affectées avant de pouvoir être utilisées. Par exemple : <screen>
1589 écris $n
1590 </screen
1591 > donnera un message d'erreur.</para>
1592 
1593 <para
1594 >Regardez le morceau de &turtlescript; suivant : <screen>
1595 $a = 2004
1596 $b = 25
1597 
1598 # la commande suivante affiche « 2029 »
1599 écris $a + $b
1600 recule 30
1601 # la commande suivante écrit "2004 plus 25 égal 2009"
1602 écris $a + " plus " + $b + " égal " + ($a + $b)
1603 </screen
1604 > Dans les deux premières lignes, les variables <userinput
1605 >$a</userinput
1606 > et <userinput
1607 >$b</userinput
1608 > sont initialisées à 2004 et 25. Ensuite viennent les deux commandes <userinput
1609 >écris</userinput
1610 > et un <userinput
1611 >recule 30</userinput
1612 > entre. Les commentaires avant les commandes <userinput
1613 >écris</userinput
1614 > expliquent ce que ces commandes font. La commande <userinput
1615 >recule 30</userinput
1616 > est ici pour s'assurer que chaque sortie se trouve sur une nouvelle ligne. Comme vous le voyez, les variables peuvent être utilisée comme s'il s'agissait de leur contenu, vous pouvez les utiliser avec n'importe quel type d'<link linkend="operators"
1617 >opérateurs</link
1618 > ou les passer en entrée lorsque vous appelez des <link linkend="commands"
1619 >commandes</link
1620 >.</para>
1621 
1622 <para
1623 >Un autre exemple : <screen>
1624 $nom = demande "Quel est votre nom ? "
1625 écris "Salut " + $nom + " ! Bonne chance dans l'apprentissage de la programmation..."
1626 </screen
1627 > Plutôt direct. Encore une fois, vous voyez que la variable <userinput
1628 >$nom</userinput
1629 > est traitée comme une chaîne.</para>
1630 
1631 <para
1632 >Lorsque vous utilisez des variables, l'<link linkend="the-inspector"
1633 >inspecteur</link
1634 > est très utile. Il vous montre le contenu de toutes les variables actuellement en cours d'utilisation.</para>
1635 </sect1>
1636 
1637 
1638 
1639 <sect1 id="controlling-execution">
1640 <title
1641 >Contrôler l'exécution</title>
1642 <para
1643 >Les contrôleurs d'exécution vous permettent, &mdash; comme leur nom l'indique &mdash; de contrôler l'exécution.</para>
1644 <para
1645 >Les commandes de contrôle d'exécution sont <glossterm
1646 >surlignées</glossterm
1647 > en vert foncé en utilisant une police en gras. Les accolades sont principalement utilisées avec les contrôleurs d'exécution et sont <glossterm
1648 >surlignées</glossterm
1649 > en noir.</para>
1650 
1651 <sect2 id="wait">
1652 <title
1653 >Faite attendre la tortue</title>
1654 <para
1655 >Si vous avez exécuté quelques programmes dans &kturtle; vous pouvez avoir remarqué que la tortue se déplace très rapidement pour dessiner. La commande suivante ralentit la tortue.</para>
1656   <variablelist>
1657     <varlistentry>
1658       <term
1659 >attends<indexterm
1660 ><primary
1661 >attends</primary
1662 ></indexterm
1663 ></term>
1664       <listitem
1665 ><para
1666 ><screen
1667 >attends X</screen>
1668 <userinput
1669 >attends</userinput
1670 > fait attendre la tortue pendant X secondes. <screen>
1671 répète 36 {
1672   avance 5
1673   tournedroite 10
1674   attends 0.5
1675 }
1676 </screen
1677 > Ce code dessine un cercle, mais la tortue va attendre une demi-seconde après chaque étape. Cela donne l'impression d'une tortue qui va moins vite.</para
1678 ></listitem>
1679     </varlistentry>
1680   </variablelist>
1681 </sect2>
1682 
1683 <sect2 id="if">
1684 <title
1685 >Exécute « si »</title>
1686   <variablelist>
1687     <varlistentry>
1688       <term
1689 >si<indexterm
1690 ><primary
1691 >si</primary
1692 ></indexterm
1693 ></term>
1694       <listitem
1695 ><para
1696 ><screen
1697 >si <link linkend="boolean-value"
1698 >booléen</link
1699 > { ... }</screen>
1700 Le code qui est placé entre les accolades sera exécuté seulement <userinput
1701 >si</userinput
1702 > la <link linkend="boolean-value"
1703 >valeur booléenne</link
1704 > vaut <quote
1705 >vrai</quote
1706 >. <screen>
1707 $x = 6
1708 si $x &gt; 5 {
1709   écris "x est plus grand que cinq ! "
1710 }
1711 </screen
1712 > À la première ligne, <userinput
1713 >$x</userinput
1714 > est fixé à 6. À la seconde ligne, un <link linkend="comparing-operators"
1715 >opérateur de comparaison</link
1716 > est utilisé pour évaluer <userinput
1717 >$x &gt; 5</userinput
1718 >. Comme le résultat est <quote
1719 >vrai</quote
1720 >, 6 est plus grand que 5, le contrôleur d'exécution <userinput
1721 >si</userinput
1722 > va permettre au code entre accolades d'être exécuté.</para
1723 ></listitem>
1724     </varlistentry>
1725   </variablelist>
1726 </sect2>
1727 
1728 <sect2 id="else">
1729 <title
1730 >Si non, en d'autres termes : « sinon »</title>
1731   <variablelist>
1732     <varlistentry>
1733       <term
1734 >sinon<indexterm
1735 ><primary
1736 >sinon</primary
1737 ></indexterm
1738 ></term>
1739       <listitem
1740 ><para
1741 ><screen
1742 >si <link linkend="boolean-value"
1743 >booléen</link
1744 > { ... } sinon { ... }</screen>
1745 <userinput
1746 >sinon</userinput
1747 > peut être utilisé en plus du contrôleur d'exécution <link linkend="if"
1748 ><userinput
1749 >si</userinput
1750 ></link
1751 >. Le code entre accolades après <userinput
1752 >sinon</userinput
1753 > n'est exécuté que si le <link linkend="boolean-value"
1754 >booléen</link
1755 > vaut <quote
1756 >faux</quote
1757 >. <screen>
1758 initialise
1759 $x = 4
1760 si $x &gt; 5 {
1761   écris "x est plus grand que cinq ! "
1762 } sinon {
1763   écris "x est plus petit que six ! "
1764 }
1765 </screen
1766 > L'<link linkend="comparing-operators"
1767 >opérateur de comparaison</link
1768 > évalue l'expression <userinput
1769 >$x &gt; 5</userinput
1770 >. Comme 4 n'est pas plus grand que 5, l'expression vaut <quote
1771 >faux</quote
1772 >. Cela signifie que le code entre accolades après <userinput
1773 >sinon</userinput
1774 > est exécuté.</para
1775 ></listitem>
1776     </varlistentry>
1777   </variablelist>
1778 </sect2>
1779 
1780 <sect2 id="while">
1781 <title
1782 >La boucle « tantque »</title>
1783   <variablelist>
1784     <varlistentry>
1785       <term
1786 >tantque<indexterm
1787 ><primary
1788 >tantque</primary
1789 ></indexterm
1790 ></term>
1791       <listitem
1792 ><para
1793 ><screen
1794 >tantque <link linkend="boolean-value"
1795 >booléen</link
1796 > { ... }</screen>
1797 Le contrôleur d'exécution <userinput
1798 >tantque</userinput
1799 > ressemble beaucoup à <link linkend="if"
1800 ><userinput
1801 >si</userinput
1802 ></link
1803 >. La différence est que <userinput
1804 >tantque</userinput
1805 > répète le code entre accolades jusqu'à ce que le <link linkend="boolean-value"
1806 >booléen</link
1807 > vaut <quote
1808 >faux</quote
1809 > <screen>
1810 $x = 1
1811 tantque $x &lt; 5 {
1812   avance 10
1813   attends 1
1814   $x = $x + 1
1815 }
1816 </screen
1817 > À la première ligne, <userinput
1818 >$x</userinput
1819 > est fixé à 1. À la seconde ligne,  <userinput
1820 >$x &lt; 5</userinput
1821 > est évalué. Comme la réponse à cette question est <quote
1822 >vrai</quote
1823 >, le contrôleur d'exécution <userinput
1824 >tantque</userinput
1825 > commence à exécuter le code entre accolades jusqu'à ce que  <userinput
1826 >$x &lt; 5</userinput
1827 > soit <quote
1828 >faux</quote
1829 >. Dans ce cas, le code entre accolades sera exécuté quatre fois, à chaque fois que la cinquième ligne est exécutée, <userinput
1830 >$x</userinput
1831 > augmente de 1.</para
1832 ></listitem>
1833     </varlistentry>
1834   </variablelist>
1835 </sect2>
1836 
1837 <sect2 id="repeat">
1838 <title
1839 >La boucle « répète »</title>
1840   <variablelist>
1841     <varlistentry>
1842       <term
1843 >répète<indexterm
1844 ><primary
1845 >répète</primary
1846 ></indexterm
1847 ></term>
1848       <listitem
1849 ><para
1850 ><screen
1851 >répète <link linkend="number"
1852 >nombre</link
1853 > { ... }</screen>
1854 Le contrôleur d'exécution <userinput
1855 >répète</userinput
1856 > est similaire à <link linkend="while"
1857 ><userinput
1858 >tantque</userinput
1859 ></link
1860 >. La différence est que <userinput
1861 >répète</userinput
1862 > laisse en boucle le code entre accolades autant de fois que le nombre donné.</para
1863 ></listitem>
1864     </varlistentry>
1865   </variablelist>
1866 </sect2>
1867 
1868 <sect2 id="for">
1869 <title
1870 >La boucle « pour », une boucle de comptage</title>
1871   <variablelist>
1872     <varlistentry>
1873       <term
1874 >pour<indexterm
1875 ><primary
1876 >pour</primary
1877 ></indexterm
1878 ><indexterm
1879 ><primary
1880 >pas</primary
1881 ></indexterm
1882 ></term>
1883       <listitem
1884 ><para
1885 ><screen
1886 >pour <link linkend="assignment-of-variables"
1887 >variable</link
1888 > = <link linkend="number"
1889 >nombre</link
1890 > à <link linkend="number"
1891 >nombre</link
1892 > { ... }</screen>
1893 La boucle <userinput
1894 >pour</userinput
1895 > est une <quote
1896 >boucle de comptage</quote
1897 >, &cad; qu'elle compte à votre place. Le premier nombre règle la variable pour la première boucle. À chaque boucle, le nombre est incrémenté jusqu'à ce que la seconde valeur soit atteinte. <screen>
1898 pour $x = 1 à 10 {
1899   écris $x * 7
1900   avance 15
1901 }
1902 </screen
1903 > Chaque fois que le code entre accolades est exécuté, la valeur de <userinput
1904 >$x</userinput
1905 > augmente de 1, jusqu'à ce que <userinput
1906 >$x</userinput
1907 > atteigne la valeur 10. Le code entre les accolades écrit <userinput
1908 >$x</userinput
1909 > multiplié par 7. Après que ce programme a fini son exécution, vous allez voir la table de multiplication de 7 imprimée sur le canevas. </para>
1910      <para
1911 >La taille du pas par défaut de la boucle est 1, vous pouvez utiliser une autre valeur avec : <screen
1912 >pour <link linkend="assignment-of-variables"
1913 >variable</link
1914 > = <link linkend="number"
1915 >nombre</link
1916 > à <link linkend="number"
1917 >nombre</link
1918 > pas <link linkend="number"
1919 >nombre</link
1920 > { ... }</screen
1921 ></para
1922 ></listitem>
1923     </varlistentry>
1924   </variablelist>
1925 </sect2>
1926 
1927 <sect2 id="break">
1928 <title
1929 >Quitter la boucle</title>
1930   <variablelist>
1931     <varlistentry>
1932       <term
1933 >coupure<indexterm
1934 ><primary
1935 >coupure</primary
1936 ></indexterm
1937 ></term>
1938       <listitem
1939 ><para
1940 ><screen
1941 >coupure</screen>
1942 Termine immédiatement la boucle courante et transfert le contrôle à la déclaration qui suit la boucle.</para
1943 ></listitem>
1944     </varlistentry>
1945   </variablelist>
1946 </sect2>
1947 
1948 <sect2 id="exit">
1949 <title
1950 >Arrête l'exécution du programme</title>
1951   <variablelist>
1952     <varlistentry>
1953       <term
1954 >sortie<indexterm
1955 ><primary
1956 >sortie</primary
1957 ></indexterm
1958 ></term>
1959       <listitem
1960 ><para
1961 ><screen
1962 >sortie</screen>
1963 Termine l'exécution de votre programme.</para
1964 ></listitem>
1965     </varlistentry>
1966   </variablelist>
1967 </sect2>
1968 
1969 <sect2 id="assert">
1970 <title
1971 >Vérifier une assertion lors de l'exécution</title>
1972   <variablelist>
1973     <varlistentry>
1974       <term
1975 >assertion<indexterm
1976 ><primary
1977 >assertion</primary
1978 ></indexterm
1979 ></term>
1980       <listitem
1981 ><para
1982 ><screen
1983 >assertion <link linkend="boolean-value"
1984 >booléen</link
1985 ></screen>
1986 Peut être utilisé pour déterminer la conformité d'un programme ou d'une entrée. <screen
1987 >$in = demande "quel est votre année de naissance ? "
1988 # l'année doit être positive
1989 assertion $in 
1990 > 0
1991 </screen
1992 ></para
1993 ></listitem>
1994     </varlistentry>
1995   </variablelist>
1996 </sect2>
1997 </sect1>
1998 
1999 
2000 <sect1 id="learn">
2001 
2002 
2003 <!--<sect2 id="name">
2004 <title
2005 >Names</title>
2006 <para
2007 >When using the &turtlescript; programming language you create new things. If you write a program you will often need <link linkend="containers"
2008 >containers</link
2009 > and in some cases you need <link linkend="learn"
2010 >learn</link
2011 > to create new commands. When making a new command with <link linkend="learn"
2012 >learn</link
2013 > you will have to specify a name.</para>
2014 <para
2015 >You can choose any name, as long as it does not already have a meaning. For instance you cannot name a function <link linkend="forward"
2016 >forward</link
2017 >, since that name is already used for an internal command.
2018 <screen
2019 >
2020 # here forward is used as a new command, 
2021 # but it already has a meaning so 
2022 # this will produce an error:
2023 learn forward {
2024   print "this is invalid"
2025 }
2026 
2027 # this works:
2028 learn myforward {
2029   print "this is ok"
2030 }
2031 </screen>
2032 Names can contain only letters, numbers and underscores (_). Yet they have to start with a letter. Container names have to start with the container prefix ($).
2033 <screen
2034 >
2035 # here forward is used as a container, 
2036 # starting with the $ prefix, so it does
2037 # not conflict with the forward command
2038 $forward = 20
2039 print $forward
2040 </screen>
2041 </para>
2042 <para
2043 >Containers are <glossterm
2044 >highlighted</glossterm
2045 > with bolded purple in the <link linkend="the-editor"
2046 >code editor</link
2047 >.</para>
2048 <para>
2049 Please read the documentation on <link linkend="containers"
2050 >containers</link
2051 > and the <link linkend="learn"
2052 >learn</link
2053 > command for a better explanation and more examples.
2054 </para>
2055 </sect2
2056 >-->
2057 
2058 
2059 
2060 
2061 
2062 <title
2063 >Créez vos propres commandes avec <quote
2064 >apprends</quote
2065 ></title>
2066 <para
2067 ><userinput
2068 >apprends</userinput
2069 > est une commande très spéciale, car elle est utilisée pour créer vos propres commandes. La commande que vous créez peut recevoir des <glossterm linkend="input-output"
2070 >entrées</glossterm
2071 > et retourner des <glossterm linkend="input-output"
2072 >sorties</glossterm
2073 >. Regardons maintenant comment une nouvelle commande est créée : <screen>
2074 apprends cercle $x {
2075   répète 36 {
2076     avance $x
2077     tournegauche 10
2078   }
2079 }
2080 </screen
2081 > La nouvelle commande est appelée <userinput
2082 >cercle</userinput
2083 >. <userinput
2084 >cercle</userinput
2085 > reçoit un argument en <glossterm linkend="input-output"
2086 >entrée</glossterm
2087 >, qui fixe la taille du cercle. <userinput
2088 >cercle</userinput
2089 > ne retourne aucune <glossterm linkend="input-output"
2090 >sortie</glossterm
2091 >. La commande <userinput
2092 >cercle</userinput
2093 > peut maintenant être utilisée comme une commande normale dans la suite du programme. Voyez cet exemple : <screen
2094 >apprends cercle $X {
2095   répète 36 {
2096     avance $X
2097     tournegauche 10
2098   }
2099 }
2100 
2101 va 30,30
2102 cercle 20
2103 
2104 va 40,40
2105 cercle 50  
2106 </screen>
2107 </para>
2108 <para
2109 >Dans l'exemple suivant, une commande avec une valeur de retour est créée. <screen>
2110 apprends factorielle $x {
2111   $r = 1
2112   pour $i = 1 à $x {
2113     $r = $r * $i
2114   }
2115   retourne $r
2116 }
2117 
2118 écris factorielle 5
2119 </screen
2120 > Dans cet exemple, une nouvelle commande appelée <userinput
2121 >factorielle</userinput
2122 > est créée. Si l'entrée de la commande est <userinput
2123 >5</userinput
2124 >, alors la sortie sera <userinput
2125 >5*4*3*2*1</userinput
2126 >. En utilisant <userinput
2127 >retourne</userinput
2128 >, la valeur de <glossterm linkend="input-output"
2129 >sortie</glossterm
2130 > est spécifiée et le résultat est renvoyé.</para>
2131 <para
2132 >Les commandes peuvent avoir plus d'une <glossterm linkend="input-output"
2133 >entrée</glossterm
2134 >. Dans l'exemple suivant, une commande qui dessine un rectangle est créé.<screen>
2135 apprends boîte $x, $y {
2136   avance $y
2137   tournedroite 90
2138   avance $x
2139   tournedroite 90
2140   avance $y
2141   tournedroite 90
2142   avance $x
2143   tournedroite 90
2144 }
2145 </screen
2146 > Maintenant vous pouvez lancer <userinput
2147 >boîte 50, 100</userinput
2148 > et la tortue dessinera un rectangle sur le canevas. </para>
2149   
2150 </sect1>
2151 
2152 </chapter>