22.08.2013 Aufrufe

Grundlagen der Informatik I “Programmierung”

Grundlagen der Informatik I “Programmierung”

Grundlagen der Informatik I “Programmierung”

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Für die Zuordnung zwischen <strong>der</strong> Objekten <strong>der</strong> Quellsprache und denen <strong>der</strong> Zielsprache benötigen wir wie<strong>der</strong>um<br />

eine Metasprache. Diese entspricht <strong>der</strong> BNF im Fall <strong>der</strong> Syntax. Deren Elemente werden wir jedoch nur<br />

insoweit einführen, als daß wir sie aktuell benötigen. Später, bei <strong>der</strong> Definition <strong>der</strong> Programmiersprache Eiffel,<br />

werden wir weitere Konstruktionselemente kennenlernen. Hier soll zunächst am Beispiel <strong>der</strong> Aussagenlogik<br />

die prinzipielle Vorgehensweise dargestellt werden.<br />

Im ersten Schritt definieren wir die Zielsprache. Wir führen zunächst die Objekte <strong>der</strong> Zielsprache ein:<br />

Ziel Wahrheitswerte = { wahr, falsch}<br />

Ziel Operatoren = { und, o<strong>der</strong>, nicht, impl, gleich }<br />

und legen weiter fest, daß für die Anwendung <strong>der</strong> Ziel Operatoren auf die Ziel Wahrheitswerte folgende Wertetabelle<br />

gelten soll. Dabei zeigt in <strong>der</strong> folgenden Tabelle jede Zeile für eine mögliche Wertekombination von<br />

b und c den Wert <strong>der</strong> fünf zielsprachlichen Operationen.<br />

b c (nicht b) (b und c) (b o<strong>der</strong> c) ( b impl c) (b gleich c)<br />

falsch falsch wahr falsch falsch wahr wahr<br />

falsch wahr wahr falsch wahr wahr falsch<br />

wahr falsch falsch falsch wahr falsch falsch<br />

wahr wahr falsch wahr wahr wahr wahr<br />

Abbildung 2.7: Wahrheitstafel für die Aussagenlogik<br />

Der Wert einer Aussage mit mehr als einem Operator wird dadurch bestimmt, daß obige Tabelle solange auf<br />

die Teilaussagen angewandt wird, bis die gesamte Aussage auf wahr o<strong>der</strong> falsch reduziert ist.<br />

Beispiel: ((wahr und falsch) o<strong>der</strong> (wahr und wahr)) ❀ (falsch o<strong>der</strong> wahr) ❀ wahr<br />

An dieser Stelle wird ’❀’ benutzt, um die sich aus <strong>der</strong> Wahrheitstafel ergebende Gleichheit zu beschreiben.<br />

❀ ist dabei kein Element <strong>der</strong> Sprache <strong>der</strong> Aussagenlogik. Da es aber nur endlich viele Symbole für die<br />

verschiedenen Gleichheiten gibt und meist ohnehin aus dem Kontext entscheidbar ist, welches gemeint ist,<br />

werden wir im folgenden statt ❀ immer = schreiben.<br />

Nun sind wir in <strong>der</strong> Lage, in <strong>der</strong> Zielsprache zu rechnen. Der nächste Schritt besteht darin, den Zusammenhang<br />

zwischen Ausdrücken <strong>der</strong> Quell- und denen <strong>der</strong> Zielsprache festzulegen.<br />

Hierzu benötigen wir zunächst den Begriff <strong>der</strong> Funktionalität. Die Funktionalität gibt an, welche Typen<br />

Objekte haben dürfen, auf die eine Funktion angewendet werden soll. Typen sind dabei Mengen. Ein Beispiel<br />

aus <strong>der</strong> Analysis möge dies einführen. Die Funktionalität <strong>der</strong> Wurzelfunktion kann beschrieben werden als:<br />

√ : Reelle-Zahl → Reelle-Zahl<br />

Dieser Ausdruck ist so zu interpretieren, daß √ eine Abbildung von Reelle-Zahl nach Reelle-Zahl ist. Es wird<br />

also gefor<strong>der</strong>t, daß die Funktion √ nur auf Elemente aus <strong>der</strong> Menge <strong>der</strong> reellen Zahlen angewendet werden<br />

darf. Ergebnis ist immer ein Element aus <strong>der</strong> Menge rechts des letzten Pfeils. Allgemeiner könnte man auch<br />

schreiben:<br />

√ : Reelle-Funktion → Reelle-Funktion<br />

Hier wäre Reelle-Funktion eine Funktion, die ihrerseits eine reelle Funktion als Ergebnis liefert. Diese Verallgemeinerung<br />

ist sinnvoll, da nur so beschrieben werden kann, daß Funktionen auf Funktionen angewendet<br />

werden dürfen. Ein Beispiel hierfür ist die Funktion 3 √ , die durch Anwendung <strong>der</strong> Funktion √ auf die Funk-<br />

tion 3 √ entsteht. Ein weiteres Beispiel ist die wohl bekannte Multiplikationsfunktion. Üblicherweise schreiben<br />

wir: a ∗ b = c, alternativ könnte man dies jedoch als mult(a, b) = c schreiben. Die erste Schreibweise bezeichnet<br />

man auch als Infix-Notation und die zweite als Prefix-Notation. mult ist eine zweistellige Funktion,<br />

mit mult : IR × IR→IR. Man mache sich deutlich, daß natürlich auch gilt: ∗ : IR × IR→IR. Durch die Infix-<br />

Schreibweise wird weniger deutlich, daß ∗, + usw. natürlich auch Funktionen sind und zwar Funktionen <strong>der</strong><br />

Stelligkeit zwei.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!