![Page 2: 1 Vakdidactiek 17 – 11 - 2003 Goethals Frederik frederikgoethals@belgacom.net](https://reader036.vdocuments.mx/reader036/viewer/2022062418/5551a0ef4979591f3c8b8d45/html5/thumbnails/2.jpg)
2
Herhaling basiscommando’s
• Turtle basiscommando’s
• Penopdrachten
• Kleuropdrachten (RGB waarden)
• Positioneren van de turtle (assenstelsel)
• Programmeercommando’s
![Page 3: 1 Vakdidactiek 17 – 11 - 2003 Goethals Frederik frederikgoethals@belgacom.net](https://reader036.vdocuments.mx/reader036/viewer/2022062418/5551a0ef4979591f3c8b8d45/html5/thumbnails/3.jpg)
3
1. Toepassing: het tekenen van een huis
• Een huis met vaste coördinaten en afmetingen.
![Page 4: 1 Vakdidactiek 17 – 11 - 2003 Goethals Frederik frederikgoethals@belgacom.net](https://reader036.vdocuments.mx/reader036/viewer/2022062418/5551a0ef4979591f3c8b8d45/html5/thumbnails/4.jpg)
4
Huis met vaste coördinaten en afmetingen
![Page 5: 1 Vakdidactiek 17 – 11 - 2003 Goethals Frederik frederikgoethals@belgacom.net](https://reader036.vdocuments.mx/reader036/viewer/2022062418/5551a0ef4979591f3c8b8d45/html5/thumbnails/5.jpg)
5
2. 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
![Page 6: 1 Vakdidactiek 17 – 11 - 2003 Goethals Frederik frederikgoethals@belgacom.net](https://reader036.vdocuments.mx/reader036/viewer/2022062418/5551a0ef4979591f3c8b8d45/html5/thumbnails/6.jpg)
6
Stapsgewijze verfijning van de molen
Muren
Dak Driehoek
Rechthoek
Wieken 4 * Wiek Rechthoek
Rechte
Molen
![Page 7: 1 Vakdidactiek 17 – 11 - 2003 Goethals Frederik frederikgoethals@belgacom.net](https://reader036.vdocuments.mx/reader036/viewer/2022062418/5551a0ef4979591f3c8b8d45/html5/thumbnails/7.jpg)
7
Stapsgewijze verfijning van het huisHuis
Muur
Dak Dak
Schoorsteen Rechthoek
Trapezium
Bakstenen
Deur
Raam Rechthoek
Deur
Deurklink
Rechthoek
Cirkel
Rechthoek
Voegingen Horizontaal
Verticaal
Rechten
Rechten
![Page 8: 1 Vakdidactiek 17 – 11 - 2003 Goethals Frederik frederikgoethals@belgacom.net](https://reader036.vdocuments.mx/reader036/viewer/2022062418/5551a0ef4979591f3c8b8d45/html5/thumbnails/8.jpg)
8
3. 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, …
![Page 9: 1 Vakdidactiek 17 – 11 - 2003 Goethals Frederik frederikgoethals@belgacom.net](https://reader036.vdocuments.mx/reader036/viewer/2022062418/5551a0ef4979591f3c8b8d45/html5/thumbnails/9.jpg)
9
Huis
Het huis kan gezien worden als twee kleinere deelproblemen.
De muur en het dak.
Hoe implementeren?
to huis;scherm wissencs
;de muur tekenenmuur
;het dak tekenendak
end
![Page 10: 1 Vakdidactiek 17 – 11 - 2003 Goethals Frederik frederikgoethals@belgacom.net](https://reader036.vdocuments.mx/reader036/viewer/2022062418/5551a0ef4979591f3c8b8d45/html5/thumbnails/10.jpg)
10
Huis muur bakstenen
Eerst de volledige muur tekenen, daarna de muur voegen.
Vervolgens het raam en de deur plaatsen.
to muur;de turtle linksonder zettenpusetxy 0 0pd
;een rode rechthoeksetfc [255 0 0]bitblock 300 150
;de muren voegenvoegen
;het raam tekenenraam
;de deur tekenendeur
end
![Page 11: 1 Vakdidactiek 17 – 11 - 2003 Goethals Frederik frederikgoethals@belgacom.net](https://reader036.vdocuments.mx/reader036/viewer/2022062418/5551a0ef4979591f3c8b8d45/html5/thumbnails/11.jpg)
11
Huis muur bakstenen voegingen
De muur moet gevoegd worden.
Eerst horizontaal voegen, daarna verticaal voegen.
to voegen;de muur horizontaal voegenvoeg_horizontaal
;de muur verticaal voegenvoeg_verticaal
end
![Page 12: 1 Vakdidactiek 17 – 11 - 2003 Goethals Frederik frederikgoethals@belgacom.net](https://reader036.vdocuments.mx/reader036/viewer/2022062418/5551a0ef4979591f3c8b8d45/html5/thumbnails/12.jpg)
12
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 300pu setxy 0 15 pd setheading 90 fd 300…pu setxy 0 142.5 pd setheading 90 fd 300
end
Geen efficiënte programmering
![Page 13: 1 Vakdidactiek 17 – 11 - 2003 Goethals Frederik frederikgoethals@belgacom.net](https://reader036.vdocuments.mx/reader036/viewer/2022062418/5551a0ef4979591f3c8b8d45/html5/thumbnails/13.jpg)
13
Huis muur bakstenen voegingen horizontaal
Hoe kunnen we het voegen efficiënter implementeren?
pu setxy 0 7.5 pd setheading 90 fd 300pu 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 … […]
![Page 14: 1 Vakdidactiek 17 – 11 - 2003 Goethals Frederik frederikgoethals@belgacom.net](https://reader036.vdocuments.mx/reader036/viewer/2022062418/5551a0ef4979591f3c8b8d45/html5/thumbnails/14.jpg)
14
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] […]
![Page 15: 1 Vakdidactiek 17 – 11 - 2003 Goethals Frederik frederikgoethals@belgacom.net](https://reader036.vdocuments.mx/reader036/viewer/2022062418/5551a0ef4979591f3c8b8d45/html5/thumbnails/15.jpg)
15
Huis muur bakstenen voegingen horizontaal
pu setxy 0 7.5 pd setheading 90 fd 300pu 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 300pu setxy 0 15 pd setheading 90 fd 300…pu setxy 0 142.5 pd setheading 90 fd 300
end
![Page 16: 1 Vakdidactiek 17 – 11 - 2003 Goethals Frederik frederikgoethals@belgacom.net](https://reader036.vdocuments.mx/reader036/viewer/2022062418/5551a0ef4979591f3c8b8d45/html5/thumbnails/16.jpg)
16
Huis muur bakstenen voegingen horizontaal
pu setxy 0 7.5 pd setheading 90 fd 300pu 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
![Page 17: 1 Vakdidactiek 17 – 11 - 2003 Goethals Frederik frederikgoethals@belgacom.net](https://reader036.vdocuments.mx/reader036/viewer/2022062418/5551a0ef4979591f3c8b8d45/html5/thumbnails/17.jpg)
17
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
![Page 18: 1 Vakdidactiek 17 – 11 - 2003 Goethals Frederik frederikgoethals@belgacom.net](https://reader036.vdocuments.mx/reader036/viewer/2022062418/5551a0ef4979591f3c8b8d45/html5/thumbnails/18.jpg)
18
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 zettenpusetxy 210 0pd
;een groene rechthoek tekenen en opvullensetfc [0 255 0]bitblock 60 120
;de deurklink tekenendeurklink
end
![Page 19: 1 Vakdidactiek 17 – 11 - 2003 Goethals Frederik frederikgoethals@belgacom.net](https://reader036.vdocuments.mx/reader036/viewer/2022062418/5551a0ef4979591f3c8b8d45/html5/thumbnails/19.jpg)
19
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)pusetxy 255 60pd
;kleur van de deurknop bepalen (zwart)setpc [0 0 0]setfc [0 0 0]
;een cirkel tekenen en opvullencircle 7fill
end
![Page 20: 1 Vakdidactiek 17 – 11 - 2003 Goethals Frederik frederikgoethals@belgacom.net](https://reader036.vdocuments.mx/reader036/viewer/2022062418/5551a0ef4979591f3c8b8d45/html5/thumbnails/20.jpg)
20
Huis muur Raam
Het Raam is een blauwe rechthoek.
Hoe moeten we dit implementeren?
to raam;de turtle in goede positie zettenpusetxy 60 45pd
;kleur van het raam bepalen (blauw)setfc [0 0 255]
;een rechthoek tekenen en opvullenbitblock 90 60
end
![Page 21: 1 Vakdidactiek 17 – 11 - 2003 Goethals Frederik frederikgoethals@belgacom.net](https://reader036.vdocuments.mx/reader036/viewer/2022062418/5551a0ef4979591f3c8b8d45/html5/thumbnails/21.jpg)
21
Huis dak dak
Het Dak is een zwarte trapezium.
Hoe moeten we dit implementeren?
Eerst tekenen, dan opvullen.
Grote basis, rechterwand (50°), kleine basis, linkerwand (50°).
• grote basis tekenen pu setxy 0 150 pd heading 90 fd 300
• rechterwand tekenen lt (180 - 50) fd 120 lt 50
• kleine basis tekenen fd …
• linkerwand tekenen setxy 0 150
• Probleem: Hoelang is de kleine basis?
![Page 22: 1 Vakdidactiek 17 – 11 - 2003 Goethals Frederik frederikgoethals@belgacom.net](https://reader036.vdocuments.mx/reader036/viewer/2022062418/5551a0ef4979591f3c8b8d45/html5/thumbnails/22.jpg)
22
Huis dak dakDe lengte van de kleine basis?
Oplossing: •opslaan van de posities (x1,y1) en (x2,y2)
•make “pos1 pos•make “pos2 pos
•de waarde 300 – 2 * (x1 – x2) berekenen.•300 – 2 * ( (item 1 :pos1) – (item 1 :pos2) )
![Page 23: 1 Vakdidactiek 17 – 11 - 2003 Goethals Frederik frederikgoethals@belgacom.net](https://reader036.vdocuments.mx/reader036/viewer/2022062418/5551a0ef4979591f3c8b8d45/html5/thumbnails/23.jpg)
23
Huis dak dakto dak
;de turtle in goede positie brengenpusetxy 0 150setheading 90pd
;kleur van dak bepalen (zwart)setpc [0 0 0]setfc [0 0 0]
;basis tekenenfd 300
;huidige positie bewarenmake "pos1 pos
;rechterdakwand tekenenlt 180 - 50fd 120lt 50
;huidige positie bewarenmake "pos2 pos
;tekenen van schoorsteenschoorsteen
;kleine basisfd 300 - 2*((item 1 :pos1) - (item 1 :pos2))
;linkerdakwand tekenensetxy 0 150
;opvullen van dak (net in dak staan)pusetxy 150 151pdfill
end
![Page 24: 1 Vakdidactiek 17 – 11 - 2003 Goethals Frederik frederikgoethals@belgacom.net](https://reader036.vdocuments.mx/reader036/viewer/2022062418/5551a0ef4979591f3c8b8d45/html5/thumbnails/24.jpg)
24
Huis dak schoorsteenDe schoorsteen is een zwarte rechthoek.
De schoorsteen wordt getekend als de turtle op positie (x2,y2) staat (zie vroeger)
Hoe moeten we dit implementeren?
to schoorsteen;kleur van dak bepalen (zwart)
setfc [0 0 0]
;zwarte rechthoek tekenenbitblock 30 45
end
Maar!Schoorsteen staat verkeerd !Bitblock start altijd RECHTS van de turtle!
![Page 25: 1 Vakdidactiek 17 – 11 - 2003 Goethals Frederik frederikgoethals@belgacom.net](https://reader036.vdocuments.mx/reader036/viewer/2022062418/5551a0ef4979591f3c8b8d45/html5/thumbnails/25.jpg)
25
Huis dak schoorsteen
•De turtle dus eerst enkele positiesnaar links verplaatsen.
•Dan de bitblock tekenen.
•De turtle terug naar rechts verplaatsen.
to schoorsteen;turtle linksonder schoorsteen zettenpusetheading -90fd 30pd
;zwarte rechthoek tekenensetfc [0 0 0]
bitblock 30 45
;turtle terugzettenpubk 30pd
end
Trucje:
![Page 26: 1 Vakdidactiek 17 – 11 - 2003 Goethals Frederik frederikgoethals@belgacom.net](https://reader036.vdocuments.mx/reader036/viewer/2022062418/5551a0ef4979591f3c8b8d45/html5/thumbnails/26.jpg)
26
4. Testen van de toepassing
• We hebben de complexe toepassing stapsgewijs verfijnd en geïmplementeerd met behulp van verschillende procedures.
• De startprocedure was• To huis
….
• End
• Als alles correct is verlopen zou het uitvoeren van het commando huis in de commander van MSWLOGO het volledige huis moeten tekenen.
![Page 27: 1 Vakdidactiek 17 – 11 - 2003 Goethals Frederik frederikgoethals@belgacom.net](https://reader036.vdocuments.mx/reader036/viewer/2022062418/5551a0ef4979591f3c8b8d45/html5/thumbnails/27.jpg)
27
Huis met vaste coördinaten en afmetingen
![Page 28: 1 Vakdidactiek 17 – 11 - 2003 Goethals Frederik frederikgoethals@belgacom.net](https://reader036.vdocuments.mx/reader036/viewer/2022062418/5551a0ef4979591f3c8b8d45/html5/thumbnails/28.jpg)
28
5. Uitbreiding 1: één of meer huizen met variabele afmetingen en coördinaten
• Opgave:– Pas de code van vorige opgave aan zodat het mogelijk wordt om
een huis met variabele afmetingen en coördinaten te tekenen.– Alle afmetingen van het huis worden in functie van de breedte
berekend (zie kopie)
– Sla misschien best de vorige opgave op in het bestand vasthuis.lgo– Kopieer, plak en hernoem het bestand tot variabelhuis.lgo– Pas dan het bestand variabelhuis.lgo aan, zodat het originele bestand
niet wordt veranderd.
– Commando-opdracht: huis x-co y-co breedte• Vb: huis 0 0 300• Vb: huis -200 20 180• Vb: huis -350 40 120
![Page 29: 1 Vakdidactiek 17 – 11 - 2003 Goethals Frederik frederikgoethals@belgacom.net](https://reader036.vdocuments.mx/reader036/viewer/2022062418/5551a0ef4979591f3c8b8d45/html5/thumbnails/29.jpg)
29
Huis met variabele coördinaten en afmetingen
![Page 30: 1 Vakdidactiek 17 – 11 - 2003 Goethals Frederik frederikgoethals@belgacom.net](https://reader036.vdocuments.mx/reader036/viewer/2022062418/5551a0ef4979591f3c8b8d45/html5/thumbnails/30.jpg)
30
Meerdere variabele huizen
![Page 31: 1 Vakdidactiek 17 – 11 - 2003 Goethals Frederik frederikgoethals@belgacom.net](https://reader036.vdocuments.mx/reader036/viewer/2022062418/5551a0ef4979591f3c8b8d45/html5/thumbnails/31.jpg)
31
Werkwijze voor aanpassen van de code
Welke zaken moeten veranderd worden?
•Gebruik van parameters•Welke parameters doorgeven aan welke functies?
•X-co, Y-co, breedte
•Welke individuele commando’s moeten gebruik maken van de parameters?
•Voorbeeld: de functie huis wordt nu…
to huis :x :y :breedte;x=x-coordinaat van referentiepunt van huis (links onder);y=y-coordinaat van referentiepunt van huis (links onder);breedte=de breedte van het huis
;tekenen van muur: muur :x :y :breedte
;tekenen van dakdak :x :y :breedte
end
![Page 32: 1 Vakdidactiek 17 – 11 - 2003 Goethals Frederik frederikgoethals@belgacom.net](https://reader036.vdocuments.mx/reader036/viewer/2022062418/5551a0ef4979591f3c8b8d45/html5/thumbnails/32.jpg)
32
6. Uitbreiding 2: één of meer huizen met variabele afmetingen, coördinaten en kleuren
• Opgave:– Pas de code van vorige opgave aan zodat het nu ook mogelijk wordt
huizen met variabele kleuren te tekenen.
– Sla misschien best de vorige opgave op in het bestand variabelhuis.lgo– Kopieer, plak en hernoem het bestand tot allesvariabelhuis.lgo– Pas dan het bestand allesvariabelhuis.lgo aan, zodat het origineel niet wordt
veranderd.
– Commando-opdracht: • huis x-co y-co breedte [r_muur g_muur b_muur] [r_voeg g_voeg b_voeg]
[r_deur g_deur b_deur] [r_klink g_klink b_klink] [r_venster g_venster b_venster] [r_dak g_dak b_dak] [r_schoorsteen g_schoorsteen b_schoorsteen]
– Vb: huis 0 0 300 [255 0 0] [128 128 128] [0 255 0] [0 0 0] [0 0 255] [0 0 0] [0 0 0] – Vb: huis -50 -100 300 [192 192 192] [0 0 0] [134 7 149] [255 255 255] [0 144 244]
[195 3 26] [4 3 2]
![Page 33: 1 Vakdidactiek 17 – 11 - 2003 Goethals Frederik frederikgoethals@belgacom.net](https://reader036.vdocuments.mx/reader036/viewer/2022062418/5551a0ef4979591f3c8b8d45/html5/thumbnails/33.jpg)
33
Huis met variabele afmetingen, coördinaten en kleuren
![Page 34: 1 Vakdidactiek 17 – 11 - 2003 Goethals Frederik frederikgoethals@belgacom.net](https://reader036.vdocuments.mx/reader036/viewer/2022062418/5551a0ef4979591f3c8b8d45/html5/thumbnails/34.jpg)
34
Werkwijze voor aanpassen van de code
Welke zaken moeten nu veranderd worden?
•Gebruik van parameters•Welke parameters doorgeven aan welke functies?
•X-co, Y-co, breedte, kleuren als 1 parameter [… … … ]
•Welke individuele commando’s moeten gebruik maken van de parameters?
•Voorbeeld: de functie huis wordt nu…
to huis :x :y :breedte :rgb_muur :rgb_voeg :rgb_deur :rgb_klink :rgb_venster :rgb_dak :rgb_schoorsteen
;x=x-coordinaat van referentiepunt van huis (links onder);y=y-coordinaat van referentiepunt van huis (links onder);breedte=de breedte van het huis;tekenen van muur:
muur :x :y :breedte :rgb_muur :rgb_voeg :rgb_deur :rgb_klink :rgb_venster;tekenen van dak
dak :x :y :breedte :rgb_dak :rgb_schoorsteen
end
![Page 35: 1 Vakdidactiek 17 – 11 - 2003 Goethals Frederik frederikgoethals@belgacom.net](https://reader036.vdocuments.mx/reader036/viewer/2022062418/5551a0ef4979591f3c8b8d45/html5/thumbnails/35.jpg)
35
7. Conclusie
• Wat is de conclusie van de toepassingen?– Niet zozeer dat we kunnen huizen tekenen
– Wel…• Het belang van de stapsgewijze verfijning (top
down strategie). Het omzetten van complexe problemen tot eenvoudigere deelproblemen.
• Een goede analyse en bijhorende implementatie stelt ons in staat om makkelijk de toepassing uit te breiden en/of aan te passen.