Schleifenstrukturen


Die Schleifenstruktur
WHILE <C> DO <S> END
prüft wiederholt die Bedingung <C> und führt dann jeweils die Anweisungsfolge <S> aus; sobald <C> nicht erfüllt ist, wird die Schleife verlassen. Ist <C> bereits beim ersten Mal nicht erfüllt, so wird <S> gar nicht ausgeführt (abweisende Schleife).

Modula bietet aus Bequemlichkeitsgründen weitere Schleifenstrukturen  an, obwohl die beschriebene WHILE-Schleife im Prinzip ausreichend ist; sie ist auch am einfachsten zu verifizieren.

Die Konstruktion

REPEAT <S> UNTIL <C>
ist gleichbedeutend mit
<S> ; WHILE NOT <C> DO <S> END
Die Anweisungsfolge <S> wird also auf jeden Fall mindestens einmal ausgeführt (annehmende Schleife).

Darüberhinaus gibt es noch die Zählschleife und die allgemeine Schleife.

Übrigens ist die Folge

WHILE <C> DO <S1> END ; <S2>
in der Auswirkung gleichbedeutend zu einem Aufruf der parameterlosen (rekursiven) Prozedur:
  PROCEDURE Schleife;
  BEGIN IF <C> THEN <S1> ; Schleife
        ELSE <S2>
        END
  END Schleife;
Das Schleifenkonstrukt ist also prinzipiell überflüssig, sobald man rekursive Prozeduren zur Verfügung hat. Umgekehrt lassen sich nach demselben Schema gebaute "rechts-rekursive" Prozeduren in Schleifen umwandeln (Entrekursivierung).


zurück | Inhalt | Index | vor | Vorlesung

Klaus Lagally, 22. Februar 2000, 19:36