<chapter id="reference">
<title
>&kturtle;s naslagwerk voor programmeren met &logo;</title>

<sect1 id="commands">
<title
>Commando's</title>
<para
>Met behulp van commando's vertel je de schildpad of &kturtle; om iets te doen. Sommige commando's vragen om een invoer, anderen geven een uitvoer. In deze sectie zullen we alle commando's die in &kturtle; kunnen worden gebruikt aan je uitleggen.</para>

<sect2 id="moving-the-turtle">
<title
>De schildpad voortbewegen</title>
<para
>Er zijn verschillende commando's waarmee je de schildpad over het scherm kunt bewegen.</para>
  
  <variablelist>
    <anchor id="forward"/>
    <varlistentry>
      <term
>vooruit</term>
      <listitem
><para
><screen
>vooruit X</screen>
<userinput
>vooruit</userinput
> verplaatst de schildpad vooruit met het X pixels. Als de pen omlaag staat zal de schildpad een spoor achterlaten. <userinput
>vooruit</userinput
> kun je afkorten als <userinput
>vt</userinput
>.</para
></listitem>
    </varlistentry>
  </variablelist>
  <variablelist>
    <anchor id="backward"/>
    <varlistentry>
      <term
>achteruit</term>
      <listitem
><para
><screen
>achteruit X</screen>
<userinput
>achteruit</userinput
> verplaatst de schildpad achteruit met X pixels. Als de pen omlaag staat zal de schildpad een spoor achterlaten. <userinput
>achteruit</userinput
> kun je afkorten als <userinput
>at</userinput
>.</para
></listitem>
    </varlistentry>
  </variablelist>
  <variablelist>
    <anchor id="turnleft"/>
    <varlistentry>
      <term
>draailinks</term>
      <listitem
><para
><screen
>draailinks X</screen>
<userinput
>draailinks</userinput
> laat de schildpad X graden naar links draaien. <userinput
>draailinks</userinput
> kun je afkorten als <userinput
>dl</userinput
>.</para
></listitem>
    </varlistentry>
  </variablelist>
  <variablelist>
    <anchor id="turnright"/>
    <varlistentry>
      <term
>draairechts</term>
      <listitem
><para
><screen
>draairechts X</screen>
<userinput
>draairechts</userinput
> laat de schildpad X graden naar rechts draaien. <userinput
>draairechts</userinput
> kun je afkorten als <userinput
>dr</userinput
>.</para
></listitem>
    </varlistentry>
  </variablelist>
  <variablelist>
    <anchor id="direction"/>
    <varlistentry>
      <term
>richting</term>
      <listitem
><para
><screen
>richting X</screen>
<userinput
>richting</userinput
> zet de richting van de schildpad op X graden, geteld vanaf 0. Dus niet vanuit de vorige positie van de schildpad. <userinput
>richting</userinput
> kun je afkorten als <userinput
>rt</userinput
>.</para
></listitem>
    </varlistentry>
  </variablelist>
  <variablelist>
    <anchor id="center"/>
    <varlistentry>
      <term
>thuis</term>
      <listitem
><para
><screen
>thuis</screen>
<userinput
>thuis</userinput
> zet de schildpad in het midden van het canvas.</para
></listitem>
    </varlistentry>
  </variablelist>
  <variablelist>
    <anchor id="go"/>
    <varlistentry>
      <term
>ganaar</term>
      <listitem
><para
><screen
>ganaar X,Y</screen>
<userinput
>ganaar</userinput
> laat de schildpad naar een bepaalde plek op het canvas gaan. De plek ligt X <glossterm linkend="pixels"
>pixels</glossterm
> vanaf de linkerkant en Y <glossterm linkend="pixels"
>pixels</glossterm
> vanaf de bovenkant van het canvas. Opmerking: het commando <userinput
>ganaar</userinput
> laat de schildpad geen lijn tekenen.</para
></listitem>
    </varlistentry>
  </variablelist>
  <variablelist>
    <anchor id="gox"/>
    <varlistentry>
      <term
>ganaarx</term>
      <listitem
