Zählschleife: Unterschied zwischen den Versionen
Zeile 1: | Zeile 1: | ||
Eine '''Zählschleife''' ist eine besondere Art der [[Kopfgesteuerte Schleife|kopfgesteuerten Schleife]]. | Eine '''Zählschleife''' ist eine besondere Art der [[Kopfgesteuerte Schleife|kopfgesteuerten Schleife]]. | ||
− | In den meisten [[Programmiersprachen]] wird sie durch das [[Schlüsselwörter|Schlüsselwort]] '''for''' eingeleitet. Sie besitzt in ihrer Deklaration Informationen über Anweisungen, die bei Schleifeneintritt und bei der Fortsetzung der Schleife ausgeführt werden sollen. | + | In den meisten [[Programmiersprache|Programmiersprachen]] wird sie durch das [[Schlüsselwörter|Schlüsselwort]] '''for''' eingeleitet. Sie besitzt in ihrer Deklaration Informationen über Anweisungen, die bei Schleifeneintritt und bei der Fortsetzung der Schleife ausgeführt werden sollen. |
= Syntaxdiagramm = | = Syntaxdiagramm = |
Version vom 11. März 2016, 23:27 Uhr
Eine Zählschleife ist eine besondere Art der kopfgesteuerten Schleife.
In den meisten Programmiersprachen wird sie durch das Schlüsselwort for eingeleitet. Sie besitzt in ihrer Deklaration Informationen über Anweisungen, die bei Schleifeneintritt und bei der Fortsetzung der Schleife ausgeführt werden sollen.
Inhaltsverzeichnis
Syntaxdiagramm
Verwendung
Der Name der for-Schleife leitet sich von Aussagen wie z.B. "Für alle x ..." ab. Sie findet daher meistens Verwendung, wenn über Datensätze iteriert werden soll oder wenn einfach Zahlenbereiche abgezählt werden.
In der Praxis ist die for-Schleife die am häufigsten verwendete Schleife, da bei ihr alle wichtigen Informationen, die zur Semantik einer Schleife gehören, im Kopf der Schleife stehen können. So verwenden manche Programmierer sogar Konstrukte, wie for(;x>0;){...}
um while-Schleifen zu emulieren.
Aufbau einer for-Schleife
Eine for-Schleife besteht, so wie while- und do-while-Schleifen, aus einem Kopf und einem Rumpf.
Wichtig: Zwischen Kopf und Rumpf steht kein Semikolon.
Der Schleifenkopf
Das Schlüsselwort für eine for-Schleife ist das namensgebende for. Darauf folgt der Schleifenkopf mit folgendem Aussehen: ( 1. ; 2. ; 3. ).
Unter 1. sollte eine Zählvariable initialisiert werden, z.B. int i = 0;. Die hier aufgeführte Anweisung wird nur beim Eintritt in die Schleife ausgeführt. Die Zählvariable heißt so, da sie die Schleifendurchgänge zählt.
Unter 2. 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. sollte eine Fortsetzung stehen, die als letztes im Schleifenrumpf ausgeführt wird, z.B. ++i.
Der Schleifenkopf einer for-Schleife sieht insgesamt also so aus:
for(Initialisierung ; Bedingung ; Fortsetzung)
Beispiel
for( int i = 0 ; i < 5 ; ++i)
Der Schleifenrumpf
Als Schleifenrumpf wird der Programmcode bezeichnet, der in der Schleife wiederholt werden soll.
Wenn keine geschweiften Klammern gesetzt werden, wird nur der erste Befehl nach dem Schleifenkopf wiederholt. Wenn mehrere Befehle wiederholt werden sollen, dann muss auf den Schleifenkopf ein Block mit geschweiften Klammern folgen. Ein leerer Rumpf kann mit einem einzelnem Semikolon nach dem Schleifenkopf signalisiert werden.
Beispiele
for (...) { erg = erg + 5; System.out.println(erg); }
Mit jedem Schleifendurchlauf wird die Variable erg um 5 erhöht. Danach wird diese, ebenfalls in jedem Durchlauf, ausgegeben.
for (...); erg = erg + 5; System.out.println(erg);
Hier wird die Variable erg nur ein Mal um 5 erhöht und ausgegeben, da die Schleife durch das einzelne Semikolon nach dem Schleifenkopf einen leeren Rumpf hat.
for (...) erg = erg + 5; System.out.println(erg);
Hier wird bei jedem Schleifendurchlauf die Variable erg um 5 erhöht. Die Ausgabe gehört nicht mehr zu der Schleife, wird also nur einmal nach der Schleife ausgeführt.
Negativbeispiel
for (...) erg = erg + 5; System.out.println(erg);
Hier wird bei jedem Schleifendurchlauf die Variable erg um 5 erhöht. Diese Variable wird jedoch nur nach der Schleife einmal ausgegeben, da die Ausgabe nicht innerhalb der Schleife liegt. Das Einrücken der System.out.println(erg)
- Zeile ist demnach falsch.
Die komplette for-Schleife
Beispiel
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 nicht mehr ausgeführt, da dies nur zu Beginn der Schleife gemacht 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 hinzugefügt 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.
Durch die Initialisierung von i mit 0 und dem Test i < 5 wird die Schleife genau 5 Mal durchlaufen. Es wäre natürlich auch möglich, die Schleife mit int i = 1 zu initialisieren und den Test i <= 5 durchzuführen. Dies ist jedoch aus mehreren Gründen unüblich.