Vakdidactiek17 – 11 - 2003 Goethals Frederik
frederikgoethals@belgacom.net
Vakdidactiek17 – 11 - 2003 Goethals Frederik
frederikgoethals@belgacom.net
Herhaling basiscommando’s
Turtle basiscommando’s
Penopdrachten
Kleuropdrachten (RGB waarden)
Positioneren van de turtle (assenstelsel)
Programmeercommando’s
Toepassing: het tekenen van een huis
Een huis met vaste coördinaten en afmetingen.
Huis met vaste coördinaten en afmetingen
Analyse van het probleem
Doel: via een stapsgewijze verfijning het oorspronkelijke probleem opdelen in kleinere deelproblemen.
De deelproblemen verder opdelen totdat de problemen herleid zijn tot basiscommando’s of reeds geziene procedures.
Vb: molen van vorige les
Stapsgewijze verfijning van de molen
Muren Dak Driehoek Rechthoek Wieken 4 * Wiek Rechthoek Rechte Molen
Stapsgewijze verfijning van het huis
Huis Muur Dak Dak Schoorsteen Rechthoek Trapezium Bakstenen Deur Raam Rechthoek Deur Deurklink Rechthoek Cirkel Rechthoek Voegingen Horizontaal Verticaal Rechten Rechten
Implementatie van de deelproblemen
Doel: elk eenvoudig deelprobleem apart implementeren (aparte procedures) om zo de implementatie van de complexe toepassing te bekomen.
Elke procedure moet zo onafhankelijk mogelijk kunnen werken van de andere.
Vb: procedure “dak” is zelf verantwoordelijk voor het correct verplaatsen van de turtle, het kiezen van de juiste kleuren, …
Huis
Het huis kan gezien worden als twee kleinere deelproblemen.
De muur en het dak.
Hoe implementeren? to huis
;scherm wissen
cs
;de muur tekenen
muur
;het dak tekenen
dak
end
Huis muur bakstenen
Eerst de volledige muur tekenen, daarna de muur voegen.
Vervolgens het raam en de deur plaatsen. to muur
;de turtle linksonder zetten
pu
setxy 0 0
pd
;een rode rechthoek
setfc [255 0 0]
bitblock 300 150
;de muren voegen
voegen
;het raam tekenen
raam
;de deur tekenen
deur
end
Huis muur bakstenen voegingen
De muur moet gevoegd worden.
Eerst horizontaal voegen, daarna verticaal voegen. to voegen
;de muur horizontaal voegen
voeg_horizontaal
;de muur verticaal voegen
voeg_verticaal
end
Huis muur bakstenen voegingen horizontaal
Horizontaal voegen van de muur, komt neer op het herhaaldelijk tekenen van horizontale lijnen.
Hoe moeten we dit implementeren? to voeg_horizontaal
;de rode muur horizontaal voegen
;kleur van de voegen bepalen (grijs)
setpc [128 128 128]
pu setxy 0 7.5 pd setheading 90 fd 300
pu setxy 0 15 pd setheading 90 fd 300
…
pu setxy 0 142.5 pd setheading 90 fd 300
end Geen efficiënte programmering
Huis muur bakstenen voegingen horizontaal
Hoe kunnen we het voegen efficiënter implementeren? pu setxy 0 7.5 pd setheading 90 fd 300
pu setxy 0 15 pd setheading 90 fd 300
…
pu setxy 0 142.5 pd setheading 90 fd 300 Hoeveel keer herhalen?
142.5/7.5 = 19 keer horizontaal voegen.
Welke instructies herhalen?
pu setxy 0 … pd setheading 90 fd 300
Probleem: niet steeds dezelfde instructie die herhaald moet worden!
Oplossing: (cfr. Tellen van 1 tot 10)
Make “teller 7.5
Repeat 19 [pu setxy 0 :teller pd setheading 90 fd 300 make “teller (:teller + 7.5) ] Correct, maar geen elegante manier van oplossen! Introductie van de for-lus! Repeat-instructie: repeat … […]
Huis muur bakstenen voegingen horizontaal
Vb: uitprinten van de natuurlijke getallen tussen 0 en 10: 0,1,…,10
for [i 0 10 1] [ print :i ]
Stap 1: i=0 <= 10 0 uitprinten
Stap 2: i=1 <= 10 1 uitprinten
…
Stap 10: i=10 <=10 10 uitprinten
Stap 11: i=11 > 10 stoppen met for-lus uitvoeren
For-instructie: for [ variabele startwaarde stopwaarde stapgrootte] […]
Huis muur bakstenen voegingen horizontaal
pu setxy 0 7.5 pd setheading 90 fd 300
pu setxy 0 15 pd setheading 90 fd 300
…
pu setxy 0 142.5 pd setheading 90 fd 300 for [ variabele startwaarde stopwaarde stapgrootte] […] to voeg_horizontaal
;de rode muur horizontaal voegen
;kleur van de voegen bepalen (grijs)
setpc [128 128 128] Geen efficiënte programmering pu setxy 0 7.5 pd setheading 90 fd 300
pu setxy 0 15 pd setheading 90 fd 300
…
pu setxy 0 142.5 pd setheading 90 fd 300 end
Huis muur bakstenen voegingen horizontaal
pu setxy 0 7.5 pd setheading 90 fd 300
pu setxy 0 15 pd setheading 90 fd 300
…
pu setxy 0 142.5 pd setheading 90 fd 300 for [ variabele startwaarde stopwaarde stapgrootte] […] to voeg_horizontaal
;de rode muur horizontaal voegen
;kleur van de voegen bepalen (grijs)
setpc [128 128 128] for [ i 7.5 142.5 7.5 ] [ pu setxy 0 :i pd setheading 90 fd 300 ] end
Huis muur bakstenen voegingen verticaal
Verticaal voegen van de muur, komt neer op het herhaaldelijk tekenen van verticale lijnen.
Hoe moeten we dit implementeren? to voeg_verticaal
;de rode muur verticaal voegen
;kleur van de voegen bepalen (grijs)
setpc [128 128 128]
for [i 20 280 20] [pu setxy :i 0 pd setheading 0 fd 150]
end
Huis muur deur deur
De deur zelf wordt voorgesteld als een groene rechthoek.
Hoe moeten we dit implementeren? to deur
;de turtle in goede positie zetten
pu
setxy 210 0
pd
;een groene rechthoek tekenen en opvullen
setfc [0 255 0]
bitblock 60 120
;de deurklink tekenen
deurklink
end
Huis muur deur deurklink
De deurklink wordt getekend als een zwarte cirkel.
Hoe moeten we dit implementeren?
Eigenschappen van cirkel? to deurklink
;de turtle in goede positie zetten (middelpunt van cirkel)
pu
setxy 255 60
pd
;kleur van de deurknop bepalen (zwart)
setpc [0 0 0]
setfc [0 0 0]
;een cirkel tekenen en opvullen
circle 7
fill
end
Huis muur Raam
Het Raam is een blauwe rechthoek.
Hoe moeten we dit implementeren? to raam
;de turtle in goede positie zetten
pu
setxy 60 45
pd
;kleur van het raam bepalen (blauw)
setfc [0 0 255]
;een rechthoek tekenen en opvullen
bitblock 90 60
end
Comments