Zählschleife: Unterschied zwischen den Versionen
Hauer (Diskussion | Beiträge) (→Der Schleifenkopf) |
Hauer (Diskussion | Beiträge) (→Der Schleifenkopf) |
||
Zeile 16: | Zeile 16: | ||
Unter ''3.'' kann eine Fortsetzung stehen, die als letztes im Schleifenrumpf ausgeführt wird, z.B. ''++i''. | Unter ''3.'' kann eine Fortsetzung stehen, die als letztes im Schleifenrumpf ausgeführt wird, z.B. ''++i''. | ||
− | |||
− | |||
Zusammenfassend sieht der Schleifenkopf einer for-Schleife so aus: | Zusammenfassend sieht der Schleifenkopf einer for-Schleife so aus: |
Version vom 5. Oktober 2015, 12:08 Uhr
Die for-Schleife ist eine Schleifenart in Java. In solch einer Schleife werden Befehle solange wiederholt, bis eine Abbruchbedingung erfüllt wurde. Ansonsten ist ein laufendes Programm in einer Endlosschleife gefangen.
Inhaltsverzeichnis
[Verbergen]Namensherkunft und Zweck
For Schleifen haben ihren Namen aus Aussagen, wie "Für jedes x in M ..." (engl. for each x in M) und "Für x gleich 3 sei ..." (engl. for x equals 3 let). Sie versuchen die Initialisierung, Überprüfung und Fortsetzung einer while-Schleife durch syntaktischen Zucker zu vereinfachen, indem sie leichter niederzuschreiben sind, dem Programmierer leichter Fehler erkennen lassen und sich im geistigen Lesefluss besser visualisieren lassen. Nehmen Sie z.B. folgenden Satz: "Sei i gleich 0, so wiederhole solange i kleiner ist als 5 folgende Zeilen, von denen eine die Variable i um 1 erhöht ..." und "Für i gleich 1 bis 5 in Schrittgröße 1 führe folgende Zeilen aus: ...". Letzterer wird den meisten Lesern angenehmer sein, da hier alle relevanten Informationen über die Durchführung der Schleife in ihrer Deklaration vorhanden sind. Aus dem selben Grund gibt es for-Schleifen. Prinzipiell lassen sich natürlich alle for-Schleifen auch durch while-Schleifen und umgekehrt umsetzen.
Aufbau einer for-Schleife
Der Schleifenkopf
Das Schlüsselwort für eine for-Schleife ist das namensgebende for. Darauf folgt der Schleifenkopf mit folgendem Aussehen: ( 1. ; 2. ; 3. ) 4. .
Unter 1. kann eine Zählvariable initialisiert werden, z.B. int i = 0;.
Unter 2. kann und sollte eine Bedingung für das Ausführen der Schleife stehen, z.B. i < 5. Solange dies erfüllt ist, wird die Schleife ausgeführt.
Unter 3. kann eine Fortsetzung stehen, die als letztes im Schleifenrumpf ausgeführt wird, z.B. ++i.
Zusammenfassend sieht der Schleifenkopf einer for-Schleife so aus:
for(Initialisierung ; Bedinung ; Fortsetzung)
1 | for ( int i = 0 ; i < 5 ; ++i) |
Der Schleifenrumpf
Als Schleifenrumpf wird der Programmcode bezeichnet, der in der Schleife wiederholt werden soll. Wenn keine {}-Klammern gesetzt werden, wird nur der erste Befehl nach dem Schleifenkopf wiederholt. Wenn mehrere Befehle wiederholt werden sollen, dann muss auf dem Schleifenkopf { folgen. Nach dem letztem Befehl des Schleifenrumpfs }.
1 2 3 4 5 | for (...) { erg = erg + 5 ; System.out.println(erg); } |
Mit jedem Schleifendurchlauf wird die Variable erg um 5 erhöht. Danach wird diese im jedem Durchlauf ausgegeben.
1 2 3 | for (...) erg = erg + 5 ; System.out.println(erg); |
Auch hier wird bei jedem Schleifendurchlauf die Variable erg um 5 erhöht. Jedoch wird nur diese Variable nur nach der Schleife einmal ausgegeben.
die (komplette) for-Schleife
1 2 3 4 5 | for ( int i = 0 ; i < 5 ; ++i) { erg = erg + 5 ; System.out.println(erg) } |
Zunächst wird die Zählvariable i mit 0 initialisiert. Danach wird geprüft, ob i < 5 ist. Da dies korrekt ist, wird nun der Schleifenrumpf ausgeführt. Auf die Variable erg wird 5 aufaddiert und danach wird die Variable ausgegeben. Nun wird i auf 1 erhöht.
Der Schleifenkopf wird nun mit i = 1 ausgeführt. Die Initialisierung wird nun nicht mehr ausgeführt, da diese nur zu Beginn der Schleife ausgeführt wird. Es wird also direkt überprüft, ob i < 5 ist. 1 < 5 ist korrekt, der Schleifenrumpf wird also wieder ausgeführt. Der Variable erg wird nun wieder 5 aufaddeirt und danach wieder ausgegeben. Anschließend wird i auf 2 erhöht.
Analog werden die Fälle für i = 2, i = 3 und i = 4 ausgeführt.
Die Bedingung i < 5 ist bei i = 5 nicht mehr erfüllt. Daher wird der Schleifenrumpf nicht mehr ausgeführt. Die Zählvariable i wird nun verworfen.