Les 3: Functies maken
Voordat je begint met dit hoofdstuk wil ik graag dat je de volgende puzzel gaat oplossen: https://studio.code.org/s/artist/stage/1/puzzle/8
Bekijk daarna deze film van Jurjen:
We gaan in deze lesbrief aan de slag met het maken van functies. Je gebruikt al functies al je iets tekent met turtle:
turtle.forward() - een functie om de turtle vooruit te laten gaan
turtle.left() - draai de turtle
range(4) - maak een lijstje met de getallen 0, 1, 2 en 3
Eigenlijk alles waar je ()-jes achter zet in Python is een functie. Je weet dan niet hoe het programma de turtle beweegt, je weet wel wat er uiteindelijk gebeurt. We kunnen ook zelf functies maken. En dit is echt superhandig.
In het volgende figuur hebben we 3 vierkanten naast elkaar staan die niet aan elkaar vast zitten.
We kunnen dit doen door met de volgende code:
import turtle
for _ in range(4): # Maak
turtle.forward(20) # een
turtle.right(90) # vierkant
turtle.penup()
turtle.forward(30)
turtle.left(90)
turtle.pendown()
for _ in range(4): # Maak
turtle.forward(20) # een
turtle.right(90) # vierkant
turtle.penup()
turtle.right(90)
turtle.forward(30)
turtle.pendown()
for _ in range(4): # Maak
turtle.forward(20) # een
turtle.right(90) # vierkant
Mooi, mooie code toch? Maar wat nu als we de vierkanten niet 20 maar 30 groot willen hebben? We moeten dan de gele regels code veranderen:
import turtle
for _ in range(4): # Maak een vierkant
turtle.forward(20)
turtle.right(90)
turtle.penup()
turtle.forward(30)
turtle.left(90)
turtle.pendown()
for _ in range(4): # Maak een vierkant
turtle.forward(20)
turtle.right(90)
turtle.penup()
turtle.right(90)
turtle.forward(30)
turtle.pendown()
for _ in range(4): # Maak een vierkant
turtle.forward(20)
turtle.right(90)
Als we nog meer vierkanten zouden tekenen zouden we het op nog meer plekken moeten doen! Dubbele code is meestal niet handig. We maken nu een functie die alleen een vierkant tekent:
def vierkant():
for _ in range(4): # Maak een vierkant
turtle.forward(20)
turtle.right(90)
En op elke plek waar we een vierkant willen schrijven we:
vierkant()
in plaats van
for _ in range(4): # Maak een vierkant
turtle.forward(20)
turtle.right(90)
Dus dan krijgen we:
import turtle
turtle.speed(0)
def vierkant():
for _ in range(4):
turtle.forward(20)
turtle.right(90)
vierkant()
turtle.penup()
turtle.forward(30)
turtle.left(90)
turtle.pendown()
vierkant()
turtle.penup()
turtle.right(90)
turtle.forward(30)
turtle.pendown()
vierkant()
Als je nu andere grootte vierkanten wilt, hoef je het maar op één plek te veranderen.
Opdracht 1
Maak deze opgave in Repl.it Bekijk de code hieronder en voer hem uit. Maak een functie waarmee je een driehoek tekent en verbeter daarmee de code. Uitdaging: Gebruik een loop en teken de driehoeken in maximaal 13 regels code.
import turtle
turtle.speed(0)
for _ in range(3):
turtle.forward(20)
turtle.right(120)
turtle.penup()
turtle.forward(30)
turtle.pendown()
for _ in range(3):
turtle.forward(20)
turtle.right(120)
turtle.penup()
turtle.forward(30)
turtle.pendown()
for _ in range(3):
turtle.forward(20)
turtle.right(120)
turtle.penup()
turtle.forward(30)
turtle.pendown()
for _ in range(3):
turtle.forward(20)
turtle.right(120)
Opdracht 2
Maak gebruik van functies om de volgende slinger te tekenen:
Last updated
Was this helpful?