ANTLR (ANother Tool for Language Recognation)
|
|
- Paula Schulze
- vor 8 Jahren
- Abrufe
Transkript
1 ANTLR (ANother Tool for Language Recognation) 1. Allgemeines / Geschichte (Chris) 2. Options (Phil) 3. Lexer / Parser (Ingmar) 4. Java Runtime Model (Chris) 5. Treeparsing (Phil) 6. Fragen 1
2 Allgemeines Parsergenerator von PCCTS Purdue Compiler Construction Tool Set Generierung von rekursiven Parsern Vorteile EBNF orientiert hohe Flexibilität des Parsers anschauliche Umsetzung LL (k) Verfahren Generierung von Syntaxbäumen 2
3 Geschichte 1988 startete PCCTS als Parsergenerierungs Projekt anfangs DFA - basiert bis 1990 ANTLR zweimal komplett neu geschrieben seit 1990 LL(k) danach Kleinigkeiten verbessert 3
4 ANTLR Optionen Von analyzerdebug bis warnwhenfollowambig 4
5 Einleitung ANTLR bietet verschiedenste Optionen, wie Dateioptionen Grammatikoptionen Optionen für Regeln sowie Kommandozeilenoptionen 5
6 Datei, Grammatik und Regel Optionen Optionen können direkt in den Quellcode geschrieben werden allgemeiner Aufbau options { k = 2 ; defaulterrorhandler = false ; } wo können Optionen stehen: direkt unter dem Header in einer normalen.g-datei in der Grammatik direkt hinter der Defintion des Parsers in einer Regel an folgender Stelle: myrule[args] returns [retval] options { defaulterrorhandler=false; } : // body of rule... ; 6
7 Datei, Grammatik und Regel Optionen (Auswahl) language = LanguageName ; legt zu erzeugende Sprache fest möglich Werte sind: Java (Java) Cpp (C++) Csharp (C# ) k = NumberOfLookahead ; bestimmt die Anzahl der Lookaheadsymbole d.h. maximale Anzahl von Token die bei Alternativen durchsucht werden außerdem wird nach Ausstiegsbedingungen bei EBNF Konstrukten gesucht testliterals = false ; unterdrückt automatische Änderung des Tokentyps buildast = true ; stellt das Interface für Treeparsing und Treewalking zur Verfügung 7
8 Datei, Grammatik und Regel Optionen (Auswahl) analyzerdebug Debugginginformationen während Grammatikanalyse casesensitive Unterdrückt Unterscheidung von Groß- und Kleinschreibung casesensitiveliterals ignoriert Groß- und Kleinschreibung beim Vergleich von Token und Litralen warnwhenfollowambig liefert Exception bei leeren Alternativen 8
9 Kommandozeilenoptionen (Auswahl) -o outputdir legt den Ordner für die Ausgabedateien fest -debug öffnet den ParseView Debugger ParseView ist separat erhältich -html generiert eine HTML - Datei der Grammatik Funktion ist nur für den Parser verfügbar 9
10 Kommandozeilenoptionen (Auswahl) - docbook wie html, nur das eine SGML Datei erzeugt wird -diagnostics erzeugt eine Textdatei der Grammatik mit Debugging Informationen -h -help --help Hilfe -trace -tracelexer -traceparser -tracetreeparser Ausgabe des Trace für alle oder entsprechenden Teil 10
11 PARSER & LEXER But...we've always used automata for lexical analysis! 11
12 LEXER & PARSER Kein DFA LEXER beide verwenden LL(k) mit k beliebig aber fest 12
13 DFA vs. hand build scanner Vorteile DFA einfach aus regulären Ausdrücken herzustellen kommen mit Linksrekursion klar: integer : "[0-9]+" ; real : "[0-9]+{.[0-9]*}.[0-9]+" ; 13
14 DFA vs. hand build scanner Vorteile hand build scanner (hbs) nicht beschränkt auf die Klasse der regulären Sprachen semantische Aktionen sind möglich DFA s bestehen aus Integertabellen (schwer zu debuggen) guter hbs ist schneller als DFA kommt mit UNICODE (16bit) klar 14
15 DFA vs. hand build scanner ANTLR macht beides reguläre Ausdrücke gut zu verstehender LEXER, der mächtiger ist, UNICODE versteht und leicht zu debuggen ist PROBLEME: UNICODE noch nicht vollständig implementiert Linksfaktorisierung 15
16 Aufbau mycompiler.g HEADER OPTIONS LEXER PARSER TREEWALKER Reihenfolge egal *.g ist Konvention 16
17 HEADER Aufbau: header {...übernommener code in compiler... } muss Zielcode entsprechen guter Bereich für eigentlichen Compiler der Lexer, Parser nutzt 17
18 LEXER Aufbau: {...optionaler Zielcode... } class MyLexer extends Lexer; options {...Optionen... } tokens {...optionale Tokendefinitionen... } {...optionaler klasseninterner Zielcode... } Regeln 18
19 PARSER Aufbau: {...optionaler Zielcode... } class MyParser extends Parser; options {...Optionen... } tokens {...optionale Tokendefinitionen... } {...optionaler klasseninterner Zielcode... } Regeln 19
20 REGELN Tokensektion: tokens { KEYWORD_VOID="void"; } Definition von Schlüsselwörtern EXPR; Definition von imaginären Token 20
21 LEXER & PARSER string "for" == 'f' 'o' 'r end of file EOF Zeichen auslassen: WS : ( ' ' '\t' '\n' '\r' )+ { $settype(token.skip); }; 21
22 LEXER & PARSER Aufbau: class MyParser extends Parser; idlist : ( ID )+; beginnt mit Kleinbuchstabe class MyLexer extends Lexer; ID : ( 'a'..'z' )+ ; beginnt mit Großbuchstabe 22
23 REGELN Aufbau: Regelname: Alternative_1 Alternative_2... Alternative_n ; mit exception: mit exception: Regelname throws MyException: A; mit init action: Regelname { init-action}:...; interne token: protected rulename: ; 23
24 REGELN versteht EBNF: (...) Unterregel (...) * beliebig oft (...) + mindestens 1 mal (...)? 1 oder 0 mal or weitere Symbole:.. Bereich (z.b. ('a'..'z') ) ~ not (z.b. (~'\n')* ). wildcard 24
25 REGELN weitere Symbole: {...} semantische Aktionen {...}? semantische Bedingung (...)=> syntaktische Bedingung [...] Regelparameter (später) 25
26 REGELN semantische Aktionen: Regelname: ( {init-action}: {action of 1st production} production_1 {action of 2nd production} production_2 )?; 26
27 REGELN semantische Bedingung: Regelname: { expr }? nur_wenn_expr_true; muss 'boolean' in Java zurückgeben oder 'bool' in C++ 27
28 REGELN syntaktische Bedingungen: Regelname: ( list "=" )=> list "=" list list; 'list' beliebig oft wiederholt selektives Backtracking implementiert durch Exceptions 28
29 REGELN lokal lookahead: COMMENT: "/*" ( { LA(2)!= '/' }? '*' ~('*') )* "*/"; 29
30 REGELN GREEDY Schleifen stat: "if" expr "then" stat ( "else" stat )?; liefert: warning: nondeterminism between alts 1 and 2 of block upon k==1:"else" LÖSUNG: stat: "if" expr "then" stat ( options {greedy=true;} : "else" stat )?; 30
31 REGELN NONGREEDY Schleifen CURLY_BLOCK_SCARF: '{' (.)* '}'; matched alles mit '(.)*' auch abschließende '}' LÖSUNG: CURLY_BLOCK_SCAR: '{' ( options { greedy=false; }:. )* '}'; 31
32 REGELN anderes Beispiel (C-Kommentare): class L extends Lexer; options { k=2; } CMT: "/*" (options {greedy=false;}:. )* "*/"; 32
33 REGELN gebräuchliche Vorzeichen: class MyLexer extends Lexer; options { k=4; } GT : ">"; GE : ">="; RSHIFT : ">>"; RSHIFT_ASSIGN : ">>="; UNSIGNED_RSHIFT : ">>>"; UNSIGNED_RSHIFT_ASSIGN : ">>>="; gelöst durch Lookaheadanzahl 33
34 REGELN Textmanipulation von TOKEN: BR : '<'! "br" '>'! ; vernachlässigt '<' und '>' REGEL! :... ; Text der Regel ist leer REGEL :...!...; Text der Regel bei bestimmter Alternative leer 34
35 REGELN Textmanipulation von TOKEN: $append(x) hänge x an Text von TOKEN heran $settext(x) setze Text von Regel auf x $gettext liefert Text von Regel $settoken(x) setzt Tokenobject auf x $settype(x) setzt Typ des Token auf x 35
36 REGELN TOKEN labeln: INDEX: '[' i:int ']' {System.out.println(i.getText());}; INT: ('0'..'9')+ ; 36
37 REGELN Filtern: class T extends Lexer; options { k=2; filter=true; } P : "<p>" ; BR: "<br>" ; nur <br> und <p> weitergeleitet. Rest wird ignoriert 37
38 REGELN Filtern: class T extends Lexer; options { k=2; filter = true; } P : "<p>" ; BR: "<br>" ; TABLE : "<table" (WS)? (ATTRIBUTE)* (WS)? '>' ; WS : ' ' '\t' '\n' ; ATTRIBUTE :... ; "<table 8 = width ;>" würde gefiltert werden, da nicht richtig 38
39 REGELN LÖSUNG: setcommittopath(boolean commit) TABLE: "<table" (WS)? {setcommittopath(true);} (ATTRIBUTE)* (WS)? '>'; 39
40 REGELN Filtern bestimmter Regeln: class T extends Lexer; options { k=2; filter = P; } P : "<p>" ;... 40
41 Java Runtime Model 41
42 Java Runtime Model Regeln in file.g class MyParser extends Parser; options { } Regeln class MyLexer extends Lexer; options { } Regeln class MyTreeParser extends TreeParser; options { } Regeln 42
43 Java Runtime Model erzeugte Dateien: MyParser.java MyLexer.java MyTokenTypes.java MyTokenTypes.txt (MyTreeParser.java) 43
44 MyParser.java / Bsp 1 Regeldefinition in mycompiler.g type : KW_BOOLEAN KW_FLOAT KW_INT KW_VOID ; 44
45 MyParser.java / Bsp1 public final void type() throws RecognitionException, TokenStreamException { try { //für Fehlerbehandlung switch ( LA(1)) { case KW_BOOLEAN: { match(kw_boolean); break; }... default:{ throw new NoViableAltException(LT(1), getfilename()); }//ende default } //ende switch }catch }// ende void type 45
46 MyParser.java / Bsp 2 Regeldefinition in mycompiler.g parameterlist : type id ( "," type id )* ; 46
47 MyParser.java / Bsp 2 public final void parameterlist() throws RecognitionException, TokenStreamException { } try { type(); id(); _loop70: do { if ((LA(1)==45)) { match(45); type(); id(); }else {break _loop70;} } while (true); }catch (// ) {//Fehlerbehandlung } 47
48 MyParser.java Zusammenfassung: jede Regel hat Methode Probe mit if oder switch möglich: Token als Integer-Konstanten import MyLexerTokenTypes lokale Fehlerbehandlung 48
49 MyLexer.java / Bsp 1 Tokendefinition in mycompiler.g PLUS: "+"; MINUS: "-"; 49
50 MyLexer.java / Bsp 1 public Token nexttoken() throws TokenStreamException { Token therettoken=null; tryagain: for (;;) { Token _token = null; int _ttype = Token.INVALID_TYPE; resettext(); switch ( LA(1)) { case '+': mplus(true); therettoken=_returntoken; break; case '-': mminus(true); therettoken=_returntoken; break; 50
51 MyLexer.java / Bsp 2 Tokendefinition in mycompiler.g LETTER: (('a'..'z') ('A'..'Z')); 51
52 MyLexer.java / Bsp 2 case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': mid(true); therettoken=_returntoken; break; default: if ((LA(1)=='=') && (LA(2)=='=')) { mequ(true); therettoken=_returntoken; } 52
53 MyLexer.java / Methoden public final void mplus(boolean _createtoken) throws { int _ttype; Token _token=null; int _begin=text.length(); _ttype = PLUS; int _saveindex; match("+"); if ( _createtoken && _token==null &&_ttype!=token.skip ) { _token = maketoken(_ttype); _token.settext(new String(text.getBuffer(), _begin, text.length()-_begin)); } } _returntoken = _token; 53
54 MyLexer.java Zusammenfassung implements LexerTokenTypes jeder Token Typ eigene Methode nexttoken(); 54
55 MyTokenTypes.java public interface c0lexertokentypes { int EOF = 1; int NULL_TREE_LOOKAHEAD = 3; int KW_BOOLEAN = 4; int KW_DO = 5; int KW_ELSE = 6; } 55
56 Tree Parsing mit ANTLR Von Bäumen und Waldläufern 56
57 Inhalt Einleitung Was ist ein Treeparser Notation Grammatikregeln Transformation und Operatoren Beispiele einfach Rückgabewert Patternmatching Die letzte Seite 57
58 Einleitung ANTLR bietet Hilfsmittel um abstrakte Syntaxbäume (ASTs) zu konstruieren Erweiterung der Grammatik notwendig Hinzufügen von Baumoperatoren Regeln neu definieren zusätzliche Aktionen ergänzen Veränderung der grammatikalen Struktur der ASTs ermöglicht einfaches Treewalking während der Übersetzung 58
59 Was ist ein Tree Parser Parsing dient der Ermittlung einer grammatikalen Struktur ANTLR sieht Baum als Eingabe von Knoten in zwei Dimensionen Unterschied zwischen normalem Tokenparsing und Treeparsing: Testen nach dem Lookahead neuen Regelmethoden definiert zweidimensionale Baumstruktur ANTLR kann alle Bäume parsen, die das AST Interface implementieren Die beiden wichtigsten Funktionen sind dabei getfirstchild liefert eine Referenz auf das erste Kind getnextsibling liefert eine Referenz auf das nächste Kind 59
60 Notation Aufbau eines Knotens besteht aus einer Liste mit Kindern mit etwas Text (z.b. Wert des Variableninhaltes) und einem Knotentyp Somit ist jeder Knoten eines Baumes auch ein Baum Notation wie in LISP Einfach: #(A B C) Baum mit Wurzel A und Kindern B und C 60
61 Notation Aufbau eines Knotens besteht aus einer Liste mit Kindern mit etwas Text (z.b. Wert des Variableninhaltes) und einem Knotentyp Somit ist jeder Knoten eines Baumes auch ein Baum Notation wie in LISP Einfach: #(A B C) Baum mit Wurzel A und Kindern B und C Verschachtelung: #(A B #(C D E)) 61
62 Notation Aufbau eines Knotens besteht aus einer Liste mit Kindern mit etwas Text (z.b. Wert des Variableninhaltes) und einem Knotentyp Somit ist jeder Knoten eines Baumes auch ein Baum Notation wie in LISP Einfach: #(A B C) Baum mit Wurzel A und Kindern B und C Verschachtelung: #(A B #(C D E)) Baum mit Wurzel A, einem Kind B und einem Unterbaum mit C als Wurzel und D sowie E als Kindern 62
63 Die AST Definition public interface AST { /** Get the token type for this node */ public int gettype(); /** Set the token type for this node */ public void settype(int ttype); /** Get the token text for this node */ public String gettext(); /**Set the token text for this node */ public void settext(string text); /** Get the first child of this node; null if no children */ public AST getfirstchild(); /** Set the first child of a node. */ public void setfirstchild(ast c); /** Get the next sibling in line after this one */ public AST getnextsibling(); /** Set the next sibling after this one. */ public void setnextsibling(ast n); /**Add a (rightmost) child to this node */ public void addchild(ast c); } 63
64 Grammatikregeln für Bäume Baumgrammatiken Sammlung von EBNF Regeln mit Aktionen sowie semantischen und syntaktischen Prädikaten rule: alternative1 alternative2... alternativen ; jede alternative Produktion ist zusammengesetzt aus Elementliste: # (root-token child1 child2... child n) Beispiel: Additionsbaum mit zwei Integer Kindern: 64
65 Grammatikregeln für Bäume Baumgrammatiken Sammlung von EBNF Regeln mit Aktionen sowie semantischen und syntaktischen Prädikaten rule: alternative1 alternative2... alternativen ; jede alternative Produktion ist zusammengesetzt aus Elementliste: # (root-token child1 child2... child n) Beispiel: Additionsbaum mit zwei Integer Kindern: # (PLUS INT INT) 65
66 Grammatikregeln für Bäume man beachte: Wurzel eines Baumpatterns muss eine Tokenreferenz sein Kinder dürfen auch Subrules sein Beispiel If then else Statement else optional # (IF expr stat (stat)?) Wichtig für Baumgrammatiken und Strukturen: keine exakten Matches ausreichende Matches genügen Übereinstimmung wird geliefert auch wenn Teile noch ungeparst sind Bsp.: # (A B) # paßt zu allen Bäume gleicher Struktur, wie # (A # (B C) D) 66
67 Syntaktische Prädikate Treeparsing benutzt Lookahead von k = 1 Möglichkeit unterschiedliche Baumstrukturen zu beschreiben Ziel: Beschränkung durch den fixen Lookahead umgehen Lösung: Syntaktische Prädikate Beispiel: Unterscheidung des unären und binären Minusoperators: expr: ( # (MINUS expr expr) ) => # (MINUS expr expr) # (MINUS expr)... ; Reihenfolge beachten, da zweite Alternative Teilmenge der ersten ist 67
68 Baumschule - Transformation ANTLR Tree Parse unterstützt buildast Option ohne Codetransformation wird Eingabebaum zum Ausgabebaum jede Regel hat implizit einen (automatisch definierten) Ergebnisbaum getast liefert den Ergebnisbaum der Startregel 68
69 Der! Operator Regeln können um Suffix! erweitert werden unterdrückt automatisches Hinzufügen zum Ergebnisbaum interne Verarbeitung findet jedoch trotzdem statt Kann mit Regelreferenzen und Regeldefinitionen verwendet werden Beispiel: begin! : INT PLUS i:int { #begin = #(PLUS INT i); } ;! kann auch als Präfixoperator verwendet werden Funktionsweise wie oben Filtert jedoch nur die entsprechende Alternative 69
70 Der ^ Operator Blätter jeder Tokenreferenz sowie jedem Tokenbereich wird ein Blatt zugeordnet ohne Suffixe wird Tokenliste erzeugt und der Baum kopiert Wurzeln jeder Token mit dem Suffix ^ wird als Wurzelknoten behandelt Sinn: Token ist Operatorknoten und gleichzeitig auch Wurzel eines neuen Teilbaums Beispiel: Eingabe: a : A B^ C^ ; Ergebnisbaum:?? 70
71 Der ^ Operator Blätter jeder Tokenreferenz sowie jedem Tokenbereich wird ein Blatt zugeordnet ohne Suffixe wird Tokenliste erzeugt und der Baum kopiert Wurzeln jeder Token mit dem Suffix ^ wird als Wurzelknoten behandelt Sinn: Token ist Operatorknoten und gleichzeitig auch Wurzel eines neuen Teilbaums Beispiel: Eingabe: a : A B^ C^ ; Ergebnisbaum: #(C #(B A)) Ergebnisbaum ohne ^ : Liste A B C 71
72 Beispiel einfacher Taschenrechner mit folgender Grammatik class CalcLexer extends Lexer; WS : (' ' '\t' '\n' '\r') { _ttype = Token.SKIP; } ; LPAREN : '(' ; RPAREN : ')' ; STAR: '*' ; PLUS: '+' ; SEMI: ';' ; INT : ('0'..'9')+ ; class CalcParser extends Parser; options { } buildast = true; // uses CommonAST by default expr : mexpr (PLUS^ mexpr)* SEMI! ; mexpr : atom (STAR^ atom)* ; atom: INT ; Beispiel: Eingabe 3 * erzeugt folgenden Baum: 72
73 Beispiel einfacher Taschenrechner mit folgender Grammatik class CalcLexer extends Lexer; WS : (' ' '\t' '\n' '\r') { _ttype = Token.SKIP; } ; LPAREN : '(' ; RPAREN : ')' ; STAR: '*' ; PLUS: '+' ; SEMI: ';' ; INT : ('0'..'9')+ ; class CalcParser extends Parser; options { } buildast = true; // uses CommonAST by default expr : mexpr (PLUS^ mexpr)* SEMI! ; mexpr : atom (STAR^ atom)* ; atom: INT ; Beispiel: Eingabe 3 * erzeugt folgenden Baum: # ( + ( * 3 4 ) 5 ) 73
74 Präzedenz Präzedenz von Operatoren wird nicht mit angegeben wird komplett über die Baumstruktur kodiert. Eingabesymbole sind in Knoten verstaut die Struktur jedoch in der Beziehung der Knoten untereinander 74
75 Beispiel mit Rückgabewert Struktur muss rekursiv beschrieben werden: class CalcTreeWalker extends TreeParser; expr : # (PLUS expr expr) # (STAR expr expr) INT ; class CalcTreeWalker extends TreeParser; expr returns [int r] { int a,b; r=0; } : # (PLUS a = expr b = expr) {r = a + b ;} # (STAR a = expr b =e xpr) {r = a * b ;} i : INT {r = Integer.parseInt(i.getText()); } ; 75
76 Anbindung an Treeparser und Treewalker import java.io.*; import antlr.commonast; import antlr.collections.ast; class Calc { public static void main(string[] args) { try { CalcLexer lexer = new CalcLexer(new DataInputStream(System.in)); CalcParser parser = new CalcParser(lexer); // Parse the input expression parser.expr(); CommonAST t = (CommonAST)parser.getAST(); // Print the resulting tree out in LISP notation System.out.println(t.toStringList()); CalcTreeWalker walker = new CalcTreeWalker(); } } // Traverse the tree created by the parser int r = walker.expr(t); System.out.println("value is "+r); } catch(exception e) { System.err.println("exception: "+e); } 76
77 Beispiel Patternmatching class CalcTreeWalker extends TreeParser; options { buildast = true; } // "transform" mode expr:! #(PLUS left:expr right:expr) { // '!' turns off auto transform // x + 0 = x if ( #right.gettype() == INT && Integer.parseInt( #right.gettext() ) == 0) { #expr = #left ; } // 0 + x = x else if ( #left.gettype() == INT && Integer.parseInt( #left.gettext() ) == 0) { #expr = #right ; } // x + y else { #expr = # (PLUS, left, right) ; } } # (STAR expr expr) // use auto transformation i: INT ; 77
78 Erwähnenswert was ANTLR nicht bietet: Referenzknoten, die nichts weiter tun, als auf andere Knoten zu zeigen weiteres Feature des ANTLR Tree Parsers: Ausgabe des Baumes in XML (Drittanbieter) 78
DSLs mit Xtext entwerfen. 17.08.2012, A. Arnold
DSLs mit Xtext entwerfen 17.08.2012, A. Arnold Copyright 2012 anderscore GmbH Inhalt 1. Was sind DSLs? 2. Xtext Konzepte 3. Einführung ins Sprachdesign 4. Hands On! 3 4 8 20 2 Was sind DSLs? Domain Specific
Einführung in die Programmierung
Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In
Objektorientierte Programmierung
Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Zusatzaufgaben Lösungsvorschlag Objektorientierte Programmierung Lösung 22 (Java und UML-Klassendiagramm)
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:
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
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
Definition von domänenspezifischen Sprachen mit Xtext: Einführung. 19. November 2014
Definition von domänenspezifischen Sprachen mit Xtext: Einführung 19. November 2014 Überblick Was ist zu tun, wenn wir selbst einen Ansatz für modellgetriebenen Entwicklung definieren wollen? Anforderungserfassung
Große Übung Praktische Informatik 1
Große Übung Praktische Informatik 1 2005-12-08 fuessler@informatik.uni-mannheim.de http://www.informatik.uni-mannheim.de/pi4/people/fuessler 1: Announcements / Orga Weihnachtsklausur zählt als Übungsblatt,
Rainer Stropek cubido. Baumschule Expression Trees in C#, CLR und DLR
Rainer Stropek cubido Baumschule Expression Trees in C#, CLR und DLR Inhalt Als Anwendungsentwickler kommt man selten mit Expression Trees in Berührung. Sie sind ein Implementierungsdetail von LINQ. Ihre
Lösungsvorschläge. zu den Aufgaben im Kapitel 4
Lösungsvorschläge zu den Aufgaben im Kapitel 4 Aufgabe 4.1: Der KNP-Algorithmus kann verbessert werden, wenn in der Funktion nexttabelle die Zuweisung next[tabindex] = ruecksprung; auf die etwas differenziertere
188.154 Einführung in die Programmierung für Wirtschaftsinformatik
Beispiel 1 Vererbung (Liste) Gegeben sind die beiden Klassen ListNode und PersonNode. 188.154 Einführung in die Programmierung für Wirtschaftsinformatik Wiederholung, Prüfungsvorbereitung Monika Lanzenberger
Programmieren in Java
Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können
Einführung in Javadoc
Einführung in Javadoc Johannes Rinn http://java.sun.com/j2se/javadoc Was ist Javadoc? Javadoc ist ein Werkzeug, dass eine standardisierte Dokumentation für die Programmiersprache Java unterstützt. Vorteil:
Äquivalente Grammatiken / attributierte Grammatik
Äquivalente Grammatiken / attributierte Grammatik Linksfaktorisierung Elimination von Linksrekursion Umwandlung von EBNF in BNF Attributierte Grammatik Semantikfunktionen und Übersetzungsschema Synthetisierte,
Pragmatik von Programmiersprachen
Pragmatik von Programmiersprachen Im Kontext der Notation von Quelltexten Mike Becker, 11. Dezember 2014 Szenario: IT Dienstleister Unternehmen: Produkte: Kunden: IT Dienstleistung Beratung und Software
Ü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
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
Vorkurs C++ Programmierung
Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:
Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12
Grundlagen: Folge 19 - Bäume 19.1 Binärbäume - Allgemeines Unter Bäumen versteht man in der Informatik Datenstrukturen, bei denen jedes Element mindestens zwei Nachfolger hat. Bereits in der Folge 17 haben
Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.
Einfache Ein- und Ausgabe mit Java 1. Hallo-Welt! Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. /** Die Klasse hello sendet einen
Suchbäume. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung
Suchbäume Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative
Java Kurs für Anfänger Einheit 5 Methoden
Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden
Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck
Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle
Formale Spezialisierungstechniken. am Beispiel des binären Baums. Hybride Programmiersprachen Daniel Krompass Berlin, 2009
Formale Spezialisierungstechniken am Beispiel des binären Baums. Hybride Programmiersprachen Daniel Krompass Berlin, 2009 Spezialisierungsarten (Typbeziehungen erster Art) X stellt Methoden und Eigenschaften
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
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
368 4 Algorithmen und Datenstrukturen
Kap04.fm Seite 368 Dienstag, 7. September 2010 1:51 13 368 4 Algorithmen und Datenstrukturen Java-Klassen Die ist die Klasse Object, ein Pfeil von Klasse A nach Klasse B bedeutet Bextends A, d.h. B ist
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
Java Einführung Abstrakte Klassen und Interfaces
Java Einführung Abstrakte Klassen und Interfaces Interface Interface bieten in Java ist die Möglichkeit, einheitliche Schnittstelle für Klassen zu definieren, die später oder/und durch andere Programmierer
EndTermTest PROGALGO WS1516 A
EndTermTest PROGALGO WS1516 A 14.1.2016 Name:................. UID:.................. PC-Nr:................ Beachten Sie: Lesen Sie erst die Angaben aufmerksam, genau und vollständig. Die Verwendung von
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
4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.
Binäre Bäume Definition: Ein binärer Baum T besteht aus einer Menge von Knoten, die durch eine Vater-Kind-Beziehung wie folgt strukturiert ist: 1. Es gibt genau einen hervorgehobenen Knoten r T, die Wurzel
Einführung Compilergenerierung Bewertung Referenzen. SableCC. Benjamin Daeumlich
06.07.2006 Gliederung 1 2 3 4 . Autor und Name Features Autor Autor und Name Features Autor: Étienne Gagnon : Teil seiner Masterarbeit an der McGill-Universität Montreal vom März 1998 Name Autor und Name
Objektorientierte Programmierung
Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Übungsblatt 5 Lösungsvorschlag Objektorientierte Programmierung 22. 05. 2006 Lösung 9 (SMS-Eingabe am
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
Programmieren in Java
Programmieren in Java Dateien lesen und schreiben 2 Übersicht der heutigen Inhalte File Streams try-with-resources Properties csv-dateien 3 Klasse File Die Klasse java.io.file bietet Unterstützung im Umgang
Algorithmik II. a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge 20, 28, 35, 31, 9, 4, 13, 17, 37, 25 ein.
Aufgabe 10 Binäre Bäume a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge, 28, 35, 31, 9, 4,, 17, 37, 25 ein. 1. Einfügen von : 3. Einfugen von 35: 2. Einfügen von 28: 28 28 10. Einfügen
3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1
3.2 Binäre Suche Beispiel 6.5.1: Intervallschachtelung (oder binäre Suche) (Hier ist n die Anzahl der Elemente im Feld!) Ein Feld A: array (1..n) of Integer sei gegeben. Das Feld sei sortiert, d.h.: A(i)
Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung
Grundlagen der Programmierung Prof. H. Mössenböck 14. Schrittweise Verfeinerung Entwurfsmethode für Algorithmen Wie kommt man von der Aufgabenstellung zum Programm? Beispiel geg.: Text aus Wörtern ges.:
Jan Parthey, Christin Seifert. 22. Mai 2003
Simulation Rekursiver Auto-Assoziativer Speicher (RAAM) durch Erweiterung eines klassischen Backpropagation-Simulators Jan Parthey, Christin Seifert jpar@hrz.tu-chemnitz.de, sech@hrz.tu-chemnitz.de 22.
Binäre Bäume Darstellung und Traversierung
Binäre Bäume Darstellung und Traversierung Name Frank Bollwig Matrikel-Nr. 2770085 E-Mail fb641378@inf.tu-dresden.de Datum 15. November 2001 0. Vorbemerkungen... 3 1. Terminologie binärer Bäume... 4 2.
Client-Server-Beziehungen
Client-Server-Beziehungen Server bietet Dienste an, Client nutzt Dienste Objekt ist gleichzeitig Client und Server Vertrag zwischen Client und Server: Client erfüllt Vorbedingungen eines Dienstes Server
Programmieren. 10. Tutorium 4./ 5. Übungsblatt Referenzen
Programmieren 10. Tutorium 4./ 5. Übungsblatt Inhalt I. Übungsblatt 4 II. III. - Rückgabe und Besprechung - Vorbereitung auf Wiederholung/ Nachtrag - Operatorpräzedenzen IV. Übungsblatt 5 - Vorstellung
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/
Übersicht Programmablaufsteuerung
Übersicht Programmablaufsteuerung Konditionale Verzweigung: if - else switch-anweisung Schleifenkonstrukte: while, do - while for Schleife Sprung-Anweisungen: break, continue, goto, return Anweisungen
Innere Klassen in Java
Innere Klassen in Java SS 2012 Prof. Dr. Margarita Esponda Innere Klassen Klassen- oder Interfacedefinitionen können zur besseren Strukturierung von Programmen verschachtelt werden Eine "Inner Class" wird
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
Suchen und Sortieren
(Folie 69, Seite 36 im Skript) 5 6 1 4 Als assoziatives Array geeignet Schlüssel aus geordneter Menge Linke Kinder kleiner, rechte Kinder größer als Elternknoten Externe und interne Knoten Externe Knoten
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)
Verteilte Systeme CS5001
Verteilte Systeme CS5001 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Client-Server-Anwendungen: Vom passiven (shared state) Monitor zum aktiven Monitor Monitor (Hoare, Brinch-Hansen,
Java: Vererbung. Teil 3: super() www.informatikzentrale.de
Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und
Java-Schulung Grundlagen
Java-Schulung Grundlagen Java 2 Standard Edition JDK 5 / 6 31.05.2008 Marcel Wieczorek 1 Themenübersicht Basiswissen Objektorientierung Datentypen Fehlerbehandlung Sonstiges Einführung Klassen, Strings
Test-Driven Design: Ein einfaches Beispiel
Test-Driven Design: Ein einfaches Beispiel Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer SS 06 2 Ziele Veranschaulichung der Technik des Test-Driven Design am Beispiel eines Programms
Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005
Einführung in Java PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Gliederung 1. Was ist Java / Geschichte von Java 2. Prinzip der Plattformunabhängigkeit 3. Wie kommt man vom Quellcode zum Programm
Ü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
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
Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6
Gudrun Fischer Sascha Kriewel programmierung@is.informatik.uni-duisburg.de Anmeldung zur Klausur! Übungsblatt Nr. 6 Um an der Klausur teilzunehmen, müssen sich Studierende der angewandten Informatik in
Konfigurationsanleitung Access Control Lists (ACL) Funkwerk. Copyright Stefan Dahler - www.neo-one.de 13. Oktober 2008 Version 1.0.
Konfigurationsanleitung Access Control Lists (ACL) Funkwerk Copyright Stefan Dahler - www.neo-one.de 13. Oktober 2008 Version 1.0 Seite - 1 - 1. Konfiguration der Access Listen 1.1 Einleitung Im Folgenden
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?
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
Informatik II Bäume. Beispiele. G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de. Stammbaum. Stammbaum. Stammbaum
lausthal Beispiele Stammbaum Informatik II. Zachmann lausthal University, ermany zach@in.tu-clausthal.de. Zachmann Informatik - SS 06 Stammbaum Stammbaum / Parse tree, Rekursionsbaum Parse tree, Rekursionsbaum
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
Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek
Programmieren I Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2008/2009 1 / 22 2 / 22 Strategie zum Entwurf von Klassen Beispiele Objektorientierte Sichtweise: Mit welchen Objekten habe ich es
II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:
Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen
Java Kurs für Anfänger Einheit 4 Klassen und Objekte
Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse
Kapiteltests zum Leitprogramm Binäre Suchbäume
Kapiteltests zum Leitprogramm Binäre Suchbäume Björn Steffen Timur Erdag überarbeitet von Christina Class Binäre Suchbäume Kapiteltests für das ETH-Leitprogramm Adressaten und Institutionen Das Leitprogramm
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
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
Idee: Wenn wir beim Kopfknoten zwei Referenzen verfolgen können, sind die Teillisten kürzer. kopf Eine Datenstruktur mit Schlüsselwerten 1 bis 10
Binäre Bäume Bäume gehören zu den wichtigsten Datenstrukturen in der Informatik. Sie repräsentieren z.b. die Struktur eines arithmetischen Terms oder die Struktur eines Buchs. Bäume beschreiben Organisationshierarchien
AVL-Bäume Analyse. Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl:
AVL-Bäume Analyse (Folie 85, Seite 39 im Skript) Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl: 0 falls n = 0 F n = 1 falls
Übungsblatt 3: Algorithmen in Java & Grammatiken
Humboldt-Universität zu Berlin Grundlagen der Programmierung (Vorlesung von Prof. Bothe) Institut für Informatik WS 15/16 Übungsblatt 3: Algorithmen in Java & Grammatiken Abgabe: bis 9:00 Uhr am 30.11.2015
Übung 1 mit C# 6.0 MATTHIAS RONCORONI
Übung 1 mit C# 6.0 MATTHIAS RONCORONI Inhalt 2 1. Überblick über C# 2. Lösung der Übung 1 3. Code 4. Demo C# allgemein 3 aktuell: C# 6.0 mit.net-framework 4.6: Multiparadigmatisch (Strukturiert, Objektorientiert,
Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny
Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.
Javakurs zu Informatik I. Henning Heitkötter
Javakurs zu Informatik I Arrays vergleichen Implementieren Sie folgende Methode, die prüft, ob die Elemente der beiden Arrays an jeder Position übereinstimmen: public static boolean identisch(int[] a,
Einstieg in die Informatik mit Java
1 / 22 Einstieg in die Informatik mit Java Grundlagen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 22 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White
Software Entwicklung 1. Fallstudie: Arithmetische Ausdrücke. Rekursive Klassen. Überblick. Annette Bieniusa / Arnd Poetzsch-Heffter
Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter Fallstudie: Arithmetische Ausdrücke AG Softech FB Informatik TU Kaiserslautern Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 33 Überblick
Software Engineering Klassendiagramme Assoziationen
Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen
Computeranwendung und Programmierung (CuP)
Computeranwendung und Programmierung (CuP) VO: Peter Auer (Informationstechnologie) UE: Norbert Seifter (Angewandet Mathematik) Organisatorisches (Vorlesung) Vorlesungszeiten Montag 11:15 12:45 Freitag
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
Quelltextähnlichkeit
Quelltextähnlichkeit String autor = Tobias Jamin ; String projekt = Arte-Fakt ; String seminar = Transformationen ; Date termin = new Date(3, // Tag 2, // Monat 2006); Presentation praesentation = new
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
Grundlagen der Programmierung Prof. H. Mössenböck. 3. Verzweigungen
Grundlagen der Programmierung Prof. H. Mössenböck 3. Verzweigungen If-Anweisung n > 0? j n if (n > 0) x = x / n; ohne else-zweig x x / n j max x x > y? n max y if (x > y) max = x; else max = y; mit else-zweig
Einstieg in die Informatik mit Java
Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form
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
5. Tutorium zu Programmieren
5. Tutorium zu Programmieren Dennis Ewert Gruppe 6 Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2008 by IPD Snelting
Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala
Das Typsystem von Scala 1 Eigenschaften Das Typsystem von Scala ist statisch, implizit und sicher 2 Nichts Primitives Alles ist ein Objekt, es gibt keine primitiven Datentypen scala> 42.hashCode() res0:
Gebundene Typparameter
Gebundene Typparameter interface StringHashable { String hashcode(); class StringHashMap { public void put (Key k, Value v) { String hash = k.hashcode();...... Objektorientierte
Kontrollstrukturen, Pseudocode und Modulo-Rechnung
Kontrollstrukturen, Pseudocode und Modulo-Rechnung CoMa-Übung III TU Berlin 29.10.2012 CoMa-Übung III (TU Berlin) Kontrollstrukturen, Pseudocode und Modulo-Rechnung 29.10.2012 1 / 1 Themen der Übung 1
Abteilung Informatik, JFC/Swing 2004 Diego Schmidlin V2.2
Inhalt 1. Printing API 1. Übersicht 2. Vorgehen 3. Beispiel 2. Klasse PrintUtils 3. Mehrere Seiten drucken Folie 1 Lernziele Sie wissen, wie Sie Swing-Komponenten ausdrucken können Sie kennen den Aufbau
Klassendefinitionen verstehen
Klassendefinitionen verstehen Java-Programme bestehen aus Klassendefinitionen und sonst nichts! 1 1.0 Konzepte Felder Konstruktoren Methoden Parameter Zuweisungen ( = ) Anweisungen bedingte Anweisungen
Pakete dienen dazu, die Software eines Projektes in größere inhaltlich zusammengehörige Bereiche mit eigenem Namen einzuteilen (siehe Java API).
Paketdeklaration Paketdeklaration package Bezeichner ; Pakete dienen dazu, die Software eines Projektes in größere inhaltlich zusammengehörige Bereiche mit eigenem Namen einzuteilen (siehe Java API). Ein
Java Einführung Collections
Java Einführung Collections Inhalt dieser Einheit Behälterklassen, die in der Java API bereitgestellt werden Wiederholung Array Collections (Vector, List, Set) Map 2 Wiederholung Array a[0] a[1] a[2] a[3]...
Musterlösungen zur Klausur Informatik 3
Musterlösungen zur Klausur Informatik 3 Justus-Liebig-Universität Gießen Wintersemester 2003/2004 Aufgabe 1 (6 Punkte) Man kreuze bei den folgenden Deklarationen und Definitionen jeweils an, ob sie aus
3 Objektorientierte Konzepte in Java
3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine
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
Nathan Burgener. Design by Contract. Modul SWE
NathanBurgener DesignbyContract ModulSWE NathanBurgener Inhaltsverzeichnis 1 WasistDesignbyContract...3 1.1 Überblick...3 1.2 DesignbyContractmitMethoden...4 1.3 DesignbyContractmitKlassen...5 1.4 Vererbung...6
Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter
Die Programmiersprache Java Dr. Wolfgang Süß Thorsten Schlachter Eigenschaften von Java Java ist eine von der Firma Sun Microsystems entwickelte objektorientierte Programmiersprache. Java ist......a simple,
WebService in Java SE und EE
Schlüsselworte Java, JAX-WS, JAX-RS, JAXB, XML. Einleitung WebService in Java SE und EE Wolfgang Nast MT AG Ratingen Es werden die Mölichkeiten von WebServices in Java SE und EE, mit SOAP und REST gezeigt.
Klausur zur Einführung in die objektorientierte Programmierung mit Java
Klausur zur Einführung in die objektorientierte Programmierung mit Java im Studiengang Informationswissenschaft Prof. Dr. Christian Wolff Professur für Medieninformatik Institut für Medien-, Informations-
Assoziation und Aggregation
Assoziation und Aggregation Martin Wirsing in Zusammenarbeit mit Matthias Hölzl, Nora Koch 05/03 2 Ziele Verstehen der Begriffe Assoziation und Aggregation Implementierung von Assoziationen in Java schreiben