><para
><screen
>ganaarx X</screen>
<userinput
>ganaarx</userinput
> laat de schildpad naar een positie gaan die X <glossterm linkend="pixels"
>pixels</glossterm
> vanaf de linkerkant van het canvas ligt. De hoogte blijft hetzelfde. <userinput
>ganaarx</userinput
> kun je afkorten als <userinput
>gx</userinput
>.</para
></listitem>
    </varlistentry>
  </variablelist>
  <variablelist>
    <anchor id="goy"/>
    <varlistentry>
      <term
>ganaary</term>
      <listitem
><para
><screen
>ganaary Y</screen>
<userinput
>ganaary</userinput
> laat de schildpad naar een positie gaan die Y <glossterm linkend="pixels"
>pixels</glossterm
> vanaf de bovenkant van het canvas ligt. De afstand vanaf de linkerkant van het canvas blijft hetzelfde. <userinput
>ganaary</userinput
> kun je afkorten als <userinput
>gy</userinput
>.</para
></listitem>
    </varlistentry>
  </variablelist>
</sect2>

<sect2 id="pen">
<title
>De schildpad heeft een pen</title>
<para
>De schildpad heeft een pen die een lijn tekent als de schildpad beweegt. Er zijn een aantal commando's die de pen bedienen. In deze sectie leggen we deze commando's uit.</para>
  <variablelist>
    <anchor id="penup"/>
    <varlistentry>
      <term
>penop</term>
      <listitem
><para
><screen
>penop</screen>
<userinput
>penop</userinput
> tilt de pen van het canvas. Als de pen <quote
>omhoog</quote
> is, dan wordt er geen lijn getekend als de schildpad loopt. Kijk ook bij <userinput
>penneer</userinput
>. <userinput
>penop</userinput
> kun je afkorten als <userinput
>po</userinput
>.</para
></listitem>
    </varlistentry>
  </variablelist>
  <variablelist>
    <anchor id="pendown"/>
    <varlistentry>
      <term
>penneer</term>
      <listitem
><para
><screen
>penneer</screen>
<userinput
>penneer</userinput
> zet de pen op het canvas. Als de pen op het canvas <quote
>drukt</quote
>, dan wordt er een lijn getekend als de schildpad loopt. Zie ook <userinput
>penop</userinput
>. <userinput
>penneer</userinput
> kun je afkorten als <userinput
>pn</userinput
>.</para
></listitem>
    </varlistentry>
  </variablelist>
  <variablelist>
    <anchor id="penwidth"/>
    <varlistentry>
      <term
>pendikte</term>
      <listitem
><para
><screen
>pendikte X</screen>
<userinput
>pendikte</userinput
> zet de dikte van de pen (de breedte van de lijn) op X <glossterm linkend="pixels"
>pixels</glossterm
>. <userinput
>pendikte</userinput
> kun je afkorten als <userinput
>pd</userinput
>.</para
></listitem>
    </varlistentry>
  </variablelist>
  <variablelist>
    <anchor id="pencolor"/>
    <varlistentry>
      <term
>penkleur</term>
      <listitem
><para
><screen
>penkleur R,G,B</screen>
<userinput
>penkleur</userinput
> bepaalt de kleur van de pen. <userinput
>penkleur</userinput
> vraagt om een <glossterm linkend="rgb"
>RGB-combinatie</glossterm
> als invoer. <userinput
>penkleur</userinput
> kun je afkorten als <userinput
>pk</userinput
>.</para
></listitem>
    </varlistentry>
  </variablelist>
</sect2>

<sect2 id="canvas">
<title
>Commando's om het canvas te bedienen</title>
<para
>Er zijn verschillende commando's waarmee je het canvas kunt veranderen.</para>
  <variablelist>
    <anchor id="canvassize"/>
    <varlistentry>
      <term
>canvasmaat</term>
      <listitem
><para
><screen
>canvasmaat X,Y</screen>
Met <userinput
>canvasmaat</userinput
> kun je de grootte van het canvas veranderen. Het commando vraagt om X en Y als invoer. X is de nieuwe breedte in <glossterm linkend="pixels"
>pixels</glossterm
> en Y is de nieuwe hoogte van het canvas in <glossterm linkend="pixels"
>pixels</glossterm
>. <userinput
>canvasmaat</userinput
> kun je afkorten als <userinput
>cm</userinput
>.</para
></listitem>
    </varlistentry>
  </variablelist>
  <variablelist>
    <anchor id="canvascolor"/>
    <varlistentry>
      <term
>canvaskleur</term>
      <listitem
