Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Größe: px
Ab Seite anzeigen:

Download "Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny"

Transkript

1 Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny

2 5 Compilerbau

3 5.1 Einführung Ein Compiler (Übersetzer) ist ein Computerprogramm, das ein in einer Quellsprache geschriebenes Programm (Quellprogramm) in ein semantisch äquivalentes Programm einer Zielsprache (Zielprogramm) umwandelt. Normalerweise: Quellprogramm: Computerprogramm in einer Programmiersprache Zielprogramm: Maschinensprache-Programm einer bestimmten CPU Compilerbau ist eine Disziplin innerhalb der Praktischen Informatik

4 Compiler-Phasen Frontend: Backend:

5 Frontend Lexikalische Analyse: Scanner (Lexer) unterteilt Programmtext in Token. Syntaktische Analyse: Parser prüft korrekte Syntax und erzeugt Syntaxbaum. Gibt ggfs. Syntaxfehler aus. Semantische Analyse: Prüfung der Semantik, also weitere Bedingungen (Variablen deklariert? Typen korrekt?...) attributierter Syntaxbaum

6 Backend Zwischencodeerzeugung: Übersetzen des Syntaxbaums in Zwischencode (für verschiedene Zielplattformen verwendbar) Programmoptimierung: Optimierungen auf Basis des Zwischencodes. Codegenerierung: Erzeugen des ausführbaren Programms in Maschinensprache (Objektdatei für späteres Linken)

7 Vergleich: Interpreter Ein Interpreter liest den Quellcode ein, analysiert ihn und führt ihn direkt aus. Analyse des Quellcodes erfolgt zur Laufzeit des Programms. Nachteil: Geschwindigkeit Interpretersprachen: BASIC, Perl, Ruby, PHP, Javascript Sprachen mit Bytecode (Compiler+Interpreter): Java, C#, Perl, Python.

8 Programmtext Ein Programm ist ein Text, d.h. Folge von Zeichen Erste Programmiersprachen: Nur Großbuchstaben, Klammern, Ziffern Pascal, C: Auch Kleinbuchstaben, Sonderzeichen + - < > Java: Unicode (z.b. auch ä ö ü)

9 Programmtext Die erlaubten Zeichen nennt man Alphabet. Erlaubte Wörter der Sprache: Schlüsselwörter (while, do, if, for else,...) Sonderzeichen (+, -, *, <, >, <=, >=,...) Bezeichner (testfunktion, betrag, x37,...) Konstanten (42, -1, 3.141,...)

10 5.2 Lexikalische Analyse Scanner: Input: String mit Programmtext Output: Folge von Token Token (eigentlich Gutschein ): Gleiche Token für gleichartige Wörter Beispiele: Für jede Zahl: num Für jeden Bezeichner: id Für Strings: str Für Sonderzeichen: eq (=), gt (>), assingop (=) Für Schlüsselwörter: begin, while, do,...

11 Lexikalische Analyse Bildlich:

12 Lexikalische Analyse Beispiel (Pascal):

13 Lexikalische Analyse Probleme: Sind begin, BeGiN, BEGIN dasselbe? Ist beginnen ein Bezeichner (id) oder Schlüsselwort begin und Bezeichner nen Sind 00.23e-001 oder 312.e-2 vom Typ num Heutiger Ansatz: Beschreibung der Token als reguläre Ausdrücke Automatisches Generieren eines Scanners durch Hilfsprogramm (z.b. flex)

14 Token als reg. Ausdrücke Beispiele: Ziffer Ganzzahl Bezeichner Filename Ziffer Stunde [0-9] [0-9]+ [_a-za-z][a-za-z0-9]* [a-za-z0-9\/.-]+ [0-9] [01][0-9] 2[0-3]

15 flex Freie Variante von lex (frühes UNIX) Funktion Eingabe: Datei mit regulären Ausdrücken Ausgabe: C-Programm mit Scanner für die definierten Ausdrücke Varianten für Pascal, Perl, Java,... Intern: flex erzeugt endliche Automaten und minimiert diese Das erzeugte Programm liest von stdin und sucht den passenden Automaten Bei match wird definierte Ausgabe erzeugt

16 flex - Eingabedatei Beispiel: Finden aller Zeitangaben in beliebigem Text Bei Fund, ausgeben der Zeit Zeit-Format: 12:35 05:00 23:59:30 flex Eingabedatei: ASCII-Datei mit 3 Abschnitten, Trennung der Abschnitte durch %% Definition von regulären Ausdrücken Pro reg. Ausdruck eine Aktion (C-Code) Einbettung von yylex() in Hauptprogramm

17 flex - Eingabedatei

18 flex - Scannergenerierung flex zeit.lex gcc -ll > zeit.exe Übersetzen von zeit.lex nach zeit.c durch flex Übersetzen von zeit.c nach zeit.exe durch gcc

19 5.3 Syntaxanalyse Parser: Input: Folge von Token Output: (Vorerst) ja/nein : Ist die Token-Folge ein zulässiges Wort der Sprache / Entspricht die Token-Folge der Syntax/Grammatik. Grammatik: Wir kennen einige Grammatik-Typen: Reguläre Grammatiken Kontextfreie Grammatiken Wir benötigen z.b. Klammern => Kontextfreie Grammatik

20 Grammatik (Wdh.) Definition: Grammatik Eine Grammatik ist ein Tupel G=(Σ, N, P, S) mit Σ = Terminal-Alphabet N = Nonterminal-Alphabet P = Produktionenmenge (Regelmenge) S = Startsymbol

21 Kontextfreie Grammatik (Wdh.) Definition: Kontextfreie Grammatik Eine Grammatik G=(Σ, N, P, S) heißt kontextfrei, falls die Regelmenge P N (Σ N)* mit P < ist.

22 Ableitung (Wdh.) Eine Ableitung beschreibt, wie man vom Startsymbol zu einem Wort der Sprache L kommt. Ein Ableitungsschritt ist hierbei die Ersetzung eines Nichtterminalsymboles durch eines oder mehrere Terminal- oder Nichtterminalsymbole. Die Ableitung endet, wenn keine Nichtterminalsymbole mehr auftreten.

23 Beispiel (Wdh.) G = ({a,b,c}, {S,A,B}, P, S} mit P = { S AB, A ab, B c} Die Sprache L(G) enthält nur ein Wort: S AB abb abc S AB Ac abc (2 Ableitungen)

24 Beispiel (Wdh.) Gesucht: Grammatik, die gleich viele a's wie b's produziert. Teste: G = ({a,b}, {S}, P, S} mit P = { S asb } S asb aasbb aaasbbb... Zur Terminierung: S ε Also: G = ({a,b}, {S}, { S asb, S ε }, S} bzw. G = ({a,b}, {S}, { S asb ε }, S}

