Jahrgangsstufe Ef - Informatik - Donnerstag, der 25. Februar 2021


Rekursion

Mein Name:
Jahrgang/Klasse:
Meine E-Mail-Adresse:


Vorabinformationen:

Im linken Programmierfenster sind alle Methoden der Kara-Klasse als grün geschriebener Kommentar bei jedem Start von Javakara angegeben. Ansonsten programmiert man mit ganz normalem Java. Am Anfang stehen die

Methoden ohne Rückgabewerte (void):

 public void move()  Kara geht einen Schritt nach vorne. Dort darf kein Baum stehen.
 public void turnRight()  Kara dreht sich 90° nach rechts.
 public void turnLeft()  Kara dreht sich 90° nach links.
 public void putLeaf()  Kara legt ein Kleeblatt an seiner Position aus seinem unendlichen Vorrat ab.
 public void removeLeaf()  Kara nimmt an seiner Position ein unter ihm liegendes Kleeblatt auf.

Dann folgen die

Methoden mit Rückgabewerten, d.h. Funktionen:

 public boolean treeFront()  liefert den booleschen Wert true oder false, je nachdem, ob vor Kara ein Baum steht oder nicht.
 public boolean treeLeft()  ..., je nachdem, ob links von Kara ein Baum steht oder nicht.
 public boolean treeRight()  ..., je nachdem, ob rechts von Kara ein Baum steht oder nicht.
 public boolean mushroomFront()  ..., je nachdem, ob vor Kara ein Pilz steht oder nicht.
 public boolean onLeaf()  ..., je nachdem, ob Kara auf einem Kleeblatt steht oder nicht.

Programmstruktur: Die standardmäßig angegebene Methode myprogram() ist die Methode, von der alles andere gestartet wird. Sie entspricht etwa der Methode action(), die wir vorher in den BlueJ-Programmen benutzten, und muss ihren Namen behalten. Daneben kann man natürlich beliebig viele weitere Methoden formulieren. Der angegebene Klassenname FindeBaum für das Beispielprogramm kann natürlich geändert werden, aber man muss darauf achten, dass die gespeicherte Datei exakt den gleichen Namen trägt. Das geschieht bei BlueJ automatisch.

Das erste Beispiel: Solange vorne kein Baum steht bewegt sich Kara um einen Schritt nach vorne.

  public void myProgram()
  {
       while (!kara.treeFront())
       {
            kara.move();
       }
  }

Auftrag 1:

Nimm das Beispielprogramm FindeBaum als Vorlage, nenne die Klasse jetzt FindeBaum2, speichere es ab als FindeBaum2.java und ergänze das Programm so, dass Kara den Weg zurück läuft und wieder seine Startposition einnimmt. Tipp: Man darf in Kara-Programmen auch Variablen benutzen! Teste das Programm aus mit Javakara und kopiere den kompletten Programmtext (ohne die grünen Kommentare) in dieses Formularfeld.

Auftrag 2:


Nimm das Beispielprogramm FindeBaum oder FindeBaum2 als Vorlage, nenne die Klasse jetzt FindeBlatt, speichere es ab als FindeBlatt.java und ergänze das Programm so, dass Kara bis zum Blatt läuft und stehenbleibt. Teste das Programm aus mit Javakara und kopiere den kompletten Programmtext (ohne die grünen Kommentare) in dieses Formularfeld.

Auftrag 3:

Nimm das Programm FindeBlatt als Vorlage, nenne die Klasse jetzt HoleBlatt, speichere es ab als HoleBlatt.java und ergänze das Programm so, dass Kara bis zum Blatt läuft, es aufnimmt, zurück zu seiner Startposition geht und dort das Blatt ablegt. Teste das Programm aus mit Javakara und kopiere den kompletten Programmtext (ohne die grünen Kommentare) in dieses Formularfeld.

Das war die Lösung der Problemstellungen nach "herkömmlichen" Programmiermethoden. In der nächsten Stunde werden wir behandeln, dass man das auch GANZ ANDERS machen kann.

Auf meinem PC hat das alles (bitte auswählen!)

prima funktioniert.
nicht alles funktioniert (für mehr siehe unten).

Hier sind weitere Informationen zu meinen Problemen: