Grundlagen der Informatik I “Programmierung”
Grundlagen der Informatik I “Programmierung”
Grundlagen der Informatik I “Programmierung”
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Wichtig ist, daß die Auswahl des Wertes aus dem Bereich frei ist, aber dann innerhalb des Ausdruckes festliegt.<br />
Zuweilen ist die let-Schreibweise etwas unübersichtlich, wenn <strong>der</strong> Teilausdruck so groß ist, daß er die eigentliche<br />
Funktionsdefinition in den Hintergrund drängt. In diesem Fall schreibt man<br />
Ausdruck where x=Teilausdruck statt let x=Teilausdruck in Ausdruck<br />
und Ausdruck where x ∈Bereich statt let x ∈Bereich in Ausdruck<br />
2.3.4 Tabellen<br />
Tabellen wurden bereits im Abschnitt 2.1.3 (siehe Seite 36) verwendet um die Belegung logischer Variablen<br />
zu beschreiben. Darüberhinaus benötigt man sie zur Erklärung <strong>der</strong> Bedeutung von Bezeichnern einer Programmiersprache,<br />
zur Charakterisierung des Speichers usw. Daher ist es sinnvoll, den Begriff <strong>der</strong> Tabelle und<br />
die hierbei verwendeten Notationen näher zu erklären. Im Prinzip ist eine Tabelle nichts an<strong>der</strong>es als eine<br />
Funktion, die nur auf endlich vielen Argumenten definiert ist, also einen endlichen Domain hat:<br />
tab : Argumenttyp → Werttyp<br />
Im Gegensatz zu Funktionen, die auf unendlich vielen Argumenten definiert sind, lassen sich endliche Funktionen<br />
durch ihren Graphen o<strong>der</strong> eine Wertetabelle beschreiben (daher <strong>der</strong> Name). Jedem gegebenen Argument<br />
arg ordnet die Tabelle einen Wert aus dem Wertebereich zu. Die Argumente werden links, die Werte rechts<br />
aufgelistet.<br />
Beispiel 2.3.3<br />
Die Funktion fak5:IN→IN sei die Funktion, welche auf den Argumenten 1..5 die Fakultät angibt:<br />
Definitionsbereich Wertebereich<br />
1 1<br />
2 2<br />
3 6<br />
4 24<br />
5 120<br />
Den aus <strong>der</strong> Tabelle tab ersichtlichen Funktionswert wert eines Arguments arg beschreiben wir durch die bei<br />
Funktionen übliche Schreibweise: “tab(arg)=wert”. So ist also z.B. fak5(4)=24.<br />
Da <strong>der</strong> Domain einer Tabelle endlich ist, können wir ihn aufzählen. Die Funktion, die den Domain einer<br />
Tabelle bestimmt, nennen wir domain.<br />
Beispiel: domain(fak5) = {1,2,3,4,5}<br />
Der Test, ob die Tabelle tab für ein Argument arg definiert ist, entspricht <strong>der</strong> Frage, ob arg ein Element von<br />
domain(tab) ist und wird entsprechend mit arg ∈ domain(tab) ausgedrückt.<br />
Damit sind die allgemeinen Zugriffe auf eine gegebene Tabelle beschrieben. Darüberhinaus ist es aber auch<br />
nötig, Tabellen neu aufzubauen o<strong>der</strong> zu verän<strong>der</strong>n, wie z.B. bei einer Zustandstabelle für einen Speicher.<br />
Mit [] wird die leere Tabelle bezeichnet, also eine Tabelle mit domain([]) = {}. [] entspricht also einer<br />
nirgends definierten Funktion. Eine Tabelle, die aus einem einzigen Wertepaar (arg,wert) besteht, wird (zur<br />
besseren Unterscheidung gegenüber an<strong>der</strong>en Mengen von Paaren) durch [arg↦→wert] beschrieben. Der Pfeil<br />
soll dabei die Zuordnung symbolisieren. Diese Tabelle hat beim Argument arg den Wert wert und ist sonst<br />
undefiniert. Tabellen mit mehreren Einträgen werden als Folge von Einträgen dargestellt.<br />
Beispiel: fak5 = [1↦→1, 2↦→2, 3↦→6, 4↦→24, 5↦→120]<br />
Manchmal ist es nötig, eine Tabelle um weitere Einträge zu ergänzen, also eine Tabelle tab1 mit einer Tabelle<br />
tab2 zu verschmelzen. Da es aber prinzipiell möglich ist, daß beide Tabellen auf demselben Argument bereits<br />
definiert sind, aber verschiedene Werte an dieser Stelle haben, müssen wir festlegen, welcher von den beiden<br />
Einträgen nach <strong>der</strong> Verschmelzung noch gültig sein soll. Als Konvention hat sich bewährt, im Zweifel immer