Читать книгу Algorithmen und Datenstrukturen - Gunter Saake - Страница 35

Varianten der Iteration

Оглавление

Die bisherige Schleifenvariante hat jeweils den Schleifenrumpf ausgeführt, um danach zu testen, ob sie eine weitere Iteration durchführt oder die Schleife abbricht. Der Schleifenrumpf wird somit mindestens einmal durchlaufen. Eine andere verbreitete Notation führt diesen Test am Beginn jeden Durchlaufs durch:

solange Bedingung

führe aus Schritte

While-Schleife

Nach der englischen Übersetzung des Schlüsselwortes ist diese Variante insbesondere unter dem Namen While-Schleife bekannt. Ein Beispiel für den Einsatz der While-Schleife zeigt folgender Algorithmus:

/* Bestimmung der größten Zahl einer Liste */

Setze erste Zahl als bislang größte Zahl;

solange Liste nicht erschöpft

führe aus

Lies nächste Zahl der Liste;

falls diese Zahl > bislang größte Zahl

dann setze diese Zahl als bislang größte Zahl;

gebe bislang größte Zahl aus

Bei While-Schleifen kann der Fall auftreten, dass der Schleifenrumpf keinmal ausgeführt wird, da die Abbruchbedingung bereits vor dem ersten Durchlauf zutrifft.

Iteration über festen Bereich

Die letzte verbreitete Variante ist die Iteration über einen festen Bereich, zum Beispiel über einen Zahlenbereich. Wir notieren diesen Fall wie folgt:

wiederhole für Bereichsangabe

Schleifenrumpf

For-Schleife

Nach dem englischen Schlüsselwort sind derartige Schleifen als For-Schleifen bekannt. Typische Bereichsangaben wären z.B. »jede Zahl zwischen 1 und 100«, »jedes Wagenrad«, »jeden Hörer der Vorlesung«. Der Bereich, und somit die Zahl der Ausführungen des Schleifenrumpfs, ist – im Gegensatz zu den bisher diskutierten Varianten – bei Beginn der Schleifenausführung festgelegt.

Die vorgestellten Schleifenkonstrukte entsprechen wieder jeweils Programmiersprachenkonstrukten:

wiederhole ... bis repeat ... until ...

do ... while not ...

solange ... führe aus while ... do ...

while (...) ...

wiederhole für for each ... do ...

for ... do ...

for (...) ...

Bei der Umsetzung von wiederhole... bis mit einem do-while-Konstrukt ist jedoch zu beachten, dass dabei die Bedingung negiert wird, da erstere Variante eine Abbruchbedingung erwartet, während bei der letzteren die Schleife so lange ausgeführt wird, wie die Bedingung erfüllt ist.

Algorithmen und Datenstrukturen

Подняться наверх