2.2.1.9. Kontrollstrukturen: Schleifen |
![]() |
Neben den bedingten Anweisungen gibt es in der Programmierung
eine weitere wichtige Kontrollanweisung: die Programmschleifen. Darunter versteht man eine
Folge von Aktionen oder Teilprogrammen, die physisch nur einmal im Programmcode vorhanden
ist, und so lange wiederholt und durchlaufen wird, bis eine Bedingung (ein
Abbruchskriterium) erfüllt ist. Ist ein solches Abbruchskriterium nicht vorhanden, kommt
es zu einer so genannten "Endlosschleife", einem typischen Programmfehler: Die
Folge von Bedingungen wird unendlich oft wiederholt und findet keinen Abschluss.
In TI-85 BASIC können Schleifen grundsätzlich auch durch eine Zusammenanwendung
der Befehle "goto" und
"if- then" ersetzt werden.
Schleifen gelten jedoch als "besserer Programmierstil", machen das Programm
übersichtlicher und lassen sich in Struktogrammen besser darstellen.
Eine Schleife besteht grundsätzlich aus einer Abbruchbedingung, die den Ein- und Austritt in bzw. aus der Schleife bestimmt, und einem Schleifenkörper (Schleifenrumpf), der die zu wiederholenden Befehle und Anweisungen enthält.
In der Programmierung unterscheidet man 3 grundsätzliche Schleifentypen:
- Zählschleifen (auch "For- Schleifen" genannt),
- Schleifen mit vorangestellter Bedingungsprüfung ("While- Schleifen") und
- Schleifen mit nachgestellter Bedingungsprüfung.
In Zählschleifen wird eine beliebige Variable (keine
Systemvariable) von einem Startwert ausgehend bei jedem Schleifendurchlauf um 1 (oder
einen anderen Wert) erhöht. Als Abbruchbedingung dient ein bestimmter Wert, den die zu
inkrementierende Variable überschreiten muss, um die Schleife zu beenden. Solange der
Endwert noch nicht überschritten ist, werden die Anweisungen im Schleifenkörper
ausgeführt.
Die Anzahl der Schleifendurchläufe muss vor dem Eintritt in den Schleifenkörper
bekannt sein, sonst kommt es zu einem Programmfehler. Außerdem sollte der Wert der zu
inkrementierenden Variablen innerhalb des Schleifenkörpers nicht durch Anweisungen oder
Befehle geändert werden, obwohl dies möglich.
Das Schlüsselwort für eine Zählschleife ist in den meisten höheren
Programmiersprachen "For".
Struktogrammdarstellung von Zählschleifen
In TI-85 BASIC werden Zählschleifen folgendermaßen verwendent:
|
Der Anfangswert kann beliebig gewählt werden. Ist er
größer als der Endwert, so muss das Inkrement negativ sein, damit die Variable
"heruntergezählt" wird. Die Angabe eines Inkrements ist nicht unbedingt
notwendig. Der Standartwert liegt bei 1 und wird verwendet, wenn kein anderer Wert
angegeben wird.
Am Ende des Schleifenkörpers muss auf jeden Fall ein "End" stehen, um das Ende der zu
wiederholenden Anweisungen zu markieren.
For- Schleifen können beliebig verschachtelt werden, d.h. im Schleifenkörper kann wieder eine For- Schleife stehen usw.
Beispiel:
|
|||||||||||||||||||||||||
|
|||||||||||||||||||||||||
|
Bedingte Schleifen
Entsprechend der Stelle, an der die Abbruchsbedingung überprüft wird, unterscheidet man 2 Typen von bedingten Schleifen: Solche mit vorangestellter Bedingungsprüfung ("While- Schleifen") und Schleifen mit nachgestellter Bedingungsprüfung ("Repeat- Schleifen"). Diese Schleifentypen sind im reinen BASIC in dieser Form nicht vorhanden, existieren aber in TI-85 BASIC.
Schleifen mit vorangestellter Bedingungsprüfung
Bei diesem Schleifentyp wird vor jeder Wiederholung eine
Bedingung überprüft. Solange diese Bedingung wahr (ungleich 0) ist, werden die
Anweisungen im Schleifenkörper ausgeführt. Ist die Bedingung von Beginn an nicht
erfüllt, so wird der Schleifenkörper nicht durchlaufen und kein einziges Mal
ausgeführt. In diesem Fall liegt eine so genannte "Leerschleife" vor. Das
Schlüsselwort, das eine Schleife mit vorangestellter Bedinungsprüfung definiert ist
"While". Dies bedeutet
soviel, wie "solange Bedingung wahr ist, wiederhole...".
Eine While- Schleife kann immer eine For- Schleife ersetzen, wenn man im
Schleifenkörper einen Zähler einbaut. Auch sonst sind beide Schleifentypen ähnlich:
Auch am Ende des Schleifenkörpers einer While- Schleife muss unbedingt ein "End" stehen und sie können ebenfalls
verschachtelt werden.
Struktogrammdarstellung von While- Schleifen
In TI-85 BASIC werden While- Schleifen folgendermaßen verwendent:
|
Beispiel:
|
||||||||||||||||||||||
|
Schleifen mit nachgestellter Bedingungsprüfung
Im Gegensatz zu den While- Schleifen wird bei diesem
Schleifentyp die Bedingung erst nach Ausführung des Schleifenkörpers ausgewertet, die
darin enthaltenen Anweisungen werden somit mindestens einmal ausgeführt. Eine
Leerschleife ist deswegen nicht möglich. Die mit dem Schlüsselwort "repeat" definierten Schleifen werden solange
wiederholt, bis die Bedingung wahr (ungleich 0) wird.
Auch Repeat- Schleifen können verschachtelt werden.
Struktogrammdarstellung von Repeat- Schleifen
Die Darstellung von Repeat- Schleifen erfolgt in TI-85 BASIC folgendermaßen:
|
Beispiel:
|
||||||||||||||||||||||
|
Hinweis: Grundsätzlich kann jeder Schleifentyp einen anderen ersetzen und es ist durchaus möglich fast alle Programme unter Verwendung von nur einem Schleifentyp zu schreiben. Dennoch sollte man im Hinblick auf Effektivität versuchen immer, den am besten geeignetesten Typ von Schleife zu verwenden. Dies verlangt weniger Tippaufwand und spart Speicherplatz.