22.08.2013 Aufrufe

Grundlagen der Informatik I “Programmierung”

Grundlagen der Informatik I “Programmierung”

Grundlagen der Informatik I “Programmierung”

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!