Robot Karol/selbstdefinierte Methoden: Unterschied zwischen den Versionen
K (Matthias Scharwies verschob die Seite Robot Karol/Beispiele für Sequenzen nach Robot Karol/selbstdefinierte Methoden, ohne dabei eine Weiterleitung anzulegen) |
(akt) Markierung: 2017-Quelltext-Bearbeitung |
||
Zeile 1: | Zeile 1: | ||
Die Fähigkeiten von Karol können durch neue, zusätzliche Methoden erweitert werden. | |||
== | {{Fortsetzung|vorher=Erste Programme|vorherlink=Robot Karol/Erste Programme| | ||
weiter=Beispiele für Schleifen|weiterlink=Robot Karol/Beispiele für Schleifen| | |||
übersicht=Robot Karol}} | |||
== Selbstdefinierte Methoden == | |||
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>. | |||
'''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 | |||
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 versteck| | |||
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}} | |||
[[Datei:Karol treppe.jpg|right|Screenshot]] | |||
'''Aufgabe 2:''' Karol soll mit Hilfe einer selbstdefinierten Anweisung mit Parameterwert eine Treppe bauen. | |||
{{Lösung versteckt| | |||
nweisung Stufe(X) | |||
Hinlegen(X) | |||
Schritt | |||
*Anweisung | |||
Programm | |||
LinksDrehen | |||
Stufe(1) | |||
Stufe(2) | |||
Stufe(3) | |||
Stufe(4) | |||
Stufe(3) | |||
Stufe(2) | |||
Stufe(1) | |||
Schritt | |||
*Programm}} | |||
{{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== |
Version vom 21. August 2019, 04:22 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
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.
Aufgabe 2: Karol soll mit Hilfe einer selbstdefinierten Anweisung mit Parameterwert eine Treppe bauen.
nweisung 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