De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

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

Verwante presentaties


Presentatie over: "Steve Dewanckele http://studwww.ugent.be/~sdwancke/ailo/ Recursie Steve Dewanckele http://studwww.ugent.be/~sdwancke/ailo/"— Transcript van de presentatie:

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

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

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)

12 Opgave (4) Oplossing to boven :X local "KORTEZIJDE
make "KORTEZIJDE (sqrt 2) * :X fd :KORTEZIJDE rt 90 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 ( * :HOEK) 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
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: Procedures
Teken de maan in wit ([ ]) 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

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 [ ] 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]

26 Recursie + oefeningen Nog vragen?


Download ppt "Steve Dewanckele http://studwww.ugent.be/~sdwancke/ailo/ Recursie Steve Dewanckele http://studwww.ugent.be/~sdwancke/ailo/"

Verwante presentaties


Ads door Google