25 Beispiel (Wdh.) Grammatik für Klammer-Ausdrücke Regelmenge P = { E a EOE (E), O + - * / } Ableitung: E EOE aoe a+e a+a E EOE aoe a+e a+(e) a+(eoe) a+(aoe) a+(a-e) a+(a-a)

26 Grammatik WHILE Beispiel einer Grammatik für die Sprache WHILE

27 Grammatik WHILE Terminale = { begin, end, ;, id, :=, while, do, if, then, +, -, *, (, ), =, <, num, not, true, false } Nichtterminale = { Programm, Anweisungen, Anweisung, Zuweisung, Schleife, Alternative, Expr, Bexpr } Startsymbol = Programm

28 WHILE Ableitungen Einfachste Ableitung: Programm begin Anweisungen end begin end

29 WHILE Ableitungen Der Parser soll prüfen, ob ein Wort (also ein Programm) ableitbar ist: begin id:=num; end Programm begin Anweisungen end begin Anweisung; Anweisungen end begin Zuweisung; Anweisungen end begin id:=expr; Anweisungen end begin id:=num; Anweisungen end begin id:=num; end

30 WHILE Ableitungen Linksableitung: Wird (wie im Beispiel) immer zuerst das am weitesten links stehende Nichtterminal ersetzt, sagen wir zu der Ableitung Linksableitung

31 Beispiel (Wdh.) Je nachdem, welche Regel man wählt, ergeben sich z.t. unterschiedliche Ableitungsbäume: E EOE aoe a*e a*eoe a*aoe a*a+e a*a+a E EOE EOEOE aoeoe a*eoe a*aoe a*a+e a*a+a E E E O E E O E a * E O E E O E + a falsch a + a a Punkt * a vor Strich

32 Eindeutige Grammatiken Für Programmiersprachen und deren Parser sind mehrdeutige Grammatiken ungeeignet. Man beschränkt sich daher in der Praxis auf eindeutige Grammatiken. Beispiel: Anstatt der einen Regel Expr :: Expr+Expr Expr-Expr Expr*Expr (Expr) id num führen wir neue Nichtterminale ein, die die Priorität ausdrücken: Expr :: Expr+Term Expr-Term Term Term :: Term*Faktor Faktor Faktor :: id num (Expr)

33 Eindeutige Grammatiken Expr Ableitungsbaum für id*id+id Expr + Term Regelmenge: Expr :: Expr+Term Expr-Term Term Term Term :: Term*Faktor Faktor Faktor Faktor :: id num (Expr) Term * Faktor id Faktor id id

34 Termbaum (abstrakter Syntaxbaum) Expr Beim Termbaum wandern die Terminalsymbole nach oben und ersetzen die Nichtterminale Expr + Term Term Faktor + Term * * id Faktor id Faktor id id id id

35 Beispiel * Termbaum für id*(((id-id)/id)-((id+id)*id)) id -- / - id * id id + id id id

36 Recursive Descent Parser Nochmals allgemein: Parser: Input: Folge von Token Output: (Vorerst) ja/nein : Ist die Token-Folge ein zulässiges Wort der Sprache / Entspricht die Token-Folge der Syntax/Grammatik. Wie lässt sich solch ein Parser implementieren? Einfachster Ansatz: Recursive Descent Parser (RD-Parser)

37 Recursive Descent Parser Beispiel mit einer einzigen Regel: Schleife :: while Bexpr do Anweisung Um eine Schleife zu akzeptieren akzeptiere ein while erkenne eine Bexpr akzeptiere ein do erkenne eine Anweisung

38 Recursive Descent Parser Um eine Schleife zu akzeptieren akzeptiere ein while erkenne eine Bexpr akzeptiere ein do erkenne eine Anweisung Direkte Umsetzung als Funktion: void parseschleife() { akzeptiere( while ); parsebexpr(); akzeptiere( do ); parseanweisung(); }

39 Recursive Descent Parser Problem, wenn es mehrere rechte Seiten gibt: Anweisung :: Zuweisung Schleife Alternative Umsetzung mit MAGIC ODER (Nichtdeterminismus): void parseanweisung() { parsezuweisung(); ODER parseschleife(); ODER parsealternative(); }

40 Recursive Descent Parser Wenn wir wenigstens um EIN Token vorausschauen könnten, könnten wir vielleicht entscheiden, welchen Zweig das MAGIC ODER auswählen muss => lookahead Umsetzung mit Lookahead: void parseanweisung() { if (l==id) parsezuweisung(); else if (l==while) parseschleife(); else if (l==if) parsealternative(); } else print ( id, while, if erwartet );

41 LL(1) Grammatiken Ein Recursive Descent Parser hat dann ein Problem, wenn eine Regel mehrere rechte Seiten besitzt: Anweisung :: Zuweisung Schleife Alternative Vorausschau um EIN Token ist nötig (falls EIN Token ausreicht...)

42 LL(1) Grammatiken LL(1) Grammatik (informell): Ist es für die gesamte Grammatik möglich, aufgrund der Vorausschau von nur einem Token immer zu entscheiden, welche Regel gewählt werden muss, so spricht man von einer LL(1) Grammatik.

43 LL(1) Grammatiken Formaler: Geg. eine Regel: A :: α α... α 1 2 n Vorausschau eindeutig, falls jedes αi mit einem unterschiedlichen Token ti beginnt. (bisher noch ohne ε)

44 LL(1) Grammatiken Sei First(A) die Menge aller Token, mit denen ein aus A abgeleitetes Wort beginnen kann: First(A) = { First(αi) i=1...n} Wenn gilt First(αi) First(αj) = Ø für alle i,j, dann kann der Nichtdeterminismus eindeutig aufgelöst werden.

45 LL(1) Grammatiken Beispiel: Anweisung :: Zuweisung Schleife Alternative First(Zuweisung) = { id } First(Schleife) = { if } First(Alternative) = { while } also First(Anweisung) = { id, if, while } Und es gilt: First(αi) First(αj) = Ø für alle i,j

46 LL(1) Grammatiken Aus First(Zuweisung) = { id } First(Schleife) = { if } First(Alternative) = { while } folgt dann der Parser für <Anweisung>: void parseanweisung() { if (l==id) parsezuweisung(); else if (l==while) parseschleife(); else if (l==if) parsealternative(); } else print ( id, while, if erwartet );

47 LL(1) Grammatiken Weiteres Problem: Optionale Regel (ε) Anweisungen :: ε Anweisung Anweisung; Anweisungen Wir wissen noch: First(Anweisung) = { id, if, while } Aber First(Anweisungen) enthält auch ε : First(Anweisungen) = { id, if, while } { ε }

48 LL(1) Grammatiken Allgemeine Definition für First(A): First(A) = { t A * tα } { ε A * ε }

49 LL(1) Grammatiken Für den Parser von Anweisungen :: ε Anweisung Anweisung; Anweisungen wird wieder ein MAGIC ODER benötigt: void parseanweisungen() { return; ODER parseanweisung(); ODER parseanweisung(); parseanweisungen(); }

