![]() |
![]() |
![]() |
![]() |
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!
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:
findest du im Lehrer-Ordner oben rechts unter:
wspiegel => info11hamster => Programme => beispiele
while_bsp.ham
und abgrasen.ham
ausprobieren.
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)
quadrat.ter
):auslegen.ham
)
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ß!)
rettung.ham
).