Hoofdstuk 5 - Functies (deel 1)
UITWERKINGEN
Opgave 5.2.1 Onderdelen van een functie
benoemen
- naam van de functie:
round
- parameters: 3.14342 en 2
- type van parameters: twee floats (kommagetallen)
- variabele waarin retourwaarde wordt opgeslagen:
afregrond
- type van retourwaarde: float
Opgave 5.3.2 Een functie
aanroepen
import turtle
### FUNCTIEDEFINITIE
#Definitie: Instructies voor het tekenen van een vierkant met grootte van 20
def tekenVierkant( ):
turtle.forward( 20 )
turtle.right(90)
turtle.forward( 20 )
turtle.right(90)
turtle.forward( 20 )
turtle.right(90)
turtle.forward( 20 )
turtle.right(90)
### HOOFDPROGRAMMA MET AANROEP VAN FUNCTIE
turtle.pendown()
tekenVierkant()#Aanroep: teken een vierkant
turtle.right(45)
tekenVierkant() #Aanroep: teken een vierkant
turtle.done()
Opgave 5.3.3 Een eigen functie maken: TekenSnoep()
import turtle
### FUNCTIEDEFINITIES
#teken snoep
def tekenSnoep():
turtle.fillcolor("red")
turtle.begin_fill()
turtle.circle(30)
turtle.end_fill()
#teken stok
def tekenStok():
turtle.right(90)
turtle.forward(100)
### HOOFDPROGRAMMA
turtle.pendown()
tekenSnoep()
tekenStok()
turtle.done()
Opgave 5.4.1 Figuurtje tekenen
- Functie tekenFiguur tekent een gelijkzijdige driehoek met zijdes van lengte 50.
tekenDriehoek
is daarom een betere naam voor de functie.
- Nee, geen parameters.
- Nee, het heeft geen
return
en levert dus geen informatie op dat later in het programma gebruikt kan worden.
- Het programma tekent een spirograaf door nog een driehoekje te tekenenen, net een beetje gedraaid ten op zichte van de eerste..
- Zonder de functie
tekenFiguur
zou je 3*2=6 keer de regel turtle.forward(50)
moeten intikken.
Opgave 5.4.2 Cirkels met verschillende maten tekenen
import turtle
### FUNCTIEDEFINITIE
#tekent een cirkel, en krijgt als informatie (parameters) de kleur en de grootte mee
def tekenCirkel(kleur, grootte):
turtle.pencolor(kleur)
turtle.pencolor(kleur)
turtle.circle(grootte)
### HOOFDPROGRAMMA
tekenCirkel("blue", 50)
tekenCirkel("red", 150)
tekenCirkel("red", 150)
turtle.done()
Opgave 5.4.3 Persoonlijke groet
### FUNCTIEDEFINITIE
def groet( naam, land):
print( "Hallo " + naam + " uit " + land + "!" )
### HOOFDPROGRAMMA MET AANROEP VAN FUNCTIE
groet( "Sebas", "Spanje" )
groet( "John", "Engeland" )
groet( "Janneke", "Nederland" )
Opgave 5.5.1 Commentaar
### FUNCTIEDEFINITIE
def rekenKmNaarMeters(afstand_in_km):
afstand_in_m = afstand_in_km * 1000
return( afstand_in_m )
### HOOFDPROGRAMMA MET AANROEP VAN FUNCTIE
aantal_meters = rekenKmNaarMeters( 4 )
print( aantal_meters )
Afsluitende Opgaven
Met de volgende afsluitende opgaven kun je kijken hoe goed je de stof beheerst. Controleer steeds je eigen oplossing met de voorbeeldoplossing.
Afsluitende opgave 5.1 Teken lolly
met parameters
import turtle
### FUNCTIEDEFINITIES
#teken snoep
def tekenSnoep( kleur, straal ):
turtle.fillcolor( kleur )
turtle.begin_fill()
turtle.circle( straal )
turtle.end_fill()
#teken stok
def tekenStok( lengte ):
turtle.right( 90 )
turtle.forward( lengte )
### HOOFDPROGRAMMA
#informatie van gebruiker vragen
print("Welke kleur wil je?")
gekozen_kleur = input()
print("Hoe groot wil je de snoep hebben?")
invoer = input()
gekozen_straal = int(invoer)
print("Hoe lang wil je de stok hebben?")
invoer = input()
gekozen_lengte = int(invoer)
#lolly tekenen
turtle.pendown()
tekenSnoep( gekozen_kleur, gekozen_straal )
tekenStok( gekozen_lengte )
turtle.done()
Afsluitende opgave 5.2 Olympische Ringen
import turtle
### FUNCTIEDEFINITIE
def tekenGekleurdeRing(kleur, x_coor, y_coor):
turtle.penup()
turtle.setposition(x_coor, y_coor)
turtle.pendown()
turtle.pencolor(kleur)
turtle.circle(50)
### HOOFDPROGRAMMA
tekenGekleurdeRing("blue",0,0)
tekenGekleurdeRing("purple",-120,0)
tekenGekleurdeRing("red",60,60)
tekenGekleurdeRing("yellow",-60,60)
tekenGekleurdeRing("green",-180,60)
turtle.done()
Afsluitende opgave 5.3 Wat voor een getal?
### FUNCTIEDEFINITIE
#Bepaald of een getal 0, pos of negatief is.
def bepaalSoortGetal( getal ):
if getal < 0:
print("Het getal "+ str(getal) +" is kleiner dan 0.")
elif getal == 0:
print("Het getal "+ str(getal) +" is gelijk aan 0.")
else:
print("Het getal "+ str(getal) +" is groter dan 0.")
### HOOFDPROGRAMMA MET AANROEP VAN FUNCTIE
bepaalSoortGetal(-1)
bepaalSoortGetal(0)
bepaalSoortGetal(1)
Afsluitende opgave 5.4 Tekenprogramma
import turtle
### FUNCTIEDEFINITIES
def tekenCirkel():
turtle.circle(50)
def tekenDriehoek():
for i in range(3):
turtle.forward(100)
turtle.right(120)
def tekenVierkant():
for i in range(4):
turtle.forward(100)
turtle.right(90)
### HOOFDPROGRAMMA
print("Wat wil je dat ik teken: cirkel, vierkant, driehoek, of allemaal.")
invoer = input()
print("Je hebt gekozen voor:", invoer)
if invoer == "cirkel":
tekenCirkel()
elif invoer =="vierkant":
tekenVierkant()
elif invoer == "driehoek":
tekenDriehoek()
elif invoer == "allemaal":
tekenCirkel()
tekenVierkant()
tekenDriehoek()
else:
print("Fout: Dat kan ik niet tekenen.")
print("Klaar")
turtle.done()
Afsluitende opgave 5.5 Bereken je cijfer
import turtle
### FUNCTIEDEFINITIE
def tekenGekleurdeRing(kleur, x_coor, y_coor):
turtle.penup()
turtle.setposition(x_coor, y_coor)
turtle.pendown()
turtle.pencolor(kleur)
turtle.circle(50)
### HOOFDPROGRAMMA
tekenGekleurdeRing("blue",0,0)
tekenGekleurdeRing("purple",-120,0)
tekenGekleurdeRing("red",60,60)
tekenGekleurdeRing("yellow",-60,60)
tekenGekleurdeRing("green",-180,60)
turtle.done()
Afsluitende opgave 5.6 Dorp tekenen: Functies aanroepen vanuit andere functies
DEEL A.
### DEEL A. ###
import turtle
### FUNCTIEDEFINITIES
#Tekent zwarte vierkant
def tekenMuren():
turtle.forward(150)
turtle.right(90)
turtle.forward(150)
turtle.right(90)
turtle.forward(150)
turtle.right(90)
turtle.forward(150)
#Tekent een rood gevulde dak
def tekenDak():
turtle.fillcolor("red")
turtle.begin_fill()
turtle.right(30)
turtle.forward(150)
turtle.right(120)
turtle.forward(150)
turtle.end_fill()
#Tekent een huis bestaande uit muren en een dak
def tekenHuis():
tekenMuren()
tekenDak()
### HOOFDPROGRAMMA
tekenHuis()
turtle.done()
DEEL B.
### DEEL B. ####
import turtle
### FUNCTIEDEFINITIES
#Tekent zwarte vierkant
def tekenMuren():
turtle.forward(150)
turtle.right(90)
turtle.forward(150)
turtle.right(90)
turtle.forward(150)
turtle.right(90)
turtle.forward(150)
#Tekent een rood gevulde dak
def tekenDak():
turtle.fillcolor("red")
turtle.begin_fill()
turtle.right(30)
turtle.forward(150)
turtle.right(120)
turtle.forward(150)
turtle.end_fill()
#Tekent een huis bestaande uit muren en een dak
def tekenHuis():
tekenMuren()
tekenDak()
### HOOFDPROGRAMMA
tekenHuis()
#verplaats pen naar nieuwe plaats en in juiste richting
turtle.penup()
turtle.setposition(250, 0)
turtle.setheading(0)
turtle.pendown()
tekenHuis()
#verplaats pen naar nieuwe plaats en in juiste richting
turtle.penup()
turtle.setposition(-250, -250)
turtle.setheading(0)
turtle.pendown()
tekenHuis()
turtle.done()
Afsluitende opgave 5.7 De wielen van de bus
### FUNCTIEDEFINITIE
def zingCouplet( onderdeel, actie ):
print( "De " + onderdeel + " van de bus " + actie )
print( actie +", " + actie )
print( "De " + onderdeel + " van de bus " + actie )
print( "Als de bus gaat rijden" )
print("\n")
### HOOFDPROGRAMMA MET AANROEP VAN FUNCTIE
zingCouplet("wielen", "draaien rond")
zingCouplet("deuren", "gaan open en dicht")
zingCouplet("wissers", "gaan heen en weer")
zingCouplet("lichten", "gaan aan en uit")