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