Tekenen van een draaiende molen in LOGO
Algoritme Opeenvolging van stappen die vanuit een gegeven beginsituatie leiden tot de oplossing Probleem opsplitsen in deelproblemen Die deelproblemen opnieuw opsplitsen in deelproblemen Stapsgewijze verfijning of top-down methode
Probleemstelling Ontwerp een molen met draaiende wieken Molen bestaat uit een rechthoek, driehoek en 4 wieken 1 wiek : lijnstuk + een kleine rechthoek
Top-down methode
Vierhoek met variabele lengte en breedte to RECHTHOEK :LENGTE :BREEDTE REPEAT 2[FD :LENGTE RT 90 FD :BREEDTE RT 90] end
Gelijkzijdige driehoek met variabele zijde to DRIEHOEK :ZIJDE REPEAT 3[FD :ZIJDE RT 120] end
4 wieken 1 wiek : to WIEK :WIEKLENGTE :WIEKBREEDTE :ARMLENGTE FD :ARMLENGTE RECHTHOEK :WIEKLENGTE :WIEKBREEDTE BK :ARMLENGTE end 4 wieken : to 4_WIEKEN :WIEKLENGTE :WIEKBREEDTE :ARMLENGTE REPEAT 4[WIEK :WIEKLENGTE :WIEKBREEDTE :ARMLENGTE RT 90] end
Top-down methode
Molen rechthoek 150 80 Schildpad op goede positie plaatsen voor tekenen van dak (driehoek) PU FD :150 PD driehoek 80 Schildpad op goede postie plaatsen voor tekenen van de 4 wieken LT 30 RT90 PU FD 40 LT 90 PD 4_wieken 40 20 75
Molen met variabele lengte to MOLEN :LENGTE :BREEDTE :WIEKLENGTE WIEKBREEDTE RECHTHOEK :LENGTE :BREEDTE PU FD :LENGTE RT 30 PD DRIEHOEK :BREEDTE LT 30 RT 90 FD :BREEDTE/2 LT 90 4_WIEKEN :WIEKLENGTE :WIEKBREEDTE :LENGTE/2 HOME end
Molen met draaiende wieken wieken laten draaien door molen opnieuw te tekenen met wieken op andere positie Clearscreen (of ook CS) verwijdert alles molen zonder wieken + 4 wieken
Molen zonder wieken to MOLEN_ZONDER_WIEKEN :LENGTE :BREEDTE RECHTHOEK :LENGTE :BREEDTE PU FD :LENGTE RT 30 PD DRIEHOEK :BREEDTE LT 30 RT 90 FD :BREEDTE/2 LT 90 end
Molen met draaiende wieken Hoek vermeerderen met 15 graden en opnieuw tekenen to DRAAIENDE_MOLEN :LENGTE :BREEDTE :WIEKLENGTE :WIEKBREEDTE MAKE ¨HOEK 0 REPEAT 50[CS MOLEN_ZONDER_WIEKEN :LENGTE :BREEDTE RT :HOEK4_WIEKEN :LENGTE_WIEK :BREEDTE_WIEK :LENGTE/2 MAKE ¨HOEK :HOEK+15] end Dit gaat heel snel. Vertragen door commando wait. REPEAT 300[CS MOLEN_ZONDER_WIEKEN :LENGTE :BREEDTE RT :HOEK 4_WIEKEN :LENGTE_WIEK :BREEDTE_WIEK :LENGTE/2 WAIT 1 MAKE ¨HOEK :HOEK+1] 1 schoonheidsfoutje : hideturtle (ht)
Extra : zon toevoegen Maken van een cirkel Verplaatsen van cirkel (procedure verplaats_cirkel) Verplaats_cirkel invoegen in draaiende_molen Tips : 2 eigenschappen van een cirkel: De hoekpunten van een regelmatige n-hoek liggen op dezelfde cirkel (de omgeschreven cirkel). De omtrek van de cirkel is
Extra oef: zon toevoegen 1 ste methode: edit ¨VEELHOEK :AANTAL to VEELHOEK :AANTAL :LENGTE REPEAT :AANTAL[FD :LENGTE RT 360/:AANTAL] end VEELHOEK 20 10
Extra oef: zon toevoegen 2 de methode: edit ¨CIRKEL :STRAAL to CIRKEL :STRAAL REPEAT 40[FD 3.1415*:STRAAL/20 RT 9] end STRAAL 10
Molen met zon en draaiende wieken Zon verplaatsen: edit¨VERPLAATS_CIRKEL to VERPLAATS_CIRKEL :LENGTE :BREEDTE PU HOME RT 90 FD 2*:BREEDTE LT 90 FD :BREEDTE+:LENGTE PD CIRKEL:BREEDTE/4 end
Molen met zon en draaiende wieken Zon verplaatsen invoegen in draaiende molen to DRAAIENDE_MOLEN :LENGTE :BREEDTE :WIEKLENGTE :WIEKBREEDTE MAKE ¨HOEK 0 REPEAT 300[CS MOLEN_ZONDER_WIEKEN :LENGTE :BREEDTE RT :HOEK 4_WIEKEN :LENGTE_WIEK :BREEDTE_WIEK :LENGTE/2 VERPLAATS_CIRKEL :LENGTE :BREEDTE WAIT 1 MAKE ¨HOEK HOEK+1] end
Samenvatting Groot probleem opsplitsen in deelproblemen. Top down of stapsgewijze vereenvoudiging maakt probleem veel eenvoudiger!