Logo Stapsgewijze verfijning: tekenen van een huis. Uitbreiding naar meerdere huizen, variabele afmetingen, coördinaten en kleuren
Opdracht voor het vak Vakdidactiek
Door Van Looveren Leen
Logo Stapsgewijze verfijning: tekenen van een huis. Uitbreiding naar meerdere huizen, variabele afmetingen, coördinaten en kleuren
Opdracht voor het vak Vakdidactiek
Door Van Looveren Leen
Doelstellingen
We hebben geleerd een probleem op te splitsen in deelproblemen.
De deelproblemen werden dan eventueel nog eens verfijnd totdat we allemaal deelproblemen kregen die overeenstemde met een commando of een reeds gekende procedure.
We gaan hier nog verder op ingaan door een reeds gekend probleem uit te breiden naar een groter probleem.
Om dit groter probleem op te lossen gaan we de eenvoudige deelproblemen van het reeds gekend probleem aanpassen.
Hierdoor wordt het nog duidelijker hoe belangrijk het is een probleem op te splitsen in deelproblemen.
De procedure ‘huis’ met parameters
We gaan eerst opnieuw een huis bouwen. Deze keer zullen we ervoor zorgen dat we parameters kunnen meegeven aan de procedure “huis” zodanig dat we gemakkelijk de grootte, de positie en de kleur van het huis kunnen aanpassen.
to huis :breedte :Xpositie :Ypositie :huiskleur :dakkleur
De procedure ‘huis’ met parameters
Verfijning Procedure Deelprobleem Vierhoek Muren Vierhoek Ramen Vierhoek Deur Deur Vierhoek Schoorsteen Trapezium Dak Dak Cirkel Klink Het huis werd opgesplitst in deelproblemen:
De procedure ‘huis’ met parameters
Opgave 1a:
Maak de procedure ‘deur_aangepast’. Deze procedure is een aangepaste versie van de procedure ‘deur’. Zorg ervoor dat de breedte van het huis wordt meegegeven als parameter bij de nieuwe procedure ‘deur_aangepast’.
De breedte van de deur is 1/5de van de breedte van het huis.
De hoogte van de muur van het huis is de helft van de breedte van het huis.
De hoogte van de deur is 3/4de van de hoogte van de muur van het huis.
De procedure ‘huis’ met parameters
Implementatie deur_aangepast:
to deur_aangepast :breedte
repeat 2[fd 3*:breedte/2/4 rt 90 fd :breedte/5 rt 90]
pu
rt 45
fd 2
setfc [175 85 0]
fill
bk 2
rt -45
pd
end
De procedure ‘huis’ met parameters
Opgave 1b:
Schrijf de procedure klink_aangepast. De klink is een cirkel. Deze krijgt ook als parameter de breedte van het huis mee. Zorg ervoor dat de grootte van de klink :breedte/400 is.
De procedure ‘huis’ met parameters
Implementatie deur_aangepast:
to klink_aangepast :breedte
repeat 36[fd :breedte/400 rt 10]
pu
rt 45
fd 1
setfc [128 0 128]
fill
bk 1
rt -45
pd
end
De procedure ‘huis’ met parameters
Opgave 1c:
Schrijf de procedure deur_met_klink_aangepast. Deze procedure is een aanpassing van de procedure deur_met_klink en moet natuurlijk ook de parameter breedte van het huis meekrijgen. Ook moet deze ervoor zorgen dat de klink altijd verticaal gecentreerd aan de rechterkant van de deur staat (ook als de deur bijvoorbeeld verkleind wordt).
De procedure deur_met_klink_aangepast bepaalt zelf zijn positie binnen de muren.
De procedure ‘huis’ met parameters
Implementatie deur_met_klink_aangepast:
to deur_met_klink_aangepast :breedte :X :Y
pu
setXY :X+(:breedte/4*3) :Y
pd
deur_aangepast :breedte
pu
setXY :X+(:breedte/4*3)+(4/5*(:breedte/5)) :Y+(1/2*(3*:breedte/2/4))
pd
klink_aangepast :breedte
pu
setXY :X :Y
pd
end
De procedure ‘huis’ met parameters
Opgave 2:
Maak de procedure raam_aangepast. Dit is een aanpassing van de procedure raam. Geef deze de parameters breedte van het huis, Xpositie en Ypositie mee. Een raam bepaalt zelf zijn positie binnen de muren van het huis.
De procedure ‘huis’ met parameters
Implementatie raam_aangepast:
to raam_aangepast :breedte :X :Y
pu
setXY :X+(1/5*(:breedte)) :Y+(:breedte/2/3)
pd
repeat 2[fd 1/3*(:breedte/2) rt 90 fd 1/3*:breedte rt 90]
pu
rt 45
fd 2
setfc [128 128 255]
fill
bk 2
rt -45
setXY :X :Y
pd
end
De procedure ‘huis’ met parameters
Opgave 3:
Maak een procedure muur_aangepast. Deze is een aanpassing van de procedure muur. Geef hem de parameters breedte van het huis, Xpositie, Ypositie en kleur mee.
to muur :breedt :X :Y :kleur
Gebruik ‘setfc :kleur’
De procedure ‘huis’ met parameters
Implementatie muur_aangepast:
to muur_aangepast :breedte :X :Y :kleur
cs
pu
setXY :X :Y
pd
repeat 2[fd :breedte/2 rt 90 fd :breedte rt 90]
pu
rt 45
fd 2
setfc :kleur
fill
bk 2
rt -45
pd
end
De procedure ‘huis’ met parameters
Opgave 4: Schrijf de procedure muur_deur_raam. Deze is een aanpassing van de procedure muur_met_deur_met_raam. Geef weer de nodige parameters mee.
De procedure ‘huis’ met parameters
Implementatie muur_deur_raam:
to muur_deur_raam :breedte :X :Y :kleur
muur_aangepast :breedte :X :Y :kleur
deur_met_klink_aangepast :breedte :X :Y
raam_aangepast :breedte :X :Y
pu
setXY :X :Y
pd
end
De procedure ‘huis’ met parameters
Opgave 5a:
Maak de procedure dak_aangepast. Dit is een aanpassing op de procedure dak. Geef de breedte van het huis mee, de Xpositie, de Ypositie en de kleur van het dak. Het dak bepaalt ook zijn eigen positie t.o.v. de muur. Neem als lengte voor de kleine basis van de trapezium 3/4de van de grote basis
Implementatie dak_aangepast
to dak_aangepast :breedte :X :Y :kleur
pu
setXY :X :Y+(:breedte/2)
pd
setXY :X+(:breedte-(3*:breedte)/4)/2 :Y+(:breedte/2)+(:breedte/4)
setXY :X+(:breedte-(3*:breedte)/4)/2+(3/4*:breedte) :Y+(:breedte/2)+(:breedte/4)
setXY :X+:breedte :Y+:breedte/2
setXY :X :Y+(:breedte/2)
pu
rt 60
fd 2
setfc :kleur
fill
bk 2
rt -60
setXY :X :Y
pd
end
De procedure ‘huis’ met parameters
(¾*breedte)) (1/15*breedte) (1/20*breedte) Opgave 5b:
Schrijf de procedure schoorsteen_aangepast.Deze is een aanpassing van de procedure schoorsteen. Zorg ervoor dat de schoorsteen zichzelf de juiste positie en grootte toekent. Deze krijgt ook de parameters breedte, Xpositie, Ypositie en kleur mee. De kleur is dezelfde als die van de muren.
Comments