Algorithmen und Datenstrukturen II

Größe: px
Ab Seite anzeigen:

Download "Algorithmen und Datenstrukturen II"

Transkript

1 Syntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten Objektori Algorithmen und Datenstrukturen II AG Praktische Informatik Technische Fakultät Vorlesung Sommer 2009

2 Syntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten Objektori Veranstalter Vorlesung und Übungen Raum: M3-124 Tel.: 0521/

3 Syntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten Objektori Webseite zur Vorlesung Informationen zur Vorlesung und den Übungen Folien, Skript, Übungszettel AuDIISS09/

4 Syntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten Objektori Webseite zur Vorlesung Informationen zur Vorlesung und den Übungen Folien, Skript, Übungszettel AuDIISS09/ Account-Antrag: accountantrag.html Abholung nach ca. 2 Tagen im Support-Büro M3-100.

5 Syntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten Objektori Übungsgruppen Anmeldung zu den Übungen durch Eintrag auf den Listen am schwarzen Brett der Technischen Fakultät Zeitraum der Anmeldung: Dienstag 14.4., ca. 15 Uhr bis Donnerstag 16.4., 16 Uhr Raumnummern und Tutoren werden ab Freitag, dem 17.4., am schwarzen Brett bekanntgegeben

6 Syntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten Objektori Aufgabenzettel erstes Übungsblatt am (dann jeweils am Dienstag in der Vorlesung) Aufgaben in Gruppen von 3 Studierenden bearbeiten Lösungen werden eine Woche nach der Ausgabe in der Vorlesung eingesammelt Leistungsnachweis: 1 mindestens 50% der möglichen Punktzahl in den Übungszetteln 2 erfolgreiche Bearbeitung der Projektaufgabe 3 regelmäßige aktive Teilnahme an den Übungen. Es darf maximal zweimal unentschuldigt gefehlt werden. Ansonsten ist ein ärztliches Attest erforderlich. Die Übungen beginnen in der Woche vom bis

7 Syntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten Objektori Einzelprojekt Vorbereitung auf TdPE Veranstaltung Java-Programmieraufgabe als Einzelarbeit Ausgabe der Projektaufgabe am Abgabe der Lösungen spätestens am

8 Syntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten Objektori Übersicht 1 Syntax und Semantik 2 Java: Der Einstieg 3 Imperative Programmierung in Java 4 Algorithmen zur exakten Suche in Texten 5 Objektorientierte Programmierung in Java 6 Übergang von funktionaler zu OOP 7 Programmieren im Großen 8 Hashing 9 Ein- und Ausgabe 10 Grafische Benutzeroberflächen 11 Graphen

9 Teil I Syntax und Semantik

10 Einführung Programmiersprachen sind formale Sprachen. Es ist präzise festgelegt, welche Zeichenreihen überhaupt Programme einer Sprache L sind (Syntax), welche Ein-/Ausgabefunktion ein Programm berechnet (Semantik).

11 Konkrete/abstrakte Syntax konkrete Syntax Genaue textuelle Aufschreibung für Programme. abstrakte Syntax Bindeglied zur Semantik; gibt an, wie ein Programm(-stück) aufgebaut ist.

12 Beispiel abstrakt assign x add var const y 5

13 Beispiel abstrakt konkret assign x := y + 5 Pascal x = y + 5 C, Fortran, Java x add LET x = y + 5 Basic (anno 1963) ADD 5 TO y GIVING x COBOL STORE y + 5 TO x dbase var const y 5

14 Operatoren und Konstrukte In der abstrakten Syntax tauchen die primitiven Konstrukte einer Programmiersprache auf, sowie Operatoren, die diese zu neuen Konstrukten kombinieren. primitiv: Bezeichner, Zahl Kombination: var: Bezeichner Ausdruck const: Zahl Ausdruck add: Ausdruck Ausdruck Ausdruck assign: Bezeichner Ausdruck Anweisung

15 Wörter Definition Ein Alphabet A ist ein endlicher Zeichenvorrat (eine endliche Menge). Die Mengen aller endlichen Zeichenreihen über einem Alphabet A bezeichnen wir mit A. Das leere Wort der Länge 0 bezeichnen wir mit ε.

16 Formale Sprachen Definition Eine Menge L A heißt formale Sprache über dem Alphabet A. Einen abstrakteren Sprachbegriff kann man kaum definieren. Die einzige Frage, die man sich über w A stellen kann, ist: Gilt w L oder w L? Diese Frage nennt man das Wortproblem von L.

17 Programmiersprachen Definition Eine Programmiersprache ist ein Paar (L, L), wobei L A eine formale Sprache und L : L (A A ) die Semantik von L ist. Damit ordnet L jedem L-Programm l L als seine Bedeutung die Ein-/Ausgabefunktion L(l) zu, wobei Ein- und Ausgabe ebenfalls Zeichenreihen über A sind. Für L(l) schreiben wir auch kurz Ll.

18 Kontextfreie Grammatiken Definition Eine kontextfreie Grammatik ist ein 4-Tupel G = (N, A, P, S), wobei 1 N ein Alphabet von sogenannten Nonterminalsymbolen, 2 A ein Alphabet von sogenannten Terminalsymbolen mit N A =, 3 P eine endliche Menge von Produktionen (Regeln) der Form V α mit V N und α (V A) und 4 S N ein Startsymbol ist.

19 Satzformen einer Grammatik Die Menge S(G) der Satzformen von G ist die kleinste Teilmenge von (N A) mit den folgenden Eigenschaften: 1 S S(G). 2 Wenn αv β S(G) für ein Nonterminalsymbol V N und Zeichenfolgen α, β (N A) und wenn V γ P eine Regel ist, so gilt auch αγβ S(G) ( Ableitungsschritt ).

20 Sprache einer Grammatik Die durch G definierte Sprache ist L(G) def = S(G) A. Den Test, ob ein gegebenes Wort w durch eine Grammatik G erzeugt werden kann, also ob w L(G) gilt, nennt man das Wortproblem von G.

21 Syntax und Semantik von Sprachen: Bohrkopfsteuerung N W E O S N, E, W, S: Bewegung um 1 Gitterpunkt (north, east, west, south) O: Einstellen auf Nullpunkt (origin) D: Senken des Bohrkopfes mit Bohrung (drill) U: Heben des Bohrkopfes (up)

22 Programme zur Maschinensteuerung ONNNEEDO Bohrung am Punkt (2,3) mit Rückkehr zum Nullpunkt ODUDUDU DUNDUWDUSDU Dreifach-Bohrung am Nullpunkt bohrt Gitterquadrat, wo der Kopf gerade steht

23 Steuersprache In der ersten Variante unserer Steuersprache lassen wir beliebige Befehlsfolgen zu. Außerdem kann jedes Programm als Eingabe ein Paar von Start-Koordinaten erhalten. L 1 = {N, E, W, S, U, D, O} Eingabe: (Int, Int) L 1 : L 1 (Int, Int) [(Int, Int)]

24 Maschinenzustand x y l cs aktuelle x-koordinate aktuelle y-koordinate aktueller Hebezustand des Bohrkopfes: 0 gesenkt, 1 oben Liste bisheriger Bohr-Koordinaten

