Übersicht

  => Das Problem . . .
  => Die Lösung!
  => Beispiele
  => Aufgaben


Das Problem . . .

sieht so aus:


void achtVor()
{
 vor();
 vor();
 vor();
 vor();
 vor();
 vor();
 vor();
 vor();
}

Das sieht nicht nur umständlich aus, es ist umständlich! Ähnlich natürlich bei vierVor() oder vier mal hintereinander stufeRauf() und so weiter. Es muss einfacher gehen!

<<<

Die Lösung!

Wir brauchen einen Befehl, mit dem man Hamster-Befehle wiederholen kann. Dieser neue Befehl ist kein Hamster-Befehl, sondern ein Java-Befehl (denke an void). Unser Hamster-Programm sollte in etwa so aussehen:

Solange vor dem Hamster keine Mauer
   gehe vor

oder als Hamster-Programm:


while ( vornFrei() )
{
 vor();
}

while steht für solange, aber woher kommt vornFrei()? In den Hamsterbefehlen lesen wir:

vornFrei() - false, wenn Hamster vor Mauer steht. true sonst.

false bedeutet falsch, true wahr, und der Hamster-Befehl vornFrei() liefert einen Wert zurück: eben wahr, falls in dem Feld davor keine Mauer steht! Das solltest du irgendwie aus dem Mathe-Unterricht kennen, da gibt es auch Befehle (Funktionen sagen die Mathematiker), die einen Wert zurück liefern, beispielsweise die Quadrat-Funktion, die zu jeder Zahl ihr Quadrat als Wert zurückgibt. Der Hamster-Befehl vornFrei() liefert dagegen einen sogenannten Booleschen Wert zurück (nach G. A. Boole => Internet!). Es gibt genau zwei Boolesche Werte: true oder false. Und genauso wie man in Mathe mit Zahlen rechnen kann, so kann man auch mit Booleschen Werte rechnen, ist doch logisch (so nennt man das dann). Schauen wir uns ein Hamster-Programm an, hier das Feld feld1.ter (aus dem Verzeichnis beispielprogramm2 in Kapitel 8):


void laufeVor()
{
  while ( vornFrei() )
  {
    vor();
  }
}

void main()
{
  laufeVor();
  linksUm();
  laufeVor();
  linksUm();
  laufeVor();
  linksUm();
  laufeVor();
  linksUm();
}

Beachte: Du findest das Programm unter dem Namen while_bsp.ham in wspiegel => info11hamster => Programme => beispiele u. s. w.

Das Hauptprogramm (main !) ist noch immer nicht ganz das, was wir wollen, aber dazu müsste der Hamster zählen können, und das müssen wir ihm erst beibringen (=> Grundschule). Dafür kann unser Hamster-Programm etwas anderes: teste es in unterschiedlichen Hamster-Feldern (in Kapitel 8 jeweils feld1.ter aus beispielprogramm1, beispielprogramm2 und beispielprogramm3 sowie das Quadrat-Territorium vom letzten Mal, Aufgabe 6!), was stellst du fest?

___________________________________________________________________

___________________________________________________________________

___________________________________________________________________

Schauen wir uns noch ein Beispiel an (Das Territorium feld2.ter zu dem beispielprogramm1 aus Kapitel 10):


1: void nimmAlleKoerner()
2: {
3:    while ( kornDa() )
4:    {
5:         nimm();
6:    }
7: }

Beachte: Du findest diesen Hamster-Befehl einschließlich Hamster-Programm unter dem Namen "abgrasen.ham" in wspiegel => info11hamster => Programme => beispiele u. s. w.

=> Erklärung:

<<<

Beispiele

findest du im Lehrer-Ordner oben rechts unter:
wspiegel => info11hamster => Programme => beispiele

<<<

Aufgaben

  1. Bitte zuerst die beiden Hamster-Programme while_bsp.ham und abgrasen.ham ausprobieren.

  2. Zum Einstieg: Das Hamster-Program abgrasen.ham verdient seinen Namen noch nicht. Das Hamster-Feld ist danach gar nicht abgegrast! Beende diesen unhaltbaren Zustand! (siehe das Territorium feld2.ter zu dem beispielprogramm1 aus Kapitel 10)

  3. Nimm dein quadratisches Territorium vom letzten Mal (quadrat.ter ):
    Gib dem Hamster am Anfang genügend Körner (Wie?), denn er soll nun das ganze Feld mit Körnern auslegen. Wie kannst du hierbei die Hamster-Befehle oben benutzen? Tipp: Hamsterbefehle!
    (abspeichern unter dem Namen auslegen.ham)

  4. Was ist der Unterschied zwischen einer Datei mit der Endung *.ter und einer Datei mit der Endung *.ham? (Antwort)

  5. Der Hamster hat Schiffbruch erlitten und ist auf einer einsamen Insel gestrandet. Zum Glück hat er 100 Körner dabei und legt damit die Buchstaben SOS, damit ihn jemand finden & retten kann. Hilf ihm dabei!

    PS: Der Hamster steht am Anfang und am Ende links unten in der Ecke! Und: Dein Hamster-Programm unter main muss möglichst kurz sein, wie kannst du das erreichen? (abspeichern unter dem Namen sos.ham, das Territorium ist 9 Zeilen mal 19 Spalten groß!)

  6. Noch Zeit? Der Hamster hat Glück gehabt! Er wird gerettet, aber: er möchte seine Körner nicht auf der Insel lassen! Hilf ihm beim Einsammeln (abspeichern unter dem Namen rettung.ham).

<<<
   W. Spiegel, E-Mail: walter.spiegel@web.de