Fakultätsfunktion als imperativer Algorithmus
Im Folgenden werden wir die Fakultätsfunktion als imperativen Algorithmus entwerfen.
Hintergrundwissen
Fakultätsfunktion:
Es ist:
Falls die Bedingung der while-Schleife lautet, dann ist:
Gesucht ist das Ergebnis des Aufrufs FAC(3).
Die Abkürzung der while für die Zeile ist
Die Signatur der Semantikfunktion ist
Die Funktion ist durch Lesen von Y im Endzustand Z definiert
Der Endzustand ist definiert durch
, wobei die Folge aller Anweisungen des Algorithmus ist.
Der initiale Zustand ist definiert als
Die Zustände abkürzend ohne Variablennamen sind
Die Auswertung
Schlussfolgerung
Das bedeutet
- ...
Damit gilt
Beobachtungen
Der Übergang von der 3. auf die 4. Zeile folgt der Definition der Sequenz, indem der Sequenzoperator in einen geschachtelten Funktionsaufruf umgesetzt wird. Nur in der 5. Zeile wurde eine Wertzuweisung formal umgesetzt,später sind sie einfach verkürzt direkt ausgerechnet. In der 7. Zeile haben wir die Originaldefinition der Iteration eingesetzt (nur mit Kürzel α' statt α, da α bereits verwendet wurde). Dies entspricht im Beispiel α' = {Y:= Y · X; X:= X - 1}. Das Z in der 7. und 8. Zeile steht für den Zustand (3,1). (In späteren Zeilen analog für den jeweils aktuellen Zustand.)Bei diesem Beispiel sieht man folgendes sehr deutlich: Die Ausführung einer while-Schleife erfolgt analog zur rekursiven Funktionsdefinition!
Literatur
Da die Vorlesungsinhalte auf dem Buch Algorithmen und Datenstrukturen: Eine Einführung mit Java von Gunter Saake und Kai-Uwe Sattler aufbauen, empfiehlt sich dieses Buch um das hier vorgestellte Wissen zu vertiefen. Die auf dieser Seite behandelten Inhalte sind in Kapitel 3.3.3 zu finden.