25 Semantik von Befehlen bef :: Befehl Zustand Zustand bef b (x, y, l, cs) = case b of O (0, 0, 1, cs) N (x, y + 1, l, cs) W (x 1, y, l, cs) S (x, y 1, l, cs) E (x + 1, y, l, cs) D (x, y, 0, (x, y) : cs) U (x, y, 1, cs)

26 Befehlsfolgen beff :: Befehl Zustand [(Int, Int)] beff [ ](x, y, l, cs) = reverse cs beff (b : bs)(x, y, l, cs) = beff bs(bef b (x, y, l, cs))

27 Befehlsfolgen beff :: Befehl Zustand [(Int, Int)] beff [ ](x, y, l, cs) = reverse cs beff (b : bs)(x, y, l, cs) = beff bs(bef b (x, y, l, cs)) Die Semantik L 1 wird beschrieben durch die Funktion prog :: Befehl (Int, Int) [(Int, Int)] prog bs (i, j) = beff bs (i, j, 1, [])

28 Programmiersprache L 1 und ihre Semantik L 1 sind sehr naiv. Man sollte zum Beispiel bedenken, dass das Werkstück und vielleicht auch die Maschine beschädigt werden, wenn mit abgesenktem Bohrkopf Bewegungen ausgelöst werden. Freilich solange niemand solche Steuerprogramme erzeugt, geht alles gut. Jedoch wollen wir uns nicht darauf verlassen...

29 Syntaktische vs. semantische Verfeinerung Generell gibt es zwei Möglichkeiten, eine Sprache (L, L) zu verfeinern: syntaktisch oder semantisch. Semantisch heisst: das Unglück kann programmiert werden, tritt aber nicht ein. Syntaktisch heisst: das Unglück wird bereits als syntaktisch fehlerhaftes Programm abgewiesen.

30 Aufgabe Modifiziere die Semantik L 1 (bei unverändertem L 1 ) in zwei verschiedenen Weisen. Tritt eine Bewegung mit abgesenktem Bohrkopf auf, so wird a) die Ausführung des Programms abgebrochen und nur die Koordinaten der bisherigen Bohrungen ausgegeben, b) die Ausführung des Programms abgebrochen und keine Koordinaten angegeben.

31 Forderungen an die Steuersprache Wir entscheiden uns nun für die syntaktische Verfeinerung und stellen Forderungen an die Steuersprache L: 1 Auf Befehl D muss stets U oder O folgen. 2 Befehl O ist immer möglich, U nur unmittelbar nach D. 3 Alle Programme enden mit dem Bohrkopf am Nullpunkt. 4 Auf dem Weg von einer Bohrung zur nächsten sind gegenläufige Richtungswechsel unerwünscht, zum Beispiel... NSNS... oder... NES..., weil sie die Maschine in Schwingung versetzen können. Alle diese Forderungen lassen sich durch Einschränkungen von L 1 erfüllen, erfordern aber verfeinerte Methoden zur syntaktischen Sprachbeschreibung. Solche Mittel sind Grammatiken.

32 Grammatik 1 Grammatik G 1 (zur Beschreibung von L 1 ) A = { N, E, W, S, U, D, O} N = { moves, move} S = moves P = { moves ε move moves move N E W S U D O}

33 Grammatik 1 Grammatik G 1 (zur Beschreibung von L 1 ) A = { N, E, W, S, U, D, O} N = { moves, move} S = moves P = { moves ε move moves move N E W S U D O} Hier gilt L(G 1 ) = A. Es ist w L(G 1 ) mit w = WENDEDENUDOSUED Übung: Leite w mit dieser Grammatik ab.

34 Verfeinerte Grammatik 2 Verfeinerte Grammatik G 2 (berücksichtigt Forderungen (1) - (3), aber nicht (4)). A, N, S wie G 1 P = { moves O DO move moves move N E W S O DU DO}

35 Verfeinerte Grammatik 2 Verfeinerte Grammatik G 2 (berücksichtigt Forderungen (1) - (3), aber nicht (4)). A, N, S wie G 1 P = { moves O DO move moves move N E W S O DU DO} Frage: Warum brauchen wir die Regel moves DO überhaupt?

36 Verfeinerte Grammatik 2 Verfeinerte Grammatik G 2 (berücksichtigt Forderungen (1) - (3), aber nicht (4)). A, N, S wie G 1 P = { moves O DO move moves move N E W S O DU DO} Frage: Warum brauchen wir die Regel moves DO überhaupt? Antwort: Sonst ist DO / S(G 2 ).

37 Warum ist nun w = WENDEDENUDOSUED / S(G 2 )? Versuch einer Ableitung: moves move moves W moves W move moves W E moves 3 W E N move moves W E N? Hier kann nur DU oder DO erzeugt werden, aber nicht D allein oder DE.

38 Verfeinerte Grammatik 3 Verfeinerte Grammatik G 3 (berücksichtigt Forderungen (1) und (4), (2) nur teilweise und (3) gar nicht): A, S wie G 1 N = { moves, ne, nw, se, sw, drill } P = { moves ε ne moves nw moves se moves sw moves ne N ne E ne drill se S se E se drill nw N nw W nw drill sw S sw W sw drill drill DU DO }

39 RNA-Sekundärstrukturen Ein RNA-Molekül besteht aus Basen A,C,G,U. Durch Wasserstoff-Brücken zwischen A U, G C, G U bilden sich Basenpaarungen, die zu einer Sekundärstruktur führen. Primärsequenz C A C C U A A G G U C C Sekundärstruktur C A C C U A A G G U C C C A U C C C G U C A G Helix-Bildung schafft St A

40 Sekundärstruktur-Grammatik Grammatik zur Beschreibung der Sekundärstruktur (Ausschnitt): A = { A, C, G, U } N = { struct, any, stack, loop } S = struct P = { struct any any struct struct any stack ε any A C G U stack A stack U U stack A G stack C C stack G G stack U U stack G loop loop any loop any any any }

41 Ableitung von RNA-Sequenzen Allein mit den ersten beiden Produktionen kann man alle RNA-Sequenzen ableiten: struct any struct A struct A any struct AC struct... Damit ist L(G) = A. Der Witz der Grammatik ist, dass manche Ableitungen das Vorliegen möglicher Sekundärstrukturen anzeigen dann nämlich, wenn sie die Produktionen für stack benutzen.

42 Ableitung == Struktur struct 2 C struct 4 C struct CC C stack CC CA stack UCC 2 CACC stack GGUCC CACC loop GGUCC 4 CACCUAAGGUCC

43 Syntaxbaum struct any struct C struct any any C struct C stack U A C C any stack U stack G stack G loop any any A A

44 EBNF, Historisches Syntaxbeschreibung von FORTRAN und COBOL (am Anfang) durch Beispiele und Gegenbeispiele formale Beschreibung der Syntax von ALGOL durch John Backus; Backus-Normalform (BNF). Kleine Verbesserungen in der Notation durch Peter Naur, daher spricht man heute von der Backus-Naur-Form (BNF). Niklaus Wirth hat die Backus-Naur-Form noch einmal überarbeitet und erweitert (EBNF Extended BNF).

45 EBNF, Definition Die Metazeichen der EBNF (vgl. Klaeren [5], S. 104) sind: das Definitionszeichen = das Alternativzeichen die Anführungszeichen die Wiederholungsklammern { } die Optionsklammern [ ] die Gruppenklammern ( ) der Punkt.

