Luke's Blog

Blog über Technik, das Leben und das Zeitgeschehen

Java lernen mit dem Java-Hamster

Von Luke am

Territorium mit Mauern, Körnern und Hamster

Als didaktisches Programmiermodell hat es sich das Java-Hamster-Modell zur Aufgabe gemacht, Programmieranfängern das Lernen von Java zu erleichtern. Als Anfänger schreibt man anfangs kleine Programme, die einen Hamster in einem Kornfeld (Territorium) steuern.

Mit etwas Phantasie und mit fortgeschrittenen Programmiertechniken kann man sogar ganze Spiele auf die gekachelten Territorien projizieren - bis hin zu einem vereinfachten Schachspiel.

Dr. Dietrich Boles, der Erfinder des Hamster-Modells und Dozent an der Uni Oldenburg, hat drei begleitende Bücher zum Hamster-Modell geschrieben, von denen ich Band I (Imperative Programmierung) und Band II (Objektorientierte Programmierung) nur empfehlen kann. Band III widmet sich dann noch der Parallelen Programmierung.

Im Folgenden stelle ich euch kurz die Funktionsweise des Simulators vor und demonstriere sie anhand einer simplen Hamster-Aufgabe.

Um die Programme am Computer auszuführen und somit den blauen Hamster über den Bildschirm flitzen zu sehen, benötigt man den Hamstersimulator. Dieser beinhaltet einen Editor zum Programmieren und anschließenden Kompilieren sowie ein Fenster zum Erstellen von Territorien. Mit wenigen Mausklicks kann man dem Hamster eine nette Umwelt gestalten. Auf den quadratischen Kacheln lassen sich Körner, die der Hamster zur Laufzeit eines Programms einsammeln kann, platzieren und Mauern, die den Hamster am Weiterlaufen hindern, bauen.

Es gibt bestimmte Prozeduren, um den Hamster Anweisungen ausführen zu lassen:

  • vor()
  • linksUm() (Linksdrehung)
  • nimm() (ein Korn auf einer Kachel nehmen)
  • gib() (Korn auf eine Kachel legen)

Mittels einiger Testbefehle lassen sich auch Bedingungen formulieren:

  • vornFrei() (liefert true, wenn Kachel vor dem Hamster frei ist)
  • maulLeer() (liefert true, wenn der Hamster keine Körner mehr hat)
  • kornDa() (liefert true, wenn die Kachel mindestens ein Korn enthält)

Beispielprogramm

Zur Aufgabenstellung passendes Territorium

Aufgabe

Die beiden jeweils äußeren Spalten und Reihen enthalten keine Mauern, auf einer ihrer Kacheln steht jedoch der Hamster, den Blick auf eine der beiden nächsten Ecken gerichtet. Der Hamster soll einmal zu jeder der vier Eckkacheln laufen und alle sich auf ihnen befindlichen Körner nehmen.

Lösung

Die Lösung könnte so aussehen, dass man eine Prozedur laufeZurEckeUndSammle() definiert, die für den Hamster so lange vor() aufruft, bis er an eine Wand gelangt (auf einer Eckkachel steht). Anschließend ruft die Prozedur so lange nimm() auf, bis auf der Kachel keine Körner mehr liegen.

Die selbstdefinierte Prozedur laufeZurEckeUndSammle muss dann viermal hintereinander aufgerufen werden, getrennt von drei linksUm()-Befehlen.

Lösungsprogramm

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

void laufeZurEckeUndSammle()
{
	//Bis zur naechsten Wand laufen
	while (vornFrei())
	{
		vor();
	}
	
	//Alle Koerner nehmen
	while (kornDa())
	{
		nimm();
	}
}

Kategorien: Java, Java-Hamster

Kommentare

Noch keine Kommentare bisher

Schreibe deinen eigenen Kommentar