Die Schleife mit Eintrittsprüfung (kopfgesteuerte oder abweisende Schleife, pre-checked loop) prüft zunächst die Eintrittsbedingung. Das Ergebnis der Prüfung entscheidet, ob die nachfolgenden Anweisungen des Schleifenkörpers (engl. body) ausgeführt oder übersprungen werden soll. Nach einem Ausführen des Schleifenkörpers erfolgt ein Rücksprung zur Überprüfung der Eintrittsbedingung, die jetzt als Fortsetzungsbedingung wirkt. Der Körper der Schleife kann aus einer einzigen oder auch aus mehreren Anweisungen bestehen. Die Überprüfung vor jeder Ausführung bedingt, daß der Schleifenkörper möglicherweise übersprungen, also kein einziges Mal ausgeführt wird. Zu diesem Schleifentyp zählen die Zähl- und DO WHILE-Schleifen im Fortran95-Standard (siehe Kap. 4).
Beispiel: Lesen und Zählen von positiven Meßwerten bis zum ersten nicht positiven Wert (Schlußsignal).
Als Struktogramm schreibt man solche Schleifen:
anzahl = 0 | |||||
E(T): Meßwert | |||||
Meßwert ![]() |
|||||
anzahl = anzahl + 1 | |||||
E(T): Meßwert | |||||
A(B): anzahl |
Der linke freibleibende Streifen deutet den Rücksprung zur Überprüfung der Eintrittsbedingung oder das mögliche Überspringen des Schleifenkörpers an.
Bei der Schleife mit Austrittsprüfung (endgesteuerte oder nichtabweisende Schleife, post-checked loop) wird zuerst der Schleifenkörper ausgeführt, danach die Austritts- oder Abbruchbedingung überprüft. Das Ergebnis der Prüfung entscheidet, ob die Schleife verlassen wird oder ein Rücksprung zum Beginn des Schleifenkörpers erfolgt. Die Überprüfung am Ende der Schleife bedingt, daß der Schleifenkörper in jedem Fall mindestens einmal ausgeführt wird.
Beispiel: Die Anweisung
läßt sich als Struktogramm verfeinern zu
A(B): Aufforderung | ||||
E(T): Zeichen | ||||
Zeichen ist gültiger Auswahlbuchstabe |
Die Zählschleife ist eine besondere Form der Schleife mit Eintrittsprüfung. Die Bedingung ist durch einen Zählbereich gegeben, den eine Lauf- oder Zählvariable systematisch durchlaufen soll. Für jeden gültigen Wert des Zählbereichs soll der Schleifenkörper einmal ausgeführt werden. Zählbereiche sind zunächst einmal Bereiche der ganzen Zahlen, beispielsweise ,,von 1 bis 3`` oder ,,von -5 bis -1``, wobei der Zuwachs ohne weitere Angabe +1 ist. Der Zuwachs kann aber beliebige (auch negative) ganzzahlige Werte annehmen, z.B. ,,von -6 bis +2 mit Zuwachs +2``.
Andere Zählbereiche oder aufzählbare Bereiche hängen von der verwendeten Programmiersprache ab. So ist in Pascal ,,die Buchstaben von A bis Z`` möglich. In Fortran95 können jedoch nur ganze Zahlen verwendet werden. Der Zuwachs ist stets +1, falls nichts anderes angegeben wird; er kann auch eine reelle Zahl sein: ,,von 2.47 bis -13.6 mit Zuwachs -4.227`` .
Das Vorzeichen des Zuwachses ist wichtig, da es anzeigt, ob der Schleifenzähler aufwärts (Zuwachs positiv) oder abwärts (Zuwachs negativ) durchlaufen wird. Steht nämlich ,,von 1 bis n`` da, und n ist null, so brauchen wir die Klarstellung, ob es sich um ,,1 bis n mit Zuwachs -1`` handelt -- dann wird der Schleifenkörper zweimal ausgeführt oder um ,,1 bis n mit Zuwachs +1`` -- dann wird der Schleifenkörper übersprungen.
Der Zählbereich wird für die Laufvariable i, wobei ,,i von n bis m mit Zuwachs k`` gehen soll, als
Wie bereits erwähnt, sind solche Schleifen in Fortran95 Schleifen mit Eintrittsbedingung, da der Zählindex vor den Durchlaufen der Zählschleife überprüft wird.
Beispiel: Berechnen und Drucken des Skalarproduktes s der
beiden Vektoren
und
nach der Formel
.
![]() |
|||||
![]() |
|||||
![]() |
|||||
A(B): s |
Die Vorsichtsmaßnahmen beim Programmieren von Schleifen sollen helfen, die folgenden simplen Fragen sicher zu beantworten:
Die Wichtigkeit der Initialisierung sehen wir an zwei
der drei obigen
Beispiele: Bevor mit dem Abzählen von Meßwerten begonnen werden
kann, muß die Variable auf
null gesetzt werden; das Gleiche gilt für die Variable s, bevor die
Aufsummierung des Skalarprodukts beginnen kann.
Um die Korrektheit einer Schleife zu beweisen, gibt es die Methode der Programm-Verifikation. Dabei läßt sich mittels geschickt ausgewählter Zusicherungen (engl. assertions) für bestimmte Stellen des Programms zusammen mit den dazwischen liegenden Anweisungen die Korrektheit in der Art eines mathematischen Beweises folgern. Wir können hier auf diese für ein gründliches Informatikstudium unerläßliche Methode nicht eingehen.
In ähnlicher Weise läßt sich auch die Terminierung zeigen. Diese muß eigens bewiesen werden, denn eine Schleife -- beispielsweise das Suchen in einer Tabelle -- kann das korrekte Ergebnis liefern und dennoch endlos weiterlaufen.