Robot Karol/selbstdefinierte Methoden: Unterschied zwischen den Versionen

Aus ZUM-Unterrichten
main>MieP--
Keine Bearbeitungszusammenfassung
Markierung: 2017-Quelltext-Bearbeitung
 
(13 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
==Definition Sequenz==
Die Fähigkeiten von Karol können durch neue, zusätzliche Methoden erweitert werden.  
Eine Sequenz ist eine Reihenfolge mehrerer Anweisungen, die durch eine bestimmte zeitliche Aufreihung angegeben werden.


==Sequenzen bei Roboter Karol==
{{Fortsetzung|vorher=Erste Programme|vorherlink=Robot Karol/Erste Programme|
weiter=Beispiele für Schleifen|weiterlink=Robot Karol/Beispiele für Schleifen|
übersicht=Robot Karol}}


Damit Karol sich bewegt oder andere Tätigkeiten ausführt, muss man ihm
== Selbstdefinierte Methoden ==
entsprechende Anweisungen in Form von Befehlen geben. Der Roboter versucht diese dann Auszuführen.
Diese '''selbstdefinierten Anweisungen''' müssen vorher vom Programmierer festgelegt werden. Neue Methoden beginnen stets mit dem Wort <code>Anweisung</code> 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 <code>*Anweisung</code>.


==Bewegung==
[[Datei:Sequenz1k.jpg]]
====Schritt====
Roboter Karol macht einen Schritt nach vorne.


====LinksDrehen====
Roboter Karol dreht sich nach links.


====RechtsDehen====
'''Beispiel 1:''' Neue Methode '''Umdrehen'''
Roboter Karol dreht sich nach rechts.
Anweisung Umdrehen
  LinksDrehen
  LinksDrehen
*Anweisung


==Objekte==


=====Ziegel setzen/Ziegel aufheben=====
'''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


<Hinlegen>
=== Aufgaben ===


Wirkung: Karol legt einen Ziegel hin
1. Bringe Karol mittels einer selbstdefinierten Anweisung bei, einen Riesenschritt auf einmal zu vollführen, der so groß wie drei normale Schritte ist.


<Aufheben>
{{Lösung versteckt|
Anweisung Riesenschritt
  Schritt
  Schritt
  Schritt
*Anweisung
Programm
  Riesenschritt
*Programm
}}


Wirkung: Karol hept einen Ziegel auf
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).


=====Marke setzen/löschen=====
{{Lösung versteckt|
Anweisung Umdrehen
LinksDrehen
LinksDrehen
*Anweisung


<Marke setzen/Marke löschen>
Anweisung SchrittZurueck
Umdrehen
Schritt
Umdrehen
*Anweisung


Wirkung: Karol setzt eine Marke
Anweisung Riesenschritt
  Schritt
  Schritt
  Schritt
*Anweisung


<MarkeLöschen>
Anweisung SillyWalK
Riesenschritt
SchrittZurueck
SchrittZurueck
*Anweisung


Wirkung: Karol löscht eine Marke
Programm
SillyWalk
SillyWalk
SillyWalk
SillyWalk
*Programm
}}


==Andere Anweisungen==
[[Datei:Screenshot Roesselsprung.jpg|right|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.


<Ton>
{{Lösung versteckt|
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.


Wirkung: Karol gibt einen Ton von sich
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


<Beenden>


Wirkung:
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 ===
[[Datei:Karol saeulenhalle.jpg|right|Screenshot]]'''Aufgabe 1:''' Karol soll mit Hilfe von selbstdefinierten Anweisungen und Anweisungen mit Parameterwert eine Säulenhalle bauen.
 
{{Lösung versteckt|
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}}
 
{{clear}}
[[Datei:Karol treppe.jpg|right|Screenshot]]
'''Aufgabe 2:''' Karol soll mit Hilfe einer selbstdefinierten Anweisung mit Parameterwert eine Treppe bauen.
 
{{Lösung versteckt|
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
}}
 
{{clear}}
 
{{Fortsetzung|vorher=Erste Programme|vorherlink=Robot Karol/Erste Programme|
weiter=Beispiele für Schleifen|weiterlink=Robot Karol/Beispiele für Schleifen|
übersicht=Robot Karol}}
 
==Quellen==
==Quellen==


http://www.mirko-hans.de/info/profil/nawi/algo/dateien/Algorithmierung_Robot-Karol.pdf
http://www.mirko-hans.de/info/profil/nawi/algo/dateien/Algorithmierung_Robot-Karol.pdf
[[Kategorie:Robot Karol]]

Aktuelle Version vom 21. August 2019, 08:04 Uhr

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