Der Java Hamster – Programmieren spielend gelernt
Ihr denkt, Programmieren ist total kompliziert und ihr werdet es niemals verstehen? So geht es vielen Menschen, dabei besteht die einzige Schwierigkeit darin, dass kaum eine Programmiersprache für Einsteiger entwickelt wurde. Man schreibt sie so, dass man damit möglichst viel möglichst effizient erleidigen kann, nicht so, dass jeder leicht hineinfindet. Dagegen gibt es viele verschiedene Ansätze, um es Einsteigern leicht zu machen….
Ich möchte hier denjenigen vorstellen, der mir selbst am besten gefällt und mit dem ich selbst auch Programmieren gelernt habe — im Alter von 14-15 Jahren und ohne große Hilfe von erfahrenen Programmierern oder gar Lehrern. Es geht dabei um den sogenannten Java-Hamster. Entwickelt wurde er von Dietrich Boles, einem Dozenten an der Universität Oldenburg.
Das Prinzip ist einfach und gerade deshalb genial. Man braucht nur die normale (aber aktuellste) Java-Runtime-Environment, die auf den meisten Rechnern installiert sein sollte … wenn nicht, ist es nicht schwer, sie sich zu besorgen. Und man muss einen Zip-Ordner aus dem Internet herunterladen. Beide (die JRE und der Hamstersimulator) sind etwa 20Mb groß. Das sollte mit einem modernen Internetanschluss also kein Problem sind. Am Ende des Artikels findet ihr entsprechende Links.
Worum geht es denn nun aber?
Wenn man alles heruntergeladen und entpackt hat (eine Installation ist nicht notwendig), kann man den Hamster-Simulator mit einem Doppelklick auf die entsprechene .jar-Datei starten. (.jar ist ein Format, das Java-Dateien zusammenfasst) Es öffnen sich zwei Fenster. Das eine ist der Editor, in dem Hamster-Programme geschrieben werden können, das andere ein sogenanntes Territorium. Es besteht aus mehreren quadratischen Feldern. Auf einem davon sitzt anfangs der Hamster.
Diese beiden Fenster sind alles, was man braucht, um den Hamster zu programmieren. Und was lässt man ihn tun? Richtig, man steuert ihm mithilfe einfacher Befehle durch sein Territorium. Der Hamster kennt nur vier Befehle. vor, linksUm, nimm und gib. Denn wie jeder normale Hamster hat unser virtueller Hamster Backentaschen, in denen er Körner transportieren kann. Um diese aufzunehmen bzw. abzulegen, gibt es die beiden Anweisungen gib und nimm.
Neben dem Hamster und seinen Körnen kann das Territorium aber auch noch Hindernisse (Mauern) enthalten. Damit der Hamster nicht einfach gegen eine solche Mauer läuft, oder man ihn versehentlich zwing, ein Korn abzulegen, obwohl sein Maul leer ist bzw er eines aufnehmen soll, obwohl keines vorhanden ist, gibt es noch drei Testanweisungen. Diese nennen sich vornFrei, kornDa und maulLeer. Wer sich über die seltsame Schreibweise wundert: In Java ist es üblich, Anweisungen klein und bei zusammengesetzten Wörtern jedes neue Teilwort groß zu schreiben.
Ihr seht also schon: Der Hamster bietet zwei Vorteile: Man braucht keine großen Mengen von Befehlen kennen (es gibt nur 7) und er ist in deutsch geschrieben, was den Umgang mit ihm sehr erleichtert. Unter linksUm kann sich jeder etwas vorstellen — wird diese Anweisung aufgerufen, dreht sich der Hamster 90° nach links.
Und was bringt das?
Nun, ihr glaubt es vielleicht nicht, aber mit diesen wenigen, sehr einfachen Befehlen kann man problemlos sehr komplexe und unglaublich vielfältige Programme schreiben und die Grundlagen des Programmierens lernen, Grundlagen, die in jeder der 6000 Programmiersprachen gleich oder zumindest ähnlich sind. Und das beste ist: Man kann mit ihm sowohl die imperative als auch die objektorientierte Programmierung lernen (seit der neuesten Version auch die parallele Programmierung, aber das lass ich mal außen vor) Für die imperative Programmierung reichen diese 7 Befehle bei weitem aus. Man kann damit problemlos Dinge wie Funktionen und Prozeduren, Variablen, Schleifen, Bedingungen und sogar die Rekursion kennen lernen. Für die objekte Programmierung bekommt der Hamster noch ein paar mehr Anweisungen. Dann nämlich ist er in der Lage, Nachwuchs zu produzieren (Vererbung) und mit anderen Hamster gemeinsam sein Territorium zu durchkämmen. Hier kommen solche komplizierten Dinge wie Klassen, Vererbung, Arrays, Objekte und Polymorphie ins Spiel. Und nach zwei bis drei Übungen sind diese kein Problem mehr.
Um selbstständig mit dem Java-Hamster zu lernen, braucht man allerdings noch die dazugehörigen Bücher. Inzwischen gibt es drei. Eines für imperative, eines für objektorientierte und das dritte für die parallele Programmierung. In diesen Bänden gibt es zu jedem Gebiet der Programmierung ein extra Kapitel mit einer Einführun, die verdeutlicht, weshalb das zu behandelnde Thema benötigt wird, mehreren Beispielen und einer Menge von Übungsaufgaben, bei denen man dann selbst den Hamstersimulator einsetzen darf. Das macht wirklich Spaß, wenn man es endlich geschafft hat, dem Hamster zu sagen, was er tun soll. Dass es nicht immer gleich beim ersten Mal klappt ist völlig verständlich und passiert auch richtigen Programmiern ständig. Ich weiß, wovon ich spreche.
Für alle Schüler unter unseren Lesern: Wenn ihr im Info-Unterricht mit der Programmierung anfangen wollt, schlag eurem Lehrer doch einfach mal vor, den Java-Hamster zu verwenden. Damit zu unterrichten macht genauso viel Spaß, wie damit zu lernen. Und vielleicht begreift euer Lehrer dann auch den einen oder anderen Sachverhalt besser.
Noch etwas: ich habe schon einmal Anfrage von Schülern bekommen, ob ich ihnen nicht bei einigen Aufgaben helfen könnten, die ihnen der Lehrer aufgegeben hatte. Ich mache das gerne. Wenn ihr den Hamster also im Unterricht verwendet und Schwierigkeiten habt oder einfach mehr lernen wollt, als das, was eurer Lehrer mit euch macht, dann meldet euch. Schreibt einfach einen Kommentar mit der genauen Aufgabenstellung oder eine Mail an uns und ich werde einige Musterlösungen erstellen, mit denen ihr eure Lehrer beeindrucken könnt.
Dort gibt es nicht nur den Simulator in der neuesten Version, sondern auch Links zum Download der benötigten JRE und zu Handbüchern, die den Umgang mit dem Simulator erklären (obwohl ich eigentlich finde, dass er sehr leicht zu bedienen ist)
Hallo,
danke für dein aNGEBOT. Also zu unserer Aufgabe (https://www.u-helmich.de/inf/java2h/seite04.html Aufgabe 9). Der Hamster soll ein Labyrinth durchlaufen bis er das Korn gefunden hat.
Irgendwie muss es ja gehen, dass er schaut, ob links frei ist, wenn ja dann soll er nach vorne gehen, andersfalls den weg entlanglaufen. Hast du eine Idee?
Danke!
Toni
void main(){
aufBerg();
}
void aufBerg(){
if(vornFrei()){
}else{
linksUm();
}
testvor();
rechtsUm();
if(vornFrei()!=true){
linksUm();
}else{
testvor();
}
if(!kornDa()||i<0){
aufBerg();
}else{
nimm();
}
}
void rechtsUm(){
linksUm();
linksUm();
linksUm();
}
void testvor(){
if(vornFrei()){
vor();
}
}
das sollte gehen
Ich komme nicht dahinter, wie man den Hamster von links nach rechts durch sein Terrarium laufen lässt (über mehrere Zeilen) und ihn dabei nach Körnern suchen lässt, die er auch aufsammlen soll.
Hättest du vielleicht eine Idee?
Du würdest mir damit echt helfen!
LG
Bella
Weiß auch jemand, ob man den Standard Hamster ausblenden kann, um nur noch mit eigens erstellten Hamstern zu arbeiten. Vielen Dank schonmal im Vorraus!
Echt cooles Angebot von dir!
Ich soll nämlich den Hamster in seinem Territorium ein Korn Suchen lassen und dann soll dieser in das nächste von 2 Toren (jeweils links und rechts 3 Kästchen breit) das Korn ablegen.
Irgendwie komme ich mit der Aufgabe nicht zurecht!
Hab hier schon ein paar Tage stundenweise probiert aber das haut nicht so wirklich hin.
Wäre echt nett von dir wenn du mir da irgendwie helfen könntest.