De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

1 Vakdidactiek 17 – 11 - 2003 Goethals Frederik

Verwante presentaties


Presentatie over: "1 Vakdidactiek 17 – 11 - 2003 Goethals Frederik"— Transcript van de presentatie:

1 1 Vakdidactiek 17 – Goethals Frederik

2 2 Herhaling basiscommando’s Turtle basiscommando’s Penopdrachten Kleuropdrachten (RGB waarden) Positioneren van de turtle (assenstelsel) Programmeercommando’s

3 3 1.Toepassing: het tekenen van een huis Een huis met vaste coördinaten en afmetingen.

4 4 Huis met vaste coördinaten en afmetingen

5 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

6 6 Stapsgewijze verfijning van de molen Muren DakDriehoek Rechthoek Wieken4 * WiekRechthoek Rechte Molen

7 7 Stapsgewijze verfijning van het huis Huis Muur Dak SchoorsteenRechthoek Trapezium Bakstenen Deur RaamRechthoek Deur Deurklink Rechthoek Cirkel Rechthoek VoegingenHorizontaal Verticaal Rechten

8 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, …

9 9 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

10 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 zetten pu setxy 0 0 pd ;een rode rechthoek setfc [ ] bitblock ;de muren voegen voegen ;het raam tekenen raam ;de deur tekenen deur end

11 11 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

12 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 [ ] pu setxy pd setheading 90 fd 300 pu setxy 0 15 pd setheading 90 fd 300 … pu setxy pd setheading 90 fd 300 end Geen efficiënte programmering

13 13 Huis  muur  bakstenen  voegingen  horizontaal Hoe kunnen we het voegen efficiënter implementeren? pu setxy pd setheading 90 fd 300 pu setxy 0 15 pd setheading 90 fd 300 … pu setxy 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 … […]

14 14 Huis  muur  bakstenen  voegingen  horizontaal Vb: uitprinten van de natuurlijke getallen tussen 0 en 10: 0,1,…,10 for [i ] [ 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] […]

15 15 Huis  muur  bakstenen  voegingen  horizontaal pu setxy pd setheading 90 fd 300 pu setxy 0 15 pd setheading 90 fd 300 … pu setxy 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 [ ] Geen efficiënte programmering pu setxy pd setheading 90 fd 300 pu setxy 0 15 pd setheading 90 fd 300 … pu setxy pd setheading 90 fd 300 end

16 16 Huis  muur  bakstenen  voegingen  horizontaal pu setxy pd setheading 90 fd 300 pu setxy 0 15 pd setheading 90 fd 300 … pu setxy 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 [ ] for [ i ] [ pu setxy 0 :i pd setheading 90 fd 300 ] end

17 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 [ ] for [i ] [pu setxy :i 0 pd setheading 0 fd 150] end

18 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 zetten pu setxy pd ;een groene rechthoek tekenen en opvullen setfc [ ] bitblock ;de deurklink tekenen deurklink end

19 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) pu setxy pd ;kleur van de deurknop bepalen (zwart) setpc [0 0 0] setfc [0 0 0] ;een cirkel tekenen en opvullen circle 7 fill end

20 20 Huis  muur  Raam Het Raam is een blauwe rechthoek. Hoe moeten we dit implementeren? to raam ;de turtle in goede positie zetten pu setxy pd ;kleur van het raam bepalen (blauw) setfc [ ] ;een rechthoek tekenen en opvullen bitblock end

21 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 pd heading 90 fd 300 rechterwand tekenen  lt ( ) fd 120 lt 50 kleine basis tekenen  fd … linkerwand tekenen  setxy Probleem: Hoelang is de kleine basis?

22 22 Huis  dak  dak De 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) )

23 23 Huis  dak  dak to dak ;de turtle in goede positie brengen pu setxy setheading 90 pd ;kleur van dak bepalen (zwart) setpc [0 0 0] setfc [0 0 0] ;basis tekenen fd 300 ;huidige positie bewaren make "pos1 pos ;rechterdakwand tekenen lt fd 120 lt 50 ;huidige positie bewaren make "pos2 pos ;tekenen van schoorsteen schoorsteen ;kleine basis fd *((item 1 :pos1) - (item 1 :pos2)) ;linkerdakwand tekenen setxy ;opvullen van dak (net in dak staan) pu setxy pd fill end

24 24 Huis  dak  schoorsteen De 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 tekenen bitblock end Maar! Schoorsteen staat verkeerd ! Bitblock start altijd RECHTS van de turtle!

25 25 Huis  dak  schoorsteen De turtle dus eerst enkele posities naar links verplaatsen. Dan de bitblock tekenen. De turtle terug naar rechts verplaatsen. to schoorsteen ;turtle linksonder schoorsteen zetten pu setheading -90 fd 30 pd ;zwarte rechthoek tekenen setfc [0 0 0] bitblock ;turtle terugzetten pu bk 30 pd end Trucje:

26 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.

27 27 Huis met vaste coördinaten en afmetingen

28 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 Vb: huis Vb: huis

29 29 Huis met variabele coördinaten en afmetingen

30 30 Meerdere variabele huizen

31 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 dak dak :x :y :breedte end

32 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 0] [ ] [0 0 0] [0 0 0] –Vb: huis [ ] [0 0 0] [ ] [ ] [ ] [ ] [4 3 2]

33 33 Huis met variabele afmetingen, coördinaten en kleuren

34 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

35 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.


Download ppt "1 Vakdidactiek 17 – 11 - 2003 Goethals Frederik"

Verwante presentaties


Ads door Google