50 LL(1) Grammatiken bzw. mit Optimierung: Anweisungen :: ε Anweisung Anweisung; Anweisungen void parseanweisungen() { return; ODER parseanweisung(); parseanweisungen(); } ODER muss (durch Vorausschau) entscheiden, ob eine Anweisung folgt oder nicht!

51 LL(1) Grammatiken Annahme: Es ist bekannt, welches Token NACH einer Regel kommen kann: In WHILE kann nach <Anweisungen> nur end kommen! Also: void parseanweisungen() { if (l==end) return; else if (l==id l==if l==while) parseanweisung(); parseanweisungen(); else print ( id, while, if, end erwartet ); }

52 LL(1) Grammatiken Sei Follow(A) die Menge aller Token, die in einer Grammatik auf A folgen können: Follow(A) = { t S * αatβ } Beispiele für WHILE: Follow(Anweisungen) = { end } Follow(Anweisung) = { ;, end } = { ;, +, -, *, ), = } Follow(Expr)

53 LL(1) Grammatiken Berechnung von First(α) für alle rechten Seiten α: 1.Für jedes Token t, für das gilt: α = tγ Setze First(α) { t } 2.Für jedes Nichtterminal B mit α = Bγ Für alle B β : First(α) First(α) - { ε } Falls noch B * ε : First(α) First(γ) Falls noch α * ε : First(α) ε

54 LL(1) Grammatiken Berechnung von Follow(A) für alle Nichtterminale A: (Sei eof das Ende des Inputs) 1. Follow(S) eof 2. Für jede Regel A αxβ Follow(X) First(β) - { ε } Falls β * ε : Follow(X) Follow(A)

55 LL(1) Grammatiken LL(1) Grammatik (formal): Eine Grammatik G heißt LL(1), falls für jede Regel A :: α1 α2... αn und alle i j folgende Bedingungen erfüllt sind: 1. First(αi) First(αj) = Ø 2. ε First(αi) Follow(A) First(αj) = Ø

56 LL(1) Grammatiken Für LL(1) Grammatiken lassen sich leicht Recursivdescent Parser erstellen. Falls gilt: { f=frage zum Thema offen(f) } = Ø dann folgt Schöne Ferien!

57 Wdh: Grammatik WHILE Beispiel einer Grammatik für die Sprache WHILE

58 Top-Down Parsing Recursive-Descent Parser sind Top-Down Parser : Start mit dem Startsymbol (Wurzel) S Unter Zuhilfenahme des Look-ahead entsprechende Erweiterung: A α1 α2... αn

59 Top-Down Parsing Beispiel in WHILE

60 Shift-Reduce Parser Shift-Reduce Parser sind schwieriger zu implementieren als Recursive-Descent Parser Vorteile: Grammatik muss nicht LL(1) sein Syntaxbaum kann leicht mit erstellt werden Es existieren Werkzeuge für die automatische Erstellung

61 Shift-Reduce Parser Notation: sei α bereits im Input gelesen und erkannt, nächstes Token sei a restliches Eingabewort sei u α au

62 Shift-Reduce Parser Arbeitsweise: Ein SR-Parser versucht immer die rechte Seite einer Regel im bisherigen Input zu erkennen, diese zur linken Seite zu reduzieren. Er kann zwei mögliche Aktionen ausführen: Shift: Das nächste Zeichen im Input lesen und in neuen Zustand übergehen: α au αa u Ein Endstück α2 von α als rechte Seite Reduce: einer Regel A α erkenne und ersetzen: α1α2 au α1a u

63 Shift-Reduce Parser Ablauf: Start mit gesamten Eingabewort w, also w Ende im Starzustand S, also S Beispiel: Grammatik: Expr :: Expr+Term Expr-Term Term Term :: Term*Faktor Faktor Faktor :: id num (Expr) Eingabewort w = x*(y+1) also Token: id * ( id + num )

64 Shift-Reduce Parser

65 Bottom-Up Parsing Shift-Reduce Parser sind Bottom-Up Parser : Start mit den einzelnen Token Sukzessives Zusammenbauen bis zur Wurzel S

66 Bottom-Up Parsing Beispiel in WHILE

67 Shift-Reduce Parser Konflikte: Grammatik: Expr :: Expr+Term Expr-Term Term Term :: Term*Faktor Faktor Faktor :: id num (Expr) Shift-Reduce-Konflikt: Aktueller Zustand: T*(E+num ) Shift: T*(E+num) Reduce: T*(E+F ) Reduce-Reduce-Konflikt: Aktueller Zustand: T*(E+T ) Reduce 1: T*(E+E ) (mit E T) Reduce 2: T*(E ) (mit E E+T)

68 LR(1) Grammatiken LR(1) Grammatik (informell): Eine Grammatik heißt LR(1) Grammatik, wenn es möglich ist, anhand der Vorausschau von nur einem Token, immer zu entscheiden, welche Aktion gewählt werden muss.

69 Parsergeneratoren Parsergeneratoren konstruieren einen Parser aus einer kontextfreien Grammatik. Bekanntester Parsergenerator: lex / yacc (flex / bison) Anderes Beispiel: javacc für Recursive-Descent-Parser oder jflex für Shift-Reduce-Parser

70 Bison Idee: Input = ASCII File mit Grammatik Output = C-Code eines fertigen Parses Beispiel: %token ID %% S : T T : T '*' F F ; F : '(' T ')' ID ; %%

71 Bison Der endliche Automat, den Bison intern produziert, lässt sich ausgeben: state 0 ID shift, and go to state '(' shift, and go to state S go to state 9 state 1 F -> ID. (rule 5) $default reduce using rule state 2 F -> '('. T ')' (rule 4) ID shift, and go to state '(' shift, and go to state T go to state 5 4 go to state (F) 1 2

72 Flex / Bison Ablauf der Implementierung

73 Flex / Bison Ablauf des Parsens

74 Fehlererkennung Fehler können vom Scanner oder Parser erkannt werden: Fehlererkennung durch Scanner: Lesen von Zeichenfolgen, die sich nicht zu gültigen Token gruppieren lassen. Beispiel: oder!? Token Invalid, mit Zeile und Spalte

75 Fehlererkennung Fehlererkennung durch Parser: Lesen einer Tokenfolge, die nicht zur Grammatik passt. Beispiel: Zuweisung :: id=expr Tokenfolge: id = while... Abhilfe direkt in Parser-Regeln: Beispiel: yacc/bison: zuweisung : ID = expr ID = { err( expr expected );} ID { err( = expected );}

76 Fehlererkennung Fehlererkennung durch Parser: Problem: Findet der Parser einen Fehler, so ist die Fundstelle nicht klar (Da der Parser ja nur auf der Tokenfolge arbeitet). Abhilfe: Der Scanner speichert zu jedem Token den Fundort (Zeile, Spalte)

