Rob´s BB-Kurs 2

Schleifen


© Robert Gerlach 2001-2002

www.robsite.de

Immer wenn sich in einem Programm etwas wiederholen soll kommen Schleifen zum Einsatz. Der Code in ihnen wird solange wiederholt bis eine Bedingung eintrifft. Es gibt Vor- Nach- und Nichtprüfende Schleifen, alle sind für verschiedene Probleme unterschiedlich gut geeignet.




Die For...Next Schleife


Wenn sich eine Schleife nur exakt n-mal wiederholen soll und man n vielleicht auch noch in der Schleife verwenden will und man weiss dass die Schleife nicht unbedingt einmal laufen muss, nimmt man die For...Next Schleife:


For n = start To ende [Step schrittzahl]
.
..
:code:
..
.
Next



n ist die Variable die sich erhöht (oder verringert), start und ende sind selbsterklärend und schrittzahl gibt die...öh...Schrittzahl an. Wäre sie 3, würde sich n in Dreierschritten erhöhen. Wäre sie negativ, würde das ganze rückwärts laufen, gibt man sie nicht an ist sie automatisch 1. Dabei muss man natürlich wieder start und ende anpassen. Da am Anfang der Schleife geprüft wird ob die Bedingung erfüllt ist, gehört For..Next zu den Vorprüfenden.




Die Repeat...Until Schleife


Sie hat keinen eingebauten Zähler, sonder läuft solange bis die Bedingung am Ende erfüllt wird:


Repeat         ; Wiederhole solange...
.
..
:code:
..
.
Until n = x    ; ...bis eine Bedingung erfüllt ist.



n ist die Variable die den Wert von x haben muss. Hier kann man natürlich auch noch alles mögliche kombinieren. Also z.B.:


Repeat
.
..
:code:
..
.
Until n = x And name$ = "Bopp" And quersumme = 1949 Xor xyz = zyx



Zu And und Or kommen wir im nächsten Kapitel.
Repeat...Until sollte man nehmen wenn man genau weiß, dass die Schleife mindestens einmal durchlaufen wird.
Statt Until kann man auch Forever nehmen, dann läuft die Schleife unendlich weiter, bis irgendwo in ihr Exit steht. Das ganze als Pseudocode:


Repeat
.
..
Wenn irgendeine Bedingung erfüllt ist, dann Exit.
..
.
Forever



Das Wenn...Dann gibts dann auch erst im nächsten Kapitel...
Nun zur letzten Schleifenart in BB.




Die While...Wend Schleife


Eine Vorprüfende, heisst dass sie wie For...Next nicht unbedingt durchlaufen werden muss.


While bedingung = erfüllt     ; Solange eine Bedingung erfüllt ist.
.
..
:code:
..
.
Wend                          ; Geh zurück zum Wend.



Das ist jetzt etwas anders. Wird bei Repeat...Until die Schleife abgebrochen wenn eine Bedingung erfüllt ist, bleibt man hier solange in ihr, wie diese Bedingung erfüllt bleibt.

Das wars mit den "echten" Schleifen. Man kann auch noch mit Goto zu einer Marke springen die vor dem Goto liegt und somit auch Teile des Programms wiederholen, dies ist aber:
  • Unübersichtlich
  • Umständlich
  • Veraltet
  • Uncool

      Merke: Nimm kein Goto. Goto ist böse.

    Es führt zum berüchtigten Spaghetticode, bei dem alles aneinandergehängt ist und durch wilde Goto-Sprünge durchs halbe Programm vollkommen unleserlich wird. Und das ist nicht gut...






    Zusammenfassung


    ; Um einen bestimmten Programmteil genau n-mal, aber nicht unbedingt einmal zu wiederholen nimmt man die For...Next-Schleife:
    For i = 1 to 10 [Step 2]

    Print i

    Next


    ; Repeat...Until läuft mindestens einmal und solange bis die Bedingung hinter -Until- erfüllt ist:
    Repeat

    x = x + 1
    Print x

    Until x = 10


    ; While...Wend ist in etwa das gleiche wie Repeat...Until, nur das diese Schleife nciht unbedingt einmal durchlaufen werden muss, da am Anfang auf eine Bedingung hin überprüft wird:
    While x = 10

    x = x + 10
    Print x

    Wend