Kurs:Algorithmen und Datenstrukturen/Vorlesung/Fakultätsfunktion

Aus Wikiversity




Fakultätsfunktion als imperativer Algorithmus[Bearbeiten]

Im Folgenden werden wir die Fakultätsfunktion als imperativen Algorithmus entwerfen.

Hintergrundwissen[Bearbeiten]

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[Bearbeiten]

Schlussfolgerung[Bearbeiten]

Das bedeutet

...

Damit gilt


Beobachtungen[Bearbeiten]

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[Bearbeiten]

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.


Discussion