Rekursive Prozeduren 1
Aus ProgrammingWiki

Inhaltsverzeichnis |
Turtle-Prozeduren
Eine Turtle ist eine Zeichenroboter, den man sich wie eine Schildkröte mit Stift am Bauch vorstellen kann. Sie lebt auf genau einer Zeichenfläche (canvas).
In den folgenden Beispielen werden Sie auf verschiedenen Zeichenflächen mit verschiedenen Turtles arbeiten. Um diese anzusprechen, hat jede Fläche und jede Turtle einen eigenen Namen, der man die Turtle identifiziert.
In der Regel wird die erste Zeichenfläche canvas1 mit turtle1, canvas2 mit turtle2 und so weiter bearbeitet.
Sämtliche Kommandos, die eine Turtle versteht, finden sich in der folgenden Liste.
Das Aufrufmuster ist: ([comando] [turtle] [parameter])
Befehlsliste
Befehl | Beschreibung |
---|---|
home | setzt die Turtle auf die Mitte der Zeichenfläche |
move turtle x y | setzt die Turtle auf den Punkt (x,y) der Zeichenfläche (Koordinatenursprung: linke obere Ecke) |
forward turtle x | lässt die Turtle x Schritte nach vorn gehen |
backward turtle x | lässt die Turtle x Schritte nach hinten gehen |
pendown turtle | setzt den stift ab, sodass Turtle-Bewegungen eine Spur hinterlassen (Standard) |
penup turtle | nimmt den stift hoch, sodass Turtle-Bewegungen keine Spur hinterlassen |
penwidth turtle x | Setzt die Stärke des Stiftes auf x |
pencolor turtle r g b | setzt die Farbe des Stiftes (Rot-Gelb-Blau-Werte im Bereich 0-255) |
right turtle x | dreht die Turtle um x Grad nach rechts |
left turtle x | dreht die Turtle um x Grad nach links |
hide turtle | blendet die Turtle aus |
show turtle | blendet die Turtle ein |
clone turtle | clont die Turtle in der Aktuellen Position |
panerase turtle | Die Turtle löscht die Markierungen, denen sie begegnet (wie ein Radiergummi). |
clear canvas | löscht die Zeichenfläche |
Beispiel
Setzen Sie sich mit dem folgenden Beispiel auseinander und modifizieren Sie die Prozedur quad.
Rechteck
Schreiben Sie eine Prozedur mit deren Hilfe turtle2 ein Rechteck mit den Seitenlängen a und b auf canvas2 zeichnet.
Nikolaus
Schreiben Sie eine Prozedur, deren Ausführung turtle3 auf canvas3 das Haus vom Nikolaus zeichnen lässt. Diese Prozedur soll als Argumente die entsprechende Turtle sowie die Länge der Grundseite des Hauses verwenden.
Turtle-Kreis
Schreiben Sie eine rekursive Prozedur kreis, die die Turtle turtle4 einen Kreis auf canvas4 zeichnen lässt. Überlegen Sie, welche Eingaben die Prozedur kreis nimmt: Ein Turtle-Kreis ist ein 360-Eck. Jeder der 360 Turtle-Schritte beträgt 1 Längeneinheit (LE). Nach jedem Schritt dreht sich die Turtle um 1 Grad nach rechts (oder links). Der Umfang dieses Kreises beträgt offenbar 2*360=720 LE.
Turtle-Baum
Erproben Sie die folgende rekursive Prozedur tree und machen Sie sich klar, wie die rekursive Struktur des Baumes in der Prozedur direkt abgebildet wird.
Random Walk
Erarbeiten Sie eine rekursive Prozedur randomwalk, die eine Turtle und eine Schrittanzahl erwartet und die Turtle bei jedem Schritt zufällig 0 bis 360 Grad nach rechts dreht und 0 bis 10 Pixel vorwärts bewegt. Nach n Turtleschritten soll sich die Turtle genau auf dem eingeschlagenen Weg zum Ausgangspunkt zurück bewegen und dabei die hinterlassene Spur löschen. Dabei ist es nicht gestattet, den Weg explizit (z.B. in einer Liste) zu speichern.
Erstellen Sie vorher einen Zufallszahlengenerator, indem Sie für <init> eine beliebige wenigstens 10-stellige natürliche Zahl verwenden.
Danach bekommt man mit (random <zahl>) eine neue Zufallszahl zwischen 0 und zahl.