77 Symboltabellen Während der Syntaxprüfung legt ein Parser eine Symboltabelle an, mit mindestens folgenden Einträgen pro Variable: Name Typ Speicherplatz

78 Symboltabellen Beispiel: float betrag = 10.50; betrag = betrag*(1+zins); Ablauf: Parser findet Deklaration Prüfen, ob Variable bereits vorhanden Eintragen: Name, Typ, neue Adresse Parser findet Anwendung einer Variablen Prüfen, ob Variable bereits vorhanden Benutzen der gespeicherten Adresse für Code

79 Symboltabellen Beispiel:

80 Codeoptimierung Nach der Code-Erzeugung wird noch versucht, das Programm zu optimieren. Dies geschieht meist durch Heuristiken. Beispiele...

81 Codeoptimierung Beispiel: Erkennen identischer Teilausdrücke Original-Code: if (x*x < 255) x = x*x; Ersetzen durch temp = x*x; if (temp < 255) x = temp;

82 Codeoptimierung Beispiel: Propagieren von Konstanten Original-Code: bool debug = true;... if (debug) cout << error << endl; Ersetzen durch cout << error << endl;

83 Codeoptimierung Beispiel: Ersetzen von Berechnungen Original-Code: a = x+x; Ersetzen durch a = x<<1;

84 Codeoptimierung Beispiel: Ausklammern von Konstanten aus Schleifen Original-Code: while (x<100) { sum += y*y+x; x++; } Ersetzen durch temp = y*y; while (x<100) { sum += temp+x; x++; }

Programmiersprachen und Übersetzer

Programmiersprachen und Übersetzer Programmiersprachen und Übersetzer Sommersemester 2010 19. April 2010 Theoretische Grundlagen Problem Wie kann man eine unendliche Menge von (syntaktisch) korrekten Programmen definieren? Lösung Wie auch

Mehr

Formale Sprachen und Grammatiken

Formale Sprachen und Grammatiken Formale Sprachen und Grammatiken Jede Sprache besitzt die Aspekte Semantik (Bedeutung) und Syntax (formaler Aufbau). Die zulässige und korrekte Form der Wörter und Sätze einer Sprache wird durch die Syntax

Mehr

Theorie der Informatik

Theorie der Informatik Theorie der Informatik 6. Formale Sprachen und Grammatiken Malte Helmert Gabriele Röger Universität Basel 17. März 2014 Einführung Beispiel: Aussagenlogische Formeln Aus dem Logikteil: Definition (Syntax

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Einheit 15: Reguläre Ausdrücke und rechtslineare Grammatiken Thomas Worsch Universität Karlsruhe, Fakultät für Informatik Wintersemester 2008/2009 1/25 Was kann man mit endlichen

Mehr

Was ist ein Compiler?

Was ist ein Compiler? Was ist ein Compiler? Was ist ein Compiler und worum geht es? Wie ist ein Compiler aufgebaut? Warum beschäftigen wir uns mit Compilerbau? Wie ist die Veranstaltung organisiert? Was interessiert Sie besonders?

Mehr

Kapitel 2: Formale Sprachen Kontextfreie Sprachen. reguläre Grammatiken/Sprachen. kontextfreie Grammatiken/Sprachen

Kapitel 2: Formale Sprachen Kontextfreie Sprachen. reguläre Grammatiken/Sprachen. kontextfreie Grammatiken/Sprachen reguläre Grammatiken/prachen Beschreibung für Bezeichner in Programmiersprachen Beschreibung für wild cards in kriptsprachen (/* reguläre Ausdrücke */)?; [a-z]; * kontextfreie Grammatiken/prachen Beschreibung

Mehr

Theoretische Informatik I

Theoretische Informatik I Theoretische Informatik I Einheit 2.4 Grammatiken 1. Arbeitsweise 2. Klassifizierung 3. Beziehung zu Automaten Beschreibungsformen für Sprachen Mathematische Mengennotation Prädikate beschreiben Eigenschaften

Mehr

Theoretische Grundlagen der Informatik

Theoretische Grundlagen der Informatik Theoretische Grundlagen der Informatik Vorlesung am 12.01.2012 INSTITUT FÜR THEORETISCHE 0 KIT 12.01.2012 Universität des Dorothea Landes Baden-Württemberg Wagner - Theoretische und Grundlagen der Informatik

Mehr

Theoretische Informatik I

Theoretische Informatik I Theoretische nformatik inheit 3 Kontextfreie Sprachen 1. Kontextfreie Grammatiken 2. Pushdown Automaten 3. igenschaften kontextfreier Sprachen Theoretische nformatik inheit 3.1 Kontextfreie Grammatiken

Mehr

Äquivalente Grammatiken / attributierte Grammatik

Äquivalente Grammatiken / attributierte Grammatik Äquivalente Grammatiken / attributierte Grammatik Linksfaktorisierung Elimination von Linksrekursion Umwandlung von EBNF in BNF Attributierte Grammatik Semantikfunktionen und Übersetzungsschema Synthetisierte,

Mehr

2.11 Kontextfreie Grammatiken und Parsebäume

2.11 Kontextfreie Grammatiken und Parsebäume 2.11 Kontextfreie Grammatiken und Parsebäume Beispiel: Beispiel (Teil 3): Beweis für L(G) L: Alle Strings aus L der Länge 0 und 2 sind auch in L(G). Als Induktionsannahme gehen wir davon aus, dass alle

Mehr

Theoretische Informatik 2 (WS 2006/07) Automatentheorie und Formale Sprachen 19

Theoretische Informatik 2 (WS 2006/07) Automatentheorie und Formale Sprachen 19 Inhalt 1 inführung 2 Automatentheorie und ormale prachen Grammatiken Reguläre prachen und endliche Automaten Kontextfreie prachen und Kellerautomaten Kontextsensitive und yp 0-prachen 3 Berechenbarkeitstheorie

Mehr

Grundlagen der Informatik II. Teil I: Formale Modelle der Informatik

Grundlagen der Informatik II. Teil I: Formale Modelle der Informatik Grundlagen der Informatik II Teil I: Formale Modelle der Informatik 1 Einführung GdInfoII 1-2 Ziele/Fragestellungen der Theoretischen Informatik 1. Einführung abstrakter Modelle für informationsverarbeitende

Mehr

Grammatiken in Prolog

Grammatiken in Prolog 12. Grammatiken in Prolog 12-1 Grammatiken in Prolog Allgemeines: Gedacht zur Verarbeitung natürlicher Sprache. Dort braucht man kompliziertere Grammatiken als etwa im Compilerbau, andererseits sind die

Mehr

Motivation. Formale Grundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen. Informales Beispiel. Informales Beispiel.

Motivation. Formale Grundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen. Informales Beispiel. Informales Beispiel. Kontextfreie Kontextfreie Motivation Formale rundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen Bisher hatten wir Automaten, die Wörter akzeptieren Frank Heitmann heitmann@informatik.uni-hamburg.de

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

Kapitel 4. Einführung in den Scannergenerator Flex. Einführung in den Scannergenerator Flex Wintersemester 2008/09 1 / 9

Kapitel 4. Einführung in den Scannergenerator Flex. Einführung in den Scannergenerator Flex Wintersemester 2008/09 1 / 9 Kapitel 4 Einführung in den Scannergenerator Flex Einführung in den Scannergenerator Flex Wintersemester 2008/09 1 / 9 Generatoren für die lexikalische Analyse Scannergeneratoren werden eingesetzt um die

Mehr

IT-Basics 2. DI Gerhard Fließ

IT-Basics 2. DI Gerhard Fließ IT-Basics 2 DI Gerhard Fließ Wer bin ich? DI Gerhard Fließ Telematik Studium an der TU Graz Softwareentwickler XiTrust www.xitrust.com www.tugraz.at Worum geht es? Objektorientierte Programmierung Konzepte

Mehr

Übungen zu C++ Kapitel 1

Übungen zu C++ Kapitel 1 Übungen zu C++ Kapitel 1 Aufgabe 1 Ergänze den Text. a) Die sechs logischen Einheiten eines Computers sind Eingabe-Einheit, Ausgabe-Einheit, RAM, ALU, CPU, Plattenspeicher. b) Die Programme, welche Hochsprachenprogramme

