Warning, /education/kturtle/po/nl/docs/kturtle/programming-reference.docbook is written in an unsupported language. File is not indexed.
0001 <chapter id="reference"> 0002 <title 0003 >Programmeren met &turtlescript;</title> 0004 <para 0005 >Dit is het overzicht van &turtlescript; van &kturtle;. In het eerste deel van dit hoofdstuk kijken we naar enkele aspecten van de <link linkend="grammar" 0006 >grammatica</link 0007 > van &turtlescript;-programma's. Het tweede deel behandelt uitsluitend <link linkend="mathematical-operators" 0008 >rekenkundige bewerkingen</link 0009 >, <link linkend="boolean-operators" 0010 >booleaanse (waar/onwaar) bewerkingen</link 0011 > en <link linkend="comparing-operators" 0012 >vergelijkingsbewerkingen</link 0013 >. Het derde deel is eigenlijk een lange lijst van alle <link linkend="commands" 0014 >opdrachten</link 0015 >, die een voor een worden uitgelegd. In deel vier wordt uitgelegd hoe waarden kunnen worden <link linkend="assignment-of-variables" 0016 >toegekend</link 0017 > (gegeven) aan <link linkend="assignment-of-variables" 0018 >variabelen</link 0019 >. Tenslotte leggen we uit hoe de uitvoering van de opdrachten kan worden gestuurd met <link linkend="controlling-execution" 0020 >programmastuuropdrachten</link 0021 > in deel vijf en hoe zelf opdrachten te maken met <link linkend="learn" 0022 >leer</link 0023 > in deel zes.</para> 0024 0025 <sect1 id="grammar"> 0026 <title 0027 >De grammatica van &turtlescript;</title> 0028 <para 0029 >Zoals elke taal heeft ook &turtlescript; verschillende soorten woorden en tekens. In het Nederlands kennen we werkwoorden (zoals 'lopen' of 'zingen') en zelfstandige naamwoorden (zoals 'zuster' of 'huis'), zij worden verschillend gebruikt. &turtlescript; is een programmeertaal, en wordt gebruikt om &kturtle; te vertellen wat er moet gebeuren.</para> 0030 <para 0031 >In dit deel worden de verschillende soorten woorden en tekens in &turtlescript; kort uitgelegd. We leggen uit wat <link linkend="comment" 0032 >commentaar</link 0033 > is, <link linkend="command" 0034 >opdrachten</link 0035 > en de drie verschillende soorten van waarden: <link linkend="number" 0036 >getallen</link 0037 >, <link linkend="string" 0038 >tekenreeksen</link 0039 > en <link linkend="boolean-value" 0040 >booleaanse (waar/onwaar) waarden</link 0041 >.</para> 0042 0043 0044 <sect2 id="comment"> 0045 <title 0046 >Commentaar</title> 0047 <para 0048 >Een programma bestaat uit instructies die worden uitgevoerd als het programma loopt, én zogenoemd commentaar. Commentaar wordt niet uitgevoerd, maar wordt door &kturtle; domweg genegeerd bij het uitvoeren van het programma. Commentaar dient om andere programmeurs (en je zelf, op een later tijdstip) je programma beter te laten begrijpen. Alles dat op een regel volgt na een hekje (<userinput 0049 >#</userinput 0050 >), wordt in &turtlescript; opgevat als commentaar. <screen> 0051 # Dit kleine programma bevat alleen commentaar en doet dus helemaal niets! 0052 </screen 0053 >. Het is wat nutteloos, maar geeft een en ander goed weer.</para> 0054 <para 0055 >Commentaar is erg nuttig wanneer een programma wat ingewikkelder gaat worden. Hierin kan aan andere programmeurs iets worden verteld. In het volgende programma zie je hoe commentaar wordt gebruikt bij het commando <link linkend="print" 0056 >druk</link 0057 >. <screen> 0058 # dit programma werd gemaakt door Cies Breijs. 0059 druk "deze tekst wordt op het canvas afgedrukt" 0060 # de vorige regel was geen commentaar,maar de volgende wel: 0061 # druk "deze tekst wordt niet afgedrukt!" 0062 </screen 0063 >. De eerste regel geeft wat toelichting bij het programma. De tweede wordt door &kturtle; uitgevoerd, en drukt <userinput 0064 >deze tekst wordt op het canvas afgedrukt</userinput 0065 > af op het canvas. De derde regel bevat commentaar. En de vierde regel bevat commentaar meteen stukje &turtlescript;. Als het teken <userinput 0066 >#</userinput 0067 > dat ervoor staat wordt weggehaald, zal &kturtle; ook deze regel uitvoeren, maar met het hekje ervoor niet. Door een hekje ervoor wordt een programmaregel dus uitgeschakeld. </para> 0068 <para 0069 >Commentaarregels worden <glossterm 0070 >geaccentueerd</glossterm 0071 > met lichtgrijs in de <link linkend="the-editor" 0072 >codebewerker</link 0073 >.</para> 0074 </sect2> 0075 0076 <sect2 id="command"> 0077 <title 0078 >Opdrachten</title> 0079 <para 0080 >Met opdrachten kun je de schildpad of &kturtle; opdragen iets te doen. Bij sommige opdrachten is invoer nodig, en andere geven uitvoer. <screen> 0081 # vooruit is een commando dat invoer nodig heeft, in dit geval het getal 100: 0082 vooruit 100 0083 </screen 0084 > De eerste regel is <link linkend="comment" 0085 >commentaar</link 0086 >. De tweede bevat het commando <userinput 0087 >vooruit</userinput 0088 >, en de invoer is het <link linkend="number" 0089 >getal</link 0090 > <userinput 0091 >100</userinput 0092 >. Het getal wordt niet beschouwd als een deel van het commando, maar als invoer.</para> 0093 <para 0094 >Voor sommige opdrachten ⪚ <userinput 0095 >ganaar</userinput 0096 > zijn meerdere invoerwaarden nodig. Deze moeten door een <userinput 0097 >,</userinput 0098 > (komma) worden gescheiden.</para> 0099 <para 0100 >Meer informatie over alle opdrachten die &kturtle; van huis uit kent vind je <link linkend="commands" 0101 >hier</link 0102 >. Deze ingebouwde opdrachten worden met donkerblauw <glossterm 0103 >geaccentueerd</glossterm 0104 ></para> 0105 </sect2> 0106 0107 <sect2 id="number"> 0108 <title 0109 >Getallen</title> 0110 <para 0111 >Getallen ken je vast wel. De manier waarop getallen worden gebruikt in &kturtle; is niet veel anders dan in een spreektaal, of bij het rekenen. Maar er is wel een verschil: ze worden niet met komma's, maar met punten geschreven. Dit is omdat met een komma twee getallen van elkaar worden gescheiden, zodat 2,5 twee getallen, 2 en 5, zijn. Je moet dus 2.5 schrijven, als je maar één getal bedoelt.</para> 0112 <para 0113 >Er zijn ook de natuurlijke getallen: <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; De negatieve getallen: <userinput 0126 >-1</userinput 0127 >, <userinput 0128 >-2</userinput 0129 >, <userinput 0130 >-3</userinput 0131 >, &etc;. En de kommagetallen zoals: <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 >. De <userinput 0142 >.</userinput 0143 > punt is het scheidingsteken voor decimalen: de cijfers achter de komma. </para> 0144 <para 0145 >Getallen kunnen worden gebruikt in <link linkend="mathematical-operators" 0146 >rekenkundige bewerkingen</link 0147 > en <link linkend="comparing-operators" 0148 >vergelijkingsbewerkingen</link 0149 >. Ze kunnen ook worden bewaard in <link linkend="assignment-of-variables" 0150 >variabelen</link 0151 >. Getallen worden <glossterm 0152 >geaccentueerd</glossterm 0153 > in donkerrood.</para> 0154 </sect2> 0155 0156 <!-- constants like pi? --> 0157 0158 <sect2 id="string"> 0159 <title 0160 >Tekenreeksen</title> 0161 <para 0162 >Eerst een voorbeeld:<screen> 0163 druk "Hallo, ik ben een tekenreeks." 0164 </screen 0165 > In dit voorbeeld is <userinput 0166 >druk</userinput 0167 > een commando en <userinput 0168 >"Hallo, ik ben een tekenreeks"</userinput 0169 > een tekenreeks. Een tekenreeks begint en eindigt met het teken <userinput 0170 >"</userinput 0171 >. Hierdoor weet &kturtle; dat dit een tekenreeks is.</para> 0172 <para 0173 >Tekenreeksen kunnen in <link linkend="assignment-of-variables" 0174 >variabelen</link 0175 > worden bewaard, net zoals <link linkend="number" 0176 >getallen</link 0177 >. Maar, anders dan getallen, kunnen tekenreeksen niet in <link linkend="mathematical-operators" 0178 >berekeningen</link 0179 > of <link linkend="comparing-operators" 0180 >vergelijkingsbewerkingen</link 0181 > worden gebruikt. Tekenreeksen worden met rood <glossterm 0182 >geaccentueerd</glossterm 0183 >.</para> 0184 </sect2> 0185 0186 <sect2 id="boolean-value"> 0187 <title 0188 >Booleaanse waarden (waar/onwaar)</title> 0189 <para 0190 >Er zijn maar twee booleaanse waarden: <userinput 0191 >waar</userinput 0192 ><indexterm 0193 ><primary 0194 >waar</primary 0195 ></indexterm 0196 > en <userinput 0197 >onwaar</userinput 0198 ><indexterm 0199 ><primary 0200 >onwaar</primary 0201 ></indexterm 0202 >. Ze worden ook wel genoemd: <quote 0203 ><userinput 0204 >aan</userinput 0205 ></quote 0206 > en <quote 0207 ><userinput 0208 >uit</userinput 0209 ></quote 0210 >, <quote 0211 ><userinput 0212 >ja</userinput 0213 ></quote 0214 > en <quote 0215 ><userinput 0216 >nee</userinput 0217 ></quote 0218 >, <quote 0219 ><userinput 0220 >een</userinput 0221 ></quote 0222 > en <quote 0223 ><userinput 0224 >nul</userinput 0225 ></quote 0226 >. Maar in &turtlescript; worden zij altijd , <userinput 0227 >waar</userinput 0228 > en <userinput 0229 >onwaar</userinput 0230 > genoemd. Bekijk dit stukje &turtlescript;: <screen> 0231 $a = waar 0232 </screen 0233 > In de <link linkend="the-inspector" 0234 >Inspector</link 0235 > kun je zien dat de <link linkend="assignment-of-variables" 0236 >variabele</link 0237 > <userinput 0238 >$a</userinput 0239 > de waarde <userinput 0240 >waar</userinput 0241 > heeft, en booleaans is.</para> 0242 <para 0243 >Vaak zijn booleaanse waarden het resultaat van <link linkend="comparing-operators" 0244 >vergelijkingsbewerkingen</link 0245 >, zoals in het volgende stukje &turtlescript;: <screen> 0246 $antwoord = 10 > 3 0247 </screen 0248 > De <link linkend="assignment-of-variables" 0249 >variabele</link 0250 > <userinput 0251 >$antwoord</userinput 0252 > krijgt de waarde <userinput 0253 >waar</userinput 0254 > omdat <userinput 0255 >10</userinput 0256 > inderdaad groter is dan <userinput 0257 >3</userinput 0258 >.</para> 0259 <para 0260 >Booleaanse waarden, <userinput 0261 >waar</userinput 0262 > en <userinput 0263 >onwaar</userinput 0264 >, worden met donkerrood <glossterm 0265 >geaccentueerd</glossterm 0266 >.</para> 0267 </sect2> 0268 0269 </sect1> 0270 0271 0272 0273 <sect1 id="operators"> 0274 <title 0275 >Rekenkundige, booleaanse en vergelijkingsbewerkingen</title> 0276 <para 0277 >De naam van dit deel klinkt misschien moeilijk, maar het valt allemaal best mee.</para> 0278 0279 <sect2 id="mathematical-operators"> 0280 <title 0281 >Rekenkundige bewerkingen</title> 0282 <para 0283 >Dit zijn de basisbewerkingen van het rekenen: optellen (<userinput 0284 >+</userinput 0285 >), aftrekken (<userinput 0286 >-</userinput 0287 >), vermenigvuldigen (<userinput 0288 >*</userinput 0289 >), delen (<userinput 0290 >/</userinput 0291 >) en machtsverheffen (<userinput 0292 >^</userinput 0293 >).</para> 0294 0295 <para 0296 >Hier is een klein voorbeeld van het gebruik van rekenkundige bewerkingen in &turtlescript;: <screen> 0297 $optellen = 1 + 1 0298 $aftrekken = 20 - 5 0299 $vermenigvuldigen = 15 * 2 0300 $delen = 30 / 30 0301 $machtsverheffen = 2 ^ 2 0302 </screen 0303 > De waarden die deze bewerkingen opleveren worden <link linkend="assignment-of-variables" 0304 >toegekend</link 0305 > aan de verschillende <link linkend="assignment-of-variables" 0306 >variabelen</link 0307 > (die je willekeurige $namen kunt geven). In de <link linkend="the-inspector" 0308 >inspectie</link 0309 > kun je deze waarden zien.</para> 0310 <para 0311 >Als je alleen maar een eenvoudige berekening wilt laten doen, dan kan dat bijvoorbeeld zo: <screen 0312 >druk 2010-12 0313 </screen 0314 ></para> 0315 <para 0316 >Nu een voorbeeld met haakjes: <screen> 0317 druk ( ( 20 - 5 ) * 2 / 30 ) + 1 0318 </screen 0319 > Het gedeelte tussen de binnenste haakjes wordt het eerst uitgerekend. In dit voorbeeld wordt 20 - 5 berekend, dan wordt de uitkomst vermenigvuldigd met 2, en daarna wordt er gedeeld door 30. Tot slot wordt er 1 bij opgeteld (het antwoord is 2). Haakjes kunnen ook in andere gevallen worden gebruikt.</para> 0320 <para 0321 >&kturtle; heeft ook nog wat wiskundige eigenschappen in de vorm van opdrachten. Kijk maar eens naar de volgende opdrachten, die, let op, wel wat gevorderd zijn: <link linkend="round" 0322 >afronden</link 0323 >, <link linkend="random" 0324 >gok</link 0325 >, <link linkend="sqrt" 0326 >wortel</link 0327 > , <link linkend="pi" 0328 >pi</link 0329 >, <link linkend="sin" 0330 >sin</link 0331 >, <link linkend="cos" 0332 >cos</link 0333 >, <link linkend="tan" 0334 >tan</link 0335 >, <link linkend="arcsin" 0336 >arcsin</link 0337 >, <link linkend="arccos" 0338 >arccos</link 0339 >, <link linkend="arctan" 0340 >arctan</link 0341 >.</para> 0342 </sect2> 0343 0344 <sect2 id="boolean-operators"> 0345 <title 0346 >Booleaanse bewerkingen (waar/onwaar)</title> 0347 <para 0348 >Waar <link linkend="mathematical-operators" 0349 >wiskundige bewerkingen</link 0350 > vooral werken met<link linkend="number" 0351 >getallen</link 0352 >, werken booleaanse bewerkingen met de <link linkend="boolean-value" 0353 >booleaanse waarden</link 0354 > (<userinput 0355 >waar</userinput 0356 > en <userinput 0357 >onwaar</userinput 0358 >). Er zijn slechts drie booleaanse bewerkingen, namelijk: <userinput 0359 >en</userinput 0360 ><indexterm 0361 ><primary 0362 >en</primary 0363 ></indexterm 0364 >, <userinput 0365 >of</userinput 0366 ><indexterm 0367 ><primary 0368 >of</primary 0369 ></indexterm 0370 >, en <userinput 0371 >niet</userinput 0372 ><indexterm 0373 ><primary 0374 >niet</primary 0375 ></indexterm 0376 >. In het volgende stuk &turtlescript; kan je zien hoe dit te gebruiken: <screen> 0377 $and_1_1 = waar en waar # -> waar 0378 $and_1_0 = waar en onwaar # -> onwaar 0379 $and_0_1 = onwaar en waar # -> onwaar 0380 $and_0_0 = onwaar en onwaar # -> onwaar 0381 0382 $or_1_1 = waar of waar # -> waar 0383 $or_1_0 = waar of onwaar # -> waar 0384 $or_0_1 = onwaar of waar # -> waar 0385 $or_0_0 = onwaar of onwaar # -> onwaar 0386 0387 $not_1 = niet waar # -> onwaar 0388 $not_0 = niet onwaar # -> waar 0389 </screen 0390 > Met behulp van de <link linkend="the-inspector" 0391 >inspector</link 0392 > kan je de waarden zien, maar we geven toch de resultaten aan als commentaar aan het einde van de regels. <userinput 0393 >en</userinput 0394 > wordt alleen <userinput 0395 >waar</userinput 0396 > als beide booleaanse waarden<userinput 0397 >waar</userinput 0398 > zijn. <userinput 0399 >of</userinput 0400 > wordt alleen <userinput 0401 >onwaar</userinput 0402 >als beide booleaanse waarden <userinput 0403 >onwaar</userinput 0404 > zijn. En <userinput 0405 >niet</userinput 0406 > verandert een <userinput 0407 >waar</userinput 0408 > in <userinput 0409 >onwaar</userinput 0410 > en een <userinput 0411 >onwaar</userinput 0412 > in <userinput 0413 >waar</userinput 0414 >.</para> 0415 <para 0416 >Booleaanse bewerkingen worden <glossterm 0417 >geaccentueerd</glossterm 0418 > met roze.</para> 0419 0420 <sect3 id="boolean-operators-advanced-examples"> 0421 <title 0422 >Enkele meer gevorderde voorbeelden</title> 0423 <para 0424 >Kijk naar het volgende voorbeeld met <userinput 0425 >en</userinput 0426 >: <screen> 0427 $a = 1 0428 $b = 5 0429 als (($a < 10) en ($b == 5)) en ($a < $b) { 0430 druk "hallo" 0431 } 0432 </screen 0433 > In dit stukje &turtlescript; worden de antwoorden van drie <link linkend="comparing-operators" 0434 >vergelijkingsbewerkingen</link 0435 > samengevoegd door bewerkingen met <userinput 0436 >en</userinput 0437 >. Dit betekent dat ze alle drie "waar" moeten zijn, voordat de tekst "hallo" wordt afgedrukt (op het scherm).</para> 0438 0439 <para 0440 >Een voorbeeld met <userinput 0441 >of</userinput 0442 >: <screen> 0443 $n = 1 0444 if ($n < 10) or ($n == 2) { 0445 print "hallo" 0446 } 0447 </screen 0448 > In dit stukje &turtlescript; is links van <userinput 0449 >of</userinput 0450 > de vergelijking 'waar', en rechts 'onwaar'. Omdat één van de twee zijden van <userinput 0451 >of</userinput 0452 > 'waar' is, is hier het resultaat van <userinput 0453 >of</userinput 0454 > de waarde 'waar'. En dus wordt "hallo" afgedrukt (op het scherm).</para> 0455 0456 <para 0457 >En tenslotte een voorbeeld met <userinput 0458 >niet</userinput 0459 >, die de waarde <quote 0460 >waar</quote 0461 >verandert naar <quote 0462 >onwaar</quote 0463 > en <quote 0464 >onwaar</quote 0465 > naar <quote 0466 >waar</quote 0467 >. Kijk maar: <screen 0468 >$n = 1 0469 als niet ($n == 3) { 0470 druk "hallo" 0471 } anders { 0472 druk "niet hallo ;-)" 0473 } 0474 </screen 0475 ></para> 0476 </sect3> 0477 </sect2> 0478 0479 <sect2 id="comparing-operators"> 0480 <title 0481 >Vergelijkingsbewerkingen</title> 0482 <para 0483 >Kijk naar deze eenvoudige vergelijking: <screen> 0484 $antwoord = 10 > 3 0485 </screen 0486 > Hier wordt <userinput 0487 >10</userinput 0488 > vergeleken met <userinput 0489 >3</userinput 0490 > met de bewerking 'groter dan'. Het resultaat van deze vergelijking, de <link linkend="boolean-value" 0491 >booleaanse waarde</link 0492 > <userinput 0493 >waar</userinput 0494 > wordt bewaard in de <link linkend="assignment-of-variables" 0495 >variabele</link 0496 > <userinput 0497 >$antwoord</userinput 0498 >.</para> 0499 <para 0500 >Alle <link linkend="number" 0501 >getallen</link 0502 > en <link linkend="assignment-of-variables" 0503 >variabelen</link 0504 > (die getallen bevatten) kunnen met deze vergelijkingsbewerkingen met elkaar worden vergeleken.</para> 0505 <para 0506 >Hier vind je alle vergelijkingsbewerkingen: <table 0507 > <title 0508 > Vragen:</title 0509 > <tgroup cols="3" 0510 > <tbody 0511 > <row 0512 > <entry 0513 ><userinput 0514 >$A == $B</userinput 0515 ></entry 0516 > <entry 0517 >gelijk aan</entry 0518 > <entry 0519 >antwoord is is <quote 0520 >waar</quote 0521 > als <userinput 0522 >$A</userinput 0523 > gelijk is aan <userinput 0524 >$B</userinput 0525 ></entry 0526 > </row 0527 > <row 0528 > <entry 0529 ><userinput 0530 >$A != $B</userinput 0531 ></entry 0532 > <entry 0533 >niet gelijk is </entry 0534 > <entry 0535 >antwoord is <quote 0536 >waar</quote 0537 > als<userinput 0538 >$A</userinput 0539 > niet gelijk is aan <userinput 0540 >$B</userinput 0541 ></entry 0542 > </row 0543 > <row 0544 > <entry 0545 ><userinput 0546 >$A > $B</userinput 0547 ></entry 0548 > <entry 0549 >groter dan</entry 0550 > <entry 0551 >antwoord is <quote 0552 >waar</quote 0553 > als <userinput 0554 >$A</userinput 0555 > groter is dan <userinput 0556 >$B</userinput 0557 ></entry 0558 > </row 0559 > <row 0560 > <entry 0561 ><userinput 0562 >$A < $B</userinput 0563 ></entry 0564 > <entry 0565 >kleiner dan</entry 0566 > <entry 0567 >antwoord is <quote 0568 >waar</quote 0569 > als <userinput 0570 >$A</userinput 0571 > kleiner is dan <userinput 0572 >$B</userinput 0573 ></entry 0574 > </row 0575 > <row 0576 > <entry 0577 ><userinput 0578 >$A >= $B</userinput 0579 ></entry 0580 > <entry 0581 >groter dan of gelijk aan</entry 0582 > <entry 0583 >antwoord is <quote 0584 >waar</quote 0585 > als <userinput 0586 >$A</userinput 0587 > groter is dan of gelijk aan <userinput 0588 >$B</userinput 0589 ></entry 0590 > </row 0591 > <row 0592 > <entry 0593 ><userinput 0594 >$A <= $B</userinput 0595 ></entry 0596 > <entry 0597 >smaller than or equals</entry 0598 > <entry 0599 >answer is <quote 0600 >waar</quote 0601 > als <userinput 0602 >$A</userinput 0603 > kleiner is dan of gelijk aan <userinput 0604 >$B</userinput 0605 ></entry 0606 > </row 0607 > </tbody 0608 > </tgroup 0609 > </table 0610 > Let erop dat <userinput 0611 >$A</userinput 0612 > en <userinput 0613 >$B</userinput 0614 > getallen <link linkend="number" 0615 > moeten zijn</link 0616 > of <link linkend="assignment-of-variables" 0617 >variabelen </link 0618 > met een getalswaarde.</para> 0619 </sect2> 0620 0621 0622 </sect1> 0623 0624 0625 0626 <sect1 id="commands"> 0627 <title 0628 >Opdrachten</title> 0629 <para 0630 >Met behulp van opdrachten vertel je de schildpad of &kturtle; iets te doen. Sommige opdrachten hebben een invoer nodig, anderen geven een uitvoer. In dit deel zullen we alle ingebouwde opdrachten die in &kturtle; kunnen worden gebruikt, uitleggen. Met het commando <link linkend="learn" 0631 >leer</link 0632 > kunnen overigens zelf opdrachten worden gemaakt. De hier besproken ingebouwde (dus oorspronkelijke) opdrachten worden met donkerblauw <glossterm 0633 >geaccentueerd</glossterm 0634 ></para> 0635 0636 <sect2 id="moving-the-turtle"> 0637 <title 0638 >De schildpad bewegen</title> 0639 <para 0640 >Er zijn verschillende opdrachten waarmee je de schildpad over het scherm kunt bewegen.</para> 0641 0642 <variablelist> 0643 <anchor id="forward"/> 0644 <varlistentry 0645 > 0646 <term 0647 >vooruit (vt)<indexterm 0648 ><primary 0649 >vooruit (vt)</primary 0650 ></indexterm 0651 ></term> 0652 <listitem 0653 ><para 0654 ><screen 0655 >vooruit X</screen 0656 ><userinput 0657 >vooruit X</userinput 0658 > verplaatst de schildpad X pixels vooruit. Als de pen neer is laat de schildpad een spoor achter. <userinput 0659 >vooruit</userinput 0660 > kan worden afgekort met <userinput 0661 >vt</userinput 0662 ></para 0663 ></listitem> 0664 </varlistentry> 0665 </variablelist> 0666 <variablelist> 0667 <anchor id="backward"/> 0668 <varlistentry 0669 > 0670 <term 0671 >achteruit (at)<indexterm 0672 ><primary 0673 >achteruit (at)</primary 0674 ></indexterm 0675 ></term> 0676 <listitem 0677 ><para 0678 ><screen 0679 >achteruit X</screen 0680 ><userinput 0681 >achteruit X</userinput 0682 > verplaatst de schildpad X pixels achteruit. Als de pen neer is laat de schildpad een spoor achter. <userinput 0683 >achteruit</userinput 0684 > kan worden afgekort met <userinput 0685 >at</userinput 0686 >.</para 0687 ></listitem> 0688 </varlistentry> 0689 </variablelist> 0690 <variablelist> 0691 <anchor id="turnleft"/> 0692 <varlistentry 0693 > 0694 <term 0695 >draailinks (dl)<indexterm 0696 ><primary 0697 >draailinks (dl)</primary 0698 ></indexterm 0699 ></term> 0700 <listitem 0701 ><para 0702 ><screen 0703 >draailinks X</screen 0704 ><userinput 0705 >draailinks X</userinput 0706 > laat de schildpad X graden naar links draaien. <userinput 0707 >draailinks</userinput 0708 > kan worden afgekort met <userinput 0709 >dl</userinput 0710 >.</para 0711 ></listitem> 0712 </varlistentry> 0713 </variablelist> 0714 <variablelist> 0715 <anchor id="turnright"/> 0716 <varlistentry 0717 > 0718 <term 0719 >draairechts (dr)<indexterm 0720 ><primary 0721 >draairechts (dr)</primary 0722 ></indexterm 0723 ></term> 0724 <listitem 0725 ><para 0726 ><screen 0727 >draairechts X</screen 0728 ><userinput 0729 >draairechts X</userinput 0730 > laat de schildpad X graden naar rechts draaien. <userinput 0731 >draairechts</userinput 0732 > kan worden afgekort met <userinput 0733 >dr</userinput 0734 >.</para 0735 ></listitem> 0736 </varlistentry> 0737 </variablelist> 0738 <variablelist> 0739 <anchor id="direction"/> 0740 <varlistentry 0741 > 0742 <term 0743 >richting (rt)<indexterm 0744 ><primary 0745 >richting (rt)</primary 0746 ></indexterm 0747 ></term> 0748 <listitem 0749 ><para 0750 ><screen 0751 >richting X</screen 0752 ><userinput 0753 >richting X</userinput 0754 > zet de richting van de schildpad op X graden, geteld vanaf 0 (recht naar boven). Dus niet ten opzichte van de vorige positie van de schildpad. <userinput 0755 >richting</userinput 0756 > kan worden afgekort met <userinput 0757 >rt</userinput 0758 >.</para 0759 ></listitem> 0760 </varlistentry> 0761 </variablelist> 0762 <variablelist> 0763 <anchor id="getdirection"/> 0764 <varlistentry 0765 > 0766 <term 0767 >haalrichting<indexterm 0768 ><primary 0769 >haalrichting</primary 0770 ></indexterm 0771 ></term> 0772 <listitem 0773 ><para 0774 ><screen 0775 >haalrichting</screen 0776 ><userinput 0777 >haalrichting X</userinput 0778 > geeft de ricting terug van de schildpad, in de vorm van een aantal graden, geteld vanaf nul. Nul is de richting recht naar boven, dus als de schildpad recht naar boven loopt.</para 0779 ></listitem> 0780 </varlistentry> 0781 </variablelist> 0782 <variablelist> 0783 <anchor id="center"/> 0784 <varlistentry 0785 > 0786 <term 0787 >thuis<indexterm 0788 ><primary 0789 >thuis</primary 0790 ></indexterm 0791 ></term> 0792 <listitem 0793 ><para 0794 ><screen 0795 >thuis</screen 0796 ><userinput 0797 >thuis</userinput 0798 > plaatst de schildpad in het midden van het canvas.</para 0799 ></listitem> 0800 </varlistentry> 0801 </variablelist> 0802 <variablelist> 0803 <anchor id="go"/> 0804 <varlistentry 0805 > 0806 <term 0807 >ganaar<indexterm 0808 ><primary 0809 >ganaar</primary 0810 ></indexterm 0811 ></term> 0812 <listitem 0813 ><para 0814 ><screen 0815 >ganaar X,Y</screen 0816 ><userinput 0817 >ganaar</userinput 0818 > plaatst de schildpad op een bepaalde plaats op het canvas. De plaats is op X <glossterm linkend="pixels" 0819 >pixels</glossterm 0820 > vanaf de linkerkant en Y <glossterm linkend="pixels" 0821 >pixels</glossterm 0822 > vanaf de bovenkant van het canvas.</para 0823 ></listitem> 0824 </varlistentry> 0825 </variablelist> 0826 <variablelist> 0827 <anchor id="gox"/> 0828 <varlistentry 0829 > 0830 <term 0831 >ganaarx<indexterm 0832 ><primary 0833 >ganaarx (gx)</primary 0834 ></indexterm 0835 ></term> 0836 <listitem 0837 ><para 0838 ><screen 0839 >ganaarx X</screen 0840 ><userinput 0841 >ganaarx X</userinput 0842 > laat de schildpad naar een positie gaan op X <glossterm linkend="pixels" 0843 >pixels</glossterm 0844 > vanaf de linkerkant van het canvas. De hoogte blijft hetzelfde. <userinput 0845 >gox</userinput 0846 > kan wordenafgekort tot <userinput 0847 >gx</userinput 0848 >.</para 0849 ></listitem> 0850 </varlistentry> 0851 </variablelist> 0852 <variablelist> 0853 <anchor id="goy"/> 0854 <varlistentry 0855 > 0856 <term 0857 >ganaary<indexterm 0858 ><primary 0859 >ganaary (gy)</primary 0860 ></indexterm 0861 ></term> 0862 <listitem 0863 ><para 0864 ><screen 0865 >ganaary Y</screen 0866 ><userinput 0867 >ganaary</userinput 0868 > laat de schildpad naar een positie gaan die Y <glossterm linkend="pixels" 0869 >pixels</glossterm 0870 > vanaf de bovenkant van het canvas ligt. De afstand vanaf de linkerkant van het canvas blijft hetzelfde. <userinput 0871 >ganaary</userinput 0872 > kan wordenafgekort tot <userinput 0873 >gy</userinput 0874 >.</para 0875 ></listitem> 0876 </varlistentry> 0877 </variablelist> 0878 <note 0879 ><para 0880 >Met de opdrachten <userinput 0881 >ganaar</userinput 0882 >, <userinput 0883 >ganaarx</userinput 0884 >, <userinput 0885 >ganaary</userinput 0886 > en <userinput 0887 >thuis</userinput 0888 > tekent de schildpad geen lijn, onafhankelijk van of de pen op is of neer.</para> 0889 </note> 0890 </sect2> 0891 0892 <sect2 id="locate-the-turtle"> 0893 <title 0894 >Waar is de schildpad?</title> 0895 <para 0896 >Er zijn twee opdrachten die de positie van de schildpad op het scherm doorgeven (teruggeven).</para> 0897 0898 <variablelist> 0899 <anchor id="getx"/> 0900 <varlistentry 0901 > 0902 <term 0903 >haalx<indexterm 0904 ><primary 0905 >haalx</primary 0906 ></indexterm 0907 ></term> 0908 <listitem 0909 ><para 0910 ><userinput 0911 >haalx</userinput 0912 > geeft het aantal pixels door dat de huidige positie van de schildpad is vanaf de linkerkant van het scherm.</para 0913 ></listitem> 0914 </varlistentry> 0915 </variablelist> 0916 <variablelist> 0917 <anchor id="gety"/> 0918 <varlistentry 0919 > 0920 <term 0921 >haaly<indexterm 0922 ><primary 0923 >haaly</primary 0924 ></indexterm 0925 ></term> 0926 <listitem 0927 ><para 0928 ><userinput 0929 >haaly</userinput 0930 > geeft het aantal pixels door dat de huidige positie van de schildpad is vanaf de bovenkant van het scherm.</para 0931 ></listitem> 0932 </varlistentry> 0933 </variablelist> 0934 </sect2> 0935 0936 <sect2 id="pen"> 0937 <title 0938 >De schildpad heeft een pen</title> 0939 <para 0940 >De schildpad heeft een pen die een lijn tekent als de schildpad beweegt. Er zijn een aantal opdrachten voor het besturen van de pen. In dit deel leggen we deze opdrachten uit.</para> 0941 <variablelist> 0942 <anchor id="penup"/> 0943 <varlistentry 0944 > 0945 <term 0946 >penop (po)<indexterm 0947 ><primary 0948 >penop (po)</primary 0949 ></indexterm 0950 ></term> 0951 <listitem 0952 ><para 0953 ><screen 0954 >penop</screen 0955 ><userinput 0956 >penop</userinput 0957 > tilt de pen op van het canvas. Als de pen <quote 0958 >op</quote 0959 > is, wordt er geen lijn getekend als de schildpad beweegt. Kijk ook bij <userinput 0960 >penneer</userinput 0961 >. <userinput 0962 >penop</userinput 0963 > kan worden afgekort met <userinput 0964 >po</userinput 0965 >.</para 0966 ></listitem> 0967 </varlistentry> 0968 </variablelist> 0969 <variablelist> 0970 <anchor id="pendown"/> 0971 <varlistentry 0972 > 0973 <term 0974 >penneer (pn)<indexterm 0975 ><primary 0976 >penneer (pn)</primary 0977 ></indexterm 0978 ></term> 0979 <listitem 0980 ><para 0981 ><screen 0982 >penneer</screen 0983 ><userinput 0984 >penneer</userinput 0985 > zet de pen neer op het canvas. Als de pen <quote 0986 >neer</quote 0987 > is op het canvas, wordt er een lijn getekend als de schildpad beweegt. Zie ook <userinput 0988 >penop</userinput 0989 >. <userinput 0990 >penneer</userinput 0991 > kan worden afgekort met <userinput 0992 >pn</userinput 0993 >.</para 0994 ></listitem> 0995 </varlistentry> 0996 </variablelist> 0997 <variablelist> 0998 <anchor id="setpenwidth"/> 0999 <varlistentry 1000 > 1001 <term 1002 >pendikte (pd)<indexterm 1003 ><primary 1004 >pendikte (pd)</primary 1005 ></indexterm 1006 ></term> 1007 <listitem 1008 ><para 1009 ><screen 1010 >pendikte X</screen 1011 ><userinput 1012 >pendikte X</userinput 1013 > stelt de dikte van de pen (de breedte van de lijn) op X <glossterm linkend="pixels" 1014 >pixels</glossterm 1015 >. <userinput 1016 >pendikte</userinput 1017 > kan worden afgekort met <userinput 1018 >pd</userinput 1019 >.</para 1020 ></listitem> 1021 </varlistentry> 1022 </variablelist> 1023 <variablelist> 1024 <anchor id="setfgcolor"/> 1025 <varlistentry 1026 > 1027 <term 1028 >penkleur (pk)<indexterm 1029 ><primary 1030 >penkleur (pk)</primary 1031 ></indexterm 1032 ></term> 1033 <listitem 1034 ><para 1035 ><screen 1036 >penkleur R,G,B</screen 1037 ><userinput 1038 >penkleur</userinput 1039 > stelt de kleur in van de pen. <userinput 1040 >penkleur</userinput 1041 > heeft een <glossterm linkend="rgb" 1042 >RGB-combinatie (drie getallen tussen 0 en 255) </glossterm 1043 > nodig als invoer. <userinput 1044 >penkleur</userinput 1045 > kan worden afgekort met <userinput 1046 >pk</userinput 1047 >.</para 1048 ></listitem> 1049 </varlistentry> 1050 </variablelist> 1051 </sect2> 1052 1053 <sect2 id="canvas"> 1054 <title 1055 >Opdrachten voor het canvas</title> 1056 <para 1057 >Er zijn verschillende opdrachten voor de besturing van het canvas</para> 1058 <variablelist> 1059 <anchor id="resizecanvas"/> 1060 <varlistentry> 1061 <term 1062 >canvasmaat (cm)<indexterm 1063 ><primary 1064 >canvasmaat (cm)</primary 1065 ></indexterm 1066 ></term> 1067 <listitem 1068 ><para 1069 ><screen 1070 >canvasmaat X,Y</screen 1071 >Met het commando <userinput 1072 >canvasmaat</userinput 1073 > kan de grootte van het canvas worden ingesteld. Invoer is X en Y, waarbij X is de nieuwe canvasbreedte is in <glossterm linkend="pixels" 1074 >pixels</glossterm 1075 >, en Y de nieuwe hoogte van het canvas, ook in <glossterm linkend="pixels" 1076 >pixels</glossterm 1077 >. <userinput 1078 >canvasmaat</userinput 1079 > kan worden afgekort tot <userinput 1080 >cs</userinput 1081 >.</para 1082 ></listitem> 1083 </varlistentry> 1084 </variablelist> 1085 <variablelist> 1086 <anchor id="setbgcolor"/> 1087 <varlistentry 1088 > 1089 <term 1090 >canvaskleur (ck)<indexterm 1091 ><primary 1092 >canvaskleur (ck)</primary 1093 ></indexterm 1094 ></term> 1095 <listitem 1096 ><para 1097 ><screen 1098 >canvaskleur R,G,B</screen 1099 ><userinput 1100 >canvaskleur</userinput 1101 > stelt de kleur in van het canvas. <userinput 1102 >canvaskleur</userinput 1103 > heeft een <glossterm linkend="rgb" 1104 >RGB-combinatie (drie getallen tussen 0 en 255) </glossterm 1105 > nodig als invoer. <userinput 1106 >canvaskleur</userinput 1107 > kan worden afgekort met <userinput 1108 >ck</userinput 1109 >.</para 1110 ></listitem> 1111 </varlistentry> 1112 </variablelist> 1113 </sect2> 1114 1115 <sect2 id="clean"> 1116 <title 1117 >Opdrachten om schoon te maken</title> 1118 <para 1119 >Er zijn twee opdrachten waarmee je het canvas kunt schoonmaken nadat je er een bende van hebt gemaakt.</para> 1120 <variablelist> 1121 <anchor id="clear"/> 1122 <varlistentry 1123 > 1124 <term 1125 >schoon (cs)<indexterm 1126 ><primary 1127 >schoon (cs)</primary 1128 ></indexterm 1129 ></term> 1130 <listitem 1131 ><para 1132 ><screen 1133 >schoon</screen 1134 >Met <userinput 1135 >schoon</userinput 1136 > kunnen alle tekeningen op het canvas worden gewist. De rest blijft staan, de positie en de hoek van de schildpad, de kleur van het canvas, de zichtbaarheid van de schildpad en de grootte van het canvas blijven zoals ze waren.</para 1137 ></listitem> 1138 </varlistentry> 1139 </variablelist> 1140 <variablelist> 1141 <anchor id="reset"/> 1142 <varlistentry 1143 > 1144 <term 1145 >alsnieuw<indexterm 1146 ><primary 1147 >alsnieuw</primary 1148 ></indexterm 1149 ></term> 1150 <listitem 1151 ><para 1152 ><screen 1153 >alsnieuw</screen 1154 ><userinput 1155 >alsnieuw</userinput 1156 > maakt nog meer schoon dan het commando <userinput 1157 >schoon</userinput 1158 >. Na het commando <userinput 1159 >alsnieuw</userinput 1160 > is alles weer zoals het was direct na het starten van &kturtle;. De schildpad wordt in het midden van het scherm gezet (met de neus naar boven), de canvaskleur is wit, de schildpad tekent een zwarte lijn op het canvas, en de grootte van het canvas is weer 400 x 400 pixels.</para 1161 ></listitem> 1162 </varlistentry> 1163 </variablelist> 1164 </sect2> 1165 1166 <sect2 id="sprites"> 1167 <title 1168 >De schildpad is een sprite (zeg maar: sprait)</title> 1169 <para 1170 >Eerst volgt hier een korte uitleg van wat sprites zijn: sprites zijn kleine plaatjes die je kunt verplaatsen op het scherm, zoals je vaak in computerspelletjes ziet. Onze schildpad is zo'n sprite. Voor meer info, zie de woordenlijst bij <glossterm 1171 >linkend="sprites" 1172 >sprites</glossterm 1173 >. Noot vertaler: eigenlijk zijn sprites zoiets als geesten, feeën of kabouters.</para> 1174 <para 1175 >Hierna volgt een volledig overzicht van alle opdrachten die je kunt gebruiken bij sprites.</para> 1176 <note 1177 ><para 1178 >[De huidige versie van &kturtle; heeft alleen een schildpad als sprite. Andere sprites zijn er dus niet. In toekomstige versies van het programma zul je de schildpad kunnen veranderen naar je eigen ontwerp]</para 1179 ></note> 1180 <variablelist> 1181 <anchor id="spriteshow"/> 1182 <varlistentry 1183 > 1184 <term 1185 >toon (ts)<indexterm 1186 ><primary 1187 >toon (ts)</primary 1188 ></indexterm 1189 ></term> 1190 <listitem 1191 ><para 1192 ><screen 1193 >toon</screen 1194 ><userinput 1195 >toon</userinput 1196 > maakt de schilpad weer zichtbaar nadat die is verborgen. <userinput 1197 >toon</userinput 1198 > kan worden afgekort met <userinput 1199 >ts</userinput 1200 >.</para 1201 ></listitem> 1202 </varlistentry> 1203 </variablelist> 1204 <variablelist> 1205 <anchor id="spritehide"/> 1206 <varlistentry 1207 > 1208 <term 1209 >verberg<indexterm 1210 ><primary 1211 >verberg (vs)</primary 1212 ></indexterm 1213 ></term> 1214 <listitem 1215 ><para 1216 ><screen 1217 >verberg</screen 1218 ><userinput 1219 >verberg</userinput 1220 > verbergt de schildpad. Dit is handig als de de schildpad niet in de tekening past. <userinput 1221 >verberg</userinput 1222 > kan worden afgekort met <userinput 1223 >vs</userinput 1224 >.</para 1225 ></listitem> 1226 </varlistentry> 1227 </variablelist> 1228 </sect2> 1229 1230 <sect2 id="writing"> 1231 <title 1232 >Kan de schildpad schrijven?</title> 1233 <para 1234 >Het antwoord is: <quote 1235 >ja</quote 1236 >. De schildpad kan schrijven. Hij schrijft zo'n beetje alles wat je hem opdraagt.</para> 1237 <variablelist> 1238 <anchor id="print"/> 1239 <varlistentry 1240 > 1241 <term 1242 >druk<indexterm 1243 ><primary 1244 >druk</primary 1245 ></indexterm 1246 ></term> 1247 <listitem 1248 ><para 1249 ><screen 1250 >druk X</screen 1251 >Het commando <userinput 1252 >druk</userinput 1253 > kan worden gebruikt om de schildpad iets op het canvas te laten schrijven. <userinput 1254 >druk</userinput 1255 > heeft getallen en tekenreeksen nodig als invoer. Je kunt verschillende getallen en stukken tekst <userinput 1256 >laten schrijven</userinput 1257 > met behulp van het <quote 1258 >+</quote 1259 >-symbool. Hier is een klein voorbeeld: <screen 1260 >$jaar = 2003 1261 $auteur = "Cies" 1262 druk $auteur + " begon het KTurtle-project in " + $jaar + " en vindt het nog steeds leuk om er aan te werken!" 1263 </screen> 1264 </para 1265 ></listitem> 1266 </varlistentry> 1267 </variablelist> 1268 <variablelist> 1269 <anchor id="fontsize"/> 1270 <varlistentry 1271 > 1272 <term 1273 >lettermaat<indexterm 1274 ><primary 1275 >lettermaat</primary 1276 ></indexterm 1277 ></term> 1278 <listitem 1279 ><para 1280 ><screen 1281 >lettermaat X</screen 1282 ><userinput 1283 >lettermaat</userinput 1284 > bepaalt de grootte van de letters voor het commando <userinput 1285 >druk</userinput 1286 >. <userinput 1287 >lettermaat</userinput 1288 > heeft een getal nodig als invoer. De grootte geef je op in <glossterm linkend="pixels" 1289 >pixels</glossterm 1290 >.</para 1291 ></listitem> 1292 </varlistentry> 1293 </variablelist> 1294 </sect2> 1295 1296 <sect2 id="math-commands"> 1297 <title 1298 >Wiskundige opdrachten</title> 1299 <para 1300 >Hier volgen de wiskundige opdrachten die &kturtle; kent.</para> 1301 <variablelist> 1302 <anchor id="round"/> 1303 <varlistentry> 1304 <term 1305 >afronden<indexterm 1306 ><primary 1307 >afronden</primary 1308 ></indexterm 1309 ></term> 1310 <listitem 1311 ><para 1312 ><screen 1313 >afronden X</screen 1314 ><userinput 1315 >afronden</userinput 1316 > van het gegeven getal naar het dichtstbijzijnde gehele getal. <screen> 1317 druk afronden 10.8 #denk erom: een punt 1318 vooruit 20 1319 druk afronden 10.3 1320 </screen 1321 >Hiermee drukt de schildpad de getallen 11 en 10 af.</para 1322 ></listitem> 1323 </varlistentry> 1324 </variablelist> 1325 <variablelist> 1326 <anchor id="random"/> 1327 <varlistentry 1328 > 1329 <term 1330 >gok (gk)<indexterm 1331 ><primary 1332 >gok (gk)</primary 1333 ></indexterm 1334 ></term> 1335 <listitem 1336 ><para 1337 ><screen 1338 >gok X,Y</screen 1339 ><userinput 1340 >gok</userinput 1341 > is een commando met invoer en uitvoer. Als invoerheeft het commando twee getallen nodig, het eerste getal (X) is de minimum grootte van de uitvoer, en het tweede (Y) de maximum grootte. De uitvoer is een willekeurig getal dat gelijk is aan of groter dan het minimum en gelijk aan of kleiner dan het maximum. Hier is een klein voorbeeld:<screen> 1342 herhaal 500 [ 1343 $x = gok 10,200 1344 vooruit $x 1345 draailinks 10 - $x 1346 ] 1347 </screen 1348 > Met het commando <userinput 1349 >gok</userinput 1350 > kun je wat chaos aan je programma toevoegen.</para 1351 ></listitem> 1352 </varlistentry> 1353 </variablelist> 1354 <variablelist> 1355 <anchor id="mod"/> 1356 <varlistentry 1357 > 1358 <term 1359 >mod<indexterm 1360 ><primary 1361 >mod</primary 1362 ></indexterm 1363 ></term> 1364 <listitem 1365 ><para 1366 ><screen 1367 >mod X,Y</screen 1368 >Met het commando <userinput 1369 >mod</userinput 1370 > wordt de rest berekend vande deling van het eerste getal door het tweede getal.</para 1371 ></listitem> 1372 </varlistentry> 1373 </variablelist> 1374 <variablelist> 1375 <anchor id="sqrt"/> 1376 <varlistentry 1377 > 1378 <term 1379 >wortel<indexterm 1380 ><primary 1381 >wortel</primary 1382 ></indexterm 1383 ></term> 1384 <listitem 1385 ><para 1386 ><screen 1387 >wortel X</screen 1388 >Met het commando <userinput 1389 >wortel X</userinput 1390 > wordt de wortel van het getal X berekend.</para 1391 ></listitem> 1392 </varlistentry> 1393 </variablelist> 1394 <!-- 1395 <variablelist> 1396 <anchor id="exp"/> 1397 <varlistentry 1398 > 1399 <term 1400 >exp<indexterm 1401 ><primary 1402 >exp</primary 1403 ></indexterm 1404 ></term> 1405 <listitem 1406 ><para 1407 ><screen 1408 >sqrt X</screen> 1409 </para 1410 ></listitem> 1411 </varlistentry> 1412 </variablelist> 1413 --> 1414 <variablelist> 1415 <anchor id="pi"/> 1416 <varlistentry 1417 > 1418 <term 1419 >pi<indexterm 1420 ><primary 1421 >pi</primary 1422 ></indexterm 1423 ></term> 1424 <listitem 1425 ><para 1426 ><screen 1427 >pi</screen 1428 >Dit commando geeft de constante pi, <userinput 1429 >3.14159</userinput 1430 >, door. </para 1431 ></listitem> 1432 </varlistentry> 1433 </variablelist> 1434 <variablelist> 1435 <anchor id="sin"/> 1436 <anchor id="cos"/> 1437 <anchor id="tan"/> 1438 <varlistentry> 1439 <term 1440 >sin<indexterm 1441 ><primary 1442 >sin</primary 1443 ></indexterm 1444 >, cos<indexterm 1445 ><primary 1446 >cos</primary 1447 ></indexterm 1448 >, tan<indexterm 1449 ><primary 1450 >tan</primary 1451 ></indexterm 1452 ></term> 1453 <listitem 1454 ><para> 1455 <screen 1456 >sin X 1457 cos X 1458 tan X 1459 </screen 1460 >Met deze drie opdrachten worden de welbekende goniometrische functies <userinput 1461 >sinus</userinput 1462 >, <userinput 1463 >cosinus</userinput 1464 > en <userinput 1465 >tangens</userinput 1466 > berekend. De invoer van deze opdrachten, X, is een<link linkend="number" 1467 >getal</link 1468 > (in graden).</para 1469 ></listitem> 1470 </varlistentry> 1471 </variablelist> 1472 <variablelist> 1473 <anchor id="arcsin"/> 1474 <anchor id="arccos"/> 1475 <anchor id="arctan"/> 1476 <varlistentry> 1477 <term 1478 >arcsin<indexterm 1479 ><primary 1480 >arcsin</primary 1481 ></indexterm 1482 >, arccos<indexterm 1483 ><primary 1484 >arccos</primary 1485 ></indexterm 1486 >, arctan<indexterm 1487 ><primary 1488 >arctan</primary 1489 ></indexterm 1490 ></term> 1491 <listitem 1492 ><para> 1493 <screen 1494 >arcsin X 1495 arccos X 1496 arctan X 1497 </screen 1498 >Deze opdrachten zijn de inverse (dat is hier: terug-) functies van <link linkend="sin" 1499 >sin</link 1500 >, <link linkend="cos" 1501 >cos</link 1502 > en <link linkend="tan" 1503 >tan</link 1504 >. De invoer van deze functies, X, is een <link linkend="number" 1505 >getal</link 1506 >. Die kan overigens niet elke waarde hebben, alléén die waarden die sin X, cos X en tan X kunnen hebben.</para 1507 ></listitem> 1508 </varlistentry> 1509 </variablelist> 1510 </sect2> 1511 1512 <sect2 id="dialogs"> 1513 <title 1514 >Invoer en terugkoppeling met behulp van dialogen</title> 1515 <para 1516 >Een dialoog is een venstertje met daarin een boodschap, of waarin om invoer wordt gevraagd. &kturtle; kent twee opdrachten voor een dialoog, namelijk <userinput 1517 >bericht</userinput 1518 > en <userinput 1519 >vraag</userinput 1520 ></para> 1521 <variablelist> 1522 <anchor id="message"/> 1523 <varlistentry 1524 > 1525 <term 1526 >bericht<indexterm 1527 ><primary 1528 >bericht</primary 1529 ></indexterm 1530 ></term> 1531 <listitem 1532 ><para 1533 ><screen 1534 >bericht X</screen 1535 >De opdracht <userinput 1536 >bericht</userinput 1537 > heeft als invoer een <link linkend="string" 1538 >tekenreeks</link 1539 >. Er wordt een venstertje getoond waarin een dialoog met de tekst van deze <link linkend="string" 1540 >tekenreeks</link 1541 >. <screen 1542 >bericht "Cies begon het KTurtle-project in 2003 en vindt het nog steeds leuk om er aan te werken!" 1543 </screen> 1544 </para 1545 ></listitem> 1546 </varlistentry> 1547 </variablelist> 1548 <variablelist> 1549 <anchor id="ask"/> 1550 <varlistentry 1551 > 1552 <term 1553 >vraag<indexterm 1554 ><primary 1555 >vraag</primary 1556 ></indexterm 1557 ></term> 1558 <listitem 1559 ><para 1560 ><screen 1561 >vraag X</screen 1562 ><userinput 1563 >vraag</userinput 1564 > heeft als invoer een <link linkend="string" 1565 >tekenreeks</link 1566 >. Er wordt een venstertje getoond met de tekst van deze tekenreeks, net als bij het commando <link linkend="message" 1567 >bericht</link 1568 >. Maar in deze dialoog is ook een invoerveld. In dit invoerveld kan een gebruiker een <link linkend="number" 1569 >getal</link 1570 > of een <link linkend="string" 1571 >tekenreeks</link 1572 > invoeren die in een <link linkend="assignment-of-variables" 1573 >variabele</link 1574 > kan worden opgeslagen, of aan een <link linkend="commands" 1575 >commando</link 1576 > kan worden doorgegeven. Bijvoorbeeld <screen> 1577 $in = vraag "Hoe oud ben je?" 1578 $uit = 5 + $in 1579 druk "Over 5 jaar ben je " + $uit + " jaar." 1580 </screen 1581 >. Als de gebruiker de invoerdialoog annuleert of niets invult wordt de <link linkend="assignment-of-variables" 1582 >variabele</link 1583 > leeg gemaakt.</para 1584 ></listitem> 1585 </varlistentry> 1586 </variablelist> 1587 </sect2> 1588 1589 </sect1> 1590 1591 1592 1593 <sect1 id="assignment-of-variables"> 1594 <title 1595 >Toewijzingen aan variabelen</title> 1596 <para 1597 >Eerst bekijken we variabelen, daarna hoe we daar waarden aan kunnen toewijzen. </para> 1598 1599 <para 1600 >Variabelen zijn woorden die met een <quote 1601 >$</quote 1602 > beginnen, in de <link linkend="the-editor" 1603 >codebewerker </link 1604 > worden ze met paars <glossterm 1605 >geaccentueerd</glossterm 1606 >.</para> 1607 1608 <para 1609 >In een variabele kan elk <link linkend="number" 1610 >getal</link 1611 >, <link linkend="string" 1612 >tekenreeks</link 1613 > of <link linkend="boolean-value" 1614 >booleaanse waarde (waar/onwaar)</link 1615 > worden bewaard. Met behulp van de toewijzing, <userinput 1616 >=</userinput 1617 >, kan de variabele zijn inhoud krijgen. Die inhoud blijft hierin aanwezig, totdat het programma eindigt, of als de variabele een andere waarde krijgt.</para> 1618 1619 <para 1620 >Variabelen, mits met inhoud, kunnen in de plaats van hun inhoud worden gebruikt. Zie bijvoorbeeld het volgende stukje &turtlescript;: <screen> 1621 $x = 10 1622 $x = $x / 3 1623 print $x 1624 </screen 1625 > Eerst krijgt de variabele <userinput 1626 >$x</userinput 1627 > de waarde<userinput 1628 >10</userinput 1629 >. Daarna krijgt <userinput 1630 >$x</userinput 1631 > een nieuwe waarde, van zichzelf, gedeeld door <userinput 1632 >3</userinput 1633 > — dit betekent dus dat <userinput 1634 >$x</userinput 1635 > daarna de waarde <userinput 1636 >10 / 3</userinput 1637 > heeft. Tenslotte wordt <userinput 1638 >$x</userinput 1639 > afgedrukt (op het scherm). In regels 2 en 3 zie je dat <userinput 1640 >$x</userinput 1641 > in de plaats van zijn inhoud wordt gebruikt.</para> 1642 1643 <para 1644 >Variabelen meten een waarde hebben gekregen voordat ze kunnen worden gebruikt. Bijvoorbeeld: <screen> 1645 druk $n 1646 </screen 1647 > zal een foutmelding geven.</para> 1648 1649 <para 1650 >Beschouw het volgende stukje &turtlescript;: <screen> 1651 $a = 2004 1652 $b = 25 1653 1654 # Het volgende commando drukt "2029" af 1655 druk $a + $b 1656 achteruit 30 1657 # Het volgende commando drukt "2004 plus 25 is gelijk aan 2029" af 1658 print $a + " plus " + $b + " is gelijk aan " + ($a + $b) 1659 </screen 1660 > In de eerste twee regels krijgen de variabelen <userinput 1661 >$a</userinput 1662 > en <userinput 1663 >$b</userinput 1664 > de waarden 2004 en 25. Daarna volgen twee <userinput 1665 >druk</userinput 1666 >-opdrachten met daartussen in een <userinput 1667 >achteruit 30</userinput 1668 >. In het commentaar voor de <userinput 1669 >druk</userinput 1670 >- opdrachten wordt uitgelegd wat er gebeurt. Zoals je ziet worden variabelen precies zo gebruikt als hun inhoud, je kunt ze met elke soort <link linkend="operators" 1671 >bewerkingen</link 1672 > gebruiken, of als invoer voor <link linkend="commands" 1673 >opdrachten</link 1674 >.</para> 1675 1676 <para 1677 >Nog een voorbeeld: <screen> 1678 $naam = vraag "Hoe heet je?" 1679 print "Ha die " + $naam + "! Veel plezier met het leren programmeren..." 1680 </screen 1681 > Tamelijk recht zo die gaat. Ook hier kun je zien dat de variabele <userinput 1682 >$naam</userinput 1683 > precies als zijn inhoud, een tekenreeks, wordt gebruikt.</para> 1684 1685 <para 1686 >Bij het gebruik van variabelen is de <link linkend="the-inspector" 1687 >inspectie</link 1688 > erg nuttig. Hierin kun je de inhoud zien van alle huidige variabelen.</para> 1689 </sect1> 1690 1691 1692 1693 <sect1 id="controlling-execution"> 1694 <title 1695 >Sturen van het programma</title> 1696 <para 1697 >De programmastuuropdrachten maken het mogelijk, —zoals de naam al zegt— het verloop van een programma te sturen.</para> 1698 <para 1699 >Opdrachten die het programmaverloop sturen worden <glossterm 1700 >geaccentueerd </glossterm 1701 > met donkergroen in een vet lettertype. De accolades worden meestal samen met de programmastuuropdrachten gebruikt en worden <glossterm 1702 >geaccentueerd</glossterm 1703 > met zwart.</para> 1704 1705 <sect2 id="wait"> 1706 <title 1707 >De schildpad laten wachten</title> 1708 <para 1709 >Als je al wat hebt geprogrammeerd in &kturtle;, dan heb je vast gemerkt dat de schildpad erg snel tekent. Dit commando laat de schildpad steeds een opgegeven tijdsduur te wachten.</para> 1710 <variablelist> 1711 <varlistentry> 1712 <term 1713 >wacht<indexterm 1714 ><primary 1715 >wacht</primary 1716 ></indexterm 1717 ></term> 1718 <listitem 1719 ><para 1720 ><screen 1721 >wacht X</screen 1722 ><userinput 1723 >wacht X</userinput 1724 > laat de schildpad X seconden wachten. <screen> 1725 herhaal 36{ 1726 vooruit 5 1727 draairechts 10 1728 wacht 0.5 # Denk erom: een punt 1729 } 1730 </screen 1731 > Deze programmacode tekent een cirkel, maar de schildpad zal na elke stap een halve seconde wachten. Hier door lijkt het net of de schildpad kruipt.</para 1732 ></listitem> 1733 </varlistentry> 1734 </variablelist> 1735 </sect2> 1736 1737 <sect2 id="if"> 1738 <title 1739 >Uitvoeren <quote 1740 >indien</quote 1741 ></title> 1742 <variablelist> 1743 <varlistentry> 1744 <term 1745 >als<indexterm 1746 ><primary 1747 >als</primary 1748 ></indexterm 1749 ></term> 1750 <listitem 1751 ><para 1752 ><screen 1753 >als <link linkend="boolean-value" 1754 >boolean</link 1755 > { ... }</screen 1756 >De programmacode tussen de accolades wordt alleen uitgevoerd <userinput 1757 >als</userinput 1758 > de <link linkend="boolean-value" 1759 >booleaanse waarde</link 1760 > de waarde <quote 1761 >waar</quote 1762 > krijgt. <screen> 1763 $x = 6 1764 als $x > 5 { 1765 druk "$x is groter dan 5!" 1766 } 1767 </screen 1768 > Op de eerste regel krijgt <userinput 1769 >$x</userinput 1770 > de waarde 6. Op de tweede regel wordt een <link linkend="comparing-operators" 1771 >vergelijkingsbewerking</link 1772 > gebruikt om de waarde van <userinput 1773 >$x > 5</userinput 1774 > te bepalen. Omdat die <quote 1775 >waar</quote 1776 > is, 6 is groter dan 5, zal het programmastuurcommando <userinput 1777 >als</userinput 1778 > de programmacode tussen de accolades laten uitvoeren.</para 1779 ></listitem> 1780 </varlistentry> 1781 </variablelist> 1782 </sect2> 1783 1784 <sect2 id="else"> 1785 <title 1786 >Als niet, of in andere woorden: <quote 1787 >anders</quote 1788 ></title> 1789 <variablelist> 1790 <varlistentry> 1791 <term 1792 >anders<indexterm 1793 ><primary 1794 >anders</primary 1795 ></indexterm 1796 ></term> 1797 <listitem 1798 ><para 1799 ><screen 1800 >als <link linkend="boolean-value" 1801 >booleaanse waarde</link 1802 > { ... } anders { ... }</screen 1803 ><userinput 1804 >anders</userinput 1805 > kan worden gebruikt bij het programmastuurcommando <link linkend="if" 1806 ><userinput 1807 >als</userinput 1808 ></link 1809 >. De programmacode tussen de accolades na <userinput 1810 >anders</userinput 1811 > wordt alleen uitgevoerd als de <link linkend="boolean-value" 1812 >booleaanse waarde</link 1813 > de waarde <quote 1814 >onwaar</quote 1815 > heeft. <screen> 1816 alsnieuw 1817 $x = 4 1818 als $x > 5 { 1819 druk "x is groter dan vijf!" 1820 } 1821 anders 1822 { 1823 druk "x is kleiner dan zes!" 1824 } 1825 </screen 1826 > De <link linkend="comparing-operators" 1827 >vergelijkingsbewerking</link 1828 > bepaalt de waarde van <userinput 1829 >$x > 5</userinput 1830 >. Omdat 4 niet groter is dan 5 is die waarde <quote 1831 >onwaar</quote 1832 >. Dit betekent dat de programmacode tussen de accolades na <userinput 1833 >anders</userinput 1834 > wordt uitgevoerd.</para 1835 ></listitem> 1836 </varlistentry> 1837 </variablelist> 1838 </sect2> 1839 1840 <sect2 id="while"> 1841 <title 1842 >De <quote 1843 >terwijl</quote 1844 >-lus </title> 1845 <variablelist> 1846 <varlistentry> 1847 <term 1848 >terwijl<indexterm 1849 ><primary 1850 >terwijl</primary 1851 ></indexterm 1852 ></term> 1853 <listitem 1854 ><para 1855 ><screen 1856 >terwijl <link linkend="boolean-value" 1857 >booleaanse bewerking</link 1858 > { ... }</screen 1859 >Het programmastuurcommando <userinput 1860 >terwijl</userinput 1861 > lijkt veel op <link linkend="if" 1862 >als<userinput 1863 ></userinput 1864 ></link 1865 >. Het verschil is dat <userinput 1866 >terwijl</userinput 1867 > de programmacode tussen de accolades blijft herhalen totdat de <link linkend="boolean-value" 1868 >booleaanse waarde</link 1869 > <quote 1870 >onwaar</quote 1871 > is geworden. <screen> 1872 $x = 1 1873 terwijl $x < 8 { 1874 vooruit 10 1875 wacht 1 1876 $x = $x + 1 1877 } 1878 </screen 1879 > Op de eerste regel krijgt <userinput 1880 >$x</userinput 1881 > de waarde 1. Op de tweede regel wordt de waarde bepaald van<userinput 1882 >$x < 8</userinput 1883 >. Omdat die waarde <quote 1884 >waar</quote 1885 > is, start het programmastuurcommando<userinput 1886 >terwijl</userinput 1887 > het uitvoeren van de code tussen de accolades totdat de waarde van <userinput 1888 >$x < 8</userinput 1889 > <quote 1890 >onwaar</quote 1891 > is geworden. In dit voorbeeld wordt de code tussen de accolades 7 keer uitgevoerd, omdat telkens als de vijfde regel wordt uitgevoerd de waarde <userinput 1892 >$x</userinput 1893 > met 1 wordt vermeerderd.</para 1894 ></listitem> 1895 </varlistentry> 1896 </variablelist> 1897 </sect2> 1898 1899 <sect2 id="repeat"> 1900 <title 1901 >De <quote 1902 >herhaal</quote 1903 >-loop</title> 1904 <variablelist> 1905 <varlistentry> 1906 <term 1907 >herhaal<indexterm 1908 ><primary 1909 >herhaal</primary 1910 ></indexterm 1911 ></term> 1912 <listitem 1913 ><para 1914 ><screen 1915 >Herhaal <link linkend="number" 1916 >getal</link 1917 > { ... }</screen 1918 >Het programmastuurcommando <userinput 1919 >herhaal</userinput 1920 > lijkt veel op <link linkend="while" 1921 ><userinput 1922 >terwijl</userinput 1923 ></link 1924 >. Het verschil is dat <userinput 1925 >herhaal</userinput 1926 > de programmacode tussen de accolades het in het getal opgegeven aantal keren blijft herhalen</para 1927 ></listitem> 1928 </varlistentry> 1929 </variablelist> 1930 </sect2> 1931 1932 <sect2 id="for"> 1933 <title 1934 >De <quote 1935 >voor</quote 1936 >-lus, een tellende lus</title> 1937 <variablelist> 1938 <varlistentry> 1939 <term 1940 >voor<indexterm 1941 ><primary 1942 >voor</primary 1943 ></indexterm 1944 ><indexterm 1945 ><primary 1946 >naar</primary 1947 ></indexterm 1948 ><indexterm 1949 ><primary 1950 >stap</primary 1951 ></indexterm 1952 ></term> 1953 <listitem 1954 ><para 1955 ><screen 1956 >voor <link linkend="assignment-of-variables" 1957 >variabele</link 1958 > = <link linkend="number" 1959 >getal</link 1960 > tot <link linkend="number" 1961 >getal</link 1962 > { ... }</screen 1963 >De lus <userinput 1964 >voor</userinput 1965 > is een <quote 1966 >tellende lus</quote 1967 >, en telt dus voor jou. <screen> 1968 voor $x = 1 tot 10 { 1969 druk $x * 7 1970 vooruit 15 1971 } 1972 </screen 1973 > Telkens als de programmacode tussen de accolades wordt uitgevoerd wordt de waarde <userinput 1974 >$x</userinput 1975 > met 1 vermeerderd (dit gaat dus van zelf), totdat <userinput 1976 >$x</userinput 1977 > de waarde 10 heeft bereikt. De programmacode tussen de accolades schrijft de waarde van <userinput 1978 >$x</userinput 1979 > (op het scherm), vermenigvuldigd met 7. Nadat deze opdrachten zijn uitgevoerd zie je de tafel van 7 op het canvas staan. </para> 1980 <para 1981 >De standaard stapgrootte in een lus is 1, maar een andere waarde kan worden ingesteld met <screen 1982 >voor <link linkend="assignment-of-variables" 1983 >variabele</link 1984 > = <link linkend="number" 1985 >getal</link 1986 > tot <link linkend="number" 1987 >getal </link 1988 > stap <link linkend="number" 1989 >getal</link 1990 > { ... }</screen 1991 ></para 1992 ></listitem> 1993 </varlistentry> 1994 </variablelist> 1995 </sect2> 1996 1997 <sect2 id="break"> 1998 <title 1999 >Een lus verlaten</title> 2000 <variablelist> 2001 <varlistentry> 2002 <term 2003 >kap<indexterm 2004 ><primary 2005 >kap</primary 2006 ></indexterm 2007 ></term> 2008 <listitem 2009 ><para 2010 ><screen 2011 >kap</screen 2012 >Stopt onmiddellijk met het uitvoeren van de huidige lus en ga verder met het uitvoeren van de programmaregel direct na de lus.</para 2013 ></listitem> 2014 </varlistentry> 2015 </variablelist> 2016 </sect2> 2017 2018 <sect2 id="exit"> 2019 <title 2020 >Het uitvoeren van je programma stoppen</title> 2021 <variablelist> 2022 <varlistentry> 2023 <term 2024 >afsluiten<indexterm 2025 ><primary 2026 >afsluiten</primary 2027 ></indexterm 2028 ></term> 2029 <listitem 2030 ><para 2031 ><screen 2032 >afsluiten</screen 2033 >Beëindigt het uitvoeren van je programma.</para 2034 ></listitem> 2035 </varlistentry> 2036 </variablelist> 2037 </sect2> 2038 2039 <sect2 id="assert"> 2040 <title 2041 >Invoer testen</title> 2042 <variablelist> 2043 <varlistentry> 2044 <term 2045 >test<indexterm 2046 ><primary 2047 >test</primary 2048 ></indexterm 2049 ></term> 2050 <listitem 2051 ><para 2052 ><screen 2053 >test <link linkend="boolean-value" 2054 >boolean</link 2055 > { ... }</screen 2056 >Kan worden gebruikt voor het beredeneren van de juistheid van het programma of van de invoer. <screen 2057 >$in = ask "In welk jaar ben je geboren?" 2058 # het jaartal moet positief zijn 2059 test $in 2060 > 0 2061 </screen 2062 ></para 2063 ></listitem> 2064 </varlistentry> 2065 </variablelist> 2066 </sect2> 2067 </sect1> 2068 2069 2070 <sect1 id="learn"> 2071 2072 <title 2073 >Eigen opdrachten maken met <quote 2074 >leer</quote 2075 ></title> 2076 <para 2077 ><userinput 2078 >leer</userinput 2079 ><indexterm 2080 ><primary 2081 >leer</primary 2082 ></indexterm 2083 > is een erg leuk commando, omdat die kan worden gebruikt om je eigen opdrachten te maken. Opdrachten die je maakt kunnen <glossterm linkend="input-output" 2084 >invoer</glossterm 2085 > nodig hebben en <glossterm linkend="input-output" 2086 >uitvoer</glossterm 2087 > teruggeven. Laten we eens kijken hoe je een nieuw commando kunt maken: <screen> 2088 leer cirkel $x { 2089 herhaal 36 { 2090 vooruit $x 2091 draailinks 10 2092 } 2093 } 2094 </screen 2095 > Het nieuwe commando heet hier dus <userinput 2096 >cirkel</userinput 2097 >. <userinput 2098 >cirkel</userinput 2099 > heeft een <glossterm linkend="input-output" 2100 >invoer</glossterm 2101 > nodig, een getal, dat de grootte van de cirkel bepaalt. <userinput 2102 >cirkel</userinput 2103 > geeft geen <glossterm linkend="input-output" 2104 >uitvoer</glossterm 2105 > terug. Het commando <userinput 2106 >cirkel</userinput 2107 > kan nu worden gebruikt als een normaal commando in de rest van de programmacode. Hier een voorbeeld: <screen 2108 >leer cirkel $x { 2109 herhaal 36 { 2110 vooruit $x 2111 draailinks 10 2112 } 2113 } 2114 2115 ganaar 200,200 2116 cirkel 20 2117 2118 ganaar 300,200 2119 cirkel 40 2120 </screen> 2121 </para> 2122 <para 2123 >In het volgende voorbeeld maken we een commando met een <indexterm 2124 ><primary 2125 >uitvoerwaarde</primary 2126 ></indexterm 2127 >. <screen> 2128 leer faculteit $x { 2129 $r = 1 2130 voor $i = 1 tot $x { 2131 $r = $r * $i 2132 } 2133 geefdoor $r 2134 } 2135 2136 druk faculteit 5 2137 </screen 2138 > In dit voorbeeld maken we een nieuw commando met de naam <userinput 2139 >faculteit</userinput 2140 >. Als de invoer van dit commando <userinput 2141 >5</userinput 2142 > is, dan is de uitvoer <userinput 2143 >5*4*3*2*1</userinput 2144 >, en dat is 120. Door <userinput 2145 >geefdoor</userinput 2146 > wordt de waarde van de <glossterm linkend="input-output" 2147 >uitvoer</glossterm 2148 > doorgegeven (of ook wel: teruggegeven), zodat die bijvoorbeeld kan worden afgedrukt op het scherm, zoals in de laatste regel.</para> 2149 <para 2150 >Opdrachten kunnen meer dan een <glossterm linkend="input-output" 2151 >invoer</glossterm 2152 > nodig hebben. In het volgende voorbeeld maken we een commando dat een rechthoek tekent: <screen> 2153 leer rechthoek $x, $y { 2154 vooruit $y 2155 draairechts 90 2156 vooruit $x 2157 draairechts 90 2158 vooruit $y 2159 draairechts 90 2160 vooruit $x 2161 draairechts 90 2162 } 2163 </screen 2164 > Nu kun je <userinput 2165 >rechthoek 50, 100</userinput 2166 > doen, waarna de schildpad een rechthoek tekent op het canvas. </para> 2167 2168 </sect1> 2169 2170 </chapter>