Anmerkung des Autor Diese Präsentation ist mit Powerpoint für MacOS erstellt. Leider ist sie nicht...

Post on 06-Apr-2016

219 views 1 download

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