><para
><screen
>canvaskleur R,G,B</screen>
Met <userinput
>canvaskleur</userinput
> kun je de kleur van het canvas veranderen. <userinput
>canvaskleur</userinput
> vraagt om een <glossterm linkend="rgb"
>RGB-combinatie</glossterm
> als invoer. <userinput
>canvaskleur</userinput
> kun je afkorten als <userinput
>ck</userinput
>.</para
></listitem>
    </varlistentry>
  </variablelist>
  <variablelist>
    <anchor id="wrapon"/>
    <varlistentry>
      <term
>wikkelaan</term>
      <listitem
><para
><screen
>wikkelaan</screen>
Met het commando <userinput
>wikkelaan</userinput
> kun je het <glossterm linkend="wrapping"
>wikkelen</glossterm
> van het canvas <quote
>aanzetten</quote
>. Kijk in het woordenboek van dit handboek wat <glossterm linkend="wrapping"
>wikkelen</glossterm
> is.</para
></listitem>
    </varlistentry>
  </variablelist>
  <variablelist>
    <anchor id="wrapoff"/>
    <varlistentry>
      <term
>wikkeluit</term>
      <listitem
><para
><screen
>wikkeluit</screen>
Met het commando <userinput
>wikkeluit</userinput
> kun je het <glossterm linkend="wrapping"
>wikkelen</glossterm
> van het canvast <quote
>uitzetten</quote
>. Dit betekent dat de schildpad het canvas kan verlaten en kan <quote
>verdwalen</quote
>. Kijk in het woordenboek van dit handboek voor meer informatie over <glossterm linkend="wrapping"
>wikkelen</glossterm
>.</para
></listitem>
    </varlistentry>
  </variablelist>
</sect2>

<sect2 id="clean">
<title
>Commando's om schoon te maken</title>
<para
>Er zijn twee commando's waarmee je het canvas kunt schoonmaken nadat je er een bende van hebt gemaakt.</para>
  <variablelist>
    <anchor id="clear"/>
    <varlistentry>
      <term
>schoon</term>
      <listitem
><para
><screen
>schoon</screen>
Met <userinput
>schoon</userinput
> kun je alle tekeningen op het canvas wissen. De rest blijft staan, de positie en hoek van de schildpad, de kleur van het canvas, de zichtbaarheid van de schildpad en de grootte van het canvas blijven zoals ze waren. <userinput
>schoon</userinput
> kun je afkorten als <userinput
>cs</userinput
>.</para
></listitem>
    </varlistentry>
  </variablelist>
  <variablelist>
    <anchor id="reset"/>
    <varlistentry>
      <term
>alsnieuw</term>
      <listitem
><para
><screen
>alsnieuw</screen>
<userinput
>alsnieuw</userinput
> maakt nog verder schoon dan het commando <userinput
>schoon</userinput
>. Na het commando <userinput
>alsnieuw</userinput
> is alles zoals het was toen je &kturtle; net had opgestart. De schildpad wordt in het midden van het scherm gezet, de canvaskleur is wit en de schildpad tekent een zwarte lijn op het canvas.</para
></listitem>
    </varlistentry>
  </variablelist>
</sect2>

<sect2 id="sprites">
<title
>De schildpad is een sprite</title>
<para
>Vrijwel niemand weet wat sprites zijn, dus volgt hier een korte uitleg: sprites zijn kleine plaatjes die je kunt rondbewegen op het scherm (voor meer info, kijk in het woordenboek van dit handboek bij <glossterm linkend="sprites"
>sprites</glossterm
>). Dus de schildpad is een sprite!</para>
<para
>Hierna volgt een volledig overzicht van alle commando's die je kunt gebruiken bij sprites.</para>
<para
>(De huidige versie van &kturtle; heeft alleen een schildpad als sprite. Andere sprites kun je dus niet gebruiken. In toekomstige versies van het programma zul je de schildpad kunnen veranderen je eigen ontwerp!)</para>
  <variablelist>
    <anchor id="show"/>
    <varlistentry>
      <term
>toon</term>
      <listitem
><para
><screen
>toon</screen>
<userinput
>toon</userinput
> maakt de schilpad weer zichtbaar nadat hij is verborgen. <userinput
>toon</userinput
> kun je afkorten als <userinput
>ts</userinput
>.</para
></listitem>
    </varlistentry>
  </variablelist>
  <variablelist>
    <anchor id="hide"/>
    <varlistentry>
      <term
