Index

Erstellen einfacher Programme

2. Algorithmen (5)


Iteration 1 - Repeat

Bei Eingaben von Daten durch einen Anwender müssen diese häufig verifiziert, d.h. auf ihre Gültigkeit überprüft werden. Angenommen es ist eine Frage mit Ja oder Nein zu beantworten, so soll häufig mit dem Zeichen "J" für Ja und "N" für Nein geantwortet werden.Wenn nun der Anwender ein anderes Zeichen eingibt, muss dieses als ungültig zurückgewiesen werden und die Eingabe erneut angefordert werden, um den weiteren (sinnvollen) Ablauf des Programmes zu ermöglichen.

Der mögliche Ablauf könnte also folgendermaßen aussehen:

Lies Zeichen
Falls (Zeichen nicht = "J" und Zeichen nicht = "N")
dann Lies Zeichen
falls (Zeichen nicht = "J" und Zeichen nicht = "N")
dann Lies Zeichen
...

Nun ist natürlich unbekannt, wie oft ein Anwender falsche Zeichen eingibt. Daher wissen wir auch nicht, wie viele solcher Abfragen nötig sind, um allen Situationen gewappnet zu sein. Man erkennt also, dass die Selektion alleine für eine endliche Ablaufsteuerung von Algorithmen nicht ausreichend ist. Man benötigt ein Mittel um einzelne Schritte beliebig oft wiederholen zu können. Hierzu wird für Algorithmen eine Struktur der Art wiederhole ... bis <Ziel erreicht> eingeführt.

Damit lässt sich obiger Algorithmus folgendermaßen formulieren:

Wiederhole
Lies Zeichen
bis (Zeichen = "J" oder Zeichen = "N")

Das Beispiel demonstriert die Form einer Wiederholung (Iteration). Man bezeichnet Iterationen auch als Schleifen. Die allgemeine Form der dargestellten Iteration ist:

Wiederhole
Anweisung
bis Bedingung (erfüllt)

Die Anweisung zwischen Wiederhole (repeat)und bis (until) heißt Schleifenkörper, die Bedingung nach bis heißt auch Abbruchbedingung, da sie festlegt, wann eine weitere Wiederholung der Schleife abgebrochen wird.

Flussdiagramm: Repeat Struktogramm: Repeat

In einem weiteren Beispiel 2 soll die Funktion der Repeat-Schleife nähergebracht werden. Die Aufgabenstellung ist das Übersetzen einer Zahl aus der Dezimaldarstellung in die Dualdarstellung.

Ein sehr berühmter Algorithmus zur Bestimmung des ggT zweier Zahlen a und b wurde bereits 300 Jahre vor Christi Geburt von Euklid entwickelt.

Im folgenden Beispiel 3 soll ein Roboter jeweils einen "Schritt" vorwärts weitergehen, bis er eine Wand trifft. Formuliere den Algorithmus! [Lösung a]

Die aufgezeigte Lösung liefert im Falle, dass der Roboter bereits vor einer Wand steht, nicht den gewünschten Ablauf. Dies liegt daran, dass die Anweisung, in diesem Fall "einen Schritt vorwärts zu gehen", unter allen Umständen ausgeführt wird, also auch wenn der Roboter schon vor der Wand steht. Es wäre also vorab schon eine Überprüfung nötig, ob der Schritt überhaupt ausgeführt werden darf. Formuliere auch hierfür einen Algorithmus! [Lösung b]

[Index] [Zurück/Algorithmen 4] [Fortsetzung/Algorithmen 6]


Autor: Jürgen Dehmer
Letzte Änderung: 21. Februar 2000