46 EBNF, Terme Die Menge ET der EBNF-Terme ist gegeben durch: 1 Ist V eine Folge von Buchstaben und Ziffern, die mit einem Buchstaben beginnt, so gilt V ET und gilt als Nonterminalsymbol.

47 EBNF, Terme Die Menge ET der EBNF-Terme ist gegeben durch: 1 Ist V eine Folge von Buchstaben und Ziffern, die mit einem Buchstaben beginnt, so gilt V ET und gilt als Nonterminalsymbol. 2 Ist w eine Folge von beliebigen Symbolen, so ist w ET und gilt als ein (!) Terminalsymbol.

48 EBNF, Terme Die Menge ET der EBNF-Terme ist gegeben durch: 1 Ist V eine Folge von Buchstaben und Ziffern, die mit einem Buchstaben beginnt, so gilt V ET und gilt als Nonterminalsymbol. 2 Ist w eine Folge von beliebigen Symbolen, so ist w ET und gilt als ein (!) Terminalsymbol. 3 Für α ET sind auch

49 EBNF, Terme Die Menge ET der EBNF-Terme ist gegeben durch: 1 Ist V eine Folge von Buchstaben und Ziffern, die mit einem Buchstaben beginnt, so gilt V ET und gilt als Nonterminalsymbol. 2 Ist w eine Folge von beliebigen Symbolen, so ist w ET und gilt als ein (!) Terminalsymbol. 3 Für α ET sind auch 1 (α) ET,

50 EBNF, Terme Die Menge ET der EBNF-Terme ist gegeben durch: 1 Ist V eine Folge von Buchstaben und Ziffern, die mit einem Buchstaben beginnt, so gilt V ET und gilt als Nonterminalsymbol. 2 Ist w eine Folge von beliebigen Symbolen, so ist w ET und gilt als ein (!) Terminalsymbol. 3 Für α ET sind auch 1 (α) ET, 2 [α] ET und

51 EBNF, Terme Die Menge ET der EBNF-Terme ist gegeben durch: 1 Ist V eine Folge von Buchstaben und Ziffern, die mit einem Buchstaben beginnt, so gilt V ET und gilt als Nonterminalsymbol. 2 Ist w eine Folge von beliebigen Symbolen, so ist w ET und gilt als ein (!) Terminalsymbol. 3 Für α ET sind auch 1 (α) ET, 2 [α] ET und 3 {α} ET.

52 EBNF, Terme Die Menge ET der EBNF-Terme ist gegeben durch: 1 Ist V eine Folge von Buchstaben und Ziffern, die mit einem Buchstaben beginnt, so gilt V ET und gilt als Nonterminalsymbol. 2 Ist w eine Folge von beliebigen Symbolen, so ist w ET und gilt als ein (!) Terminalsymbol. 3 Für α ET sind auch 1 (α) ET, 2 [α] ET und 3 {α} ET. 4 Für α 1,..., α n ET sind auch

53 EBNF, Terme Die Menge ET der EBNF-Terme ist gegeben durch: 1 Ist V eine Folge von Buchstaben und Ziffern, die mit einem Buchstaben beginnt, so gilt V ET und gilt als Nonterminalsymbol. 2 Ist w eine Folge von beliebigen Symbolen, so ist w ET und gilt als ein (!) Terminalsymbol. 3 Für α ET sind auch 1 (α) ET, 2 [α] ET und 3 {α} ET. 4 Für α 1,..., α n ET sind auch 1 α 1... α n ET und

54 EBNF, Terme Die Menge ET der EBNF-Terme ist gegeben durch: 1 Ist V eine Folge von Buchstaben und Ziffern, die mit einem Buchstaben beginnt, so gilt V ET und gilt als Nonterminalsymbol. 2 Ist w eine Folge von beliebigen Symbolen, so ist w ET und gilt als ein (!) Terminalsymbol. 3 Für α ET sind auch 1 (α) ET, 2 [α] ET und 3 {α} ET. 4 Für α 1,..., α n ET sind auch 1 α 1... α n ET und 2 α 1 α 2... α n ET.

55 EBNF-Definitionen Eine EBNF-Definition besteht aus einer endlichen Menge von EBNF-Regeln der Form V = α. wobei V ein Nonterminalsymbol entsprechend obiger Konvention und α ein EBNF-Term ist. Das Nonterminalsymbol auf der linken Seite der ersten Regel ist das Startsymbol.

56 EBNF-Definition für Mini-Java (1) program = class ident { mainmethod }. mainmethod = public static void main ( String [ ] argsident ) bloc statement = int ident = expression ; ident = expression ; if ( condition ) statement while ( condition ) statement block System. out. println ( expression ) ; ; int [ ] arrayident = new int [ expression ] ; arrayident [ expression ] = expression ;. block = { { statement } }. condition = expression ( ==!= < <= > >= ) expression. expression = [ ( + - ) ] term { ( + - ) term }. term = factor { ( * / ) factor }.

57 EBNF-Definition für Mini-Java (2) factor = ident number ( expression ) Integer. parseint ( argsident [ expression ] ) argsident. length arrayident. length arrayident [ expression ]. ident = ( letter _ $ ) { letter digit }. number = ( 0 digit { digit 0 } ). digit = letter = A... Z a... z. argsident = ident. arrayident = ident.

58 Operationen auf Sprachen Seien L, L 1 und L 2 beliebige Sprachen (Wortmengen) über einem gemeinsamen Alphabet. Dann definieren wir: def 1. Komplex-Produkt: L 1 L 2 = {w 1 w 2 w 1 L 1, w 2 L 2 } (also L = L = ; L{ε} = {ε}l = L) 2. n-fache Iteration: L 0 def = {ε}, L n+1 := LL n 3. Stern-Operation: L def = n N Ln

59 Semantik der EBNF (1) Die Semantik der EBNF definieren wir durch Rekursion über die EBNF-Terme. Sei E eine EBNF-Definition (wobei S das Startsymbol, N die Menge der Nonterminals und A die Menge der Terminals sei) und ET die Menge der EBNF-Terme. Dann ist die von E erzeugte Sprache L(E) definiert als S E, wobei E : ET P(A ) wie folgt definiert ist (vgl. Klaeren [5], S. 107):