>verberg</term>
      <listitem
><para
><screen
>verberg</screen>
<userinput
>verberg</userinput
> verstopt de schildpad. Dit is handig als je de schildpad niet in je tekening wilt zien. <userinput
>verberg</userinput
> kun je afkorten als <userinput
>vs</userinput
>.</para
></listitem>
    </varlistentry>
  </variablelist>
</sect2>

<sect2 id="writing">
<title
>Kan de schildpad tekst schrijven?</title>
<para
>Het antwoord is: <quote
>ja</quote
>. De schildpad kan schrijven. Hij schrijft zo'n beetje alles waartoe je hem opdraagt.</para>
  <variablelist>
    <anchor id="print"/>
    <varlistentry>
      <term
>schrijf</term>
      <listitem
><para
><screen
>schrijf X</screen>
Het commando <userinput
>schrijf</userinput
> kun je gebruiken om de schildpad iets op het canvas te laten schrijven. <userinput
>schrijf</userinput
> vraagt om letters en/of cijfers als invoer. Je kunt automatisch verschillende getallen en tekst laten <userinput
>invullen</userinput
> in de tekst met behulp van het <quote
>+</quote
>-symbool. Hier is een klein voorbeeld: <screen
>jaar = 2004
maker = "Cies"
schrijf "KTurtle is gemaakt in " + jaar + " door " + maker +
</screen>
      </para
></listitem>
    </varlistentry>
  </variablelist>
  <variablelist>
    <anchor id="fontsize"/>
    <varlistentry>
      <term
>lettermaat</term>
      <listitem
><para
><screen
>lettermaat X</screen>
<userinput
>lettermaat</userinput
> bepaalt de grootte van de letters die wordt gebruikt door het commando <userinput
>schrijf</userinput
>. <userinput
>lettermaat</userinput
> vraagt om een getal als invoer. De grootte geef je op in <glossterm linkend="pixels"
>pixels</glossterm
>.</para
></listitem>
    </varlistentry>
  </variablelist>
</sect2>

<sect2 id="dice">
<title
>Een commando dat een dobbelsteen voor je rolt</title>
<para
>Er is een commando dat een dobbelsteen voor je laat rollen</para>
  <variablelist>
    <anchor id="random"/>
    <varlistentry>
      <term
>gok</term>
      <listitem
><para
><screen
>gok X,Y</screen>
<userinput
>gok</userinput
> is een commando dat invoer vraagt en uitvoer geeft. Als invoer vraagt het commando twee cijfers, het eerste cijfer (X) zet de minimum uitvoer, en het tweede (Y) zet de maximum. De uitvoer is een willekeurig gekozen getal dat gelijk is aan of groter dan het minimum en gelijk aan of kleiner dan het maximum. Hier is een klein voorbeeld:<screen>
herhaal 500 [
 x = gok 1,20
 vooruit x
 draailinks 10 - x
]
</screen
>. Met het commando <userinput
>gok</userinput
> kun je wat chaos aan je programma toevoegen.</para
></listitem>
    </varlistentry>
  </variablelist>
</sect2>
</sect1>

<sect1 id="containers">
<title
>Containers</title>
<para
>Containers zijn letters of woorden die door de programmeur kunnen worden gebruikt om een getal of tekst in op te slaan. Containers die een getal bevatten heten <link linkend="variables"
>variabelen</link
>, containers die tekst bevatten heten <link linkend="strings"
>tekenreeksen</link
>.</para>

<para
>Containers die niet worden gebruikt staan standaard op 0. Een voorbeeld: <screen>
schrijf N
</screen>
Dit drukt een 0 af. </para>

<sect2 id="variables">
<title
>Variabelen: getalcontainers</title>
<para
>Laten we beginnen met een voorbeeld: <screen>
x = 3
schrijf x
</screen
> Op de eerste regel wordt de letter <userinput
>x</userinput
> omgevormd tot een variabele (getalcontainer). Zoals je ziet is de waarde van de variabele <userinput
>x</userinput
> op 3 gezet. Op de tweede regel wordt de waarde afgedrukt.</para>
<para
>Merk op dat als we een <quote
>x</quote
> wouden afdrukken, we het volgende hadden geschreven: <screen
>schrijf "x"
</screen>
</para>
<para
>Dat was gemakkelijk. Nu een wat moeilijker voorbeeld:<screen>
A = 2004
B = 25
AB = A + B

