Robot Karol/selbstdefinierte Methoden
Die Fähigkeiten von Karol können durch neue, zusätzliche Methoden erweitert werden.
Selbstdefinierte Methoden
Diese selbstdefinierten Anweisungen müssen vorher vom Programmierer festgelegt werden. Neue Methoden beginnen stets mit dem Wort Anweisung
und dann mit dem Bezeichner der Methode. Es folgt eine Sequenz von Anweisungen (ein Anweisungsblock), die beim Aufruf der Methode abgearbeitet werden. Die Festlegung der Methode endet mit dem Schlüsselwort *Anweisung
.
Beispiel 1: Neue Methode Umdrehen
Anweisung Umdrehen LinksDrehen LinksDrehen *Anweisung
Aufgabe: Karol soll einen Schritt rückwärts gehen. (Die Lösung greift nun auf die Anweisung Umdrehen zu.)
Anweisung Umdrehen LinksDrehen LinksDrehen *Anweisung Programm Umdrehen Schritt Umdrehen *Programm
Aufgaben
1. Bringe Karol mittels einer selbstdefinierten Anweisung bei, einen Riesenschritt auf einmal zu vollführen, der so groß wie drei normale Schritte ist.
Anweisung Riesenschritt Schritt Schritt Schritt *Anweisung Programm Riesenschritt *Programm
2. Schreibe ein Karol-Programm, das ihn dazu bringt immer drei Schritte vorwärts und zwei zurück zu gehen. Nutze dabei die Anweisungen Umdrehen, SchrittZurueck, Riesenschritt und SillyWalk (= 3 vor, 2 zurück).
Anweisung Umdrehen LinksDrehen LinksDrehen
- Anweisung
Anweisung SchrittZurueck Umdrehen Schritt Umdrehen
- Anweisung
Anweisung Riesenschritt
Schritt Schritt Schritt
- Anweisung
Anweisung SillyWalK Riesenschritt SchrittZurueck SchrittZurueck
- Anweisung
Programm SillyWalk SillyWalk SillyWalk SillyWalk
- Programm
3. Bringe Karol den Rösselsprung bei, wie ihn die Springerfigur beim Schach ausführt. Erstelle ein Programm, so dass Karol mehrere Rösselsprünge ausführt und nach jedem Sprung eine Marke setzt.
Lösungsmöglichkeit 1: Man geht davon aus, dass man ausgehend von der Blickrichtung von Karol vier Methoden benötigt. Wenn Karol sich einmal um 180 Grad dreht, kann er dieselben vier Methoden nutzen.
Anweisung linksFlach LinksDrehen Schritt Schritt RechtsDrehen Schritt MarkeSetzen *Anweisung Anweisung linksSteil LinksDrehen Schritt RechtsDrehen Schritt Schritt MarkeSetzen *Anweisung Anweisung rechtsFlach RechtsDrehen Schritt Schritt LinksDrehen Schritt MarkeSetzen *Anweisung Anweisung rechtsSteil RechtsDrehen Schritt LinksDrehen Schritt Schritt MarkeSetzen *Anweisung Programm MarkeSetzen LinksFlach RechtsSteil LinksSteil *Programm
Lösungsmöglichkeit 2: Man geht davon aus, dass Karol mit zwei Methoden auskommt, die er nach einer Drehung um 90 Grad wieder nutzen kann. Hier gibt es wiederum vier Möglichkeiten: Entweder rechtsSteil und rechtsFlach bzw. linksSteil und linksFlach , rechtsSteil und linksSteil oder linksFlach und rechtsFlach.
Anweisung linksFlach LinksDrehen Schritt Schritt RechtsDrehen Schritt MarkeSetzen *Anweisung Anweisung linksSteil LinksDrehen Schritt RechtsDrehen Schritt Schritt MarkeSetzen *Anweisung Programm MarkeSetzen LinksFlach rechtsDrehen LinksFlach linksDrehen LinksSteil*Programm
Parameter
Mit Hilfe eines Parameters oder Übergabewertes können wir Programme flexibler gestalten, ohne ganze Programmteile neu schreiben zu müssen. Beispielsweise können wir das Programm
Schritt Schritt Schritt Hinlegen Hinlegen Hinlegen
kürzer schreiben als
Schritt(3) Hinlegen(3)
Wir übergeben dabei in der Klammer hinter dem Methodenaufruf die Anzahl der Wiederholungen. Neben Schritt und Hinlegen kann man auch Aufheben mit einem Parameterwert verwenden.
Weiterhin ist es mit Robot Karol (ab Version 3.0) möglich, den Methoden Hinlegen und MarkeSetzen eine Farbe (rot, gelb, blau und grün) zu übergeben.
Beispiel:
Hinlegen(blau) MarkeSetzen(grün)
Parameter können auch im Zusammenhang mit selbstdefinierten Anweisungen verwendet werden:
Anweisung Seite(X) Schritt(X) LinksDrehen *Anweisung Seite(5) Seite(3) Seite(5) Seite(3)
Mit dieser Anweisung können wir Karol ein Rechteck beliebiger Größe bauen lassen, in diesem Fall ein Rechteck der Größe 3x5. Zu beachten ist, dass als Parameter in Anweisungen grundsätzlich X zu verwenden ist.
Aufgaben
Aufgabe 1: Karol soll mit Hilfe von selbstdefinierten Anweisungen und Anweisungen mit Parameterwert eine Säulenhalle bauen.
Anweisung Säule Schritt LinksDrehen Hinlegen(6) RechtsDrehen Schritt *Anweisung
Anweisung Seite Säule Säule *Anweisung
Anweisung Kehre Schritt(2) LinksDrehen *Anweisung
Programm Seite Kehre Seite Kehre Seite Kehre Seite Kehre *Programm
Alternative Lösung:
Anweisung Seite Schritt LinksDrehen Hinlegen(3) RechtsDrehen Schritt(2) LinksDrehen Hinlegen(6) RechtsDrehen Schritt(2) LinksDrehen Hinlegen(3) RechtsDrehen Schritt LinksDrehen *Anweisung
Programm Seite Seite Seite Seite*Programm
Aufgabe 2: Karol soll mit Hilfe einer selbstdefinierten Anweisung mit Parameterwert eine Treppe bauen.
Anweisung Stufe(X) Hinlegen(X) Schritt *Anweisung
Programm LinksDrehen Stufe(1) Stufe(2) Stufe(3) Stufe(4) Stufe(3) Stufe(2) Stufe(1) Schritt *Programm
Quellen
http://www.mirko-hans.de/info/profil/nawi/algo/dateien/Algorithmierung_Robot-Karol.pdf