Schleifen
Einführung
Was sind Schleifen? Eine Schleife kann man sich wie einen Kreislauf vorstellen, in dem der
Inhalt so lange wieder von neuem Abläuft, bis eine Bedingung nicht erfüllt ist.
Schleifen werden also dazu genutzt einen bestimmten Teil des Programms mehrmals ablaufen
lassen zu können. Es gibt drei verschiedene Typen von Schleifen.
1. Die Zählschleife: Es wird vorher festgelegt, wieviel mal die Schleife ablaufen
muss (bis die Bedingung falsch wird).
2. Die kopfgesteurte Schleife: Im Kopf der Schleife wird festgelegt, unter welcher
Bedingung die Schleife abläuft. Ist die Bedingung falsch, läuft die Schleife nicht ab.
3. Die fußgesteuerte Schleife: Die Schleife läuft mindestens einmal bis zum Ende durch
und danach wird die Bedingung abgefragt. Ist die Bedingung wahr, läuft die Schleife wieder
vom Anfang an ab. Ist die Bedingung falsch, wurde die Schleife mindestens einmal durchlaufen
und danach wird mit den Anweisungen, die nach der Schleife stehen fortgesetzt.
Das war jetzt ein harter Schlag Theorie, versucht diesen bitte erst zu verstehen bevor
ihr weiter macht.
Do-Schleife
Die Do-Schleife ist eine fußgesteuerte Schleife.
Syntax:
Do
[Anweisungen]
[Anweisungen]
LpWhile [Bedingung]
Erklärung zum Syntax: Jede Do-Schleife beginnt mit dem Befehl Do. Danach können soviele
Anweisungen folgen, wie ihr braucht. Mit dem Befehl LpWhile schließt ihr die Schleife, achtet
aber darauf, dass die Bedingung direkt hinter dem LpWhile kommt, ohne Neuzeilenbefehl.
Was für Anweisungen in der Schleife stehen ist egal. Die Bedingung wird mit
Verhältnisoperatoren und / oder logischen Ausdrücken formuliert. Das Beispiel dürfte restliche
Fragen klären.
Beispiel: Es ist ein Counter von 99 bis 0 zu erstellen!
Syntax:
99
A
Do
Locate 10,3,A
(A-1)
A
Lpwhile A>-1
Stop
Erklärung: Zuerst wird die Variable auf 99 gesetzt, danach die Schleife geöffnet.
Der Befehl Locate sorgt dafür, dass der Wert unserer Variable auch immer geschrieben wird, denn
würden wir unsere Variable einfach ohne das Locate hincoden, würde die Zahl nicht erscheinen.
Wenn der Wert angezeigt wurde, wird er um 1 gesenkt. In der Bedingung wird geprüft, ob der Wert
größer als -1 ist, denn somit wird nur bis 0 runter gezählt. Stop beendet das Prog.
While-Schleife
Die While-Schleife ist eine kopfgesteuerte Schleife.
Syntax:
While [Bedingung]
[Anweisungen]
[Anweisungen]
WhileEnd
Erklärung zum Syntax: Jede While-Schleife beginnt mit dem Befehl While und der Bedingung.
Achtet aber darauf, dass die Bedingung direkt hinter dem While steht, ohne Neuzeilenbefehl.
Danach können soviele Anweisungen folgen, wie ihr braucht. Mit dem Befehl WhileEnd schließt
ihr die Schleife.
Was für Anweisungen in der Schleife stehen ist egal. Die Bedingung wird mit
Verhältnisoperatoren und / oder logischen Ausdrücken formuliert. Das Beispiel dürfte restliche
Fragen klären.
Beispiel: Es ist ein Counter von 99 bis 0 zu erstellen!
Syntax:
99
A
While A>-1
Locate 10,3,A
(A-1)
A
WhileEnd 
Stop
Erklärung: Zuerst wird die Variable auf 99 gesetzt, danach die Schleife geöffnet. In der
Bedingung wird geprüft, ob der Wert
größer als -1 ist, denn somit wird nur bis 0 runter gezählt.
Der Befehl Locate sorgt dafür, dass der Wert unserer Variable auch immer geschrieben wird, denn
würden wir unsere Variable einfach ohne das Locate hincoden, würde die Zahl nicht erscheinen.
Wenn der Wert angezeigt wurde, wird er um 1 gesenkt. Nach Durchlauf der Schleife springt das Prog
wieder Zum Anfang der Schleife und prüft die Bedingung. Stop beendet das Prog.
Achtung: Alle, die jetzt durch die Beispiele verwirrt sind: Der Unterschied der kopf- und
fußgesteuerten Schleifen besteht darin, dass die fußgesteuerte Schleife mindesten 1mal
durchlaufen wird, da die Bedingung am Ende der Schleife steht. Die kopfgesteuerte Schleife wird
jedoch nur durchlaufen, wenn die Bedingung wahr ist, d.h. die Schleife muss nicht durchlaufen
werden.
For to Next-Schleifen
Die For to Next-Schleife ist eine Zählschleife. Ihr legt vorher fest wievielmal die Schleife
durchlaufen wird. Um die Durchläufe zu zählen, wird eine Steuervariable benötigt. Diese Variable
könnt ihr auch in euren Schleifeninternen Anweisungen benutzen.
Syntax:
For [Startwert]
[Seuervariable] To [Endwert] Step [Schrittweite]
[Anweisungen]
[Anweisungen]
Next
Erklärung: Mit For beginnt die Schleife. Direkt danch wird die Steuervariable mit dem
Startwert definiert. Der Startwert ist der Wert, vondem an die Schleife zählen soll. Nach dem
Befehl To kommt der Endwert, bei dem die Schleife mit zählen aufhören soll. Der Befehl Step gibt
die Schrittweite an, d.h. um welchen Wert der Startwert addiert werden soll (bei rückwärts
zählenden Schleifen muss die Schrittweite negativ sein).
Lasst ihr den Befehl Step weg, so ist die Schrittweite automatisch 1. Nach der ersten Zeile
kommen eure Anweisungen, wovon ihr wieder soviele wie ihr brauch reinschreiben könnt. Beendet
wird die Schleife mit dem Befehl Next.
Beispiel: Die Zahl 33 soll 5 mal quadriert werden und die
Ergebnisse sind untereinander anzuzeigen.
Syntax:
Erklärung: Zuerst wird die Variable B definiert und danach die Schleife geöffnet. Da die
Schleife fünf mal durchlaufen werden soll wird als Endwert 5 gewählt. Da die Schrittweite 1 ist,
muss Step nicht angegeben werden. Nun wird B quadriert und das Ergebniss als B gespeichert.
In der nächsten Zeile wird die Steuervariable gleich genutzt, um die Ergebnisse jedes mal auf
eine neue Zeile zu schreiben. Mit Next wird die Schleife geschlossen.
Schleifen unterbrechen
Die Ausführung von Schleifen kann auch ohne die Bedingung unterbrochen werden. Ist in der
Schleife zum Beispiel eine Bedingungsabfrage, bei der die Schleife sofort abbrechen muss, ohne
weitere in der Schleife stehende Anweisungen auszuführen, wird ein "Ausgang" in die Schleife
programmiert.
Dies ist nichts weiteres als ein Goto Befehl der auf eine Sprungmarke außerhalb der Schleife
verweist. Und schon ist man draußen.
Es gibt auch noch den Befehl Break, mit dem eine Schleife unterbrochen werden kann,
dies ist jedoch kein schöner Befehl, denn mit Goto ~ Lbl ist
ein Prog viel sauberer programmiert. Deswegen verwenden wir Goto ~ Lbl und nicht den Break-Befehl.