<< Click to Display Table of Contents >> Kontrollstrukturen |
Kontrollstrukturen dienen dazu, abhängig von einer Bedingung Anweisungen auszuführen, zu überspringen oder zu wiederholen. Es gibt folgende Varianten:
Goto-Verzweigung
Goto Label1
.
.
.
Label1:
Die Goto-Anweisung veranlasst einen unbedingten Sprung auf eine Sprungmarke – in obigem Beispiel die Sprungmarke "Label1".
Gosub-Verzweigung
Gosub Label1
.
.
.
Label1:
Anweisung(en)...
Return
Auch bei der Gosub-Anweisung muss ein Sprungziel angegeben werden. Der Unterschied zur Goto-Anweisung liegt darin, dass die Gosub-Anweisung zur ursprünglichen Programmstelle zurückkehrt, sobald sie auf eine Return-Anweisung trifft.
Do-Schleifen
Mit einer Do Loop-Schleife kann eine Gruppe von Anweisungen mehrere Male ausgeführt werden. Es gibt folgende Varianten:
Do While|Until Bedingung
Anweisung(en)...
[Exit Do]
Anweisung(en)...
Loop
Oder:
Do
Anweisung(en)...
Loop While|Until Bedingung
Der Unterschied:
Do While und Do Until prüfen die Bedingung, bevor sie mit der Abarbeitung der Anweisungen innerhalb der Schleife beginnen. Diese werden also nur dann ausgeführt, wenn die Bedingung zutrifft.
Bei Do ... Loop While und Do ... Loop Until hingegen findet die Prüfung erst statt, wenn die Schleife bereits zum ersten Mal durchlaufen ist. Hier werden die Anweisungen innerhalb der Schleife also in jedem Falle mindestens ein Mal abgearbeitet.
While-Schleifen
While ... Wend-Schleifen ähneln Do While ... Loop-Schleifen. Auch hier wird die Bedingung vor dem ersten Abarbeiten der Anweisungen innerhalb der Schleife geprüft.
While Bedingung
Anweisung(en)...
Wend
For ... Next-Schleifen
Eine For Next-Schleife wiederholt die darin enthaltenen Anweisungen anhand eines Zählers genau n mal. Bei jedem Durchlaufen der Schleife wird dieser Zähler um die angegebene Schrittweite herauf- beziehungsweise herabgesetzt. Wenn Sie keine Schrittweite angegeben, wird als Schrittweite 1 verwendet.
For Zähler = Startwert To Zielwert [Step Schrittweite]
Anweisung(en)...
Next
If-Verzweigungen
Bei einem If Then-Block werden Anweisungen nur dann ausgeführt, wenn die angegebene Bedingung wahr ist. Diese Bedingung muss ein Ausdruck sein, dessen Ergebnis True oder False ist (zum Beispiel If a<b Then).
Ein If ... Then-Block kann eine oder mehrere Zeilen umfassen. Wenn er sich über mehrere Zeilen erstreckt, muss er mit einer End If-Anweisung abgeschlossen werden.
If Bedingung Then Anweisung(en)... ' Einzeilige Syntax
Oder:
If Bedingung Then ' Mehrzeilige Syntax
Anweisung(en)...
End If
Eine Variante hiervon ist die If ... Then ... Else-Anweisung. Die Anweisungen nach Else werden ausgeführt, wenn die Bedingung nicht zutrifft.
If Bedingung Then
Anweisung(en)...
Else
Anweisung(en)...
End If
Weitere Verzweigungen könnten mit zusätzlichen If ... Then ... ElseIf-Anweisungen erreicht werden. Dies führt jedoch leicht zu unübersichtlichem Code, weshalb man hier die Select Case-Anweisung vorziehen sollte (siehe unten).
If Bedingung Then
Anweisung(en)...
ElseIf Bedingung Then
Anweisung(en)...
Else
Anweisung(en)...
End If
Select Case-Verzweigungen
Bei der Select Case-Anweisung wird eine Variable auf verschiedene Werte überprüft.
Select Case Variable
Case Wert1
Anweisung(en)...
Case Wert2
Anweisung(en)...
Case Wert3
Anweisung(en)...
[Case Else
Anweisung(en)...]
End Select
Trägt die Variable den Inhalt "Wert1", werden die Anweisungen bei Case Wert1 abgearbeitet etc. Hat sie keinen der angegebenen Werte, wird zu den Anweisungen bei Case Else verzweigt (sofern vorhanden, ansonsten wird die Struktur einfach verlassen).