Die Kontrollstruktur „Schleife“ in Java

Werbung
Die Kontrollstruktur „Schleife“ in Java
Kontrollstrukturen dienen dazu, den Ablauf des Programms zu steuern. Ohne sie würde ein Programm nur aus einer einfachen Folge („Sequenz“) von Befehlen an den Computer („Anweisungen“)
bestehen. Das Programm würde immer das gleiche tun und wäre nach einer von im Vorfeld
feststehenden Zeit automatisch beendet.
Mit Hilfe von Kontrollstrukturen wie der „Verzweigung“ (dazu später mehr) kann man auf
Benutzereingaben reagieren (beispielsweise eine Fallunterscheidung machen) und mit „Schleifen“
kann man steuern, unter welchen Bedingungen gewisse Teile des Programms wiederholt werden
sollen.
Die Schleife mit Ausgangsbedingung („fußgesteuerte Schleife“)
do
{
// Anweisungen im Rumpf
} while (Bedingung);
Die Anweisungen im sogenannten „Rumpf“ der Schleife werden mindestens einmal ausgeführt. Ist
danach die Bedingung am Ausgang (Fuß) der Schleife erfüllt, dann werden die Anweisungen erneut ausgeführt. Das wiederholt sich solange, bis die Bedingung irgendwann nicht mehr erfüllt ist.
Sollte die Bedingung hingegen immer erfüllt sein, dann ist das Programm in eine Endlosschleife geraten – es ist „abgestürzt“. Bei der Bedingung handelt es sich um einen „Ausdruck“ der von Java als
true (wahr) oder false (falsch) interpretiert wird. Mehr dazu am Ende dieses Dokuments.
Die Schleife mit Eingangsbedingung („kopfgesteuerte Schleife“)
while (Bedingung)
{
// Anweisungen im Rumpf
}
Die Anweisungen im Rumpf werden nur ausgeführt, wenn die Bedingung erfüllt ist. Das wird jedes
Mal neu getestet, nachdem die Anweisungen im Rumpf abgearbeitet wurden. Im Gegensatz zur fußgesteuerten Schleife wird die Bedingung bereits am Schleifeneingang (Kopf) überprüft, sodass (sofern die Bedingung bereits zu Beginn schon nicht erfüllt ist) der Rumpf ggf. niemals ausgeführt
wird. Die Schleife wird deshalb auch als „abweisende Schleife“ bezeichnet.
Die beiden Varianten der Schleife sind sich also sehr ähnlich. Man muss sich im Vorfeld nur
überlegen, ob man den Rumpf immer mindestens einmal ausführen möchte oder ob er evtl. niemals
ausgeführt werden soll. In einigen Fällen (Animationen usw.) ist dies vollkommen unerheblich.
Mehr zu Bedingungen
Bedingungen können erfüllt sein oder nicht – es gibt also nur zwei mögliche Werte bzw. Zustände:
true und false („wahr“ und „falsch“). Der Mathematiker GEORGE BOOL hat darauf aufbauend
Grundlagen der mathematisch Logik beschrieben.
Mittels derBildschirm.breite() kann man die Breite des Bildschirms abfragen (z. B. 500).
In einem Programm kann man nun darauf reagieren, wenn der Bildschirm zu klein sein sollte:
while (meinStift.vPosition() < 500)
{
meinStift.bewegeUm(1);
}
meinStift.dreheUm(180);
Die horizontale Positions des Stifts „meinStift“ wird ermittelt und mit der Zahl 500 verglichen. Ist
sie kleiner, dann ist das Ergebnis des Vergleichs true und der Stift wird weiter bewegt.
Anderenfalls ist das Ergebnis false, dann wird die Anweisung im Schleifenrumpf nicht (mehr)
ausgeführt, sondern die nach der Schleife folgende Anweisung (im Beispiel die Drehung um 180°).
Der Test auf Gleichheit erfolgt in Java übrigens mittels == und nicht mit =. Denn das einfache
Gleichheitszeichen wird für Zuweisungen verwendet (wie in meinStift = new Stift()).
Es gibt auch Dienste, die direkt einen „Wahrheitswert“ (true oder false) zurückliefern. Man erkennt sie in der Klassendokumentation am Rückgabetyp boolean (nach besagtem GEORGE BOOL).
meinStift.istUnten() gibt also true zurück, wenn der Stift abgesenkt und seitdem nicht
wieder angehoben wurde. Statt
while (meinStift.istUnten() == true)
{
meinStift.bewegeUm(100);
}
schreibt man besser kürzer und verständlicher
while (meinStift.istUnten())
{
meinStift.bewegeUm(100);
}
Der Wahrheitswert kann durch ein Ausrufezeichen umgekehrt werden. Deshalb wird in
while (!dieMaus.istGedrueckt())
{
meinStift.bewegeUm(1);
}
der Stift immer weiter bewegt, solange die Maus NICHT gedrückt ist.
Herunterladen