Wiki: Mathe und Info

Unterrichtsmaterialien für Mathematik und Informatik

Benutzer-Werkzeuge

Webseiten-Werkzeuge


info:sek-ii:q3:sprachen:l1-sprache

Lektion 1: Was ist eine Sprache?

In dieser Lektion werdet ihr lernen, was eine Sprache ist (Ja, es ist so einfach wie ihr denkt!) und wo dieses Konzept in der Informatik Anwendung findet (Nein, es ist nicht so einfach wie ihr denkt!)

Aufgabe 1: Natürliche Sprachen

Lies das Fachkonzept: Sprache und beantworte die folgenden Fragen:

  • Was ist ein Alphabet, ein Wort, eine Sprache im formalen Sinn?
  • Ist Bienensprache eine Sprache?
    • Ja? Dann liste einige Zeichen und Wörter auf, aus denen die Sprache besteht!
    • Nein? Warum nicht?

Aufgabe 2: Römische Zahlen, Bilder, Musik und Biber

Beispiel: Römische Zahlen & T-Shirts
Das Alphabet zur römischen Zahldarstellung ist die Menge $\Sigma = \{I,V,X,L,C,D,M\}$. Mit diesem Alphabet lassen sich eine Vielzahl von Wörtern bilden, z.B. $LXX$, $XXL$ und $LILLI$. Zum Alphabet der römischen Zahldarstellung erhält man die Menge $\Sigma^{*}$, indem man systematisch (alphabetisch) alle Wörter über $\Sigma$ erzeugt, auch wenn dabei ungültige römische Zahlen auftreten: $\Sigma^{*}=\{\varepsilon,I,V,X,\ldots,M,II,IV,IX,\ldots,IM,VI,\ldots,VM,\ldots,MM,III,IIV,\ldots\}$. Die Sprache $L=\{I,II,III,IV,V,V I,V II,V III,IX,X,...\}$ ist einen Teilmenge von $\Sigma^{*}$, weil sie nur diejenigen Wörter enthält, die gültige römische Zahlen darstellen. Eine andere Sprache über dem selben Alphabet ist die Sprache der Größen für T-Shirts: $L=\{L,XL,XXL,XXXL,...\}$. Für diese Sprache könnte man natürlich auch ein reduziertes Alphabet $\Sigma=\{L,X\}$ benutzen.
Beispiel: PGM
PGM (Portable Graymap) ist eine Sprache zur Darstellung von Bildern in Graustufen.


haus.pgm
P2
5 8
15
15 15  8 15 15
15  8  8  8 15
8  8  8  8  8
12 12 12 12 12
12  5 12  5 12
12 12 12 12 12
12  5 12  5 12
12 12 12 12 12
Dieser Code ergibt dieses Bild: . Und ja, es ist wirklich so klein wie es aussieht. Jeder Graustufenwert steht für ein einzelnes Pixel. Wenn man es etwas vergrößert, sieht es so aus:

Das Alphabet von PGM besteht aus dem Buchstaben "P", den Zahlen 0 bis 9, dem Leerzeichen und dem Zeilenumbruch. Jedes gültige Bild ist ein eigenes Wort der Sprache PGM!

Einige Regeln der Sprache PGM:

  • Die erste Zeile (P2) kennzeichnet das PGM-Format.
  • Die beiden Zahlen „5 8“ in der zweiten Zeile beschreiben die Aufteilung der Pixel in Spalten und Zeilen (hier 5 Spalten und 8 Zeilen).
  • Die Zahl 15 in der dritten Zeile beschreibt die Anzahl der Graustufen - hier von Stufe 0 (Schwarz) bis Stufe 15 (Weiß).
  • In den folgenden Zeilen werden die einzelnen Grauwerte mit Hilfe von Zahlen dargestellt.
Aufgabe: PGM
  1. Schreibe den Text mit einem Texteditor und speichere ihn als haus.pgm ab.
  2. Dann sieh dir das Ergebnis z. B. mit dem Programm GIMP an.
  3. Entwickle danach ein eigenes Bild!
