Jörg Lorenz schrieb am 30.October.2005, 13:34:11 in der Kategorie web.coding
intI = 0
Do Until intI = 0
MsgBox intI
intI = intI + 1
Loop
Verwendet man diese Schleife, passiert nix. intI ist 0 und in der ersten Zeile der Schleife wird festgelegt, daß diese laufen soll, bis intI den Wert 0 hat. Da intI aber beim Beginn der Schleife bereits 0 ist, passiert nichts.
Anders bei dem folgenden Beispiel:
i = 0
Do
MsgBox intI
intI = intI + 1
Loop Until intI = 0
Auch hier ist intI wieder 0. Da die Abbruchbedingung aber nicht hinter dem Do festgelegt ist, wird die Schleife begonnen. Es folgt die MsgBox, dann wird intI um 1 erhöht (hat also dann den Wert 1(!) und erst dann (Loop Until intI = 0) wird festgelegt, daß die Schleife laufen soll, bis intI 0 ist. Da aber intI nicht 0, sondern 1 ist, geht die Schleife weiter, also Msgbox, um 1 erhöhen, prüfen ob intI 0 ist, usw.
Da intI in diesem Beispiel aber nie wieder 0 werden kann, handelt es sich um eine Endlosschleife.
Die Endscheidung, ob man fuß- oder kopfgesteuerte Do-Schleifen verwendet, muß sich also danach richten, wann geprüft werden soll, ob die Abbruchbedingung erreicht ist.
Der Unterschied zwischen While und Until liegt darin, daß bei While eine Schleife so lange ausgeführt wird, wie eine Bedingung erfüllt ist (z. B. While intI = 10 - so lange, wie intI gleich 10 ist) und bei Until eine Schleife ausgeführt wird, bis eine Bedingung erfüllt ist (Until intI = 10 - so lange, bis intI = 10 ist).
> aber irgendwie hab ich das Gefühl nur noch Bahnhof zu verstehen.
Naja, die Do-Schleifen sind ja auch sehr abstrakt. Mir fielen am Anfang die For-Schleifen leichter. Warum weiß ich aber nicht.
> Bis jetzt hatte ich nie größere Schwierigkeiten mit Wi.
> Für die Beantwortung meiner Frage wäre ich dir seeehr dankbar.
Wenn was ist, frage einfach.
Viele Grüße
Jörg