# het volgende commando schrijft "2029"
schrijf AB
achteruit 30
# het volgende commando schrijft "2004 plus 25"
schrijf "" +  A + " plus " + B
achteruit 30
# het volgende commando schrijft "1979"
schrijf A - B
</screen
> Op de eerste twee regels zijn de variabelen <userinput
>A</userinput
> en <userinput
>B</userinput
> gezet op 2004 en 25. Op de derde regel is de variabele <userinput
>AB</userinput
> gezet op  <userinput
>A + B</userinput
>, wat 2029 is. De rest van het voorbeeld bestaat uit 3 <userinput
>schrijf</userinput
>-commando's met <userinput
>achteruit 30</userinput
> ertussen. De <userinput
>achteruit </userinput
> staat er om er voor te zorge dat elke uitvoer op een nieuwe regel staat. In dit voorbeeld zie je dat variabelen kunnen worden gebruikt in   <link linkend="math"
>wiskundige berekeningen</link
>.</para>
</sect2>

<sect2 id="strings">
<title
>Tekenreeksen: tekstcontainers</title>
<para
>Tekenreeksen lijken veel op variabelen. Het grootste verschil is dat je tekenreeksen niet kunt gebruiken in <link linkend="math"
>wiskundige berekeningen</link
> e <link linkend="questions"
>vragen</link
>. Een voorbeeld van het gebruiken tekenreeksen: <screen>
x = " Hallo "
naam = invoervenster "Voer je naam in..."
schrijf x + naam +", hoe gaat het met je?
</screen
> Op de eerste regel wordt <userinput
>x</userinput
> ingesteld op <quote
>Hallo </quote
>. Op de tweede regel wordt de term <userinput
>naam</userinput
> ingesteld op de uitvoer van het commando <userinput
>invoervenster</userinput
>. Op de derde regel schrijft het programma een samenstelling van drie tekenreeksen op het canvas.</para>
<para
>Dit programma vraagt je om je naam in te voeren. Als je bijvoorbeeld de naam <quote
>Paul</quote
> invoert, dan schrijft het programma <quote
>Hallo Paul, hoe gaat het met je?</quote
>. Houd er rekening mee dat de plus (+) het enige rekenkundige teken is dat je kunt gebruiken met tekenreeksen.</para>
</sect2>
</sect1>

<sect1 id="math">
<title
>Kan de schildpad wiskunde?</title>
<para
>Ja, &kturtle; kan jouw wiskunde voor je doen. Je kunt optellen (+), aftrekken (-), vermenigvuldigen (*) en delen (/). Dit is een voorbeeld die ze allemaal gebruikt: <screen>
a = 20 - 5
b = 15 * 2
c = 30 / 30
d = 1 + 1
schrijf "a: "+a+", b: "+b+", c: "+c+", d: "+d 
</screen
> Weet je welke waarde a, b, c, en d hebben?</para>
<para
>Als je een eenvoudige rekensom wilt uitvoeren, dan kun je zoiets als dit doen: <screen
>schrijf 2004-12
</screen
></para>
<para
>Nu een voorbeeld met haakjes: <screen>
schrijf ( ( 20 - 5 ) ) * 2 / 30 ) + 1
</screen
> De rekensom tussen de haakjes zal als eerste worden uitgerekend. In dit voorbeeld wordt 20 gedeeld door 5, </para>
</sect1>