60 Semantik der EBNF (2) 1 Für V N{ ist def α E falls V = α. eine Regel in E ist V E = sonst

61 Semantik der EBNF (2) 1 Für V N{ ist def α E falls V = α. eine Regel in E ist V E = sonst 2 w E def = {w}

62 Semantik der EBNF (2) 1 Für V N{ ist def α E falls V = α. eine Regel in E ist V E = sonst def 2 w E = {w} def 3 (α) = α E E

63 Semantik der EBNF (2) 1 Für V N{ ist def α E falls V = α. eine Regel in E ist V E = sonst def 2 w E = {w} def 3 (α) = α E E def 4 [α] = {ε} α E E

64 Semantik der EBNF (2) 1 Für V N{ ist def α E falls V = α. eine Regel in E ist V E = sonst def 2 w E = {w} def 3 (α) = α E E def 4 [α] = {ε} α E E def 5 {α} = α E E

65 Semantik der EBNF (2) 1 Für V N{ ist def α E falls V = α. eine Regel in E ist V E = sonst def 2 w E = {w} def 3 (α) = α E E def 4 [α] = {ε} α E E def 5 {α} = α E E 6 α 1... α n E def = α 1 E... α n E

66 Semantik der EBNF (2) 1 Für V N{ ist def α E falls V = α. eine Regel in E ist V E = sonst def 2 w E = {w} def 3 (α) = α E E def 4 [α] = {ε} α E E def 5 {α} = α E E 6 α 1... α n E def = α 1 E... α n E 7 α 1 α n E def = α 1 E α n E

67 Beispiel eines syntaktisch korrekten Mini-Java-Programms class BubbleSort { public static void main(string[] args) { int[] array = new int[args.length]; int i = 0; while (i < args.length) { array[i] = Integer.parseInt(args[i]); i = i+1; } i = 1; while (i < array.length) { int j = array.length - 1; while (j >= i) { if (array[j] < array[j-1]) { int tmp = array[j]; array[j] = array[j-1]; array[j-1] = tmp; } j = j-1; } i = i+1; } i = 0; while (i < array.length) { System.out.println(array[i]); i = i+1; } } }

68 EBNF-Definition für Mini-Java (1) program = class ident { mainmethod }. mainmethod = public static void main ( String [ ] argsident ) bloc statement = int ident = expression ; ident = expression ; if ( condition ) statement while ( condition ) statement block System. out. println ( expression ) ; ; int [ ] arrayident = new int [ expression ] ; arrayident [ expression ] = expression ;. block = { { statement } }. condition = expression ( ==!= < <= > >= ) expression. expression = [ ( + - ) ] term { ( + - ) term }. term = factor { ( * / ) factor }.

69 EBNF-Definition für Mini-Java (2) factor = ident number ( expression ) Integer. parseint ( argsident [ expression ] ) argsident. length arrayident. length arrayident [ expression ]. ident = ( letter _ $ ) { letter digit }. number = ( 0 digit { digit 0 } ). digit = letter = A... Z a... z. argsident = ident. arrayident = ident.

70 Syntaxdiagramme für EBNF-Definitionen (1) w : w für alle w A. V : V für alle V N. [α] : α {α} : α

71 Syntaxdiagramme für EBNF-Definitionen (2) α 1... α n : α 1 α n α 1 α n : α 1. α n

72 Beispiel: Syntaxdiagramme für Mini-Java (1) program class ident { mainmethod } mainmethod public static void main ( String [ ] argsident ) block

73 Beispiel: Syntaxdiagramme für Mini-Java (2) statement int ident = expression ; ident = expression ; if ( condition ) statement while ( condition ) statement block System. out. println ( expression ) ; ; int [ ] arrayident = new int [ expression ] ; arrayident [ expression ] = expression ;

74 Beispiel: Syntaxdiagramme für Mini-Java (3) condition expression!= == expression < block { } <= >= statement >

75 Beispiel: Syntaxdiagramme für Mini-Java (4) expression term + term + term factor factor * /

76 Beispiel: Syntaxdiagramme für Mini-Java (5) factor ident number ( expression ) Integer. parseint ( argsident [ expression ] ) argsident. length arrayident. length arrayident [ expression ]

77 Beispiel: Syntaxdiagramme für Mini-Java (6) ident letter _ $ letter digit number digit 0 digit 0

78 Beispiel: Syntaxdiagramme für Mini-Java (7) letter A... digit 1 Z a z

79 K. Arnold, J. Gosling: Java TM - Die Programmiersprache. Addison-Wesley, T.H. Cormen, C.E. Leierson, R.L. Rivest: Introduction to Algorithms. MIT Press, D. Flanagan: Java in a Nutshell. O Reilly & Associates Inc., F. Jobst: Programmieren in Java. Hanser Verlag, H. Klaeren: Vom Problem zum Programm. 2.Auflage, B.G. Teubner Verlag, K. Echtle, M. Goedicke: Lehrbuch der Programmierung mit Java. dpunkt-verlag, 2000.

Algorithmen und Datenstrukturen II. Algorithmen und Datenstrukturen II 1

Algorithmen und Datenstrukturen II. Algorithmen und Datenstrukturen II 1 Algorithmen und Datenstrukturen II Algorithmen und Datenstrukturen II 1 Juniorprofessor Dr.-Ing. Tim W. Nattkemper Raum: M7-130 Sprechstunde: Di 13:00 ct - 14:00 Tel.: 0521/106-6059 Email: tnattkem@techfak.uni-bielefeld.de

Mehr

Universität Bielefeld

Universität Bielefeld Universität Bielefeld Interner Bericht der Technischen Fakultät Abteilung Informationstechnik Algorithmen und Datenstrukturen II Skript zur Vorlesung im Sommersemester 2006 Universität Bielefeld Postfach

Mehr

7. Syntax: Grammatiken, EBNF

7. Syntax: Grammatiken, EBNF 7. Syntax: Grammatiken, EBNF Teil 1 Sehr schönes Beispiel für Notwendigkeit der Theoretischen Informatik für Belange der Praktischen Informatik Vertiefung in: Einführung in die Theoretische Informatik

Mehr

Sprachen sind durch folgenden Aufbau gekennzeichnet:

Sprachen sind durch folgenden Aufbau gekennzeichnet: BNF UND SYNTAXDIAGRAMME 1. Allgemeines 1.1 Aufbau von Sprachen BNF und Syntaxdiagramme werden verwendet, um die Syntax einer Sprache darzustellen und graphisch zu veranschaulichen. Mit ihnen können entweder

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE3-Syntaxdiagramme (Stand 05.11.2010) Aufgabe 1: Entwickeln Sie Regeln zur Übersetzung von EBNF in Syntaxdiagramme. Aufgabe 2: Eine Zahl ist entweder

Mehr

Syntax von Programmiersprachen

Syntax von Programmiersprachen "Grammatik, die sogar Könige zu kontrollieren weiß... aus Molière, Les Femmes Savantes (1672), 2. Akt Syntax von Programmiersprachen Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang WS 07/08

Mehr

Alphabet, formale Sprache

Alphabet, formale Sprache n Alphabet Alphabet, formale Sprache l nichtleere endliche Menge von Zeichen ( Buchstaben, Symbole) n Wort über einem Alphabet l endliche Folge von Buchstaben, die auch leer sein kann ( ε leere Wort) l

Mehr

Universität Bielefeld

Universität Bielefeld Universität Bielefeld Interner Bericht der Technischen Fakultät Abteilung Informationstechnik Algorithmen und Datenstrukturen II Skript zur Vorlesung im Sommersemester 2010 Universität Bielefeld Postfach

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

Einführung in die Programmierung für NF. Rückgabewerte, EBNF, Fallunterscheidung, Schleifen

Einführung in die Programmierung für NF. Rückgabewerte, EBNF, Fallunterscheidung, Schleifen Einführung in die Programmierung für NF Rückgabewerte, EBNF, Fallunterscheidung, Schleifen FUNKTIONEN UND PROZEDUREN 3 Rückgabewerte, EBNF, Fallunterscheidung, Schleifen 2 Funk@on und Prozedur Methoden

Mehr

Teil IX. Eine kleine Programmiersprache

Teil IX. Eine kleine Programmiersprache Teil IX Eine kleine Programmiersprache 1 Teil IX.1 Syntaktische Beschreibungsmittel 2 Chomsky Grammatik Eine Chomsky Grammatik wird beschrieben mit einem Quadrupel G = (N, T, P, S). Dabei ist: N die Menge

Mehr

Java für Anfänger Teil 2: Java-Syntax. Programmierkurs Manfred Jackel

Java für Anfänger Teil 2: Java-Syntax. Programmierkurs Manfred Jackel Java für Anfänger Teil 2: Java-Syntax Programmierkurs 06.-10.10.2008 Manfred Jackel 1 Syntax für die Sprache Java public class Welcome { } Schlüsselworte Reservierte Worte Keywords Wortsymbol Syntax: griech.

Mehr

Einführung in die Programmierung I. 1.0 EBNF 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich

Einführung in die Programmierung I. 1.0 EBNF 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich 252-0027 Einführung in die Programmierung I 1.0 EBNF 2.0 Einfache Java Programme Thomas R. Gross Department Informatik ETH Zürich Graphische Darstellung von EBNF Regeln Syntax Graph: graphische Darstellung

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

Java für Anfänger Teil 2: Java-Syntax. Programmierkurs Manfred Jackel

Java für Anfänger Teil 2: Java-Syntax. Programmierkurs Manfred Jackel Java für Anfänger Teil 2: Java-Syntax Programmierkurs 11.-15.10.2010 Manfred Jackel 1 Syntax für die Sprache Java public class Welcome { } Schlüsselworte Reservierte Worte Keywords Wortsymbol Syntax: griech.

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

Einführung in die Informatik. Programming Languages

Einführung in die Informatik. Programming Languages Einführung in die Informatik Programming Languages Beschreibung von Programmiersprachen Wolfram Burgard Motivation und Einleitung Wir haben in den vorangehenden Kapiteln meistens vollständige Java- Programme

Mehr

SWE1 / Übung 2 (19.10.2011)

SWE1 / Übung 2 (19.10.2011) SWE1 / Übung 2 (19.1.211) Simulation von Algorithmen Testen, Testplan Beispiel arithmetische Ausdrücke Handsimulation von Algorithmen Man versteht einen Algorithmus (insbesonders einen "Fremden"), wenn

Mehr

Einführung in die Informatik. Programming Languages

Einführung in die Informatik. Programming Languages Einführung in die Informatik Programming Languages Beschreibung von Programmiersprachen Wolfram Burgard Cyrill Stachniss 1/15 Motivation und Einleitung Wir haben in den vorangehenden Kapiteln meistens

Mehr

Kapitel IV Formale Sprachen und Grammatiken

Kapitel IV Formale Sprachen und Grammatiken Kapitel IV Formale Sprachen und Grammatiken 1. Begriffe und Notationen Sei Σ ein (endliches) Alphabet. Dann Definition 42 1 ist Σ das Monoid über Σ, d.h. die Menge aller endlichen Wörter über Σ; 2 ist

Mehr

Imperative Programmierung in Java. Algorithmen und Datenstrukturen II 1

Imperative Programmierung in Java. Algorithmen und Datenstrukturen II 1 Imperative Programmierung in Java Algorithmen und Datenstrukturen II 1 Mini-Java Ein Mini-Java Programm besteht aus genau einer Klasse. In dieser Klasse gibt es genau eine main-methode. Folgende Konstrukte

Mehr

Einführung in die Programmierung I. 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich

Einführung in die Programmierung I. 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich 252-0027 Einführung in die Programmierung I 2.0 Einfache Java Programme Thomas R. Gross Department Informatik ETH Zürich Uebersicht 2.0 Einfache Java Programme Struktur Namen Output 2 Graphische Darstellung

Mehr

Programmierung WS12/13 Lösung - Übung 1 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder

Programmierung WS12/13 Lösung - Übung 1 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder Prof. aa Dr. J. Giesl Programmierung WS12/13 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder Tutoraufgabe 1 (Syntax und Semantik): 1. Was ist Syntax? Was ist Semantik? Erläutern Sie den Unterschied. 2.

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 06 Grammatiken, Backus-Naur-Form, Rekursion Clemens Lang T2 1. Juni 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/20 Aufbau und Begriffe Grammatiken Struktur einer

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

Formale Sprachen. Inhaltsverzeichnis. M. Jakob. 10. Dezember Allgemeine Einführung. Aufbau formaler Sprachen

Formale Sprachen. Inhaltsverzeichnis. M. Jakob. 10. Dezember Allgemeine Einführung. Aufbau formaler Sprachen M. Jakob Gymnasium Pegnitz 10. Dezember 2014 Inhaltsverzeichnis Allgemeine Einführung Aufbau formaler Sprachen Notationsformen formaler Sprachen Backus-Naur-Formen Erkennen formaler Sprachen Implementierung

Mehr

Sprachen und Programmiersprachen

Sprachen und Programmiersprachen Sprachen und Programmiersprachen Natürliche Sprachen versus Programmiersprachen / Spezifikationssprachen Syntax legt die grammatikalische Korrektheit fest. Semantik legt die Bedeutung von syntaktisch korrekten

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

Simulation und Testen von Algorithmen

Simulation und Testen von Algorithmen Simulation und Testen von Algorithmen Softwareentwicklung 1 (gtec) Hanspeter Mössenböck, Herbert Prähofer 1 Handsimulation von Algorithmen Man versteht einen Algorithmus, wenn man genau weiß, wie er arbeitet.

Mehr

Algorithmen und Datenstrukturen I - Exkurs Formale Sprachen -

Algorithmen und Datenstrukturen I - Exkurs Formale Sprachen - Algorithmen und Datenstrukturen I - Exkurs Formale Sprachen - Thies Pfeiffer Technische Fakultät tpfeiffe@techfak.uni-bielefeld.de Vorlesung, Universität Bielefeld, Winter 2012/2013 1 / 1 Exkurs: Formale

Mehr

2.1 Grundlagen: Kontextfreie Grammatiken

2.1 Grundlagen: Kontextfreie Grammatiken 2.1 Grundlagen: Kontextfreie Grammatiken Programme einer Programmiersprache können unbeschränkt viele Tokens enthalten, aber nur endlich viele Token-Klassen :-) Als endliches Terminal-Alphabet T wählen

Mehr

Übergang von funktionaler zu OOP. Algorithmen und Datenstrukturen II 1

Übergang von funktionaler zu OOP. Algorithmen und Datenstrukturen II 1 Übergang von funktionaler zu OOP Algorithmen und Datenstrukturen II 1 Imperative vs. funktionale Programmierung Plakativ lassen sich folgende Aussagen treffen: funktional: imperativ: Berechnung von Werten

Mehr

Algorithmen und Datenstrukturen II

Algorithmen und Datenstrukturen II Algorithmen und Datenstrukturen II AG Praktische Informatik Technische Fakultät Vorlesung Sommer 2009 Teil I Imperative Programmierung in Java Mini-Java Ein Mini-Java Programm besteht aus genau einer Klasse.

Mehr

Syntaxanalyse Ausgangspunkt und Ziel

Syntaxanalyse Ausgangspunkt und Ziel Syntaxanalyse Ausgangspunkt und Ziel Ausgangspunkt: Kontextfreie Grammatik Im Normalfall BNF, manchmal EBNF BNF = Backus-Naur-Form = Produktionsregeln EBNF = erweiterte BNF (+ reguläre Ausdrücke) Prüfung

Mehr

Theoretische Informatik 2 bzw. Formale Sprachen und Berechenbarkeit. Sommersemester Herzlich willkommen!

Theoretische Informatik 2 bzw. Formale Sprachen und Berechenbarkeit. Sommersemester Herzlich willkommen! Theoretische Informatik 2 bzw. Formale Sprachen und Berechenbarkeit Sommersemester 2012 Prof. Dr. Nicole Schweikardt AG Theorie komplexer Systeme Goethe-Universität Frankfurt am Main Herzlich willkommen!

Mehr

Kapitel 5: Syntaxdiagramme und Grammatikregeln

Kapitel 5: Syntaxdiagramme und Grammatikregeln 5. Syntaxdiagramme und Grammatikregeln 5-1 Objektorientierte Programmierung (Winter 2010/2011) Kapitel 5: Syntaxdiagramme und Grammatikregeln Syntaxdiagramme Grammatikregeln (kontextfrei) Beispiele: Lexikalische

Mehr

3.4 Struktur von Programmen

3.4 Struktur von Programmen 3.4 Struktur von Programmen Programme sind hierarchisch aus Komponenten aufgebaut. Für jede Komponente geben wir Regeln an, wie sie aus anderen Komponenten zusammengesetzt sein können. program ::= decl*

Mehr

Begriffe (Wiederholung)

Begriffe (Wiederholung) Begriffe (Wiederholung) Sprache Menge aller Sätze Alphabet terminales / nicht terminales terminales A. Zeichen aus denen die Sätze der Sprache bestehen nicht terminales A. Hilfszeichen zum Bilden von Regeln

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

Hashing. Algorithmen und Datenstrukturen II 1

Hashing. Algorithmen und Datenstrukturen II 1 Hashing Algorithmen und Datenstrukturen II 1 Einführendes Beispiel Ein Pizza-Lieferservice in Bielefeld speichert die Daten seiner Kunden: Name, Vorname, Adresse und Telefonnummer Wenn ein Kunde seine

Mehr

TU Kaiserslautern. Übungsblatt 2: Software-Entwicklung 1 (WS 2017/18) Hinweise zu Einreichaufgaben. Hinweise zu den Übungen

TU Kaiserslautern. Übungsblatt 2: Software-Entwicklung 1 (WS 2017/18) Hinweise zu Einreichaufgaben. Hinweise zu den Übungen Dr. Annette Bieniusa Mathias Weber, M. Sc. Peter Zeller, M. Sc. TU Kaiserslautern Fachbereich Informatik AG Softwaretechnik Übungsblatt 2: Software-Entwicklung 1 (WS 2017/18) Hinweise zu Einreichaufgaben

Mehr

Automaten und formale Sprachen Klausurvorbereitung

Automaten und formale Sprachen Klausurvorbereitung Automaten und formale Sprachen Klausurvorbereitung Rami Swailem Mathematik Naturwissenschaften und Informatik FH-Gießen-Friedberg Inhaltsverzeichnis 1 Definitionen 2 2 Altklausur Jäger 2006 8 1 1 Definitionen

Mehr

Mehrdeutige Grammatiken

Mehrdeutige Grammatiken Mehrdeutige Grammatiken Wir haben gesehen, dass es auch mehr als eine Linksableitung, d.h. mehr als einen Syntaxbaum geben kann, um das selbe Terminalwort zu erzeugen. Eine Grammatik, die für mindestens

Mehr

Objektorientierte Programmierung. Kapitel 3: Syntaxdiagramme

Objektorientierte Programmierung. Kapitel 3: Syntaxdiagramme Stefan Brass: OOP (Java), 3. 1/31 Objektorientierte Programmierung Kapitel 3: Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2014/15 http://www.informatik.uni-halle.de/ brass/oop14/

Mehr

Algorithmen und Datenstrukturen II

Algorithmen und Datenstrukturen II Syntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten Objektori Algorithmen und Datenstrukturen II AG Praktische Informatik Technische Fakultät

Mehr

2.1 Allgemeines. Was ist eine Sprache? Beispiele:

2.1 Allgemeines. Was ist eine Sprache? Beispiele: Was ist eine Sprache? Beispiele: (a) Deutsch, Japanisch, Latein, Esperanto,...: Natürliche Sprachen (b) Pascal, C, Java, Aussagenlogik,...: Formale Sprachen Wie beschreibt man eine Sprache? (i) Syntax

Mehr

Einführung in die Informatik I (autip)

Einführung in die Informatik I (autip) Einführung in die Informatik I (autip) Dr. Stefan Lewandowski Fakultät 5: Informatik, Elektrotechnik und Informationstechnik Abteilung Formale Konzepte Universität Stuttgart 24. Oktober 2007 Was Sie bis

Mehr

Herzlich willkommen!!!

Herzlich willkommen!!! Theoretische Informatik 2 Sommersemester 2013 Prof. Dr. Georg Schnitger AG Theoretische Informatik Johann Wolfgang Goethe-Universität Frankfurt am Main Herzlich willkommen!!! 1 / 19 Kapitel 1: Einführung

Mehr

Übung Praktische Informatik I

Übung Praktische Informatik I Übung Praktische Informatik I HWS 2008/2009 Benjamin Guthier Lehrstuhl für Praktische Informatik IV Universität Mannheim guthier@pi4.informatik.uni-mannheim.de 24.10.08 6-1 Heutige große Übung Hinweise

Mehr

Grammatiken. Eine Grammatik G mit Alphabet Σ besteht aus: Variablen V. Startsymbol S V. Kurzschreibweise G = (V, Σ, P, S)

Grammatiken. Eine Grammatik G mit Alphabet Σ besteht aus: Variablen V. Startsymbol S V. Kurzschreibweise G = (V, Σ, P, S) Grammatiken Eine Grammatik G mit Alphabet Σ besteht aus: Variablen V Startsymbol S V Produktionen P ( (V Σ) \ Σ ) (V Σ) Kurzschreibweise G = (V, Σ, P, S) Schreibweise für Produktion (α, β) P: α β 67 /

Mehr

Abschnitt 4: Daten und Algorithmen

Abschnitt 4: Daten und Algorithmen Abschnitt 4: Daten und Algorithmen 4. Daten und Algorithmen 4.1 4.2 Syntaxdefinitionen 4.3 Eigenschaften von Algorithmen 4.4 Paradigmen der Algorithmenentwicklung Peer Kröger (LMU München) Einführung in

Mehr

Definition 4 (Operationen auf Sprachen) Beispiel 5. Seien A, B Σ zwei (formale) Sprachen. Konkatenation: AB = {uv ; u A, v B} A + = n 1 An

Definition 4 (Operationen auf Sprachen) Beispiel 5. Seien A, B Σ zwei (formale) Sprachen. Konkatenation: AB = {uv ; u A, v B} A + = n 1 An Definition 4 (Operationen auf Sprachen) Seien A, B Σ zwei (formale) Sprachen. Konkatenation: AB = {uv ; u A, v B} A 0 = {ɛ}, A n+1 = AA n A = n 0 An A + = n 1 An Beispiel 5 {ab, b}{a, bb} = {aba, abbb,

Mehr

Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester 2011

Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester 2011 Automaten und Formale Sprachen alias Theoretische Informatik Sommersemester 2011 Dr. Sander Bruggink Übungsleitung: Jan Stückrath Sander Bruggink Automaten und Formale Sprachen 1 Wir beschäftigen uns ab

Mehr

Theoretische Informatik Mitschrift

Theoretische Informatik Mitschrift Theoretische Informatik Mitschrift 2. Grammatiken und die Chomsky-Hierarchie Beispiel: Syntaxdefinition in BNF :=

Mehr

Repetitorium Informatik (Java)

Repetitorium Informatik (Java) Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen

Mehr

Kontextfreie Grammatiken. Kontextfreie Grammatiken 1 / 45

Kontextfreie Grammatiken. Kontextfreie Grammatiken 1 / 45 Kontextfreie Grammatiken Kontextfreie Grammatiken 1 / 45 Was kann man mit kontextfreien Grammatiken anfangen? Kontextfreie Grammatiken, kurz: werden zur Modellierung von KFGs beliebig tief geschachtelten

Mehr

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

Technische Universität München WS 2004/2005 Fakultät für Informatik 11. Dezember 2004 Prof. Dr. Seidl

Technische Universität München WS 2004/2005 Fakultät für Informatik 11. Dezember 2004 Prof. Dr. Seidl Name: Vorname: Matr. Nr.: Technische Universität München WS 2004/2005 Fakultät für Informatik 11. Dezember 2004 Prof. Dr. Seidl Zwischenklausur zu Einführung in die Informatik I Hinweis: In dieser Zwischenklausur

Mehr

Grammatik Prüfung möglich, ob eine Zeichenfolge zur Sprache gehört oder nicht

Grammatik Prüfung möglich, ob eine Zeichenfolge zur Sprache gehört oder nicht Zusammenhang: Formale Sprache Grammatik Formale Sprache kann durch Grammatik beschrieben werden. Zur Sprache L = L(G) gehören nur diejenigen Kombinationen der Zeichen des Eingabealphabets, die durch die

Mehr

EIGENSCHAFTEN VON SPRACHEN

EIGENSCHAFTEN VON SPRACHEN Vorlesung und Übung Universität Paderborn Wintersemester 2016/2017 Dr. Peter Pfahler EIGENSCHAFTEN VON SPRACHEN EWS, WS 2016/17, Pfahler C-1 Einführung Sprachen in der Informatik werden für bestimmte Zwecke

Mehr

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Martin Unold INFORMATIK. Geoinformatik und Vermessung Wiederholung So sieht ein leeres Java-Programm aus public class Programmname { public static void main (String[] args) { // Hier stehen die Anweisungen Welche Arten von Anweisungen gibt es? Anweisungen

Mehr

Programmieren I. Formale Sprachen. www.kit.edu. Institut für Angewandte Informatik

Programmieren I. Formale Sprachen. www.kit.edu. Institut für Angewandte Informatik Programmieren I Formale Sprachen KIT Universität des Landes Baden-Württemberg und nationales Großforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Formale Sprachen: Allgemeines Sprachen werden

Mehr

Grundlagen der theoretischen Informatik

Grundlagen der theoretischen Informatik Grundlagen der theoretischen Informatik Kurt Sieber Fakultät IV, Department ETI Universität Siegen SS 2013 Vorlesung vom 09.04.2013 Inhalt der Vorlesung Teil I: Automaten und formale Sprachen (Kurt Sieber)

Mehr

Informatik B von Adrian Neumann

Informatik B von Adrian Neumann Musterlösung zum 7. Aufgabenblatt vom Montag, den 25. Mai 2009 zur Vorlesung Informatik B von Adrian Neumann 1. Java I Schreiben Sie ein Java Programm, das alle positiven ganzen Zahlen 0 < a < b < 1000

Mehr

Lexikalische Programmanalyse der Scanner

Lexikalische Programmanalyse der Scanner Der Scanner führt die lexikalische Analyse des Programms durch Er sammelt (scanned) Zeichen für Zeichen und baut logisch zusammengehörige Zeichenketten (Tokens) aus diesen Zeichen Zur formalen Beschreibung

Mehr

FORMALE SYSTEME. 3. Vorlesung: Endliche Automaten. TU Dresden, 17. Oktober Markus Krötzsch

FORMALE SYSTEME. 3. Vorlesung: Endliche Automaten. TU Dresden, 17. Oktober Markus Krötzsch FORMALE SYSTEME 3. Vorlesung: Endliche Automaten Markus Krötzsch TU Dresden, 17. Oktober 2016 Rückblick Markus Krötzsch, 17. Oktober 2016 Formale Systeme Folie 2 von 31 Wiederholung Mit Grammatiken können

Mehr

Die Programmiersprache C Eine Einführung

Die Programmiersprache C Eine Einführung Die Programmiersprache C Eine Einführung Christian Gentsch Fakutltät IV Technische Universität Berlin Projektlabor 2. Mai 2014 Inhaltsverzeichnis 1 Einführung Entstehungsgeschichte Verwendung 2 Objektorientiert

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 04: Einführung in Kontrollstrukturen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Einführung in Kontrollstrukturen 3 Grundstrukturen von

Mehr

Prof. H. Herbstreith Fachbereich Informatik. Leistungsnachweis. Informatik 1 WS 2001/2002

Prof. H. Herbstreith Fachbereich Informatik. Leistungsnachweis. Informatik 1 WS 2001/2002 Prof. H. Herbstreith 30.01.2002 Fachbereich Informatik Leistungsnachweis Informatik 1 WS 2001/2002 Bearbeitungszeit 120 Minuten. Keine Hilfsmittel erlaubt. Aufgabe 1: 20 Punkte Vervollständigen Sie folgende

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

Formale Sprachen. Inhalte. Lehrplan. Hinweis

Formale Sprachen. Inhalte. Lehrplan. Hinweis Formale Sprachen Inhalte Aufbau von Sprachen Grammatiken formaler Sprachen Endliche Automaten *Grenzen endlicher Automaten Werkzeuge TdI, 2. Juli 2010 Peter Brichzin 1 TdI, 2. Juli 2010 Peter Brichzin

Mehr

Programmierpraktikum

Programmierpraktikum TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Praktikum: Grundlagen der Programmierung Programmierpraktikum Woche 04 (17.11.2016) Stefan Berktold s.berktold@tum.de PRÄSENZAUFGABEN Heutige Übersicht

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

Elementare Konzepte von

Elementare Konzepte von Elementare Konzepte von Programmiersprachen Teil 2: Anweisungen (Statements) Kapitel 6.3 bis 6.7 in Küchlin/Weber: Einführung in die Informatik Anweisungen (statements) in Java Berechnung (expression statement)

Mehr

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) Einfache Programme: Programm-Argument, Bedingte Anweisungen, Switch, Enum Boolesche Werte und Ausdrücke Seite 1 Beispiel: Umrechnen

Mehr

Kontextfreie Sprachen Kontextfreie Sprachen und Grammatiken. Satzformen sind die Wörter aus (N T ). Notation: Wir verwenden oft

Kontextfreie Sprachen Kontextfreie Sprachen und Grammatiken. Satzformen sind die Wörter aus (N T ). Notation: Wir verwenden oft und Grammatiken (Folie 119, eite 202 im kript) atzformen sind die Wörter aus (N T ). Notation: Wir verwenden oft a, b, c,... für Terminalsymbole A, B, C,... für Nonterminale u, v, w,... für Terminalwörter

Mehr

Tag 5. Repetitorium Informatik (Java) Dozent: Marius Kamp Lehrstuhl für Informatik 2 (Programmiersysteme)

Tag 5. Repetitorium Informatik (Java) Dozent: Marius Kamp Lehrstuhl für Informatik 2 (Programmiersysteme) Tag 5 Repetitorium Informatik (Java) Dozent: Marius Kamp Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Übersicht Methoden Deklaration

Mehr

GTI. Hannes Diener. 18. Juni. ENC B-0123,

GTI. Hannes Diener. 18. Juni. ENC B-0123, GTI Hannes Diener ENC B-0123, diener@math.uni-siegen.de 18. Juni 1 / 32 Als Literatur zu diesem Thema empfiehlt sich das Buch Theoretische Informatik kurzgefasst von Uwe Schöning (mittlerweile in der 5.

Mehr

Imperative Programmierung in Java. Algorithmen und Datenstrukturen II 1

Imperative Programmierung in Java. Algorithmen und Datenstrukturen II 1 Imperative Programmierung in Java Algorithmen und Datenstrukturen II 1 Mini-Java Ein Mini-Java Programm besteht aus genau einer Klasse. In dieser Klasse gibt es genau eine main-methode. Folgende Konstrukte

Mehr

Einführung Grundbegriffe

Einführung Grundbegriffe Einführung Grundbegriffe 1.1 Der Modellbegriff Broy: Informatik 1, Springer 1998 (2) Die Modellbildung der Informatik zielt auf die Darstellung der unter dem Gesichtspunkt einer gegebenen Aufgabenstellung

Mehr

9.4 Grundlagen des Compilerbaus

9.4 Grundlagen des Compilerbaus Kap09.fm Seite 717 Dienstag, 7. September 2010 2:06 14 9.4 Grundlagen des Compilerbaus 717 so dass die Benutzung dieser Regeln zum Aufbau eines + -Knotens bzw. eines Negations- Knotens im abstrakten Syntaxbaum

Mehr

7. Formale Sprachen und Grammatiken

7. Formale Sprachen und Grammatiken 7. Formale Sprachen und Grammatiken Computer verwenden zur Verarbeitung von Daten und Informationen künstliche, formale Sprachen (Maschinenspr., Assemblerspachen, Programmierspr., Datenbankspr., Wissensrepräsentationsspr.,...)

Mehr

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom Einstieg in die Informatik mit Java, Vorlesung vom 2.5.07 Übersicht 1 2 definition 3 Parameterübergabe, aufruf 4 Referenztypen bei 5 Überladen von 6 Hauptprogrammparameter 7 Rekursion bilden das Analogon

Mehr

Formale Sprachen. Grammatiken und die Chomsky-Hierarchie. Rudolf FREUND, Marian KOGLER

Formale Sprachen. Grammatiken und die Chomsky-Hierarchie. Rudolf FREUND, Marian KOGLER Formale Sprachen Grammatiken und die Chomsky-Hierarchie Rudolf FREUND, Marian KOGLER Grammatiken Das fundamentale Modell zur Beschreibung von formalen Sprachen durch Erzeugungsmechanismen sind Grammatiken.

Mehr

Berechenbarkeit und Komplexität Vorlesung 11

Berechenbarkeit und Komplexität Vorlesung 11 Berechenbarkeit und Komplexität Vorlesung 11 Prof. Dr. Wolfgang Thomas Lehrstuhl Informatik 7 RWTH Aachen 7. Dezember 2014 Wolfgang Thomas, Informatik 7 () Vorlesung Berechenbarkeit und Komplexität 7.

Mehr

q 0 q gdw. nicht (q A) (q A) q i+1 q gdw. q i q oder ( a Σ) δ(q, a) i δ(q, a) L = {a n b n : n N} für a, b Σ, a b

q 0 q gdw. nicht (q A) (q A) q i+1 q gdw. q i q oder ( a Σ) δ(q, a) i δ(q, a) L = {a n b n : n N} für a, b Σ, a b Kap. 2: Endliche Automaten Myhill Nerode 2.4 Minimalautomat für reguläre Sprache Abschnitt 2.4.3 L Σ regulär der Äuivalenzklassen-Automat zu L ist ein DFA mit minimaler Zustandszahl (= index( L )) unter

Mehr

Formale Sprachen und Automaten

Formale Sprachen und Automaten Formale Sprachen und Automaten Kapitel 1: Grundlagen Vorlesung an der DHBW Karlsruhe Thomas Worsch Karlsruher Institut für Technologie, Fakultät für Informatik Wintersemester 2012 Ziel Einführung der wichtigsten

Mehr

Grammatiken. Grammatiken sind regelbasierte Kalküle zur Konstruktion von Systemen und Sprachen Überprüfung von Systemen und Sprachen

Grammatiken. Grammatiken sind regelbasierte Kalküle zur Konstruktion von Systemen und Sprachen Überprüfung von Systemen und Sprachen Grammatiken Grammatiken sind regelbasierte Kalküle zur Konstruktion von Systemen und Sprachen Überprüfung von Systemen und Sprachen Grammatiken eignen sich besonders zur Modellierung beliebig tief geschachtelter,

Mehr

3. Zeichenreihen und formale Sprachen

3. Zeichenreihen und formale Sprachen 3. Zeichenreihen und formale Sprachen 3.1. Definition formaler Sprachen Def. 3.1: Eine endliche Menge von Symbolen heißt Zeichenvorrat ; die Elemente des ZV heißen Zeichen: α ; ein ZV mit einer darauf

Mehr

Syntax (= Satzgefüge), vgl. auch Grammatik

Syntax (= Satzgefüge), vgl. auch Grammatik 1 Natürliche Sprachen Natürliche Sprachen bezeichnen wie das Wort "Sprache" ausdrückt zunächst das Gesprochene. Das Schweizerdeutsch etwa ist eine typische natürliche Sprache. Mit der Erfindung der Aufzeichnung

Mehr

Inhalt Kapitel 5: Syntax

Inhalt Kapitel 5: Syntax Inhalt Kapitel 5: Syntax 1 Syntax und Semantik 2 Formale Sprachen 3 Backus-Naur Form 4 Chomsky Grammatik 5 Reguläre Ausdrücke 6 Endliche Automaten 180 Syntax und Semantik Syntax Syntax: Festlegung des

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

6. Iteration (Schleifenanweisungen)

6. Iteration (Schleifenanweisungen) 6. Iteration (Schleifenanweisungen) Java-Beispiel: TemperatureTable.java K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 Version: 9. Nov. 2015 2 Schwerpunkte While-Anweisung: "abweisende"

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren 14 Parsen, Suchen und Sortieren 19./26.01.2015 Prof. Dr. Ralf H. Reussner Version 1.0 LEHRSTUHL FÜR SOFTWARE-DESIGN UND QUALITÄT (SDQ) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION

Mehr

Algorithmen und Programmierung II

Algorithmen und Programmierung II Algorithmen und Programmierung II Vererbung Prof. Dr. Margarita Esponda SS 2012 1 Imperative Grundbestandteile Parameterübergabe String-Klasse Array-Klasse Konzepte objektorientierter Programmierung Vererbung

Mehr

Algorithmen und Datenstrukturen II

Algorithmen und Datenstrukturen II Algorithmen und Datenstrukturen II in JAVA D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg Sommer 2009, 31. März 2009, c 2009 D.Rösner

Mehr