Zum Inhalt springen

Kurs:Algorithmen und Datenstrukturen/Vorlesung/Anweisungen

Aus Wikiversity




Anweisungen

[Bearbeiten]

In diesem Kapitel behandelt wir das Thema Anweisungen.

Arten von Anweisungen

[Bearbeiten]

Dabei unterscheiden wir in zwei verschiedene Anweisungsarten. Zum einen die elementaren Anweisungen wie Wertezuweisungen und zum anderen die komplexen Anweisungen.

Semantik einer Anweisung

[Bearbeiten]

Funktion, die einen Zustand in einen neuen Zustand überführt. [[α]](z)

Allgemein gesagt ist es die Wirkungsweise von α auf den Zustand Z

Beispiele Zuweisung als Anweisung

[Bearbeiten]

Beispiel 1

[Bearbeiten]

Ein Beispiel ist die Wertezuweisung:

α1=(X:=2Y+1)

α1 ist eine elementare Anweisung

Diese Wertezuweisung transformiert in eine Funktion auf Zustände sieht wie folgt aus:

[[α1]](Z)=ZX2Z(Y)+1

Die Zuweisung berechnet den neuen Zustand.

Der alte Zustand ist Z und der neue Zustand ist [[α1]](Z)

Beispiel 2

[Bearbeiten]

Ein weiteres Beispiel ist die Zuweisung mit gleichen Variablen auf beiden Seiten.

α1=X:=2X+1

Die Transformation in eine Funktion auf Zustände lautet:

[[α1]](Z)=ZX2Z(X)+1

Bei der letzten Anweisung handelt es sich nicht um eine rekursive Gleichung! An dieser Stelle sei vermerkt, dass Wertezuweisungen die einzigen elementaren Anweisungen sind.

Komplexe Anweisungen

[Bearbeiten]

Bisher haben wir elementare Anweisungen (Wertzuweisungen) als Funktionen auf Zustände verstanden. Komplexe Anweisungen nehmen Konstrukte bzw. Bausteine von imperativen Algorithmen. Diese Bausteine sind

  1. Sequenz
  2. Auswahl/Selektion
  3. Iteration

Die Semantik wird wiederum durch Konstruktion von Funktionen definiert. Iteration ist das Gegenstück zu rekursiven Funktionsaufrufen bei funktionalen Algorithmen

Sequenz

[Bearbeiten]

Sequenzen, oder auch Folgen, sind α1 und α2 Anweisungen, so ist α1;α2; auch eine Anweisung. Die Zustandstransformation beschreibt die Semantik der Sequenz.

[[α1;α2]](Z)=[[α2]]([[α1]](Z))

Die Semantik ist das Schachteln der Funktionsaufrufe und das daraus folgende hintereinander ausführen der beiden Funktionen.

Selektion

[Bearbeiten]

Eine Selektion, bzw. eine Auswahl, liegt beispielsweise vor, wenn α1 und α2 Anweisungen sind und B ein boolescher Ausdruck ist, dann ist auch

ifBthenα1elseα2

eine Anweisung.

Die zugehörige Zustandstransformation ist: [[ifBthenα1elseα2]](Z)={[[α1]](Z)fallsZ(B)=true[[α2]](Z)fallsZ(B)=false

Voraussetzung ist, dass Z(B) definiert ist, sonst ist die Bedeutung der Auswahlanweisung undefiniert.

Iteration

[Bearbeiten]

Wiederholung (Iteration, Schleife):

Ist α eine Anweisung und B ein boolescher Ausdruck, so ist:
while B do α
auch eine Anweisung

Zustandstransformation: [[whileBdoα]](Z)={ZfallsZ(B)=false[[whileBdoα]]([[α]](Z))sonst

Ist Z(B) undefiniert, so ist die Bedeutung dieser Anweisung ebenfalls undefiniert.

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.1 und 3.3.2 zu finden.


Discussion