Kurs:Algorithmen und Datenstrukturen/Vorlesung/Syntax und Semantik

Aus testwiki
Version vom 8. November 2016, 10:54 Uhr von 2a02:810b:400:2c00:891c:755f:bd06:5929 (Diskussion) (Semantik)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Vorlage:Navigationsleiste/Algorithmen und Datenstrukturen

Syntax und Semantik

In diesem Kapitel wird die Syntax und Semantik von imperativen Algorithmen behandelt.

Umsetzung in Programmiersprachen

In realen imperativen Programmiersprachen gibt es fast immer diese Anweisungen, da imperative Algorithmen die Grundbausteine imperativer Programmiersprachen sind. While-Schleifen sind rekursiv definiert, ihre rekursive Auswertung braucht nicht zu terminieren. Bereits Programmiersprachen mit diesen Sprachelementen sind universell. Wir werden uns hier zunächst auf die Datentypen bool und int beschränken und können nun die Syntax imperativer Algorithmen festlegen.

Syntax

<Programmname>:
var X,Y,...:int; P,Q,...:bool; (Variablen Deklaration)
input X1,...,Xn; (Eingabe Variablen)
α   (Anweisungen)
output Y1,...,Ym (Ausgabe-Variablen)

Semantik

Die Festlegung der formalen Bedeutung ist hier etwas komplexer als bei den funktionalen Algorithmen. Das Ziel ist aber das gleiche: Die Funktion zur Semantikfestlegung.

Die Bedeutung (Semantik) eines imperativen Algorithmus ist eine partielle Funktion:

[[PROG]]W1...WnV1...Vm

[[PROG]](w1,...,wn)=(Z(Y1),...,Z(Ym))

wobeiZ=[[α]](Z0),
Zo(Xi)=wi,i=1,..,n
undZ0(Y)=,fuerVariablenYXi(i=1,...,n)

Es gilt:

PROG Programme
W1,...,Wn Wertebereich der Typen von X1,...,Xn
V1,...,Vm Wertebereich der Typen von Y1,...,Ym

Das bedeutet, dass der Algorithmus eine Transformation auf den gesamten initialen Zustand (geg. durch die Eingabe)definiert. Die Bedeutung gibt die Werte der Ausgabevariablen an.

[[PROG]](w1,...,wn)=Z(Y1,...,Z(Ym))

wobeiZ=[[α]](Z0),
Zo(Xi)=wi,i=1,..,n
undZ0(Y)=,fuerVariablenYXi(i=1,...,n)

Die Funktion Z ist nicht definiert, falls die Auswertung von α nicht terminiert.

Charakterisierung

Die Algorithmenausführung imperativer Algorithmen besteht aus einer Folge von Basisschritten, oder genauer gesagt Wertzuweisungen. Diese Folge wird mittels Selektion und Iteration basierend auf booleschen Tests über dem Zustand konstruiert. Jeder Basisschritt definiert eine Transformation des Zustands. Die Semantik des Algorithmus ist durch die Kombination all dieser Zustandstransformationen zu einer Gesamttransformation festgelegt.

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.2 zu finden.


Discussion