<sect1 id="questions">
<title
>Stel vragen en krijg antwoorden...</title>
<para
><link linkend="if"
><userinput
>als</userinput
></link
> en <link linkend="while"
><userinput
>terwijl</userinput
></link
> zijn <link linkend="controlling-execution"
>uitvoercontroles</link
> die we in de volgende sectie zullen bespreken. In deze sectie gaan we het commando <userinput
>als</userinput
> gebruiken om vragen uit te leggen.</para>
<para
>Een voorbeeld van vragen: <screen>
x = 6
als x &gt; 5 [
 schrijf "hallo"
]
</screen
> In dit voorbeeld is de vraag het gedeelte <userinput
>x &gt; 5</userinput
>. Als het antwoord op deze vraag <quote
>waar</quote
> is, dan wordt de code tussen de blokhaakjes uitgevoerd. vragen zijn een belangrijk onderdeel van programmeren en vaak gebruikt in combinatie met <link linkend="controlling-execution"
>uitvoercontroles</link
>, zoals <link linkend="if"
><userinput
>als</userinput
></link
>. Alle cijfers en <link linkend="variables"
>variabelen</link
> (getalcontainers) kunnen met elkaar worden vergeleken met vragen.</para>
<para
>Hier zijn alle mogelijke vragen: <table>
<title
>Type vragen</title>
<tgroup cols="3">
<tbody>
<row>
<entry
><userinput
>a == b</userinput
></entry>
<entry
>gelijk aan</entry>
<entry
>het antwoord is <quote
>waar</quote
> als <userinput
>a</userinput
> gelijk is aan <userinput
>b</userinput
></entry>
</row>
<row>
<entry
><userinput
>a != b</userinput
></entry>
<entry
>niet gelijk aan</entry>
<entry
>het antwoord is <quote
>waar</quote
> als <userinput
>a</userinput
> niet gelijk is aan <userinput
>b</userinput
></entry>
</row>
<row>
<entry
><userinput
>a &gt; b</userinput
></entry>
<entry
>groter dan</entry>
<entry
>het antwoord is <quote
>waar</quote
> als <userinput
>a</userinput
> groter is dan <userinput
>b</userinput
></entry>
</row>
<row>
<entry
><userinput
>a &lt; b</userinput
></entry>
<entry
>kleiner dan</entry>
<entry
>het antwoord is <quote
>waar</quote
> als <userinput
>a</userinput
> kleiner is dan <userinput
>b</userinput
></entry>
</row>
<row>
<entry
><userinput
>a &gt;= b</userinput
></entry>
<entry
>groter dan of gelijk aan</entry>
<entry
>het antwoord is <quote
>waar</quote
> als <userinput
>a</userinput
> groter is dan <userinput
>b</userinput
></entry>
</row>
<row>
<entry
><userinput
>a &lt;= b</userinput
></entry>
<entry
>kleiner dan of gelijk aan</entry>
<entry
>het antwoord is <quote
>waar</quote
> als <userinput
>a</userinput
> kleiner is dan of gelijk aan <userinput
>b</userinput
></entry>
</row>
</tbody>
</tgroup>
</table>
</para>
<para
>Vragen kunnen ook aan elkaar geplakt worden met <quote
>vragenlijm</quote
>. Zo kun je van een paar kleine vragen een grote vraag maken. <screen>
a = 1
b = 5
als a &lt; 5 en b == 5 [
 schrijf "hallo"
]
</screen
> <anchor id="question-glue"/>In dit voorbeeld is het lijmwoord <userinput
>en</userinput
> gebruikt om twee vragen (<userinput
>a &lt; 5</userinput
>, <userinput
> b == 5</userinput
>) aan elkaar te plakken. Als een zijde van de <userinput
>en</userinput
> <quote
>onwaar</quote
> als antwoord heeft, dan zal de hele vraag <quote
>onwaar</quote
> zijn, omdat het lijmwoord <userinput
>en</userinput
> vereist dat beide zijden <quote
>waar</quote
> moeten zijn om het antwoord <quote
>waar</quote
> te geven.</para>
<para
><userinput
>en</userinput
> is niet het enige lijmwoord, er zijn nog twee. Ze staan alle drie in onderstaand tabel: <table>
<title
>Lijmwoorden voor vragen</title>
<tgroup cols="2">
<tbody>
<row>
<entry
><userinput
>en</userinput
></entry>
<entry
>beide zijden moeten <quote
>waar</quote
> zijn om het antwoord <quote
>waar</quote
> te kunnen geven</entry>
</row>
<row>
<entry
><userinput
>of</userinput
></entry>
<entry
>als een van beide zijden <quote
>waar</quote
> is, dan is het antwoord <quote
>waar</quote
></entry>
</row>
<row>
<entry
><userinput
>niet</userinput
></entry>
<entry
>alleen als beide zijden <quote
>onwaar</quote
> zijn is het antwoord <quote
>onwaar</quote
></entry>
</row>
</tbody>
</tgroup>
</table>
</para>
</sect1>