Mehr

Fachseminar WS 2008/09

Fachseminar WS 2008/09 Fachseminar WS 2008/09 Fachgebiet: Compilerbau Thema: Lexikalische Analyse (Scanner) Referent: Ali Sediq Betreuer: Prof. Dr. Helmut Weber 1 Inhaltsverzeichnis Lexikalische Analyse 1.0 Grundprobleme der

Mehr

1. Formale Sprachen 1.2 Grammatiken formaler Sprachen

1. Formale Sprachen 1.2 Grammatiken formaler Sprachen 1. Formale Sprachen 1.2 Grammatiken formaler Sprachen Die Regeln zur Bildung korrekter Wörter einer Sprache kann man in einer natürlichen Sprache formulieren. Da dies jedoch wieder Mehrdeutigkeiten mit

Mehr

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: VBA Programmierung mit Excel Schleifen 1/6 Erweiterung der Aufgabe Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: Es müssen also 11 (B L) x 35 = 385 Zellen berücksichtigt

Mehr

Einführung in die Programmierung

Einführung in die Programmierung : Inhalt Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund - mit / ohne Parameter - mit / ohne Rückgabewerte

Mehr

Einführung in die Informatik Grammars & Parsers

Einführung in die Informatik Grammars & Parsers Einführung in die Informatik Grammars & Parsers Grammatiken, Parsen von Texten Wolfram Burgard Cyrill Stachniss 12.1 Einleitung Wir haben in den vorangehenden Kapiteln meistens vollständige Java- Programme

Mehr

Übungen 19.01.2012 Programmieren 1 Felix Rohrer. Übungen

Übungen 19.01.2012 Programmieren 1 Felix Rohrer. Übungen Übungen if / else / else if... 2... 2 Aufgabe 2:... 2 Aufgabe 3:... 2 Aufgabe 4:... 2 Aufgabe 5:... 2 Aufgabe 6:... 2 Aufgabe 7:... 3 Aufgabe 8:... 3 Aufgabe 9:... 3 Aufgabe 10:... 3 switch... 4... 4 Aufgabe

Mehr

Grundlagen der Theoretischen Informatik, SoSe 2008

Grundlagen der Theoretischen Informatik, SoSe 2008 1. Aufgabenblatt zur Vorlesung Grundlagen der Theoretischen Informatik, SoSe 2008 (Dr. Frank Hoffmann) Lösung von Manuel Jain und Benjamin Bortfeldt Aufgabe 2 Zustandsdiagramme (6 Punkte, wird korrigiert)

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Tutorium 27 29..24 FAKULTÄT FÜR INFORMATIK KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Definition

Mehr

M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung

M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung M. Graefenhan 2000-12-07 Aufgabe Lösungsweg Übungen zu C Blatt 3 Musterlösung Schreiben Sie ein Programm, das die Häufigkeit von Zeichen in einem eingelesenen String feststellt. Benutzen Sie dazu ein zweidimensionales

Mehr

Formale Sprachen, reguläre und kontextfreie Grammatiken

Formale Sprachen, reguläre und kontextfreie Grammatiken Formale Sprachen, reguläre und kontextfreie Grammatiken Alphabet A: endliche Menge von Zeichen Wort über A: endliche Folge von Zeichen aus A A : volle Sprache über A: Menge der A-Worte formale Sprache

Mehr

Praktikum Compilerbau

Praktikum Compilerbau Implementation eines s 20. April 2005 Vorlesungen Vorlesungen, die nützliche für das Praktikum liefern: Automaten, Formale Sprachen und Berechenbarkeit bau Abstrakte Maschinen Programm-Optimierung Fertigkeiten

Mehr

C/C++ Programmierung

C/C++ Programmierung 1 C/C++ Programmierung Grundlagen: Anweisungen Sebastian Hack Christoph Mallon (hack mallon)@cs.uni-sb.de Fachbereich Informatik Universität des Saarlandes Wintersemester 2009/2010 2 Anweisungen (Statements)

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Einheit 8: kontextfreie Grammatiken Thomas Worsch Karlsruher Institut für Technologie, Fakultät für Informatik Wintersemester 2009/2010 1/37 Überblick Kontextfreie Grammatiken

Mehr

Objektorientierte Programmierung. Kapitel 3: Syntaxdiagramme und Grammatikregeln

Objektorientierte Programmierung. Kapitel 3: Syntaxdiagramme und Grammatikregeln Stefan Brass: OOP (Java), 3. Syntaxdiagramme und Grammatikregeln 1/32 Objektorientierte Programmierung Kapitel 3: Syntaxdiagramme und Grammatikregeln Stefan Brass Martin-Luther-Universität Halle-Wittenberg

Mehr

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

Compiler, Übersetzer. Allgemeine Erklärung / Definition

Compiler, Übersetzer. Allgemeine Erklärung / Definition Compiler, Übersetzer Allgemeine Erklärung / Definition Ein Übersetzer ist ein Programm, das ein S 1 -Wort den Quelltext in ein S 2 -Wort umwandelt den Zieltext wobei die Semantik erhalten bleibt. Frage:

Mehr

10 Erweiterung und Portierung

10 Erweiterung und Portierung 10.1 Überblick In vielen Fällen werden Compiler nicht vollständig neu geschrieben, sondern von einem Rechnersystem auf ein anderes portiert. Das spart viel Arbeit, ist aber immer noch eine sehr anspruchsvolle

Mehr

Übung Theoretische Grundlagen

