next up previous contents
Nächste Seite: 7.5 Beispiele Aufwärts: 7 Scheme Vorherige Seite: 7.3 Scheme-Hamster-Programme   Inhalt

Unterabschnitte


7.4 Grundlagen und Befehle

7.4.1 Territoriumsliste

Die grundlegende Datenstruktur des Scheme-Hamster-Modells ist die Territoriumsliste. Sie spiegelt das aktuelle Territorium des Simulation-Fensters wieder. Sie ist folgendermaßen aufgebaut (in EBNF):

<territorium>    ::= "(" <feld-liste> <hamster-liste> ")"
<feld-liste>     ::= "(" { <reihe-liste> } ")"
<reihe-liste>    ::= "(" { <kachel> } ")"
<kachel>         ::=   "(" "Kachel" <koerner-auf-kachel> ")" 
                     | "(" "Mauer" ")"
<hamster-liste>  ::= "(" "Hamster" 
                         <reihe> 
                         <spalte> 
                         <koerner-im-maul> 
                         <blickrichtung> 
                     ")"
<blickrichtung>  ::=   "Nord"
                     | "Ost"
                     | "Sued"
                     | "West"

<koerner-auf-kachel> ist positiver int-Wert
<reihe> ist positiver int-Wert oder 0
<spalte> ist positiver int-Wert oder 0
<koerner-im-maul> ist positiver int-Wert

Der Ursprung des Territoriums befindet sich in der linken oberen Ecke. Die Nummerierung von Spalten und Zeilen beginnt bei 0.

Ein Beispiel: Das folgende Territorium besteht aus zwei Reihen und drei Spalten. In der ersten Spalte liegen auf beiden Kacheln keine Körner. In der zweiten Spalte liegen auf beiden Kacheln drei Körner. In der dritten Spalte befinden sich ausschließlich Mauern. Der Hamster steht mit Blickrichtung Nord und 3 Körnern im Maul auf der Kachel in der linken unteren Ecke.

(
  (
    ( ("Kachel" 0) ("Kachel" 3) ("Mauer") )
    ( ("Kachel" 0) ("Kachel" 3) ("Mauer") )
  )
  ("Hamster" 1 0 3 "Nord")
)

7.4.2 Hamster-Befehle

Die Hamster-Befehle des Java-Hamster-Modells sind als Funktionen implementiert, die ein Territorium auf ein neues Territorium abbilden, und zwar mit der bekannten Semantik der Hamster-Grundbefehle:

Bei den Befehlen vor, nimm und gib können die bekannten Fehler auftreten.

Im Hamster-Simulator geschieht nach dem Ausführen eines der vier Hamster-Grundbefehle folgendes: Das von der entsprechenden Funktion gelieferte Territorium wird im Simulation-Fenster angezeigt!

7.4.3 Hamster-Programme

Ein Hamster-Programm hat immer folgende Gestalt:

(define (start Territorium)
<Funktionsaufruf>
)

start ist die Funktion, die beim Ausführen eines Hamster-Programms aufgerufen wird. Ihr wird als Parameter die entsprechende Listenrepäsentation des aktuell im Simulation-Fenster angezeigten Territoriums übergeben.

Im folgenden Hamster-Programm hüpft der Hamster eine Kachel nach vorne:

(define (start Territorium)
  (vor Territorium)
)

Im folgenden Hamster-Programm hüpft der Hamster eine Kachel nach vorne und dreht sich anschließend nach links:

(define (start Territorium)
  (linksUm (vor Territorium))
)

Vergeichen Sie mit diesem Programm bitte das folgende Hamster-Programm:

(define (start Territorium)
  (vor Territorium)
  (linksUm Territorium)
)

Hier hüpft der Hamster zunächst eine Kachel nach vorne. Anschließend wird der Befehl linksUm jedoch auf dem anfänglichen Territorium, dem Parameter, ausgeführt, und nicht auf dem durch den vor-Befehl geänderten Territorium, d.h. das Ergebnis ist, dass sich der Hamster nach der Ausführung des Programms auf der selben Kachel befindet, auf der er sich vor Start des Programms befand, allerdings mit einer anderen Blickrichtung. Grund hierfür ist der folgende: Im Hamster-Simulator geschieht nach dem Ausführen eines der vier Hamster-Grundbefehle in Scheme folgendes: Das von der entsprechenden Funktion gelieferte Territorium wird im Simulation-Fenster angezeigt. Es wird nicht wie im imperativen Hamster-Modell der Befehl auf dem aktuell sichtbaren Territorium ausgeführt.

Ein Hinweis für erfahrenere Scheme-Programmierer: Ausgaben bzw. Eingaben über die Scheme-Funktionen display bzw. read erfolgen über Standard-Out bzw. Standard-In, d.h. Sie sollten den Hamster-Simulator entsprechend über den Befehl ,,java -jar hamstersimulator.jar`` und nicht via Doppelklick auf die Datei ,,hamstersimulator.jar`` starten, damit Sie eine Konsole haben.


next up previous contents
Nächste Seite: 7.5 Beispiele Aufwärts: 7 Scheme Vorherige Seite: 7.3 Scheme-Hamster-Programme   Inhalt
Ditrich Boles 2007-04-27