🖌️
Python 0
  • Les 1 - Je eerste tekeningen
  • Loops
    • Les 2 - Herhalen - For-loops
    • Les 3 - Geneste loops
  • Functies
    • Les 4 - Functies maken
    • Les 5 - Functies met parameters
  • Les 6 - Nog een keer loops … - range() goed gebruiken
Powered by GitBook
On this page
  • Functies met parameters
  • Opdrachten
  • Meer dan één parameter
  • Opdrachten

Was this helpful?

  1. Functies

Les 5 - Functies met parameters

PreviousLes 4 - Functies makenNextLes 6 - Nog een keer loops … - range() goed gebruiken

Last updated 3 years ago

Was this helpful?

Functies met parameters

De onderstaande uitleg mag je ook als filmpje bekijken:

Hieronder heb je aan de linkerkant een functie waarmee je een klein huisje kan maken met zijden van 50 pixels en aan de rechterkant een functie waarmee je een groter huisje kan maken met zijden van 75 pixels:

def tekenhuis ():

for i in range(4):

turtle.forward(50)

turtle.left(90)

turtle.left(90)

turtle.forward(50)

turtle.right(30)

turtle.forward(50)

turtle.right(120)

turtle.forward(50)

turtle.right(30)

turtle.forward(50)

turtle.left(90)

def tekenhuis2 ():

for i in range(4):

turtle.forward(75)

turtle.left(90)

turtle.left(90)

turtle.forward(75)

turtle.right(30)

turtle.forward(75)

turtle.right(120)

turtle.forward(75)

turtle.right(30)

turtle.forward(75)

turtle.left(90)

Hieronder kun je de twee functies in actie zien:

Als je goed kijkt naar de twee functies dan lijken ze erg op elkaar. 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 gebruikt, 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 enzovoorts. 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 de code.Regel 1 is dus veranderd.

Wat je tussen de haakjes zet noem je een parameter of argument.

def tekenhuis (lengte): # we hebben lengte tussen haakjes geschreven
  for i in range(4):
    turtle.forward(50)
    turtle.left(90)
  
  turtle.left(90)
  turtle.forward(50)
  turtle.right(30)
  turtle.forward(50)
  turtle.right(120)
  turtle.forward(50)
  turtle.right(30)
  turtle.forward(50)
  turtle.left(90

Stap 2

Vervolgens vervangen we het getal dat we tussen forward hebben gezet door het woordje lengte. Zie hiernaast:

Dus overal waar de turtle 50 vooruit moet, gaat de turtle nu lengte vooruit.

def tekenhuis (lengte):
  for i in range(4):
    turtle.forward(lengte)
    turtle.left(90)
  
  turtle.left(90)
  turtle.forward(lengte)
  turtle.right(30)
  turtle.forward(lengte)
  turtle.right(120)
  turtle.forward(lengte)
  turtle.right(30)
  turtle.forward(lengte)
  turtle.left(90)

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.

def tekenhuis (lengte):
  for i in range(4):
    turtle.forward(lengte)
    turtle.left(90)
  
  turtle.left(90)
  turtle.forward(lengte)
  turtle.right(30)
  turtle.forward(lengte)
  turtle.right(120)
  turtle.forward(lengte)
  turtle.right(30)
  turtle.forward(lengte)
  turtle.left(90)

tekenhuis(100) # hier roepen we de functie aan met 100
tekenhuis(50) # en hier met 50

De nieuwe functie kun je hieronder in actie zien:

Opdrachten

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:

vierkant(20)
vierkant(50)
vierkant(100) # et cetera.

Vervolgens maak je het onderstaande plaatje (of iets wat er op lijkt):

Opdracht 2

Maak een functie driehoek() die driehoeken van verschillende lengtes kan tekenen. Uiteindelijk moet je drie driehoeken tekenen. Één met zijden van 20 pixels, één met zijden van 40 pixels en één met zijden van 60 pixels.

Opdracht 3

Maak een programma dat het volgende tekent:

Opdracht 4

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.

Meer dan één parameter

Nu gaan we een stukje verder met de uitleg …

Als je een functie maakt, waar je een getal (of iets anders) aan kan meegeven, dan noem je dat een functie met een parameter. Dus de functie tekenhuis uit het hierboven gegeven voorbeeld heeft een parameter genaamd lengte. Nu heb je ook al kennisgemaakt met functies die meer dan één parameter hebben. Denk maar aan de turtle.goto functie. Daar moest je namelijk de x èn de y aan meegeven. Voorbeeld: turtle.goto(120,30)

Hoe kun je er nou voor zorgen dat jouw functie ook meer dan één parameter kan gebruiken? Het antwoord is vrij eenvoudig: door voor de tweede een andere naam te verzinnen en dat vervolgens te gebruiken. Zie voorbeeld hieronder:

def tekenlijn(lengte, kleur):
 turtle.color(kleur)
 turtle.forward(lengte)
 
tekenlijn(10, "red")
tekenlijn(40, "green")

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…

Opdrachten

Inleveropdracht - Tekenhuis

Breid de tekenhuis functie uit met een extra parameter waarmee je, naast de lengte van de zijden, ook de kleur van het huisje kan meegeven.

Inleveropdracht - Rechthoek

Maak nu zelf een functie genaamd rechthoek die twee parameters meekrijgt: lengte en breedte. Roep ten slotte de functie als volgt aan:

rechthoek(10, 30)
rechthoek(15, 40)