<sect1 id="controlling-execution">
<title
>Uitvoering besturen</title>
<para
>De uitvoercontroles maken het mogelijk, &mdash;zoals de naam al zegt&mdash; om controle uit te oefenen op de uitvoering van de commando's</para>

<sect2 id="easy">
<title
>Laat de schildpad wachten</title>
<para
>Als je wat hebt geprogrammeerd in &kturtle;, dan heb je vast gemerkt dat de schildpad erg snel is bij het tekenen. Dit commando maakt de schildpad een beetje rustiger.</para>
  <variablelist>
    <anchor id="wait"/>
    <varlistentry>
      <term
>wacht</term>
      <listitem
><para
><screen
>wacht X</screen>
<userinput
>wacht</userinput
> laat de schildpad X seconden wachten. <screen>
herhaal 36[
 vooruit 5
 draairechts 10
 WACHT 0.5
]
</screen
> Deze code tekent een cirkel, maar de schildpad zal na elke stap een halve seconde wachten. Hier door lijkt het net of de schildpad kruipt.</para
></listitem>
    </varlistentry>
  </variablelist>
</sect2>

<sect2 id="execute-if">
<title
>"als" uitvoeren</title>
<para
></para>
  <variablelist>
    <anchor id="if"/>
    <varlistentry>
      <term
>als</term>
      <listitem
><para
><screen
>als <link linkend="questions"
>vraag</link
> [ ... ]</screen>
De code die tussen de blokhaakjes staat wordt alleen uitgevoerd wanneer <userinput
>als</userinput
> het antwoord op de <link linkend="questions"
>vraag</link
> <quote
>waar</quote
> is. Lees voor meer informatie over <link linkend="questions"
>vragen</link
> het <link linkend="questions"
>vragengedeelte</link
>. <screen>
x = 6
als x &gt; 5 [
 schrijf "x is groter dan vijf!"
]
</screen
> Op de eerste regel is <userinput
>x</userinput
> gezet op 6. Op de tweede regel wordt de <link linkend="questions"
>vraag</link
> <userinput
>x &gt; 5</userinput
> gesteld. Omdat het antwoord op deze vraag <quote
>waar</quote
> is zal de uitvoercontrole <userinput
>als</userinput
> de code tussen de haakjes laten uitvoeren.</para
></listitem>
    </varlistentry>
  </variablelist>
</sect2>

<sect2 id="execute-while">
<title
>"terwijl" uitvoeren</title>
<para
></para>
  <variablelist>
    <anchor id="while"/>
    <varlistentry>
      <term
>terwijl</term>
      <listitem
><para
><screen
>terwijl <link linkend="questions"
>vraag</link
> [ ... ]</screen>
De uitvoercontrole <userinput
>terwijl</userinput
> lijkt veel op <link linkend="if"
>als<userinput
></userinput
></link
>. Het verschil is dat <userinput
>terwijl</userinput
> de code tussen de blokhaakjes blijft herhelen totdat de het antwoord op de <link linkend="questions"
>vraag</link
> <quote
>onwaar</quote
> is. <screen>
x = 1
terwijl x &lt; 5 [
 vooruit 10
 wacht 1
 x = x + 1
]
</screen
> Op de eerste regel is <userinput
>x</userinput
> gezet op 1. Op de tweede regel wordt de <link linkend="questions"
>vraag</link
> <userinput
>x &lt; 5</userinput
> gesteld. Omdat het antwoord op deze vraag <quote
>waar</quote
> is start de uitvoercontrole <userinput
>terwijl</userinput
> het uitvoeren van de code tussen de blokhaakjes totdat het antwoord op de <link linkend="questions"
>vraag</link
> <quote
>onwaar</quote
> is. In dit voorbeeld wordt de code tussen de blokhaakjes 4 keer uitgevoerd, omdat telkens als de vijfde regel wordt uitgevoerd de waarde <userinput
>x</userinput
> met 1 wordt vermeerderd.</para
></listitem>
    </varlistentry>
  </variablelist>
</sect2>

<sect2 id="if-else">
<title
>Als niet, of in andere woorden: "anders"</title>
<para
></para>
  <variablelist>
    <anchor id="else"/>
    <varlistentry>
      <term
>anders</term>
      <listitem
