14. Recursie

In de les "De schildpad leert" hebben we gezien hoe we de schilpad nieuwe opdrachten kunnen leren met de to opdracht. We kunnen de schildpad ook een nieuwe opdracht leren met to gevolgd door een parameter. Bijvoorbeeld:
to vooruit :PARAM_NAAM fd :PARAM_NAAM. De schildpad verwacht nu een parameter als hij de nieuw opdracht 'vooruit' krijgt. Bijvoorbeeld: vooruit 40.
Leer de schildpad wat 'vooruit' is met een parameter met de naam 'afstand'.
Zoals we in de vorige stap gezien hebben kunnen we de schildpad opdrachten leren waarvoor hij een parameter verwacht. Zoals we in de vorige les hebben gezien kunnen we de schildpad een vierkant leren tekenen met de opdracht:
to vierkant repeat 4 [ fd AFSTAND rt 90] end
Leer de schilpad de 'vierkant' opdracht. Zorg ervoor dat de opdracht een 'GROTE' parameter verwacht. De 'GROTE' parameter bepaalt de omvang van het vierkant.
We hebben al een nieuwe opdracht met de naam 'vierkant' geleerd die een parameter verwacht. Laten we controleren of het werkt. Geef de opdracht vierkant 60 of de opdracht vierkant 80 enzovoort.
Schrijf de opdracht vierkant 100
Als een opdracht zichzelf aanroep dan noemen we die opdracht recursief. Als we recursie gebruiken moeten we een eind conditie inbouwen. We willen tenslotte geen oneindige lus. Ook willen we bij de recursive aanroep een nieuwe parameter. Moeilijk? Maak je geen zorgen, we gaan er stap voor stap doorheen. Laten we de schildpad leren een aantal vierkanten te tekenen met behulp van recursie.
Leer de schildpad het volgende:
to vierkant :grote if :grote > 90 [ stop ] repeat 4 [ fd :grote rt 90] vierkant :grote + 20 end
Laten we eens kijken wat er gebeurt als we de opdracht vierkant 40 gebruiken. Eerst geven we de opdracht vierkant 40. Dit betekent dat de parameter :grote binnen de vierkant opdracht de waarde 40 krijgt. Dan gebruiken we de if test. Het woord if is engels voor als. Hiermee vragen we de schldpad te testen of de :grote groter is dan 90 (:grote > 90)? Stop het programma als dat het geval is. Als dit niet het geval is gaat de schildpad verder met de volgende instructies. Teken een vierkant met de :grote parameter en doe daarna de opdracht 'vierkant' met als parameter :size + 20. Nu is de parameter 60 en dus nog steeds kleiner dan 90. De schildpad tekent dus een vierkant met een ribbe van 60 en doet opnieuw de opdracht 'vierkant' met parameter:grote + 20. Nu is de parameter 80 wat nog steeds minder is dan 90. De schildpad tekent dus een vierkant met ribbe 80
Schrijf de opdracht vierkant 40
Laten we de schildpad leren om een spiraal te tekenen. De spiraal opdracht heeft 1 parameter met de naam :grote. De stopconditie is als :grote > 30. Met iedere aanroep gaan we naar voren met als afstand de waarde van de parameter, fd :grote gevolgd door een draai van 15 graden naar rechts, rt 15. De laatste stap is de aanroep van 'spiraal' met :grote * 1.02.
Leer de schildpad een spiraal te tekenen.
TurtleAcademy learn programming for freeYour browser is not supporting canvas We recomand you to use Chrome or Firefox browsers