Robot Karol/selbstdefinierte Methoden: Unterschied zwischen den Versionen

Aus ZUM-Unterrichten
main>MieP--
Markierung: 2017-Quelltext-Bearbeitung
 
(26 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===
 
 
 
'''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.
 
{{Lösung versteckt|
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).
 
{{Lösung versteckt|
Anweisung Umdrehen
LinksDrehen
LinksDrehen
*Anweisung
 
Anweisung SchrittZurueck
Umdrehen
Schritt
Schritt
Umdrehen
*Anweisung
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


Drehen Links
Programm
  Seite
  Seite
  Seite
  Seite
*Programm}}


Drehen rechts
{{clear}}
[[Datei:Karol treppe.jpg|right|Screenshot]]
'''Aufgabe 2:''' Karol soll mit Hilfe einer selbstdefinierten Anweisung mit Parameterwert eine Treppe bauen.


===Objekte===
{{Lösung versteckt|
Hinlegen
Anweisung Stufe(X)
  Hinlegen(X)
  Schritt
*Anweisung


Aufnehmen
Programm
  LinksDrehen
  Stufe(1)
  Stufe(2)
  Stufe(3)
  Stufe(4)
  Stufe(3)
  Stufe(2)
  Stufe(1)
  Schritt
*Programm
}}


Marke setzen
{{clear}}


Marke Aufheben
{{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==


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


Ton


Beenden
[[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