Fakultätsfunktion als imperativer Algorithmus
[Bearbeiten]
Im Folgenden werden wir die Fakultätsfunktion als imperativen Algorithmus entwerfen.
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
Das bedeutet
- ...
Damit gilt
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!
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.