Beispiel: ABC
ABC ist eine Sprache zur Notation von Musik.


bruder-jakob.abc
X: 1
T: Brother John
C: Traditional
L: 1/4
K: C
CDEC|CDEC|EFGz|\ % continues
w: Are you slee-ping, Are you slee-ping, Bro-ther John!\ % continues
EFGz|
w: Bro-ther John!
G/ A/ G/ F/ EC|G/ A/ G/ F/ EC|\ % continues
w: Mor-ning bells are rin-ging, Mor-ning bells are rin-ging,\
FB,Ez|FB,Ez|]
w: ding ding dong, ding ding dong!

Dieser Code ergibt das folgende Notenblatt:

Aufgabe: ABC
  1. Erkläre die Sprache ABC mit Blick auf den Notentext.

Weitere Informationen kannst du auf The ABC Plus Project finden.

Aufgabe: hallihallo
Zur Sprache "hallihallo" gehören die folgenden Wörter: hallo, hallihallo, hallihallihallo, hallihallihallihallo, …
  • Welche Alphabete könnte man hier als Grundlage der Sprache wählen? Es gibt mehrere Möglichkeiten!
  • Beschreibe die Regeln, nach denen die Wörter der "hallihallo"-Sprache gebildet werden.
Aufgabe: Bunny Banana
Bunny Banana ist der Teenie-Pop-Star im Biberland. Alle jungen Biber würden gerne so singen wie Bunny. Bunny Banana erklärt den Fans, wie die Lieder gemacht sind:
  • Eine Silbe wird aus einem Konsonanten (z. B.: d, l, n, s) und aus einem Vokal (a, e, i, o, u) gebildet. Beispiele: do, nu, la.
  • Ein Vers besteht aus einer ungeraden Anzahl der gleichen Silbe, wobei der mittleren Silbe ein "p di" angehängt wird. Beispiele: da dap di da, ne ne nep di ne ne.
  • Ein Lied besteht aus einem oder mehreren Versen. Nur wenn ein Lied mehrere Verse hat, darf es mit "yeah" enden, muss aber nicht.

Beim Biber-Song-Contest haben vier Biber versucht, wie Bunny Banana zu singen. Aber nur einer war erfolgreich. Entscheide, welcher Biber die Bunny-Banana-Sprache beherrscht und korrekte Wörter dieser Sprache gebildet hat.

  1. Biber-Max: si sip di si su dup di su
  2. Biber-Tina: da da dap di da da yeah
  3. Biber-Paul: nu nu nup di nu nu di di dip di di
  4. Biber-Trixi: sa sa sap di sa sa lu lu lup di lu lu yeah
Aufgabe: Java
Die Programmiersprache Java ist auch eine formale Sprache. Das Alphabet von Java besteht aus den Schlüsselbegriffen (z. B. if, for, class und public) und Zeichen (z.B. den Klammern), die in der Definition von Java festgelegt sind. Was entspricht dann den Wörtern der formalen Sprache Java?

Aufgabe 3: Sprachen in der Informatik

Informatik wird oft als Wissenschaft von der automatisierten Verarbeitung von Informationen bezeichnet. Informationen müssen dabei zunächst in Form von Daten formal dargestellt werden, bevor sie verarbeitet werden können. Daten können dann mit Hilfe von Computerprogrammen zu neuen Daten verarbeitet werden oder auch zu anderen Computern transportiert werden. Wenn die hierdurch erzeugten bzw. transportierten Daten gedeutet werden, entsteht neue Information. Sprachen spielen bei diesem Vorgehen eine zentrale Rolle. Dies soll am folgenden Beispiel verdeutlicht werden. Die Bildinformation muss zunächst in einer bestimmten Form dargestellt werden. Im vorliegenden Beispiel wird hierzu die Sprache PGM (siehe oben) benutzt. Diese Sprache erlaubt es, Grauwerte von Pixeln mit Hilfe von Zahlen zu beschreiben. Die Bilddaten (in einer Datei) können jetzt mit einem Programm bearbeitet werden.

void invertPGM(String inputFile, String outputFile) {
  String[] input = loadStrings(inputFile);
  String[] output = new String[input.length];
 
  output[0] = input[0]; // PGM format
  output[1] = input[1]; // rows and columns
  output[2] = input[2]; // max. grayscale value
 
  String[] rowsAndColumns = split(input[1], ' ');
  int numColumns = parseInt(rowsAndColumns[0]); 
  int numRows = parseInt(rowsAndColumns[1]);
  int maxGrayScale = parseInt(input[2]);
 
  for (int row = 0; row < numRows; row++) {
    String[] inputLine = splitTokens(input[row + 3]);
    printArray(inputLine);
    String[] outputLine = new String[inputLine.length];
 
    for (int column = 0; column < numColumns; column++) {
      int inverted = maxGrayScale - parseInt(inputLine[column]);
      outputLine[column] = "" + inverted;
    }
 
    output[row + 3] = join(outputLine, " ");
  }
 
  saveStrings(outputFile, output);
}
 
void setup() {
  invertPGM("haus.pgm", "haus-invertiert.pgm");
}

Die Java-Methode invertPGM() aus dem Processing-Sketch oben liest die Werte für die Graustufen aus einer Datei, invertiert sie durch eine Subtraktion und schreibt die Werte in eine neue Datei. Diese neuen Daten lassen sich jetzt wieder als Bild interpretieren:

haus-invertiert.pgm
P2
5 8
15
0 0 7 0 0 
0 7 7 7 0 
7 7 7 7 7 
3 3 3 3 3 
3 10 3 10 3 
3 3 3 3 3 
3 10 3 10 3 
3 3 3 3 3 

Im Beispiel kommen also zwei Sprachen zum Einsatz. Die Sprache PGM wird zur Darstellung von Information benutzt, die Sprache Java zur Verarbeitung von Daten. Es gibt eine Vielzahl von Sprachen zur Darstellung von Information, die eine Weiterverarbeitung mit dem Computer ermöglichen:

  • HTML: Sprache zur Darstellung von Internetseiten
  • SVG: Sprache zur Darstellung von Vektorgrafiken
  • PBM, PGM, PPM: Sprachen zur Darstellung von Pixelgrafiken
  • ABC: Sprache zur Darstellung von Musik

Es gibt ebenso eine Vielzahl von Sprachen zur Beschreibung der Verarbeitung von Daten. Zu diesen Sprachen zählen alle Programmiersprachen: Java, C, SQL, … Computersprachen haben viele Gemeinsamkeiten mit natürlichen Sprachen.

  • Man nutzt sie, um bestimmte Sachverhalte zu beschreiben.
  • Sie dienen der Kommunikation.
  • Man muss bestimmte Regeln beachten, wenn man sie nutzt.
  • Sprachelemente haben eine ganz bestimmte Bedeutung.

Es gibt aber auch wesentliche Unterschiede: Computersprachen müssen eindeutig und präzise sein. Bei der Verwendung von Computersprachen führen bereits kleinste Ungenauigkeiten dazu, dass der Computer den mit der Sprache beschriebenen Sachverhalt nicht mehr "versteht". Das hast du sicher schon beim Programmieren des öfteren erlebt. Bei natürlichen Sprachen kann man sich meist darauf verlassen, dass bei sprachlichen Ungenauigkeiten der Kommunikationspartner schon versteht, was man meint. Allerdings kommt es dabei auch oft zu Missverständnissen. Solche Missverständnisse gilt es bei Computersprachen durch Präzision und Eindeutigkeit zu vermeiden.

info/sek-ii/q3/sprachen/l1-sprache.txt · Zuletzt geändert: 2022-09-18 10:10 von christian.weber