Robot Karol/selbstdefinierte Methoden

Aus ZUM-Unterrichten

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
Screenshot Rösselsprung

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

Screenshot

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


Screenshot

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