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.

4. Die Funktion reverse:A ∗ →A ∗ dreht die Reihenfolge <strong>der</strong> Elemente einer Liste um:<br />

reverse(l) = if l= then else reverse(tail(l))&<br />

Neben Listen werden wir auch endliche Mengen benutzen (d.h Aufzählungen von Werten, bei denen ein<br />

mehrfaches Vorkommen von Elementen nicht berücksichtigt wird). Wir gehen davon aus, das die Bedeutung<br />

von Mengennotationen bekannt ist und werden sie daher hier nicht mehr ausführlich besprechen. Abbildung<br />

2.17 fast alle wichtigen Notationen <strong>der</strong> Metasprache zusammen.<br />

λx. ausdruck Funktionsdefinition<br />

f(x) Funktionsanwendung<br />

if..then..else Fallunterscheidung<br />

let x = Teilausdruck in Ausdruck determinierte Abkürzung<br />

Ausdruck where x = Teilausdruck von Teilausdrücken<br />

let x ∈ Bereich in Ausdruck indeterminierte Abkürzung<br />

Ausdruck where x ∈ Bereich von Teilausdrücken<br />

{} Leere Menge<br />

{arg1,...,argn} Explizite Mengenangabe<br />

M1∪M2, M1∩M2<br />

Vereinigung, Durchschnitt<br />

M1-M2<br />

Mengendifferenz<br />

[] Leere Tabelle (endliche Funktion)<br />

[arg1↦→wert1, ...,argn↦→wertn ] Explizite Tabellenangabe<br />

domain(tab) Domain <strong>der</strong> endlichen Funktion tab<br />

tab1+tab2<br />

Verschmelzung zweier Tabellen<br />

tab / {arg1,...,argn} Entfernen von Tabelleneinträgen<br />

A∗ Menge aller Listen über Elementen aus A<br />

Leere Liste<br />

Explizite Listenangabe<br />

head(l) Erstes Element von l<br />

tail(l) Rest von l<br />

l1 & l2 Verkettung zweier Listen<br />

2.4 Diskussion<br />

Abbildung 2.17: Spezielles Vokabular <strong>der</strong> Metasprache<br />

Wegen <strong>der</strong> Zweideutigkeiten in <strong>der</strong> natürlichen Sprache sind formale Sprachbeschreibungen ein notwendiges<br />

Handwerkzeug zur präzisen Beschreibung <strong>der</strong> Programmierung. Nur damit ist es möglich, den Zusammenhang<br />

zwischen <strong>der</strong> natürlichsprachigen Beschreibung eines Problems, welches man lösen will, und <strong>der</strong> – notwendigerweise<br />

absolut formalen – Computersprache, in <strong>der</strong> eine Lösung beschrieben werden soll, zu klären.<br />

Um Kommunikationsschwierigkeiten zu vermeiden, ist es wichtig, daß alle Beteiligten für diesen Zweck die<br />

gleiche formale Sprache, d.h. die gleichen syntaktischen Konstrukte, verwenden und mit den einzelnen Konstrukten<br />

auch die gleiche Bedeutung (Semantik) verbinden. Statt also in jedem Einzelfall lange zu diskutieren,<br />

was gemeint war, legen wir uns ein für allemal fest, was bestimmte Ausdrücke bedeuten sollen und wie man<br />

eine solche Bedeutung ausrechnen kann.<br />

In diesem Kapitel haben wir Beschreibungsformen für die Syntax einer Sprache (Backus-Naur Form, Syntaxdiagramme)<br />

und ihre Semantik (Definitionsgleichungen, Interpretation in einer Metasprache) vorgestellt. Sie<br />

sollten nun in <strong>der</strong> Lage sein, die Syntax einer in dieser Art beschriebenen Sprache zu verstehen und ihre Bedeutung<br />

zu erfassen. Mit <strong>der</strong> seit langem innerhalb <strong>der</strong> Mathematik etablierte Logik haben wir die vielleicht

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!