< Kurs:Algorithmen und Datenstrukturen < Vorlesung


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.

This article is issued from Wikiversity. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.