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.
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.
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
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
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]
Recursie (5)
Komt de procedureoproep telkens op het einde van de procedure?
Neen. Kan zowel:
Begin
Midden
Einde
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
Oplossing
to boven :X
local "KORTEZIJDE
make "KORTEZIJDE (sqrt 2) * :X
fd :KORTEZIJDE
rt 90
fd :KORTEZIJDE
end
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
Opgave (6)
if (modulo :X :AANTAL) > 0
[pr [Aantal moet een deler zijn van de vliegerbreedte] stop] Oplossing
to vlieger :X :STAART :AANTAL
local "STAP
make " STAP :X / :AANTAL
cs
rt 45
omtrek :X :STAART
lt 45
kader :X :STAART
end
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
Oefening Maansverduistering
Maansverduistering (1)
Wat is dat?
De aarde komt voor de zon te staan waarbij de maan geen (of nauwelijks) zonlicht krijgt
Maansverduistering (2)
Opgave (1)
Tekenen van de maansverduistering waarbij de straal van de maan wordt opgegeven
Extra: tekenen van omgeving met sterren
Opgave (2)
Procedures
to maan :STRAAL
to schaduw :STRAAL
to maansverduistering :STRAAL
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
Comments