Hieronder twee functies waarmee je een klein huisje kan maken met zijden van 50 pixels en aan de een functie waarmee je een groter huisje kan maken met zijden van 75 pixels:
Als je kijkt naar het verschil tussen de twee bovenstaande functies, dan merk je dat er haast geen verschil is; het enige dat anders is, is het getal waarmee je aangeeft hoeveel pixels de turtle vooruit moet gaan! Waarom zouden we dan zoveel code moeten schrijven? Kan het niet korter?
Het antwoord is: JA!
Als je functies zoals forward, backward, right, left, goto en shape aanroept, dan moet je tussen de haakjes iets opschrijven. Bij forward bijvoorbeeld, moet je aangeven hoeveel de turtle vooruit moet gaan. Je zegt daarom turtle.forward(100) om aan te geven, dat hij 100 pixels vooruit moet gaan. Zou het nou niet makkelijker zijn om ook onze tekenhuis functie zo slim te maken, dat we slechts tekenhuis(100) hoeven te zeggen, om een groter huis met zijden van 100 pixels te maken? En als we tekenhuis(50) zeggen, dat hij dan een kleiner huis maakt, et cetera. Dit doen we als volgt:
Stap 1:
In de def zetten we eerst het woordje lengte tussen de haakjes (je mag ook een ander woord kiezen). Zie rechts. Het gedeelte dat nu met geel gemarkeerd is, is dus veranderd.
Wat je tussen de haakjes zet noem je een parameter of argument.
Stap 2:
Vervolgens vervangen we het getal dat we tussen forward hebben gezet door het woordje lengte.
Dus overal waar de turtle 50 vooruit moet, gaat de turtle nu lengte vooruit.
Stap 3:
Roep nu de functie aan met de gewenste lengte.
Wat er nu gebeurt: Als je tekenhuis(100) opgeeft, dan wordt het woordje lengte gelijkgemaakt aan het getal 100. Overal waar lengte staat wordt dan 100 ingevuld.
Opdracht 1:
Maak een functie vierkant waarin je tussen de haakjes kan aangeven hoe groot het vierkant moet zijn. Je moet de functie dus als het volgt kunnen gebruiken:
Maak een functie envelop() die de parameter lengte moet meekrijgen. De aanroep envelop(50) zal dan het volgende plaatje tekenen:
Pas je programma zo aan, dat er drie enveloppen worden getekend. De enveloppen moeten van links naar rechts steeds groter worden. De groottes mag je zelf bepalen.
Kun je ook functies hebben met meer dan twee parameters? Ja! Zoveel als je wilt. Maar voor de functies die we in deze module moeten maken komt dat niet zo vaak voor…
Opdracht 5:
Breid de tekenhuis functie uit met een extra parameter waarmee je, naast de kleur, ook de lengte van de zijden van het huisje kan meegeven.
Opdracht 6:
Maak nu zelf een functie genaamd rechthoek die twee parameters meekrijgt: lengte en breedte. Roep ten slotte de functie als volgt aan: