Anmerkung des Autor Diese Präsentation ist mit Powerpoint für MacOS erstellt. Leider ist sie nicht...
-
Upload
samuel-thomas -
Category
Documents
-
view
219 -
download
1
Transcript of Anmerkung des Autor Diese Präsentation ist mit Powerpoint für MacOS erstellt. Leider ist sie nicht...
Anmerkung des AutorDiese Präsentation ist mit Powerpoint für
MacOS erstellt. Leider ist sie nicht vollständig mit Powerpoint für Windows kompatibel. Das hat zur Folge, dass die Animationen nicht korrekt abgearbeitet werden und erscheinende Elemente zum Teil nicht wieder verschwinden.
Dirk Pape.
Warum versteht mich mein Taschenrechner?
Von der Formel zum ErgebnisDr. Dirk Pape, Institut für Informatik, Freie Universität Berlin
http://www.inf.fu-berlin.de/~pape/zum 1. Berliner MNU-Kongress, Sept. 2002
Der klassische Taschenrechnerreagiert auf Tastendrucke
3 0
sin
=
55
*
30
2.5
0.5
5.0
Der Computerinterpretiert Formeln
5 * sin(30) =2.5
f(x) = 5 * sin(x)f(30) =2.5
speichert Formelnok.
formt Formeln um, etc.
Was bedeutet „interpretieren“?• Wörter (Symbole) erkennen
Z.B. Pferd, das oder Satzzeichen• Sätze (Syntax) erkennen
Z.B. Das Pferd hält schwarz• Bedeutung (Semantik) ermitteln
???
Formeln interpretieren• Wörter (Symbole) erkennen
5, *, sin, (, 30, )• Sätze (Syntax) erkennen
• Bedeutung (Semantik) ermitteln=2.5
*
5 sin
30
Phasen des Interpretierens
Formel als Text5*sin(30)
*
5 sin
30
Formel in abstrakter Syntax
Berechne Formel=2,5
Analyse Synthese
Abstrakte Syntax – Beispiel: eine Datenstruktur für Formelndata Formel = ZAHL Int | PLUS Formel Formel | MAL Formel Formel | SIN Formel | COS Formel | VAR String
Formeln rekursiv berechnenBerechne 11. Berechne 2
-> 5
2. Berechne 3Berechne 4
-> 30Berechne sin (30)
-> 0.5
3. Berechne 5 * 0.5-> 2.5
*
5 sin
30
1
2 3
4
Berechnen – Beispielberechnen(f) = case f of ZAHL n -> n PLUS f1 f2 -> berechnen(f1) + berechnen(f2) MAL f1 f2 -> berechnen(f1) * berechnen(f2) SIN f -> sin (berechnen(f)) COS f -> cos (berechnen(f)) VAR v -> [„auslesen von Variable v“]
Formeln umformenForme x * (... + ...) um
2 * (4 + 5)-> 2 * 4 + 2 * 5*
x +
...
1
2 3
4...
5
*
x
+
...2 4 5
*
...x2
Umformen – Beispielumformen(f) = case f of ZAHL n -> ZAHL n PLUS f1 f2 -> PLUS (umformen(f1)) (umformen(f2)) MAL f1 (PLUS f2 f3) -> PLUS (umformen(MAL f1 f2)) (umformen(MAL f1 f3)) MAL f1 f2 -> MAL (umformen(f1)) (umformen(f2)) SIN f -> SIN (umformen(f)) COS f -> COS (umformen(f)) VAR v -> VAR v
Formeln interpretieren• Wörter (Symbole) erkennen
5, *, sin, (, 30, )• Sätze (Syntax) erkennen
• Bedeutung (Semantik) ermittelnBerechnen =2.5, Umformen, Speichern, ...
*
5 sin
30
Wie versteht mich der Computer?Zeichen werden zu Wörtern
SO...S?So...nntag?So...ndermeldung?
... --- ...
Wörter erkennen
start s on
s
SOS
pause
a
x
Formelsymbole erkennen
start 2 3 5
4
c ots
cos
(
(
+
Var „cost“
Tabellengesteuerter Automat( + ) c o s * t
1 19 137 58 2 . . . .
2 3
3 4
4 Cos1
5
5 Var1
Informatiker sind erfindungsreichComputerprogramme erzeugen die
TabellenComputerprogramme erzeugen
Computerprogramme, die Formeln erkennen
Computerprogramme erzeugen Tabellen und Computerprogramme aus Formeln
„Scanner“ erkennen Symbolebs = [a-z]zf = [0-9]cos = cosvar = bs+zahl = -?zf+...
„Scanner“ erkennen Symbole
5*sin(30)
Zahl 5MalSinKlammeraufZahl 30Klammerzu
„Scanner“ erkennen Symbole
5*cost*30
Zahl 5MalVar costMalZahl 30
„Scanner“ erkennen Symbole
5*sin)30(
Zahl 5MalSinKlammerzuZahl 30Klammerauf
Scanner-Generatoren• Lex für C, C++, Java, ...• Flex für C, C++, Java, ...• Alex für Haskell• ...
Wie versteht mich der Computer?Wörter werden zu Sätzen
Zahl 5 *
5
Sinus Klammerauf Zahl 30 Klammerzu
30
sin
*
Kellerautomat
+formel1
+formel1
( )+formel1
+formel1
formel2
+
+formel1
(
Eine Grammatik für Formelnformel : Zahl | formel Plus formel | formel Mal formel | Sinus Klammerauf formel Klammerzu | Cosinus Klammerauf formel Klammerzu | Variable | Klammerauf formel Klammerzu
„Parser“ erkennen Sätze
5, *, Sinus, (, 30, )
Formel 1
*
(
...
*
5 sin
30
Parser-Generatoren• Yacc für C, C++, Java, ...• Bison für C, C++, Java, ...• Happy für Haskell• ...
ÜbersetzerbauProgrammiersprachen
• sind Sprachen, mit denen der Computer programmiert wird (C, Java, Haskell, ...)
• haben eine GrammatikProgramme
• sind grammatikalisch korrekte Formeln in einer Programmiersprache
• werden mit Hilfe von Scannern und Parsern analysiert
• und in einfache Maschinenbefehle übersetzt (Synthese)
Algorithmen im ÜbersetzerbauScannen und Parsen
• Endlicher Automat• Endlicher Kellerautomat• Rekursiver „Ad-hoc-Parser“
Scanner- und Parsergeneratoren• Anspruchsvolle Algorithmen
Synthese• Rekursive Funktionen und Prozeduren auf
baumartigen Datenstrukturenweitere „Highlights“, z. B. „bootstrapping“
Ich wünsche noch viel Spaß
beim MNU-Kongress