><para
><screen
>als vraag [ ... ] anders [ ... ]</screen>
<userinput
>anders</userinput
> kan worden gebruikt als aanvulling op de uitvoercontrole <link linkend="if"
><userinput
>als</userinput
></link
>. De code tussen de haakjes na <userinput
>anders</userinput
> wordt alleen uitgevoerd als het antwoord op de gestelde <link linkend="questions"
>vraag</link
> <quote
>onwaar</quote
> is. <screen>
x = 4
als x &gt; 5 [
 schrijf "x is groter dan vijf!"
] anders [
 schrijf "x is kleiner dan zes!"
]
</screen
> De <link linkend="questions"
>vraag</link
> vraagt of <userinput
>x</userinput
> groter is dan 5. Omdat <userinput
>x</userinput
> op 4 is gezet op de eerste regel ishet antwoord op de vraag <quote
>onwaar</quote
>. Dit betekent dat de code tussen de blokhaakjes achter <userinput
>anders</userinput
> zal worden uitgevoerd.</para
></listitem>
    </varlistentry>
  </variablelist>
</sect2>

<sect2 id="for-loop">
<title
>De lus "voor"</title>
<para
></para>
  <variablelist>
    <anchor id="for"/>
    <varlistentry>
      <term
>voor</term>
      <listitem
><para
><screen
>voor <userinput
>startpunt</userinput
> tot <userinput
>eindpunt</userinput
> [ ... ]</screen>
De lus <userinput
>voor</userinput
> is een <quote
>tellende lus</quote
>, dus het houdt de telling voor je bij. <screen>
voor x = 1 tot 10 [
 schrijf x * 7
 vooruit 15
]
</screen
> Telkens als de code tussen de blokhaakjes wordt uitgevoerd wordt de waarde <userinput
>x</userinput
> met 1 vermeerderd, totdat <userinput
>x</userinput
> de 10 heeft bereikt. De code tussen de blokhaakjes schrijft de <userinput
>x</userinput
> vermenigvuldigd met 7. Nadat deze commando's zijn uitgevoerd zie je de tafel van 7 op het canvas staan.</para
></listitem>
    </varlistentry>
  </variablelist>
</sect2>

</sect1>


<sect1 id="learn">
<title
>Maak je eigen commando's!</title>
<para
><userinput
>leer</userinput
> is een speciaal commando, omdat het kan worden gebruikt om je eigen commando's te maken. Het commando dat je maakt kan <glossterm linkend="input-output"
>invoer</glossterm
> vragen en <glossterm linkend="input-output"
>uitvoer</glossterm
> geven. Laten we eens kijken hoe je een nieuw commando kunt maken: <screen>
leer cirkel (x) [
 herhaal 36 [
   vooruit x
   draailinks 10
 ]
]
</screen
> Het nieuwe commando heet <userinput
>cirkel</userinput
>. <userinput
>circel</userinput
> vraagt om een <glossterm linkend="input-output"
>invoer</glossterm
>, een getal, om de grootte van de cirkel te bepalen. <userinput
>cirkel</userinput
> geeft geen <glossterm linkend="input-output"
>uitvoer</glossterm
>. Het commando <userinput
>cirkel</userinput
> kan nu worden gebruikt als een normaal commando. Hier een voorbeeld: <screen
>leer cirkel (x) [
  herhaal 36 [
    vooruit x
    draailinks 10
  ]
]

ganaar 30,30
cirkel 20

ganaar 40,40
cirkel 50
</screen>
</para>
<para
>In het volgende voorbeeld maken we een commando met een uitvoerwaarde. <screen>
leer vermenigvuldigMetZichzelf (n)[
 r = n * n
 geefdoor r
]
i = invoervenster "Voer een getal in en klik op OK"
schrijf i + " vermenigvuldigd met zichzelf is " + vermenigvuldigMetZichzelf (i)
</screen
> In dit voorbeeld wordt een nieuw commando met de naam <userinput
>VermenigvuldigMetZichzelf</userinput
> gemaakt. De invoer van dit commando wordt vermenigdvuldigd met zichzelf en daarna doorgegeven met behulp van het commando <anchor id="return"/><userinput
>geefdoor</userinput
>. Het commando <userinput
>geefdoor</userinput
> is een manier om de waarde van een functie die u hebt gemaakt als resultaat te geven. </para>
</sect1>

</chapter>