Übung Theoretische Grundlagen Übung Theoretische Grundlagen Berechenbarkeit/Entscheidbarkeit Nico Döttling November 26, 2009 INSTITUT FÜR KRYPTOGRAPHIE UND SICHERHEIT KIT University of the State of Baden-Wuerttemberg and National Laboratory

Mehr

Grammatiken. Einführung

Grammatiken. Einführung Einführung Beispiel: Die arithmetischen Ausdrücke über der Variablen a und den Operationen + und können wie folgt definiert werden: a, a + a und a a sind arithmetische Ausdrücke Wenn A und B arithmetische

Mehr

4. AUSSAGENLOGIK: SYNTAX. Der Unterschied zwischen Objektsprache und Metasprache lässt sich folgendermaßen charakterisieren:

4. AUSSAGENLOGIK: SYNTAX. Der Unterschied zwischen Objektsprache und Metasprache lässt sich folgendermaßen charakterisieren: 4. AUSSAGENLOGIK: SYNTAX 4.1 Objektsprache und Metasprache 4.2 Gebrauch und Erwähnung 4.3 Metavariablen: Verallgemeinerndes Sprechen über Ausdrücke von AL 4.4 Die Sprache der Aussagenlogik 4.5 Terminologie

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 18

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 18 Kapitel 3 Datentypen und Variablen Seite 1 von 18 Datentypen - Einführung - Für jede Variable muss ein Datentyp festgelegt werden. - Hierdurch werden die Wertemenge und die verwendbaren Operatoren festgelegt.

Mehr

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen.

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen. 1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik "Informatik" = Kunstwort aus Information und Mathematik

Mehr

Grundlagen. Kapitel 1

Grundlagen. Kapitel 1 Grundlagen Dieses Kapitel umfasst grundlegende Fragen und Aufgaben zur Erstellung von C++-Programmen. Hierzu zählen auch das Inkludieren von Header-Dateien Eine Header-Datei beinhaltet Informationen, die

Mehr

ARBEITSBLATT ZU FORMALEN SPRACHEN

ARBEITSBLATT ZU FORMALEN SPRACHEN ARBEITSBLATT ZU FORMALEN SPRACHEN Aufgabe 1: Gegeben ist die folgende Formale Sprache L(G) mit G = (T, N, P, S). Die Produktionen lauten ZUWEISUNG ::= name zuweisungsoperator AUSDRUCK semikolon AUSDRUCK

Mehr

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster Es gibt in Excel unter anderem die so genannten Suchfunktionen / Matrixfunktionen Damit können Sie Werte innerhalb eines bestimmten Bereichs suchen. Als Beispiel möchte ich die Funktion Sverweis zeigen.

Mehr

Thüringer Kultusministerium. Abiturprüfung 2000

Thüringer Kultusministerium. Abiturprüfung 2000 Thüringer Kultusministerium Arbeitszeit: Hilfsmittel: Abiturprüfung 2000 270 Minuten Leistungsfach Informatik (Haupttermin) Formeln und Tabellen für die Sekundarstufen I und II/ Paetec, Gesellschaft für

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Tutorium 4 26..25 INSTITUT FÜR THEORETISCHE INFORMATIK KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu

Mehr

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben. Aufgabe 1.30 : Schreibe ein Programm DM_in_Euro.java zur Umrechnung eines DM-Betrags in Euro unter Verwendung einer Konstanten für den Umrechnungsfaktor. Das Programm soll den DM-Betrag als Parameter verarbeiten.

Mehr

Wortproblem für kontextfreie Grammatiken

Wortproblem für kontextfreie Grammatiken Wortproblem für kontextfreie Grammatiken G kontextfreie Grammatik. w Σ w L(G)? Wortproblem ist primitiv rekursiv entscheidbar. (schlechte obere Schranke!) Kellerautomat der L(G) akzeptiert Ist dieser effizient?

Mehr

Übungen für Woche 10

Übungen für Woche 10 Übungen für Woche 10 Martin Rubey 12. Januar 2011 Die folgenden Übungen sollen den Umgang mit Backtracking und kombinatorischen Spezies näherbringen. Genaue Hinweise gibt es erst auf Seite 5. Zur Erinnerung:

Mehr

Informatik Repetitorium SS 2009. Volker Jaedicke Volker.Jaedicke@web.de 0179 1322692

Informatik Repetitorium SS 2009. Volker Jaedicke Volker.Jaedicke@web.de 0179 1322692 Informatik Repetitorium SS 2009 Volker Jaedicke Volker.Jaedicke@web.de 0179 1322692 Operatoren und Datentypen Beispiel: Anweisungen Variable int a float b int c a= a % (int) (++b-1/4) Vorher 36 3.5 c=b

Mehr

Mathematische Grundlagen der Informatik 2

Mathematische Grundlagen der Informatik 2 Zusammenfassung Math2I Mathematische Grundlagen der Informatik 2 Emanuel Duss emanuel.duss@gmail.com 12. April 2013 1 Zusammenfassung Math2I Mathematische Grundlagen der Informatik 2 Dieses Dokument basiert

Mehr

Informatik I Tutorium WS 07/08

Informatik I Tutorium WS 07/08 Informatik I Tutorium WS 07/08 Vorlesung: Prof. Dr. F. Bellosa Übungsleitung: Dipl.-Inform. A. Merkel Tutorium: 12 Tutor: Jens Kehne Tutorium 3: Dienstag 13. November 2007 Übersicht Tutorium Übersicht

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens 1 Organisatorisches Freitag, 05. Mai 2006: keine Vorlesung! aber Praktikum von 08.00 11.30 Uhr (Gruppen E, F, G, H; Vortestat für Prototyp)

Mehr

Einführung in. Logische Schaltungen

Einführung in. Logische Schaltungen Einführung in Logische Schaltungen 1/7 Inhaltsverzeichnis 1. Einführung 1. Was sind logische Schaltungen 2. Grundlegende Elemente 3. Weitere Elemente 4. Beispiel einer logischen Schaltung 2. Notation von

Mehr

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER Inhalt 1 Einleitung... 1 2 Einrichtung der Aufgabe für die automatische Sicherung... 2 2.1 Die Aufgabenplanung... 2 2.2 Der erste Testlauf... 9 3 Problembehebung...

Mehr

Parser4Kids interaktive Lernumgebung

Parser4Kids interaktive Lernumgebung Parser4Kids interaktive Lernumgebung Parser4Kids vermittelt die grundlegende Funktionsweise eines Parsers auf eine intuitive und spielerische Art anhand des vereinfachten Modells eines Fertigbauhauses.

Mehr

Wirtschaftsinformatik I

Wirtschaftsinformatik I Wirtschaftsinformatik I - Tutorium 6/ 7 (April 2010) Zusatzinformationen - Lösungsvorschläge Wirtschaftsinformatik I Tutorium Jochen Daum (4.Semester BWL) Universität Mannheim Rechtshinweis: Diese Präsentation

Mehr

Zur drittletzten Zeile scrollen

