Informatik und Robot Karol/selbstdefinierte Methoden: Unterschied zwischen den Seiten

Aus ZUM-Unterrichten
(Unterschied zwischen Seiten)
(+Highlights)
Markierung: 2017-Quelltext-Bearbeitung
 
Markierung: 2017-Quelltext-Bearbeitung
 
Zeile 1: Zeile 1:
<div class="mint">
Die Fähigkeiten von Karol können durch neue, zusätzliche Methoden erweitert werden.
{{Portalseite/Titel
 
  |titel=Informatik
{{Fortsetzung|vorher=Erste Programme|vorherlink=Robot Karol/Erste Programme|
  |icon=hdg-laptop06
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
}}
}}


{{3Spalten|
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).
{{Portalseite/Spotlight
 
   |iconfile=Pfad-Icon.svg
{{Lösung versteckt|
   |link=Informatik/Lernpfade
Anweisung Umdrehen
   |titel=Lernpfade Informatik
LinksDrehen
}}
LinksDrehen
|
*Anweisung
{{Portalseite/Spotlight
 
  |iconfile=Computer-Icon.svg
Anweisung SchrittZurueck
  |link=Informatik/Interaktive Übungen
Umdrehen
  |titel=Interaktive Übungen Informatik
Schritt
}}
Umdrehen
|
*Anweisung
{{Portalseite/Spotlight
 
  |iconfile=Buch-Icon.svg
Anweisung Riesenschritt
  |link=:Informatik/Unterrichtsideen
   Schritt
  |titel=Unterrichtsideen Informatik
   Schritt
}}
   Schritt
*Anweisung
 
Anweisung SillyWalK
Riesenschritt
SchrittZurueck
SchrittZurueck
*Anweisung
 
Programm
SillyWalk
SillyWalk
SillyWalk
SillyWalk
*Programm
}}
}}


{{2Spalten|
[[Datei:Screenshot Roesselsprung.jpg|right|Screenshot Rösselsprung]]
== <span class="brainy hdg-star"></span> Highlights ==
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.
{{Portalseite/Highlight
 
  | iconfile = Pfad-Icon.svg
{{Lösung versteckt|
  | link = :HTML und CSS
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.
  | titel = erste Schritte in '''HTML und CSS'''
 
}}
Anweisung linksFlach
{{Portalseite/Highlight
  LinksDrehen
  | iconfile = Pfad-Icon.svg
  Schritt
  | link = :Java
  Schritt
  | titel = Einführung in '''Java'''
  RechtsDrehen
}}
  Schritt
{{Portalseite/Highlight
  MarkeSetzen
   | iconfile = Buch-Icon.svg
*Anweisung
   | link = Lazarus
   | titel = Lazarus-Buch
Anweisung linksSteil
}}
  LinksDrehen
{{Portalseite/Highlight
  Schritt
   | iconfile = Pfad-Icon.svg
  RechtsDrehen
   | link = :Lernpfad Internet
  Schritt
   | titel = Lernpfad Internet
  Schritt
}}
  MarkeSetzen
{{Portalseite/Highlight
*Anweisung
   | iconfile = Buch-Icon.svg
   | link = Inkscape
Anweisung rechtsFlach
   | titel = Inkscape
  RechtsDrehen
}}
  Schritt
|
  Schritt
{{Portalseite/BlockSuche|kategorie=Informatik}}
  LinksDrehen
{{Portalseite/BlockThemenliste|kategorie=Informatik}}
  Schritt
}}
  MarkeSetzen
</div>
*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}}
 
[[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==


=== Fachportale ===
http://www.mirko-hans.de/info/profil/nawi/algo/dateien/Algorithmierung_Robot-Karol.pdf
* {{zum|http://informatik.zum.de|ZUM-Classic Fachportal Informatik}}
* {{wpde|Portal:Informatik}}


=== Foren und Mailinglisten ===
* {{zum|http://www.zum.de/wwwinformatik.html|'''Mailingliste Informatik''' (Informatik@zum.de)}}
:"'Informatik' ist die Mailingliste der Informatiklehrer. Sie soll ihrem Gedanken- und Materialienaustausch dienen."


[[Kategorie:Portalseite]]
[[Kategorie:Robot Karol]]
[[Kategorie:Informatik|!]]

Version vom 21. August 2019, 08:00 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.

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