1 / 26

Recursie

Recursie. Steve Dewanckele http://studwww.ugent.be/~sdwancke/ailo/. Recursie (1). Wat doet de volgende procedure? to vierkant repeat 4 [fd 100 rt 90] vierkant end Opl.: Tekent oneindig aantal keer dezelfde vierkant doordat de procedure vierkant telkens naar zichzelf verwijst.

kita
Download Presentation

Recursie

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Recursie Steve Dewanckele http://studwww.ugent.be/~sdwancke/ailo/

  2. Recursie (1) • Wat doet de volgende procedure? to vierkant repeat 4 [fd 100 rt 90] vierkant end • Opl.: Tekent oneindig aantal keer dezelfde vierkant doordat de procedure vierkant telkens naar zichzelf verwijst.

  3. Recursie (2) • Recursie is een proces dat verwijst naar zichzelf. • Logo heeft procedures die zichzelf aanroepen terwijl ze zichzelf aanroepen • Vgl: procedure vierkant roept zichzelf aan terwijl procedure vierkant zichzelf (als procedure vierkant) aanroept

  4. Recursie (3) • Procedure vierkant wordt oneindig aantal keer aangeroepen. Hoe kan dit proces dan gestopt worden? • De HALT-toets drukken • De computer te resetten • De computer afzetten • Stoppen met conditie

  5. Recursie (4) • Stoppen met conditie to vierkant :STAP if :STAP > 150 [stop] repeat 4 [fd :STAP rt 90] vierkant :STAP + 5 end • Stoppen met een toetsdruk (KEYP) if keyp [stop]

  6. Recursie (5) • Komt de procedureoproep telkens op het einde van de procedure? • Neen. Kan zowel: • Begin • Midden • Einde

  7. Recursie (6) • Verschil tussen: to cirkel :STRAAL if :STRAAL = 0 [stop] circle :STRAAL cirkel :STRAAL - 1 end to cirkel :STRAAL if :STRAAL = 0 [stop] cirkel :STRAAL - 1 circle :STRAAL end

  8. Oefening op recursie Vlieger

  9. Opgave

  10. Opgave (2)

  11. Opgave (3) • KORTEZIJDE: sqrt(2) * :X • LANGEZIJDE: sqrt((:X * :X) * (STAART * STAART)) • HOEK: • ARCTAN (:X / :STAART) • ARCCOS (:STAART / :LANGEZIJDE) • ARCSIN (:X / :LANGEZIJDE) http://studwww.ugent.be/~sdwancke/ailo/

  12. Opgave (4) • Oplossing to boven :X local "KORTEZIJDE make "KORTEZIJDE (sqrt 2) * :X fd :KORTEZIJDE rt 90 fd :KORTEZIJDE end

  13. Opgave (5) • Oplossing to onder :X :STAART local "LANGEZIJDE local "HOEK make "LANGEZIJDE sqrt ((:X * :X) + (:STAART * :STAART)) make "HOEK ARCTAN (:X / :STAART) rt (45 + :HOEK) fd :LANGEZIJDE rt (180 - 2 * :HOEK) fd :LANGEZIJDE rt :HOEK end

  14. Opgave (6) • Oplossing to vlieger :X :STAART :AANTAL local "STAP make " STAP :X / :AANTAL cs rt 45 omtrek :X :STAART lt 45 kader :X :STAART end if (modulo :X :AANTAL) > 0 [pr [Aantal moet een deler zijn van de vliegerbreedte] stop]

  15. Opgave (7) • Oplossing to omtrek :X :STAART boven :X onder :X :STAART pu rt 90 setpc random 500 fd :STAP lt 45 pd if :X = :STAP [stop] omtrek :X - :STAP :STAART end

  16. Oefening Maansverduistering

  17. Maansverduistering (1) • Wat is dat? • De aarde komt voor de zon te staan waarbij de maan geen (of nauwelijks) zonlicht krijgt

  18. Maansverduistering (2)

  19. Opgave (1) • Tekenen van de maansverduistering waarbij de straal van de maan wordt opgegeven • Extra: tekenen van omgeving met sterren

  20. Opgave (2) • Hoe te werk gaan: • Teken de maan in wit ([255 255 255]) • Teken de aarde (of schaduw) waarbij kleur hetzelfde is als de achtergrondkleur ([0 0 0]) • Startpunt (xcor) zon is 2*STRAAL naar links • Zon komt over aarde totdat xcor zon = 0 • Procedures • to maan :STRAAL • to schaduw :STRAAL • to maansverduistering :STRAAL

  21. Opgave (3) • Oplossing: to maan :STRAAL pd circle :STRAAL if :STRAAL > 0 [maan :STRAAL - 1] end to schaduw :STRAAL circle :STRAAL setx xcor + 1 if xcor = 0 [stop] schaduw :STRAAL end

  22. Opgave (4) to maansverduistering :STRAAL if :STRAAL < 6 [pr [Straal is te klein] stop] if :STRAAL > 100 [pr [Straal is te groot] stop] cs cleartext ht zetomgeving :STRAAL pr [Bezig met maan aan het tekenen...] maan :STRAAL pu setpc [0 0 0] setx -(2 * :STRAAL) pd cleartext pr [Hier komt de aarde...] schaduw :STRAAL home setpc [255 127 127] maan :STRAAL pr [Het is een maansverduistering !!] end

  23. Lijst van nieuwe commando’s • Random getal • Genereren van een willekeurg getal tussen 0 en getal-1 • Cleartext • Schoonmaken van het tekstveld (onderaan bij de commandolijn) • Wiskundige berekeningen • ARCCOS hoek • ARCSIN hoek • ARCTAN hoek

  24. Extra oef (1) • Gebruik recursie voor het maken van:

  25. Extra oef (2) • Oplossing to blokken :HOOGTE :BREEDTE rechthoek :HOOGTE :BREEDTE if (:HOOGTE > 10) [blokken :HOOGTE - 10 :BREEDTE + 10] end to rechthoek :HOOGTE :BREEDTE repeat 2 [fd :HOOGTE rt 90 fd :BREEDTE rt 90] end

  26. Recursie + oefeningen Nog vragen?

More Related