Zur drittletzten Zeile scrollen 1 Fragen und Antworten zur Computerbedienung Thema : Zur drittletzten Zeile scrollen Thema Stichwort Programm Letzte Anpassung Zur drittletzten Zeile scrollen Scrollen VBA Excel 1.02.2014 Kurzbeschreibung:

Mehr

1 Vom Problem zum Programm

1 Vom Problem zum Programm Hintergrundinformationen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik WS 02/03 AG Betriebssysteme FB3 Kirsten Berkenkötter 1 Vom Problem zum Programm Aufgabenstellung analysieren

Mehr

Erstellen von x-y-diagrammen in OpenOffice.calc

Erstellen von x-y-diagrammen in OpenOffice.calc Erstellen von x-y-diagrammen in OpenOffice.calc In dieser kleinen Anleitung geht es nur darum, aus einer bestehenden Tabelle ein x-y-diagramm zu erzeugen. D.h. es müssen in der Tabelle mindestens zwei

Mehr

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2015/2016 Wirtschaftsingenieur Bachelor 5. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2015/2016 Wirtschaftsingenieur Bachelor 5. Aufgabe Datenstruktur, Dateieingabe und -ausgabe Aufgabenstellung Für eine Hausverwaltung sollen für maximal 500 Wohnungen Informationen gespeichert werden, die alle nach der gleichen Weise wie folgt strukturiert sind: Art Baujahr Wohnung Whnginfo Nebenkosten

Mehr

Vorlesung Theoretische Informatik

Vorlesung Theoretische Informatik Vorlesung Theoretische Informatik Automaten und Formale Sprachen Hochschule Reutlingen Fakultät für Informatik Masterstudiengang Wirtschaftsinformatik überarbeitet von F. Laux (Stand: 09.06.2010) Sommersemester

Mehr

Compiler. Kapitel. Syntaktische Analyse. Kapitel 4. Folie: 1. Syntaktische Analyse. Autor: Aho et al.

Compiler. Kapitel. Syntaktische Analyse. Kapitel 4. Folie: 1. Syntaktische Analyse. Autor: Aho et al. Folie: 1 Kapitel 4 Übersicht Übersicht Syntax: Definition 4 syn-tax: the way in which words are put together to form phrases, clauses, or sentences. Webster's Dictionary Die Syntax (griechisch σύνταξις

Mehr

Einfache Ausdrücke Datentypen Rekursive funktionale Sprache Franz Wotawa Institut für Softwaretechnologie wotawa@ist.tugraz.at

Einfache Ausdrücke Datentypen Rekursive funktionale Sprache Franz Wotawa Institut für Softwaretechnologie wotawa@ist.tugraz.at Inhalt SWP Funktionale Programme (2. Teil) Einfache Ausdrücke Datentypen Rekursive funktionale Sprache Franz Wotawa Institut für Softwaretechnologie wotawa@ist.tugraz.at Interpreter für funktionale Sprache

Mehr

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss Systeme 1 Kapitel 6 Nebenläufigkeit und wechselseitiger Ausschluss Threads Die Adressräume verschiedener Prozesse sind getrennt und geschützt gegen den Zugriff anderer Prozesse. Threads sind leichtgewichtige

Mehr

1 Syntax von Programmiersprachen

1 Syntax von Programmiersprachen 1 Syntax von Programmiersprachen Syntax ( Lehre vom Satzbau ): formale Beschreibung des Aufbaus der Worte und Sätze, die zu einer Sprache gehören; im Falle einer Programmier-Sprache Festlegung, wie Programme

Mehr

Tutorium Rechnerorganisation

Tutorium Rechnerorganisation Woche 2 Tutorien 3 und 4 zur Vorlesung Rechnerorganisation 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu

Mehr

Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester 2012. hack@cs.uni-saarland.de. boesche@cs.uni-saarland.

Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester 2012. hack@cs.uni-saarland.de. boesche@cs.uni-saarland. 1 Programmierung 2 Übersetzer: Code-Erzeugung Sebastian Hack hack@cs.uni-saarland.de Klaas Boesche boesche@cs.uni-saarland.de Sommersemester 2012 Bytecodes Der Java Übersetzer erzeugt keine Maschinensprache

Mehr

Excel Funktionen durch eigene Funktionen erweitern.

Excel Funktionen durch eigene Funktionen erweitern. Excel Funktionen durch eigene Funktionen erweitern. Excel bietet eine große Anzahl an Funktionen für viele Anwendungsbereiche an. Doch es kommt hin und wieder vor, dass man die eine oder andere Funktion

Mehr

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse Übung 03: Schleifen Abgabetermin: xx.xx.xxxx Name: Matrikelnummer: Gruppe: G1 (Prähofer) G2 (Prähofer) G3 (Wolfinger) Aufgabe Punkte gelöst abzugeben schriftlich abzugeben elektronisch Aufgabe 03.1 12

Mehr

FB Informatik. Fehler. Testplan

FB Informatik. Fehler. Testplan Fehler #include int i,n,summe; int summe (int); cout 0) cin>n; i=summme(n); cout

Mehr

t r Lineare Codierung von Binärbbäumen (Wörter über dem Alphabet {, }) Beispiel code( ) = code(, t l, t r ) = code(t l ) code(t r )

t r Lineare Codierung von Binärbbäumen (Wörter über dem Alphabet {, }) Beispiel code( ) = code(, t l, t r ) = code(t l ) code(t r ) Definition B : Menge der binären Bäume, rekursiv definiert durch die Regeln: ist ein binärer Baum sind t l, t r binäre Bäume, so ist auch t =, t l, t r ein binärer Baum nur das, was durch die beiden vorigen

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005 Einführung in die objektorientierte Programmierung mit Java Klausur am 19. Oktober 2005 Matrikelnummer: Nachname: Vorname: Semesteranzahl: Die Klausur besteht aus drei Frageblöcken zu den Inhalten der

Mehr

Anwendungsbeispiele Buchhaltung

Anwendungsbeispiele Buchhaltung Rechnungen erstellen mit Webling Webling ist ein Produkt der Firma: Inhaltsverzeichnis 1 Rechnungen erstellen mit Webling 1.1 Rechnung erstellen und ausdrucken 1.2 Rechnung mit Einzahlungsschein erstellen

Mehr

4 Lexikalische Analyse und Parsing

4 Lexikalische Analyse und Parsing 4 Lexikalische Analyse und Parsing Lexikalische Analyse und Parsing sind die wichtigsten Bereiche des Compilerbaus. Prinzipien und Techniken des Compilerbaus beschränken sich nicht auf die Erstellung von

Mehr

3. LINEARE GLEICHUNGSSYSTEME

3. LINEARE GLEICHUNGSSYSTEME 176 3. LINEARE GLEICHUNGSSYSTEME 90 Vitamin-C-Gehalt verschiedener Säfte 18,0 mg 35,0 mg 12,5 mg 1. a) 100 ml + 50 ml + 50 ml = 41,75 mg 100 ml 100 ml 100 ml b) : Menge an Kirschsaft in ml y: Menge an

