====== Formale Sprachen und Automaten ======
Sie alle sprechen eine oder mehrere **natürliche Sprachen**, z.B. Deutsch, Englisch, Türkisch, Französisch usw. . Diese Sprachen ermöglichen es uns, untereinander Informationen auszutauschen, sie sind aber recht variantenreich, oft mehrdeutig und sehr komplex, sodass sie sich nur eingeschränkt zur Kommunikation mit Maschinen oder zur Kommunikation von Maschine zu Maschine eignen. Wir beschäftigen uns in diesem Kapitel daher mit einfacheren Sprachen, die sich exakt definieren lassen. \\ \\
===== Beispiel: Wetter =====
Das aktuelle Wetter an einem vorgegebenen Ort kann durch Wörter der folgenden Form beschrieben werden:
^ Wort ^ Bedeutung (Semantik) ^
| 12°C ☼ | 12 Grad Celsius, sonnig |
| -10°C ☁ | -10 Grad Celsius, bewölkt |
| 8°C 🌧 | 8 Grad Celsius, regnerisch |
===== Definition: Alphabet, Wort, Syntax =====
Die endliche Menge aller **Zeichen**, die in einer formalen Sprache verwendet werden, heißt **Alphabet** oder Zeichenvorrat. Eine endliche Aneinanderreihung mehrerer Zeichen heißt **Wort** oder Zeichenkette. \\ \\
Auch eine leere Zeichenkette ist ein Wort. Man bezeichnet sie mit dem Symbol $\varepsilon$. \\ \\
Die Menge aller Wörter, die sich mit einem Alphabet $A$ bilden lassen, bezeichnet man mit dem Symbol $A*$.
Im Beispiel oben ist das Alphabet die Menge $A=$ {-, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, °, C, ☼, ☁, 🌧, }. Auch das Leerzeichen (letztes Element der Menge) gehört in diesem Beispiel zum Alphabet. \\ \\
Die Menge aller Wörter, die sich mit dem Alphabet A bilden lassen, heißt Wortmenge $A^*$. In unserem Beispiel ist $A^*=\{\varepsilon,\ -,\ 0,\ 1,\ \ldots,\ -0,\ -1,\ldots \}$. Sie enthält unendlich viele Elemente. \\ \\
Jede Teilmenge $L \subset A^*$ heißt **formale Sprache über dem Alphabet A**. \\ \\
Die Regeln, die beschreiben, welche Wörter zur Sprache gehören, nennt man **Syntax**. \\ \\
Die Syntax unserer "Wettersprache" könnte man beispielsweise so beschreiben: \\
"Zur Sprache gehören alle Wörter, die aus einer Temperatur gefolgt von einem Leerzeichen und wiederum gefolgt von einem der drei Wettersymbole bestehen." \\ \\
Wir werden weiter unten //deutlich bessere, exakte// Möglichkeiten kennenlernen, die Syntax einer Sprache zu beschreiben. \\ \\
Die **Semantik** eines Wortes ist seine Bedeutung. Es gibt oft Wörter einer Sprache, die syntaktisch korrekt sind, deren Semantik aber nicht sinnvoll ist, z.B. "-99°C 🌧"
//Man sagt:// Eine Sprache ist eine Teilmenge aller Wörter über einem Alphabet. \\ \\
**Beispiel-Wörter:** \\
* "12°C ☼"
* "-10°C ☁" und
* "8°C 🌧"
sind der oben beschriebenen Syntax zufolge Wörter der oben beschriebenen Sprache.
* "☁☼3" oder
* "xz12"
sind **keine** Wörter der oben beschriebenen Sprache.
Und was ist dann ein **Satz**? \\ \\
Der Begriff **Wort** einer Sprache umfasst in der Informatik auch Wörter, die Leerzeichen oder Zeilenumbrüche enthalten, also das, was in natürlichen Sprachen als //Satz// bezeichnet wird. Den Begriff //Satz// gibt es in der Informatik nicht. Ein syntaktisch korrektes Programm der Programmiersprache Java ist daher ein **Wort** dieser Sprache. \\ \\
==== Aufgabe 1 ====
Welches Alphabet hat die "Morse-Sprache"?
==== Aufgabe 2 ====
Die Länge einer Zeichenkette $w$ bezeichnet man mit $|w|$. \\
Geben Sie die Menge aller Zeichenketten über dem Alphabet $A=\{0,\ 1\}$ an, die die maximale Länge 2 besitzen, d.h. $\{w\in A^*|\ |w| \le 2 \}$.