Gevorderd: Procedures

Bij programmeren is het een goede zaak als je dingen een beetje slim kunt opschrijven en je niet dezelfde code vaker dan 1 keer moet schrijven. Je hebt al gezien dat je met het commando HERHAAL dezelfde code meerdere keren kunt uitvoeren. Een nog flexibelere manier is om een stukje code te "vangen" in een zogenaamde procedure.

Door een procedure te maken, maak je eigenlijk zelf een nieuw commando voor Simon, die hij daarna gemakkelijk vaker kan uitvoeren. Je kunt zelfs het commando een variabele meegeven om nog flexibeler te zijn. Een voorbeeld gaat het duidelijk maken:

Met de volgende code maakt Simon een (12-puntige) ster (probeer maar):

HERHAAL 12 
    VOORUIT 50 
    RECHTS 150 
DOE

Misschien wil je nu wel op verschillende plekken in de tekening een ster neerzetten. We kunnen dan bovenstaande code "vangen" in een procedure en die aan Simon leren. Dat gaat zo:

LEER STER
    HERHAAL 12
        VOORUIT 50
        RECHTS 150
    DOE	
EIND

Hiermee leren we Simon het nieuwe commando STER. Als we nu verderop in ons programma het commando STER gebruiken, zal Simon de code in de procedure uitvoeren en dus een ster tekenen:

LEER STER
    HERHAAL 12
        VOORUIT 100
        RECHTS 150
    DOE	
EIND

STER

Een enkele ster tekenen kunnen we ook zonder procedure, maar de handigheid komt pas als je het commando vaker gaat gebruiken. Probeer de volgende code eens uit:

LEER STER
    HERHAAL 12
        VOORUIT 50
        RECHTS 150
    DOE	
EIND

STER 

PENOP  
VOORUIT 100
PENNEER

STER

PENOP
VOORUIT 100
PENNEER

STER

Nu tekenen we 3 verschillende sterren door simpelweg 3x het STER commando uit te voeren. (tussendoor verplaatsen we Simon, zodat de sterren niet bovenop elkaar komen. Om dit te doen gebruiken we de PENOP en PENNEER commando's. Met PENOP tilt Simon als het ware zijn pen van het papier. Als hij dan verplaatst, verschijnt er geen lijn. Met PENNEER zetten we de pen weer terug op het papier voor de volgende ster.

Variabelen meegeven aan procedures

We kunnen nóg meer met functies. We kunnen namelijk bij het gebruiken van de functie ook een variabele opgeven (zie de vorige paragraaf voor meer info over variabelen). Hierdoor kun je bijvoorbeeld de grootte van de ster elke keer anders maken. Pas je sterprocedure eens als volgt aan:

LEER STER $grootte
    HERHAAL 12
        VOORUIT $grootte
        RECHTS 150
    DOE	
EIND

Je ziet dat we nu achter de naam STER nog een variabele hebben opgegeven: $grootte. Deze variabele wordt gebruikt in de code van STER. Als we nu het STER commando gebruiken, moeten we een waarde voor $grootte opgeven, zodat de STER procedure zijn werk kan doen. Laten het het eens testen:

LEER STER $grootte
    HERHAAL 12
        VOORUIT $grootte
        RECHTS 150
    DOE	
EIND

ster 20

PENOP
VOORUIT 60
PENNEER

ster 50

PENOP
VOORUIT 120
PENNEER

ster 100

We gebruiken nu 3 keer de procedure STER, maar met 3 verschillende waardes voor $grootte. We kunnen nu dus gemakkelijk grotere en kleinere sterren tekenen met dezelfde procedure. Handig!

Opdracht 6:

In een eerdere opdracht heb je (een deel van) je naam geschreven. Als in een woord vaker dezelfde letters voorkomen, kan een procedure een uitkomst zijn. Je maakt dan een procedure die de letter tekent en gebruikt dan die procedure steeds opnieuw. Schrijf een SImon programma dat het woord "paashaas" tekent. De letter a komt 4x voor en de letter s 2x. Schrijf dus voor die 2 letters de procedures LetterA en LetterS. Gebruik deze om het woord door Simon te laten tekenen

Opdracht 6b (extra uitdaging):

Maak ook procedures voor de letters P en H uit paashaas. Je hebt nu dus procedures voor de letters P, A, S en H. Maak de procedures nu zo dat je met een variabele kunt bepalen hoe groot de letter wordt. Je kunt nu het woord paashaas op elke gewneste grootte schrijven.

Last updated