Mehr

Programmiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm

Programmiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm Programmiersprachen Einführung in C Teil 2: Prof. Dr. int main (int argc, char *argv[]) int sum = 0; for (i = 0; i

Mehr

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version 1.0.0. 23. September 2015 - 1 -

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version 1.0.0. 23. September 2015 - 1 - Matrix42 Use Case - Sicherung und Rücksicherung persönlicher Version 1.0.0 23. September 2015-1 - Inhaltsverzeichnis 1 Einleitung 3 1.1 Beschreibung 3 1.2 Vorbereitung 3 1.3 Ziel 3 2 Use Case 4-2 - 1 Einleitung

Mehr

SEP 114. Design by Contract

SEP 114. Design by Contract Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit

Mehr

Informatik IC2. Balazs Simon 2005.03.26.

Informatik IC2. Balazs Simon 2005.03.26. Informatik IC2 Balazs Simon 2005.03.26. Inhaltsverzeichnis 1 Reguläre Sprachen 3 1.1 Reguläre Sprachen und endliche Automaten...................... 3 1.2 Determinisieren.....................................

Mehr

Konstruieren der SLR Parsing Tabelle

Konstruieren der SLR Parsing Tabelle Konstruieren der SLR Parsing Tabelle Kontextfreie Grammatik (CFG) Notation 1. Diese Symbole sind Terminals: (a) Kleinbuchstaben vom Anfang des Alphabets wie a, b, c. (b) Operator Symbole wie +,, usw. (c)

Mehr

LU-Zerlegung. Zusätze zum Gelben Rechenbuch. Peter Furlan. Verlag Martina Furlan. Inhaltsverzeichnis. 1 Definitionen.

LU-Zerlegung. Zusätze zum Gelben Rechenbuch. Peter Furlan. Verlag Martina Furlan. Inhaltsverzeichnis. 1 Definitionen. Zusätze zum Gelben Rechenbuch LU-Zerlegung Peter Furlan Verlag Martina Furlan Inhaltsverzeichnis Definitionen 2 (Allgemeine) LU-Zerlegung 2 3 Vereinfachte LU-Zerlegung 3 4 Lösung eines linearen Gleichungssystems

Mehr

Einführung in die Algebra

Einführung in die Algebra Prof. Dr. H. Brenner Osnabrück SS 2009 Einführung in die Algebra Vorlesung 13 Einheiten Definition 13.1. Ein Element u in einem Ring R heißt Einheit, wenn es ein Element v R gibt mit uv = vu = 1. DasElementv

Mehr

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Objektorientierte Programmierung für Anfänger am Beispiel PHP Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten

Mehr

Erwin Grüner 09.02.2006

Erwin Grüner 09.02.2006 FB Psychologie Uni Marburg 09.02.2006 Themenübersicht Folgende Befehle stehen in R zur Verfügung: {}: Anweisungsblock if: Bedingte Anweisung switch: Fallunterscheidung repeat-schleife while-schleife for-schleife

Mehr

Mächtigkeit von WHILE-Programmen

Mächtigkeit von WHILE-Programmen Mächtigkeit von WHILE-Programmen Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen 26. November 2009 Berthold Vöcking, Informatik 1 () Vorlesung Berechenbarkeit

Mehr

2. Programmierung in C

2. Programmierung in C 2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten Operatoren, Ausdrücke und Anweisungen Kontrollstrukturen (Steuerfluss)

Mehr

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {... PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:

Mehr

Informatik Grundlagen, WS04, Seminar 13

Informatik Grundlagen, WS04, Seminar 13 Informatik Grundlagen, WS04, Seminar 13 Informatik Informatik Grundlagen, Seminar 13 WS04 1 Was wir heute besprechen Nachbesprechen von Übungsblatt 11 Rekursion Grundprinzipien Übung Besprechung Übungsblatt

Mehr

Primzahlen und RSA-Verschlüsselung

Primzahlen und RSA-Verschlüsselung Primzahlen und RSA-Verschlüsselung Michael Fütterer und Jonathan Zachhuber 1 Einiges zu Primzahlen Ein paar Definitionen: Wir bezeichnen mit Z die Menge der positiven und negativen ganzen Zahlen, also

Mehr

Erstellen einer PostScript-Datei unter Windows XP

Erstellen einer PostScript-Datei unter Windows XP Erstellen einer PostScript-Datei unter Windows XP Sie möchten uns Ihre Druckvorlage als PostScript-Datei einreichen. Um Fehler in der Herstellung von vorneherein auszuschließen, möchten wir Sie bitten,

Mehr

Kapitel 2. Methoden zur Beschreibung von Syntax

Kapitel 2. Methoden zur Beschreibung von Syntax 1 Kapitel 2 Methoden zur Beschreibung von Syntax Grammatik, die sogar Könige zu kontrollieren weiß... aus Molière, Les Femmes Savantes (1672), 2. Akt 2 Ziele Zwei Standards zur Definition der Syntax von

Mehr

Kompilieren und Linken

Kompilieren und Linken Kapitel 2 Kompilieren und Linken Bevor wir uns auf C++ selbst stürzen, brauchen wir einiges Vorgeplänkel, wie man komfortabel ein größeres C++- kompilieren kann. Mit Java stellt sich der Kompiliervorgang

Mehr

Entwurf von Algorithmen - Kontrollstrukturen

Entwurf von Algorithmen - Kontrollstrukturen Entwurf von Algorithmen - Kontrollstrukturen Eine wichtige Phase in der Entwicklung von Computerprogrammen ist der Entwurf von Algorithmen. Dieser Arbeitsschritt vor dem Schreiben des Programmes in einer

Mehr

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, 17.09.2012 Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, 17.09.2012 Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg. Klausur Informatik Programmierung, 17.09.2012 Seite 1 von 8 Klausurteilnehmer Name: Matrikelnummer: Wichtige Hinweise Es sind keinerlei Hilfsmittel zugelassen auch keine Taschenrechner! Die Klausur dauert

Mehr

Grundlagen von Python

Grundlagen von Python Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren

Mehr

Datenbanken Kapitel 2

Datenbanken Kapitel 2 Datenbanken Kapitel 2 1 Eine existierende Datenbank öffnen Eine Datenbank, die mit Microsoft Access erschaffen wurde, kann mit dem gleichen Programm auch wieder geladen werden: Die einfachste Methode ist,

Mehr

Die Excel Schnittstelle - Pro Pack

Die Excel Schnittstelle - Pro Pack Die Excel Schnittstelle - Pro Pack Die Excel Pro Pack ist eine Erweiterung der normalen Excel Schnittstelle, die in der Vollversion von POSWare Bestandteil der normalen Lizenz und somit für alle Lizenznehmer

Mehr