Visual Basic .NET: Zählschleifen

Aus Wikibooks

Neben den Do-Schleifen gibt es noch eine andere, etwas statischere Art von Schleifen, die Zählschleifen oder auch Iterationsschleifen.

Im ersten Beispiel des vorhergehenden Kapitels wurde ein Zähler verwendet, um eine Befehlsgruppe eine vorher bekannte Anzahl mal zu wiederholen. Dafür kann auch eine Zählschleife verwendet werden. Hier wird eine bestimmte Variable als Zählvariable ausgezeichnet, die bei jeder Wiederholung um einen bestimmten Wert (standardmäßig 1) erhöht wird. Die Ausführung der Schleife wird abgebrochen, sobald ein bestimmter Grenzwert überschritten.

Unten sehen Sie zuerst eines der Beispiele für die Do-Schleife aus dem vorhergehenden Kapitel und die äquivalente Umsetzung mit einer For-Zählschleife.

Code:  

Dim Kapital As Single = 1000.0 'Startkapital
Dim AnzahlVerzinsungen As Integer = 0 'Zähler mit beschreibendem Namen
Do
    Kapital += 0.03 * Kapital
    AnzahlVerzinsungen += 1
Loop Until AnzahlVerzinsungen = 10
Console.WriteLine("Am Ende haben Sie " & Kapital & " Euro.")


Code:  

Dim Kapital As Single = 1000.0 'Startkapital
Dim AnzahlVerzinsungen As Integer 'Zähler muss nicht initialisiert werden
For AnzahlVerzinsungen = 1 To 10
    Kapital += 0.03 * Kapital
Next
Console.WriteLine("Am Ende haben Sie " & Kapital & " Euro.")

Die eigentliche Schleife beginnt in Zeile 3 mit dem Schlüsselwort For. Dahinter muss die Zählvariable notiert werden, hier handelt es sich um die Variable AnzahlVerzinsungen. In der Praxis werden Sie für solche Variablen oft Namen wie „Count...“, „Cnt...“ oder (für Deutschfetischisten) „Zähler...“ verwenden. Nach dem Namen weisen Sie der Zählvariable mit dem Zuweisungsoperator einen Startwert zu. Nach dem To folgt der Grenzwert. Die Schleife wird nach unten hin vom Schlüsselwort Next begrenzt.

Was passiert nun? Nach jeder Ausführung der Befehle in der Schleife (hier nur des Befehls Kapital += 0.03 * Kapital) wird die Zählvariable um eins erhöht. Sobald der Wert der Zählvariable den Grenzwert überschritten hat (also Zähler > Grenzwert, nicht Zähler >= Grenzwert!), wird die Schleife abgebrochen.

Beachten Sie, dass als Zählvariablen nur Variablen folgender Datentypen verwendet werden dürfen: Byte, Short, Integer, Long, Single und Double.

Schrittweite[Bearbeiten]

Standardmäßig wird der Zähler mit jedem Schleifendurchlauf um eins erhöht. Diese Schrittweite kann man aber auch ändern, indem man in der ersten Zeile der Schleife nach dem Grenzwert das Schlüsselwort Step notiert, gefolgt von der gewünschten Schrittweite. Die folgenden Beispiele sind äquivalent zu den vorhergehenden.

Code:  

Dim Kapital As Single = 1000.0
Dim AnzahlVerzinsungen As Single
For AnzahlVerzinsungen = 1 To 5 Step 0.5
    Kapital += 0.03 * Kapital
Next
Console.WriteLine("Am Ende haben Sie " & Kapital & " Euro.")


Code:  

Dim Kapital As Single = 1000.0
Dim AnzahlVerzinsungen As Integer
For AnzahlVerzinsungen = -10 To 10 Step 2
    Kapital += 0.03 * Kapital
Next
Console.WriteLine("Am Ende haben Sie " & Kapital & " Euro.")

Wenn man Step auf einen negativen Wert setzt läuft die Schleife rückwärts. Eine Rückwärtslaufende Funktion mit obigen Beispiel würde wie folgt lauten können.

Code:  

Dim Kapital As Single = 1000.0
Dim AnzahlVerzinsungen As Integer
For AnzahlVerzinsungen = 10 To 1 Step -1
    Kapital += 0.03 * Kapital
Next
Console.WriteLine("Am Ende haben Sie " & Kapital & " Euro.")

Integrierte Deklarationen[Bearbeiten]

Meist braucht man eine Zählvariable nur für eine Zählschleife. Um diese Verbindung noch deutlicher werden zu lassen und Fehler mit einer versehentlichen späteren Verwendung von Zählern zu vermeiden. Nachfolgend wurde die oberste For-Schleife entsprechend modifiziert:

Code:  

Dim Kapital As Single = 1000.0
For AnzahlVerzinsungen As Integer = 1 To 10
    Kapital += 0.03 * Kapital
Next
Console.WriteLine("Am Ende haben Sie " & Kapital & " Euro.")

Die Deklaration der Zählvariable AnzahlVerzinsungen wurde in die For-Anweisung integriert. Nach dem Namen der zu deklarierenden Zählvariable folgt das bekannte As-Schlüsselwort und der Datentyp. Auch hier gilt die Begrenzung auf die oben benannten Datentypen. Der Vorteil an dieser Methode ist, dass die Variable nach Beendigung der Schleife gelöscht wird. Versucht man, auf die Variable zuzugreifen, wird ein Fehler ausgelöst. Moderne Entwicklungsumgebungen weisen Sie auf solche Fehler auch im vornherein hin. Der folgende Code verdeutlicht noch einmal das Problem.

Code:  

Dim Count1 As Integer
For Count1 = 1 To 5
    Console.WriteLine("Schleife 1")
Next
For Count2 As Integer = 1 To 3
    Console.WriteLine("Schleife 2")
Next
Count1 = 0 'zulässig, aber meist nicht gewollt
Count2 = 0 'Fehler! - nach der Schleife gibt es die Variable nicht mehr

Ausgabe:  

Schleife 1 (fünfmalige Ausgabe)
Schleife 2 (dreimalige Ausgabe)