Programmieren leicht gemacht - adäquate Modelle für den Einsatz im Unterricht/ Das erste imperative Programm

Aus Wikibooks

Das erste imperative Programm[Bearbeiten]

Um ein Programm zu schreiben, welches unser Hamster ausführen soll, müssen wir zuerst im Editorfenster einen neuen Java-Quelltext öffnen, indem wir auf den Button ganz links klicken. Zunächst müssen Sie angeben, welchen Programmtyp Sie gerne erzeugen möchten. Wählen Sie für unser Bespiel das „imperative Programm“ als Programmtyp. Ein imperatives Programm besteht aus Anweisungen, die in der angegebenen Reihenfolge hintereinander ausgeführt werden:





An die Stelle des grauen Hintergrundes tritt nun ein weißes Editorfeld. Dieses geöffnete Programm-Gerüst trägt den Namen „NeuerHamster1“.




Um den vorgegebenen Namen zu ändern, klicken Sie einfach auf den dritten Button von links, um das Programm zu speichern. Unserem ersten Beispiel geben wir den Namen „ErstesProgramm“:




Wenden wir uns nun wieder dem eigentlichen Editor-Fenster zu. In diesen wurde beim Erzeugen eines leeren Programmes automatisch ein leeres Java-Programm geschrieben:

void main() {
}


Diese vorgegebenen Zeilen stellen die Hauptfunktion jedes Programms dar, welche stets den Namen „main“ trägt. Das Hamster-Programm wird in einer Java-Notation in dem Bereich, der für den Texteditor reserviert ist, verfasst. Die Kontrollstrukturen werden in Java-Syntax notiert und die selbstdefinierten Anweisungen werden als Java-Funktionen definiert. Auch die vordefinierten Anweisungen sind als Java-Funktionen realisiert.

Die vordefinierten Anweisungen[Bearbeiten]

Der Befehlsumfang für den Hamster umfasst folgende vordefinierten Anweisungen:

  • vor(); Der Hamster bewegt sich in seiner aktuellen Blickrichtung um ein Feld vorwärts.
  • linksUm(); Der Hamster dreht sich auf dem Feld, auf dem er sich gerade befindet, um 90 Grad nach links
  • gib(); Der Hamster legt auf das Feld, auf dem er sich gerade befindet, genau ein Korn aus seinem Maul ab, d.h. anschließend hat er ein Korn weniger im Maul und auf dem Feld liegt ein Korn mehr.
  • nimm(); Der Hamster frisst von dem Feld, auf dem er sich gerade befindet, genau ein Korn, d.h. anschließend hat der Hamster ein Korn mehr im Maul und auf dem Feld liegt ein Korn weniger als vorher.

Nun wollen wir die Funktionsweise dieser Befehle in unserem ersten Programm austesten. Dazu fügen wir unserer main-Funktion folgende Zeilen hinzu:




Diese Änderung soll natürlich sofort gespeichert werden. Nach dem Speichern unseres Programms müssen wir dieses natürlich kompilieren, d.h. der Quelltext wird in eine Datei übersetzt, die der Computer verstehen und ausführen kann; dies wird mit Hilfe des Play-Buttons bewerkstelligt. Die Simulation deines Hamster-Programms startet dann automatisch im Simulatorfenster.

Beim Ausführen der Simulation erhalten wir jedoch folgende Fehlermeldung:




Da wir unserem Hamster zu Beginn keine Körner in das Maul gelegt haben, kann er den Befehl gib(); nicht ausführen. Dies wollen wir ändern, indem wir sein Maul mit 10 Körnern füllen:




Nun klicken wir auf den Play-Button im Simulatorfenster, um unser Programm erneut auszuführen. Jetzt sollte alles funktionieren:




Nun schreiben wir unsere erste eigene Java-Funktion. Dafür ändern wir den Quelltext unseres Programms folgendermaßen:





Sie haben die Funktion rechtsUm() geschrieben. Unter einer Funktion versteht man eine Sammlung von Befehlen, die gemeinsam ausgeführt werden. Die Funktion rechtsUm() führt dreimal den linksUm()-Befehl aus, wenn die Funktion aufgerufen wird. Der Quelltext ist jetzt zwar deutlich länger geworden. Wenn du aber in einem Programm den Hamster mehrmals nach rechts drehen willst, so ist diese Variante viel übersichtlicher als wenn man alle notwendigen Befehle in die main-Funktion verpackt.


Wie wir bereits in unserem ersten Beispiel bemerkt haben, können bei den Standard-Befehlen folgende Probleme auftreten:

  • Der Hamster erhält den Befehl vor(); und das Feld in Blickrichtung vor ihm ist durch eine Mauer blockiert.
  • Der Hamster erhält den Befehl nimm(); und auf dem Feld, auf dem er sich gerade befindet, liegt kein einziges Korn.
  • Der Hamster erhält den Befehl gib(); und er hat kein einziges Korn mehr im Maul.

Die vordefinierten Bedingungen[Bearbeiten]

Tritt eine der angeführten Situationen in einem Programm auf, so führt dies zu so genannten Laufzeitfehlern. Diese können im Allgemeinen nicht schon durch den Compiler entdeckt werden, sondern treten erst bei der Ausführung eines Programms auf. Um diese zu vermeiden, existieren folgende bereits vordefinierte „Testbefehle“ bzw. Bedingungen. Diese Befehle liefern boolesche Werte, also wahr (true) oder falsch (false), zurück:

  • vornFrei(): Liefert den Wert true, falls sich auf dem Feld in Blickrichtung vor dem Hamster keine Mauer befindet. Ist das Feld durch eine Mauer blockiert, so wird der Wert false geliefert.
  • kornDa(): Liefert den Wert true, falls auf dem Feld, auf dem sich der Hamster gerade befindet, ein oder mehrere Körner liegen. Befindet sich darauf kein Korn, so wird der Wert false geliefert.
  • maulLeer(): Liefert den Wert false, falls der Hamster ein oder mehrere Körner hat. Befinden sich keine Körner im Maul des Hamsters, dann wird der Wert true geliefert.