Logo
description
Transcript of Logo
LogoLogoStapsgewijze verfijning: tekenen van een huis. Stapsgewijze verfijning: tekenen van een huis. Uitbreiding naar meerdere huizen, variabele Uitbreiding naar meerdere huizen, variabele
afmetingen, coördinaten en kleuren afmetingen, coördinaten en kleuren
Opdracht voor het vak VakdidactiekOpdracht voor het vak VakdidactiekDoor Van Looveren LeenDoor Van Looveren Leen
DoelstellingenDoelstellingen
We hebben geleerd een probleem op te splitsen in We hebben geleerd een probleem op te splitsen in deelproblemen. deelproblemen.
De deelproblemen werden dan eventueel nog eens De deelproblemen werden dan eventueel nog eens verfijnd totdat we allemaal deelproblemen kregen verfijnd totdat we allemaal deelproblemen kregen die overeenstemde met een commando of een die overeenstemde met een commando of een reeds gekende procedure.reeds gekende procedure.
We gaan hier nog verder op ingaan door een reeds We gaan hier nog verder op ingaan door een reeds gekend probleem uit te breiden naar een groter gekend probleem uit te breiden naar een groter probleem. probleem.
Om dit groter probleem op te lossen gaan we de Om dit groter probleem op te lossen gaan we de eenvoudige deelproblemen van het reeds gekend eenvoudige deelproblemen van het reeds gekend probleem aanpassen.probleem aanpassen.
Hierdoor wordt het nog duidelijker hoe belangrijk het Hierdoor wordt het nog duidelijker hoe belangrijk het is een probleem op te splitsen in deelproblemen.is een probleem op te splitsen in deelproblemen.
De procedure ‘huis’ met De procedure ‘huis’ met parametersparameters
We gaan eerst opnieuw een huis bouwen. Deze We gaan eerst opnieuw een huis bouwen. Deze keer zullen we ervoor zorgen dat we keer zullen we ervoor zorgen dat we parameters kunnen meegeven aan de parameters kunnen meegeven aan de procedure “huis” zodanig dat we gemakkelijk procedure “huis” zodanig dat we gemakkelijk de grootte, de positie en de kleur van het huis de grootte, de positie en de kleur van het huis kunnen aanpassen.kunnen aanpassen.
to to huis :breedte :Xpositie :Ypositie :huiskleur :dakkhuis :breedte :Xpositie :Ypositie :huiskleur :dakkleurleur
De procedure ‘huis’ met De procedure ‘huis’ met parametersparameters
Het huis werd opgesplitst in deelproblemen:Het huis werd opgesplitst in deelproblemen:
DeelprobleemDeelprobleem ProcedureProcedure Verfijning Verfijning
MurenMuren VierhoekVierhoek
RamenRamen VierhoekVierhoek
DeurDeur DeurDeur VierhoekVierhoek
KlinkKlink CirkelCirkel
DakDak DakDak TrapeziumTrapezium
SchoorsteenSchoorsteen VierhoekVierhoek
De procedure ‘huis’ met De procedure ‘huis’ met parametersparameters
Opgave 1a:Opgave 1a:Maak de procedure ‘deur_aangepast’. Deze Maak de procedure ‘deur_aangepast’. Deze
procedure is een aangepaste versie van de procedure is een aangepaste versie van de procedure ‘deur’. Zorg ervoor dat de procedure ‘deur’. Zorg ervoor dat de breedte van het huis wordt meegegeven als breedte van het huis wordt meegegeven als parameter bij de nieuwe procedure parameter bij de nieuwe procedure ‘deur_aangepast’. ‘deur_aangepast’.
De breedte van de deur is 1/5de van de De breedte van de deur is 1/5de van de breedte van het huis.breedte van het huis.
De hoogte van de muur van het huis is de De hoogte van de muur van het huis is de helft van de breedte van het huis.helft van de breedte van het huis.
De hoogte van de deur is 3/4de van de hoogte De hoogte van de deur is 3/4de van de hoogte van de muur van het huis.van de muur van het huis.
De procedure ‘huis’ met De procedure ‘huis’ met parametersparameters
Implementatie deur_aangepast:Implementatie deur_aangepast:
to deur_aangepast to deur_aangepast :breedte:breedterepeat 2[fd repeat 2[fd 3*:breedte/2/43*:breedte/2/4 rt 90 fd rt 90 fd :breedte/5:breedte/5 rt rt
90]90]pupurt 45rt 45fd 2fd 2setfc [175 85 0]setfc [175 85 0]fillfillbk 2bk 2rt -45rt -45pdpdendend
De procedure ‘huis’ met De procedure ‘huis’ met parametersparameters
Opgave 1b:Opgave 1b:
Schrijf de procedure klink_aangepast. Schrijf de procedure klink_aangepast. De klink is een cirkel. Deze krijgt ook De klink is een cirkel. Deze krijgt ook als parameter de breedte van het huis als parameter de breedte van het huis mee. Zorg ervoor dat de grootte van mee. Zorg ervoor dat de grootte van de klink :breedte/400 is.de klink :breedte/400 is.
De procedure ‘huis’ met De procedure ‘huis’ met parametersparameters
Implementatie deur_aangepast:Implementatie deur_aangepast:
to klink_aangepast to klink_aangepast :breedte: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 De procedure ‘huis’ met parametersparameters
Opgave 1c:Opgave 1c:Schrijf de procedure Schrijf de procedure
deur_met_klink_aangepast. Deze procedure deur_met_klink_aangepast. Deze procedure is een aanpassing van de procedure is een aanpassing van de procedure deur_met_klink en moet natuurlijk ook de deur_met_klink en moet natuurlijk ook de parameter breedte van het huis meekrijgen. parameter breedte van het huis meekrijgen. Ook moet deze ervoor zorgen dat de klink Ook moet deze ervoor zorgen dat de klink altijd verticaal gecentreerd aan de altijd verticaal gecentreerd aan de rechterkant van de deur staat (ook als de rechterkant van de deur staat (ook als de deur bijvoorbeeld verkleind wordt).deur bijvoorbeeld verkleind wordt).De procedure deur_met_klink_aangepast De procedure deur_met_klink_aangepast bepaalt zelf zijn positie binnen de muren.bepaalt zelf zijn positie binnen de muren.
De procedure ‘huis’ met De procedure ‘huis’ met parametersparameters
Implementatie deur_met_klink_aangepast:Implementatie deur_met_klink_aangepast:
to deur_met_klink_aangepast to deur_met_klink_aangepast :breedte :X :Y:breedte :X :YpupusetXY :X+(:breedte/4*3) :YsetXY :X+(:breedte/4*3) :Ypdpddeur_aangepast :breedtedeur_aangepast :breedtepupusetXY :X+(:breedte/4*3)+(4/5*(:breedte/5)) setXY :X+(:breedte/4*3)+(4/5*(:breedte/5)) :Y+(1/2*(3*:breedte/2/4)):Y+(1/2*(3*:breedte/2/4))pdpdklink_aangepast :breedteklink_aangepast :breedtepupusetXY setXY :X :Y:X :Ypdpd
endend
De procedure ‘huis’ met De procedure ‘huis’ met parametersparameters
Opgave 2:Opgave 2:
Maak de procedure raam_aangepast. Dit Maak de procedure raam_aangepast. Dit is een aanpassing van de procedure is een aanpassing van de procedure raam. Geef deze de parameters raam. Geef deze de parameters breedte van het huis, Xpositie en breedte van het huis, Xpositie en Ypositie mee. Een raam bepaalt zelf Ypositie mee. Een raam bepaalt zelf zijn positie binnen de muren van het zijn positie binnen de muren van het huis.huis.
De procedure ‘huis’ met De procedure ‘huis’ met parametersparameters
Implementatie raam_aangepast:Implementatie raam_aangepast:
to raam_aangepast to raam_aangepast :breedte :X :Y:breedte :X :YpupusetXY :X+(1/5*(:breedte)) :Y+(:breedte/2/3)setXY :X+(1/5*(:breedte)) :Y+(:breedte/2/3)pdpdrepeat 2[fd repeat 2[fd 1/3*(:breedte/2)1/3*(:breedte/2) rt 90 fd rt 90 fd 1/3*:breedte1/3*:breedte rt 90] rt 90]pupurt 45rt 45fd 2fd 2setfc [128 128 255]setfc [128 128 255]fillfillbk 2bk 2rt -45rt -45setXY :X :YsetXY :X :Ypdpd
endend
De procedure ‘huis’ met De procedure ‘huis’ met parametersparameters
Opgave 3:Opgave 3:
Maak een procedure muur_aangepast. Maak een procedure muur_aangepast. Deze is een aanpassing van de Deze is een aanpassing van de procedure muur. Geef hem de procedure muur. Geef hem de parameters breedte van het huis, parameters breedte van het huis, Xpositie, Ypositie en kleur mee.Xpositie, Ypositie en kleur mee.
to muur :breedt :X :Y :kleurto muur :breedt :X :Y :kleur
Gebruik ‘setfc :kleur’Gebruik ‘setfc :kleur’
De procedure ‘huis’ met De procedure ‘huis’ met parametersparameters
Implementatie muur_aangepast:Implementatie muur_aangepast:
to muur_aangepast to muur_aangepast :breedte :X :Y :kleur:breedte :X :Y :kleurcscspupusetXY :X :YsetXY :X :Ypdpdrepeat 2[fd repeat 2[fd :breedte/2:breedte/2 rt 90 fd rt 90 fd :breedte:breedte rt 90] rt 90]pupurt 45rt 45fd 2fd 2setfc setfc :kleur:kleurfillfillbk 2bk 2rt -45rt -45pdpd
endend
De procedure ‘huis’ met De procedure ‘huis’ met parametersparameters
Opgave 4: Schrijf de procedure Opgave 4: Schrijf de procedure muur_deur_raam. Deze is een muur_deur_raam. Deze is een aanpassing van de procedure aanpassing van de procedure muur_met_deur_met_raam. Geef weer muur_met_deur_met_raam. Geef weer de nodige parameters mee.de nodige parameters mee.
De procedure ‘huis’ met De procedure ‘huis’ met parametersparameters
Implementatie muur_deur_raam:Implementatie muur_deur_raam:
to muur_deur_raam :breedte :X :Y :kleurto muur_deur_raam :breedte :X :Y :kleurmuur_aangepast :breedte :X :Y :kleurmuur_aangepast :breedte :X :Y :kleurdeur_met_klink_aangepast :breedte :X :Ydeur_met_klink_aangepast :breedte :X :Yraam_aangepast :breedte :X :Yraam_aangepast :breedte :X :YpupusetXY :X :YsetXY :X :Ypdpd
endend
De procedure ‘huis’ met De procedure ‘huis’ met parametersparameters
Opgave 5a:Opgave 5a:
Maak de procedure dak_aangepast. Dit Maak de procedure dak_aangepast. Dit is een aanpassing op de procedure is een aanpassing op de procedure dak. Geef de breedte van het huis dak. Geef de breedte van het huis mee, de Xpositie, de Ypositie en de mee, de Xpositie, de Ypositie en de kleur van het dak. Het dak bepaalt ook kleur van het dak. Het dak bepaalt ook zijn eigen positie t.o.v. de muur. Neem zijn eigen positie t.o.v. de muur. Neem als lengte voor de kleine basis van de als lengte voor de kleine basis van de trapezium 3/4de van de grote basistrapezium 3/4de van de grote basis
De procedure ‘huis’ met De procedure ‘huis’ met parametersparameters
(X, Y)(X, Y)
(0, 0)(0, 0)
breedtebreedte
Breedte/Breedte/22
¾*(breedte¾*(breedte))
(Breedte-(Breedte-(¾*breedte)) /2(¾*breedte)) /2
Breedte/4Breedte/4
(X, Y+ breedte/2)
(X+breedte, Y+ breedte/2)
(X+ (Breedte-(¾*breedte)) /2+ (Breedte-(¾*breedte)) /2+ (¾*breedte),(¾*breedte), Y+ breedte/2+breedte/4)
(X+ (Breedte-(¾*breedte)) /2,(Breedte-(¾*breedte)) /2, Y+ breedte/2+breedte/4)
De procedure ‘huis’ met De procedure ‘huis’ met parametersparameters
Implementatie dak_aangepastImplementatie dak_aangepast
to dak_aangepast to dak_aangepast :breedte :X :Y :kleur:breedte :X :Y :kleurpupusetXY :X :Y+(:breedte/2)setXY :X :Y+(:breedte/2)pdpdsetXY :X+(:breedte-(3*:breedte)/4)/2 :Y+(:breedte/2)+(:breedte/4)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)+setXY :X+(:breedte-(3*:breedte)/4)/2+(3/4*:breedte) :Y+(:breedte/2)+(:breedte/4)(:breedte/4)setXY :X+:breedte :Y+:breedte/2setXY :X+:breedte :Y+:breedte/2setXY :X :Y+(:breedte/2)setXY :X :Y+(:breedte/2)pupurt 60rt 60fd 2fd 2setfc setfc :kleur:kleurfillfillbk 2bk 2rt -60rt -60setXY :X :YsetXY :X :Ypdpd
endend
De procedure ‘huis’ met De procedure ‘huis’ met parametersparameters
Opgave 5b:Opgave 5b:Schrijf de procedure Schrijf de procedure
schoorsteen_aangepast.Deze is een aanpassing schoorsteen_aangepast.Deze is een aanpassing van de procedure schoorsteen. Zorg ervoor dat van de procedure schoorsteen. Zorg ervoor dat de schoorsteen zichzelf de juiste positie en de schoorsteen zichzelf de juiste positie en grootte toekent. Deze krijgt ook de parameters grootte toekent. Deze krijgt ook de parameters breedte, Xpositie, Ypositie en kleur mee. De breedte, Xpositie, Ypositie en kleur mee. De kleur is dezelfde als die van de muren.kleur is dezelfde als die van de muren.
(¾*breedte)(¾*breedte)))
(1/15*breedte)(1/15*breedte)
(1/20*breedte)(1/20*breedte)
De procedure ‘huis’ met De procedure ‘huis’ met parametersparameters
Implementatie schoorsteen_aangepastImplementatie schoorsteen_aangepast
to schoorsteen_aangepast to schoorsteen_aangepast :breedte :X :Y :kleur:breedte :X :Y :kleurpupusetXY :X+(3/4*:breedte) :Y+(:breedte/2)+(:breedte/4)setXY :X+(3/4*:breedte) :Y+(:breedte/2)+(:breedte/4)pdpdrepeat 2[fd repeat 2[fd 1/15*:breedte1/15*:breedte rt 90 fd rt 90 fd 1/10*:breedte1/10*:breedte rt 90] rt 90]pupurt 45rt 45fd 2fd 2setfc setfc :kleur:kleurfillfillbk 2bk 2rt -45rt -45pdpd
endend
De procedure ‘huis’ met De procedure ‘huis’ met parametersparameters
Opgave 5c:Opgave 5c:Maak de procedure Maak de procedure
dak_met_schoorsteen_aangepast. Dit is een dak_met_schoorsteen_aangepast. Dit is een aanpassing van de procedure aanpassing van de procedure dak_met_schoorsteen. Welke parameters dak_met_schoorsteen. Welke parameters moeten hier worden meegegeven?moeten hier worden meegegeven?
Opgave 6: Maak de procedure Opgave 6: Maak de procedure huis_aangepast. Dit is een aanpassing van huis_aangepast. Dit is een aanpassing van de procedure huis. Vergeet niet je turtle te de procedure huis. Vergeet niet je turtle te laten verdwijnen.laten verdwijnen.
De procedure ‘huis’ met De procedure ‘huis’ met parametersparametersImplementatie dak_met_schoorsteen_aangepast:Implementatie dak_met_schoorsteen_aangepast:
to dak_met_schoorsteen_aangepast :breedte :X :Y :huiskleur :dakkleurto dak_met_schoorsteen_aangepast :breedte :X :Y :huiskleur :dakkleur
dak_aangepast :breedte :X :Y :dakkleurdak_aangepast :breedte :X :Y :dakkleur
schoorsteen_aangepast :breedte :X :Y :huiskleurschoorsteen_aangepast :breedte :X :Y :huiskleur
pupu
setXY :X :YsetXY :X :Y
pdpd
endend
Implementatie huis_aangepast:Implementatie huis_aangepast:
to huis_aangepast :breedte :X :Y :huiskleur :dakkleurto huis_aangepast :breedte :X :Y :huiskleur :dakkleur
muur_deur_raam :breedte :X :Y :huiskleurmuur_deur_raam :breedte :X :Y :huiskleur
dak_met_schoorsteen_aangepast :breedte :X :Y :huiskleur :dakkleurdak_met_schoorsteen_aangepast :breedte :X :Y :huiskleur :dakkleur
HTHT
endend
Een dorp bouwenEen dorp bouwen
De procedure dorp: De procedure dorp:
- kies je eigen achtergrondkleur- kies je eigen achtergrondkleur
- Roep een aantal keer de procedure - Roep een aantal keer de procedure huis_aangepast op met verschillende huis_aangepast op met verschillende parametersparameters
- Voeg er eventueel nog een zonnetje, - Voeg er eventueel nog een zonnetje, een boompje of een weggetje bij.een boompje of een weggetje bij.
Een dorp bouwenEen dorp bouwen
Implementatie van een dorpImplementatie van een dorp
to dorpto dorpsetSC [210 250 200]setSC [210 250 200]huis_aangepast 380 -500 -100 [255 0 0] [128 0 128]huis_aangepast 380 -500 -100 [255 0 0] [128 0 128]huis_aangepast 250 -100 -30 [255 50 70] [180 0 180]huis_aangepast 250 -100 -30 [255 50 70] [180 0 180]huis_aangepast 200 150 -50 [255 23 14] [0 200 255]huis_aangepast 200 150 -50 [255 23 14] [0 200 255]huis_aangepast 100 130 150 [255 0 0] [25 255 255]huis_aangepast 100 130 150 [255 0 0] [25 255 255]huis_aangepast 70 230 225 [100 70 35] [200 70 40]huis_aangepast 70 230 225 [100 70 35] [200 70 40]huis_aangepast 120 230 120 [25 200 87] [0 98 43]huis_aangepast 120 230 120 [25 200 87] [0 98 43]huis_aangepast 70 10 215 [25 0 87] [10 98 30]huis_aangepast 70 10 215 [25 0 87] [10 98 30]huis_aangepast 60 80 225 [250 200 200] [0 98 150]huis_aangepast 60 80 225 [250 200 200] [0 98 150]
endend
ConclusieConclusie
Om een dorp te tekenen hadden we een huis nodig met Om een dorp te tekenen hadden we een huis nodig met parameters. Zo konden we op verschillende posities huizen parameters. Zo konden we op verschillende posities huizen plaatsen met verschillende kleuren en groottes. plaatsen met verschillende kleuren en groottes.
Het huis met parameters zijn we bekomen uit een huis zonder Het huis met parameters zijn we bekomen uit een huis zonder parameters. parameters.
Het huis zonder parameters was opgesplitst in deelproblemen. Zo Het huis zonder parameters was opgesplitst in deelproblemen. Zo moesten we enkel, met wat logische denkwerk, eenvoudige moesten we enkel, met wat logische denkwerk, eenvoudige procedures aanpassen.procedures aanpassen.
Het huis met parameters was dus ook opgesplitst in Het huis met parameters was dus ook opgesplitst in deelproblemen. Elk deelprobleem zorgde zelf voor zijn positie, deelproblemen. Elk deelprobleem zorgde zelf voor zijn positie, grootte en kleur. Als we dan bijvoorbeeld een deur aan de grootte en kleur. Als we dan bijvoorbeeld een deur aan de linkerkant van het huis willen of een puntdak willen tekenen, linkerkant van het huis willen of een puntdak willen tekenen, moeten we enkel aan 1 eenvoudige procedure veranderingen moeten we enkel aan 1 eenvoudige procedure veranderingen aanbrengen. aanbrengen.
We hebben geleerd dat, door stapsgewijs een groot probleem op We hebben geleerd dat, door stapsgewijs een groot probleem op te splitsen in deelproblemen en deze deelproblemen eventueel te splitsen in deelproblemen en deze deelproblemen eventueel nog te verfijnen totdat ze overeenstemmen met een reeds nog te verfijnen totdat ze overeenstemmen met een reeds gekende procedure of een commando, we niet alleen ons gekende procedure of een commando, we niet alleen ons probleem vereenvoudigen, maar ook toekomstige probleem vereenvoudigen, maar ook toekomstige veranderingen gemakkelijk maken. veranderingen gemakkelijk maken.