Robot Karol/selbstdefinierte Methoden: Unterschied zwischen den Versionen

Aus ZUM-Unterrichten
main>MieP--
Markierung: 2017-Quelltext-Bearbeitung
 
(24 dazwischenliegende Versionen von 5 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===


====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===
====Hinlegen====


Roboter Karol legt einen Zigel hin
'''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 ===


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


MarkeSetzen
{{Lösung versteckt|
Anweisung Riesenschritt
  Schritt
  Schritt
  Schritt
*Anweisung
Programm
  Riesenschritt
*Programm
}}


MarkeLöschen
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).


===Andere===
{{Lösung versteckt|
Anweisung Umdrehen
LinksDrehen
LinksDrehen
*Anweisung


Ton
Anweisung SchrittZurueck
Umdrehen
Schritt
Umdrehen
*Anweisung


Beenden
Anweisung Riesenschritt
  Schritt
  Schritt
  Schritt
*Anweisung
 
Anweisung SillyWalK
Riesenschritt
SchrittZurueck
SchrittZurueck
*Anweisung
 
Programm
SillyWalk
SillyWalk
SillyWalk
SillyWalk
*Programm
}}
 
[[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.
 
{{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.
 
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 ===
[[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==
 
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.

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).

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.

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.


Screenshot

Aufgabe 2: Karol soll mit Hilfe einer selbstdefinierten Anweisung mit Parameterwert eine Treppe bauen.



Quellen

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