5.1 Algorithmen Der Algorithmenbegriff

Größe: px
Ab Seite anzeigen:

Download "5.1 Algorithmen Der Algorithmenbegriff"

Transkript

1 5.1 Algorithmen Der Algorithmenbegriff Duden: Algorithmus nach einem bestimmten Schema ablaufender Rechenvorgang Brockhaus: Algorithmus systematisches Rechenverfahren, das zu einer Eingabe nach endlich vielen Schritten ein Ergebnis liefert 1 Definition: Ein Algorithmus ist eine endliche Folge eindeutiger Anweisungen, mittels derer in endlich vielen Schritten aus einer spezifizierten Eingabe eine spezifizierte Ausgabe gewonnen wird. Dabei sollen die folgenden Punkte erfüllt sein: 1. Ein- und Ausgabe sind genau festgelegt; zu jeder Eingabe gibt es (genau) eine gültige Ausgabe (d.h. ein Algorithmus definiert eine Funktion Eingabe Ausgabe) Frage: Welche Funktion soll der Algorithmus berechnen? Problemspezifikation Frage: Berechnet der Algorithmus wirklich die spezifizierte Funktion? Korrektheitsuntersuchung 161

2 2. Das Aufschreiben des Algorithmus darf nur endlich viel Platz beanspruchen (also nicht: usw. ) 3. Jede Anweisung benötigt nur endlich viele Schritte und wird nur endlich oft ausgeführt Frage: Wie sehen die Schritte aus? Maschinenmodell Frage: Wird nach endlich vielen Schritten eine Ausgabe geliefert? Terminierung 4. Jede Anweisung hat ein eindeutiges (reproduzierbares) Resultat, und die jeweils nächste Anweisung ist eindeutig festgelegt Optional: Determinismus 5. Möglichst geringer Verbrauch von Ressourcen wie Rechenzeit, Speicher,... Effizienz 6. Der Algorithmus beruht auf einer nachvollziehbaren Idee und spiegelt diese klar wieder Verständlichkeit 162

3 Herkunft des Begriffs: Abu Ja far Mahammed Ibn Musa al-khowarizmi: Kitab al jabr w al-muqabala, 800 n. Chr. (Buch über das Rechnen mit arabischen Zahlen) al-khowarizmi: von (der Stadt) Khowarizm (heute Khiva, Usbekistan) verballhornt zu: Algorithmus al jabr: Zwang, Regel verballhornt zu: Algebra 163

4 5.1.2 Deterministische und nichtdeterministische Algorithmen 2 Beispiel: Berechnung von x y Deterministischer Algorithmus: 1. Lies Eingaben x und y 2. Falls x y: Weiter mit Schritt 3, sonst mit Schritt 4 3. Berechne a = y x; weiter mit Schritt 5 4. Berechne a = x y 5. Gib a aus Nichtdeterministischer Algorithmus: 1. Lies Eingaben x und y; weiter mit Schritt 2 oder 3 2. Berechne a = y x; weiter mit Schritt 4 3. Berechne a = x y 4. Falls a 0: Gib a aus, sonst gib a aus Wenn nicht explizit anders gesagt, sind alle betrachteten Algorithmen deterministisch. 164

5 5.1.3 Darstellungsformen für Algorithmen verbal Flussdiagramm (Programmablaufplan) Struktogramm (Nasi-Schneidermann-Diagramm) Pseudocode 3 Beispiel: Berechnung der Primzahlen n, wobei n einzulesen ist. Ansatz: Für n < 2 gibt es keine Primzahl n. Für n 2 ist 2 die kleinste der gesuchten Primzahlen. Als Primzahlen > 2 kommen nur ungerade Zahlen p in Frage. Teste für jede ungerade Zahl p mit 3 p n, ob sie einen Teiler t mit 1 < t < p besitzt (also nicht prim ist). Wenn es einen solchen Teiler gibt, dann auch einen mit t p. Es genügt also, Teilerkandidaten t mit t 2 p zu untersuchen. Da p ungerade ist, kommen nur ungerade t als Teiler in Frage. 165

6 Verbale Beschreibung: 1. Lies n 2. Wenn n < 2 dann stop 3. Gib erste Primzahl 2 aus 4. Teste für alle Kandidaten p = 3, 5,... mit p n, ob p prim ist (gemäß Schritt 5) 5. Wenn p durch keine der ungeraden Zahlen t = 3, 5,... mit t 2 p teilbar ist, dann gib p aus Flussdiagramm: Symbole: Aktion Verzweigung Ein-/Ausgabe flussdiagramm-process.eps flussdiagramm-conditional.eps flussdiagramm-i Übergang zu anderem Diagramm Anfang/Ende flussdiagramm-connect.eps flussdiagramm-terminate.eps 166

7 flussdiagramm-primzahlen1.eps 167

8 Struktogramm: lies n n 2 nein drucke 2 p := 3 solange p n t := 1 t := t + 2 bis p mod t = 0 oder t 2 > p t 2 > p nein drucke p erhöhe p um 2 ja ja Aktion Verzweigung Wiederholung Pseudocode: lies n wenn n 2 drucke 2 für p = 3 in Zweierschritten bis n t := 1 wiederhole t := t + 2 bis p durch t teilbar ist oder t 2 > p wenn t 2 > p dann drucke p 168

9 4 Beispiel: Euklidischer Algorithmus zur Bestimmung des größten gemeinsamen Teilers (ggt) zweier Zahlen Spezifikation: Eingabe: n, m N (nicht n, m Z (m = 0?) oder n, m Q,... ) Ausgabe: ggt = ggt(m, n) N, d.h. diejenige natürliche Zahl, die m und n teilt und für die gilt: Jeder gemeinsame Teiler t von m und n teilt auch ggt Algorithmus: 1. (Division mit Rest) Berechne m = q n + r, r, q N 0, 0 r < n 2. (Ergebnis) Falls r = 0 beende Algorithmus, ggt = n 3. (Ersetzen) m n, n r, gehe zu Schritt 1 Struktogramm: r := m mod n solange r 0 m := n n := r r := m mod n ggt := n 169 Rest der Division m/n

10 Pseudocode: r := m mod n solange r 0 m := n n := r r := m mod n ggt := n Zahlenbeispiel: m = 378, n = Durchlauf 8 < : 8 < : 8 < = m 2754, n = m 378, n = : 3. m 108, n 54 j = ggt =

11 Korrektheit: Ist die Größe ggt aus dem Algorithmus wirklich der ggt aus der Spezifikation? Zu zeigen: 1. ggt aus Schritt 2 ist gemeinsamer Teiler aller m, n, die im Algorithmus vorkommen 2. Ist t ein gemeinsamer Teiler der Eingabegrößen m und n, so teilt t auch alle m und n, die im Algorithmus vorkommen ( t teilt ggt) Beweis: Übung (ähnlich wie Terminierung und Definitheit). Terminierung: Zu zeigen: r = 0 wird nach endlich vielen Durchläufen erreicht. Beweis: Ist r i der Wert von r im i-ten Durchlauf, so gilt wegen Schritt 1 und 3 r i < r i 1 mit r 0 = n. Wegen r i N 0 folgt damit, dass nach spätestens n Durchläufen r = 0 gilt. qed. Definierte Schritte: Einzige Schwierigkeit : Division mit Rest. Hierzu ist aus der Grundschule ein Elementaralgorithmus bekannt. 171

12 Definitheit: Zu zeigen: In Schritt 1 gilt stets n, m N (für n N ist Division mit Rest nicht definiert) Beweis: Dies gilt nach Spezifikation für die Eingabe ( nach dem 0. Durchlauf ). Galt m, n N nach Schritt 3 im i-ten Durchlauf, so gilt im (i + 1)-ten Durchlauf m = n q + r, q, r N 0, 0 r < n. Ist r = 0, so terminiert der Algorithmus in Schritt 2. Ansonsten ist r N und n N, und damit auch nach Schritt 3 im (i+1)-ten Durchlauf m, n N. qed. Effizienz: Speicher: 4 natürliche Zahlen Rechenzeit: nicht schlecht 5 Bemerkung: Meist gibt es mehrere verschiedene Algorithmen zur Lösung eines Problems. 172

13 6 Beispiel: Primzahlberechnung mit dem Sieb des Eratosthenes 1. Gib eine Zahl n N vor 2. Füge die Zahlen 2,..., n in eine (zu Beginn leere) Liste Kandidaten ein 3. Bereite eine leere Liste Primzahlen vor 4. Wiederhole Schritte 5 und 6, bis die Liste Kandidaten leer ist 5. Bestimme die kleinste Zahl in Kandidaten und füge sie in Primzahlen ein 6. Entferne diese Zahl und alle ihre Vielfachen aus der Liste Kandidaten Zahlenbeispiel: n = 10 Kandidaten Primzahlen 2, 3, 4, 5, 6, 7, 8, 9, 10 3, 5, 7, 9 2 5, 7 2, 3 7 2, 3, 5 2, 3, 5, 7 Beachte den Speicherbedarf in Schritt 2 für große n! 173

14 5.1.4 Konstruktion von Algorithmen Top down-entwurf: Zerlege ein komplexes Problem in immer einfachere Probleme, bis schließlich Teilprobleme mit bekannter Lösung entstehen P top down P 1... P m P P bottom up 1k Bottom up-entwurf: Setze vorhandene Algorithmen für einfache Probleme zu Algorithmen für immer komplexere Probleme zusammen Wird häufig in Software-Bibliotheken eingesetzt Vergleiche unser Vorgehen bei der Digitaltechnik: Bauelemente Schaltungen für logische Funktionen Grundschaltungen (Addierer, Flip-Flop) kompletter Rechner Mehr zu Algorithmen: Informatik II: Algorithmen und Datenstrukturen 174

15 5.2 Phasen der Software-Entwicklung 1. Problemanalyse ergibt die Spezifikation Welche Anforderungen bestehen an die Software? Oft die komplizierteste und aufwändigste Aktivität 2. Entwurf der Algorithmen und Datenstrukturen Aufteilung in kleinere Einheiten Festlegung der Wechselwirkungen dieser Einheiten 3. Das Programm entsteht durch Implementierung (Umsetzung) der Algorithmen in einer bestimmten Programmiersprache Die Anweisungen der Algorithmen werden weiter aufgeschlüsselt, bis einzelnen Schritte effektiv (durch eine Maschine) ausgeführt werden können 4. Validierung Versuche nachzuweisen, dass das Programm den Anforderungen genügt Formale Methoden und/oder Tests 5. Wartung Korrektur von Fehlern Anpassung an sich ändernde Anforderungen Mehr dazu Software Engineering 175

16 5.3 Programmiersprachen Die Programmiersprache bildet die Schnittstelle zwischen Mensch und Rechner Mensch Programmiersprache Maschine Beide haben unterschiedliche Anforderungen Mensch Rechner Leichte Erlernbarkeit Lesbarkeit Ausdrucksstärke Direkte Ausführbarkeit oder einfache Umwandlung in ausführbaren Code Effizienter Code soll generiert werden können 176

17 5.3.1 Generationen von Programmiersprachen Maschinensprache: (Programmiersprache der 1. Generation) Einzige Sprache, die von der Hardware direkt verstanden wird Sehr schwer zu lesen Prozessor-abhängig Assemblersprache: (Programmiersprache der 2. Generation) LAD ADD SPI I J K Gleiche Anweisungen wie Maschinensprache Anweisungen und Variablen haben Namen Programm muss vor der Ausführung in Maschinensprache übersetzt werden (durch ein anderes Programm, den Assembler) Immer noch Prozessor-abhängig 177

18 Höhere Programmiersprachen: (Programmiersprachen der 3. Generation) Ada (nach Ada Lovelace) BASIC (beginners all purpose symbolic instruction code) C (Nachfolger von B ) C++ (Erweiterung von C) COBOL (common business oriented language) FORTRAN (formula translation) Java (amerik. für Kaffee ) LISP (list processing) ALGOL, Haskell, Pascal, (PROLOG,) Smalltalk,... k = i + j ; Durch höheres Abstraktionsniveau besser lesbar Programm muss vor der Ausführung mittels eines Compilers in Maschinensprache übersetzt oder in einem Interpreter ausgeführt werden Weitgehend portabel, d.h. dasselbe Programm kann auf unterschiedlichen Maschinen laufen (Neu-Compilation für jede Maschine erforderlich) Typischerweise weniger effizient als optimierte Programme in Assemblersprache 178

19 Programmiersprachen der 4. Generation sind noch stärker an menschliche Begriffsbildung angelehnt SQL, Matlab,... find all records where name is "Smith" x = A \ b (löst lineares System Ax = b) Erfordern kaum Programmiererfahrung Häufig für Zugriff auf Datenbanken oder für Software- Prototypen eingesetzt Programmiersprachen der 5. Generation: uneinheitliche Klassifikation oder enthalten visuelle Tools zur Unterstützung der Programmentwicklung Visual BASIC,... erlauben dem Rechner, eigene Schlüsse zu ziehen häufig bei Künstlicher Intelligenz, Fuzzy Logic und Neuronalen Netzen eingesetzt PROLOG,

20 5.3.2 Compiler und Interpreter Ein Compiler übersetzt ein Programm von einer Sprache A in eine Sprache B. Programm in Programmiersprache A A B Compiler Programm in Programmiersprache B Die beiden Programme sollen i. Allg. äquivalent sein, d.h. dieselbe Funktion Eingabe Ausgabe realisieren. Häufigste Variante: A ist höhere Programmiersprache (z.b. C), B die Maschinensprache eines bestimmten Prozessors; dann sagt man kurz A-Compiler (z.b. C-Compiler). "source code" Programm in höherer Programmiersprache Compiler "object code" Programm in Maschinensprache (Compiler) Programm in Assemblersprache (Assembler) (Intern evtl. in mehreren Stufen realisiert.) Es gibt aber auch FORTRAN-C-, Pascal-C-,... -Compiler. 180

21 Ein Interpreter ist ein Programm, das ein anderes Programm Anweisung für Anweisung liest, die Bedeutung jeder Anweisung bestimmt ( interpretiert ) und die entsprechenden Aktionen ausführt. Interpretation ermöglicht hohe Flexibilität, aber Interpretation kostet Zeit oft um einen Faktor langsamer als entsprechendes compiliertes Programm moderne Interpreter beinhalten oft JIT-Compiler (just in time): Programm wird zunächst interpretiert Es wird mitgezählt, wie oft jede Anweisung ausgeführt wird Wird ein bestimmter Zählerstand erreicht, so wird die entsprechende Anweisung compiliert Sehr oft ausgeführte Anweisungen werden u.u. mehrmals compiliert, wobei immer mehr Zeit in die Optimierung des resultierenden Codes investiert wird 7 Beispiel: Überwiegend interpretierte Sprachen: BASIC, Java, Matlab, PROLOG, Skriptsprachen,

22 5.3.3 Klassen von Programmiersprachen Imperative Sprachen : Folge von nacheinander ausgeführten Anweisungen gibt an, wie das Problem gelöst wird Prozedurale Sprachen : Variablen, Zuweisungen, Kontrollstrukturen Objektorientierte Sprachen : Deklarative Sprachen : Objekte und Klassen Abstrakte Datentypen und Vererbung Spezifikation dessen, was berechnet werden soll Festlegung, wie Berechnung verläuft, erfolgt durch Compiler Funktionale Sprachen : Funktionen ohne Seiteneffekte Rekursion Logische Sprachen : Regeln zur Definition von Relationen 182

23 Kenntnis verschiedener Sprachen (und Klassen) vorteilhaft: Eigene Ideen bei der Software-Entwicklung können besser ausgedrückt werden Nötig, um in konkreten Projekten geeignete Sprache auszuwählen Erleichtert das Erlernen weiterer Programmiersprachen (Nötig für den Entwurf neuer Programmiersprachen) 183

24 5.3.4 Wichtige Programmiersprachen 1960 COBOL FORTRAN ALGOL 60 LISP PL/1 Simula 1970 Pascal ALGOL 68 C Smalltalk PROLOG 1980 Scheme Ada C++ Eiffel Haskell 1990 Modula-3 Ada-95 Java p r o z e d u r a l o b j e k t o r i e n t i e r t funktional logisch

25 5.3.5 Syntax und Semantik von Programmiersprachen Programmiersprachen sind Sprachen, deren Syntax und Semantik genau festgelegt sind. Syntax: Legt fest, welche Wörter und Programme in der Sprache formuliert werden dürfen Semantik: formale Sprachen Legt die Bedeutung der zulässigen Wörter/Programme fest Syntaktisch falsche Wörter/Programme haben keine Semantik 185

26 5.3.6 Formale Sprachen 8 Definition: Ein Alphabet A ist eine nichtleere endliche Menge von Zeichen ( Buchstaben, Symbole). Ein Wort über dem Alphabet A ist eine endliche (evtl. leere) Folge von Zeichen aus A. ε bezeichnet das leere Wort. A bezeichnet die Menge aller Wörter über dem Alphabet A (einschl. ε). Eine (formale) Sprache L über A ist eine beliebige Teilmenge von A. 9 Beispiele: a) A 1 = {0, 1} A 1 = {ε, 0, 1, 00, 01, 10, 11, 000, 001,...} L = {0, 1, 10, 11, 100, 101,...} A 1 (Menge aller Binärdarstellungen natürlicher Zahlen mit 0 ohne führende Nullen) b) A 2 = {(, ), +,,, /, a} A 2 = {ε, (, ), +,,, /, a, (),..., (+ a),...} L sei die Sprache der korrekt geklammerten Ausdrücke in A 2 : L = {(((a))), (a + a), (a a) a + a,...} 186

27 Endliche Beschreibungsmöglichkeiten für die (meist unendlichen) Sprachen: Grammatik erzeugt die Sprache, oder Automat erkennt die Sprache. Eine Grammatik enthält Regeln, die festlegen, welche Wörter über einem Alphabet zur Sprache gehören und welche nicht. 10 Beispiel: Grammatik für Hund Katze-Sätze 1 Satz Subjekt Prädikat Objekt 2 Subjekt Artikel Attribut Substantiv 3 Artikel ε 4 Artikel der 5 Artikel die 6 Artikel das 7 Attribut ε 8 Attribut Adjektiv 9 Attribut Adjektiv Attribut 10 Adjektiv kleine 11 Adjektiv bissige 12 Adjektiv große 13 Substantiv Hund 14 Substantiv Katze 15 Prädikat jagt 16 Objekt Artikel Attribut Substantiv 187

28 Alphabet (z.b.): A = {der, die, das, kleine, bissige, große, Hund, Katze, jagt} Mit dieser Grammatik können z.b. die folgenden Wörter (Sätze) gebildet ( abgeleitet ) werden: der kleine bissige Hund jagt die große Katze die kleine Katze jagt der bissige Hund das große Katze jagt der kleine große bissige kleine... Katze Folgende Sätze sind nicht mit dieser Grammatik ableitbar: die Katze der Hund Katze und Hund der Hund jagt die Katze die jagt Hund 188

29 11 Definition: Eine Grammatik ist definiert durch ein Viertupel (N, T, P, S). Dabei ist N eine endliche Menge von Nichtterminalsymbolen (Variablen). Diese sind Symbole für syntaktische Abstraktionen, z.b. Satz, Subjekt, Prädikat, Objekt,... kommen nicht in den Wörtern der Sprache vor werden durch Anwendung der Produktionsregeln (s.u.) so lange ersetzt, bis nur noch Terminalsymbole übrig sind T eine endliche Menge von Terminalsymbolen T N = Elemente von T sind Zeichen des Alphabets, aus denen die Wörter der Sprache bestehen, z.b. der, die, das, kleine,... P eine endliche Menge von Produktionsregeln x y Regel x y bedeutet, dass das Teilwort x durch das Teilwort y ersetzt werden kann x V NV, y V, wobei V := N T (Vokabular), d.h. sowohl x als auch y können beliebige Nichtterminal- und Terminalsymbole enthalten, und x enthält mindestens ein Nichtterminal Beispiel: Anwendung der Regel Prädikat jagt auf das Wort 189

30 der kleine bissige Hund Prädikat Objekt liefert der kleine bissige Hund jagt Objekt S das Startsymbol spezielles Nichtterminalsymbol (S N), aus dem alle Wörter der Sprache mit Hilfe der Produktionsregeln erzeugt werden Beispiel: Satz Ein Wort w heißt (direkt) ableitbar aus dem Wort z, Schreibweise z w, wenn es Worte u, v V und eine Regel (x y) P gibt mit z = uxv und w = uyv, d.h. w entsteht aus z, indem man eine Regel auf ein Teilwort x von z anwendet. Die von der Grammatik erzeugte Sprache ist L(G) = {w T : S... w}, also die Menge aller aus dem Startsymbol ableitbaren Wörter, die nur Terminalsymbole enthalten. Zwei Grammatiken heißen äquivalent, wenn sie dieselbe Sprache erzeugen. Eine Grammatik heißt kontextfrei, wenn jede Produktion die Form X y besitzt mit X N, y V, d.h. links steht genau ein Nichtterminal (und sonst nichts). 190

31 12 Beispiel: G = (N, T, P, S) mit N = {A, B} T = {a, b, c, d} P = {A abcd, B abc, abc b} S = A Dann ist L(G) = {a n bc n d : n 0}, d.h. die Menge aller Wörter, die mit einer beliebigen Anzahl n von a s beginnen, gefolgt von genau einem b, dann gleich vielen c s wie a s zu Beginn, und schließlich genau einem d. Beweis: Zu zeigen: 1. : Alle Wörter in L besitzen diese Form 2. : Jedes solche Wort kann auch erzeugt werden Zu 2.: Wähle n N 0. Betrachte die Ableitung A Regel 1 Regel 2 Regel 2 abcd aabccd aaabcccd. (insgesamt n-mal Regel 2) Regel 2 Regel 3 a n abcc n d a n bc n d (Unterstrichen ist jeweils das Teilwort, auf das die nächste Regel angewendet wird.) 191

32 Zu 1.: Wir zeigen mit Induktion, dass jedes mit k 1 Schritten ableitbare Wort die Form a k Bc k d oder a k 2 bc k 2 d (nur im Falle k 2 möglich) besitzt. Hieraus folgt die Behauptung, denn: Die erste dieser Formen enthält ein Nichtterminal, gehört also nicht zu L(G) Das Startsymbol A gehört als Nichtterminal auch nicht zu L(G) Alle Worte in L(G) sind von der Form a k 2 bc k 2 d (mit k 2) k = 1: Auf das Startsymbol ist nur Regel 1 anwendbar es ergibt sich das Wort abcd der ersten Form. k 1 k: Nach k 1 Ableitungsschritten habe das Wort die Form a k 1 Bc k 1 d oder a k 3 bc k 3 d. Im Falle a k 3 bc k 3 d ist kein Nichtterminal mehr vorhanden überhaupt kein k-ter Schritt mehr durchführbar Im Falle a k 1 Bc k 1 d = a k 2 abcc k 2 d gibt es zwei Möglichkeiten: Regel 2 ergibt das Wort a k Bc k d Regel 3 ergibt a k 2 bc k 2 d Beide entsprechen der Behauptung. qed. G ist nicht kontextfrei, da die dritte Regel auf der linken Seite nicht nur ein Nichtterminal enthält. Ersetzt man P durch P = {A Bd, B abc, B b}, so erhält man eine zu G äquivalente kontextfreie Grammatik. 192

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 - 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

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 - 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

n 1. Der Begriff Informatik n 2. Syntax und Semantik von Programmiersprachen - 1 -

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

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

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

III.1 Prinzipien der funktionalen Programmierung - 1 -

III.1 Prinzipien der funktionalen Programmierung - 1 - 1. Prinzipien der funktionalen Programmierung 2. Deklarationen 3. Ausdrücke 4. Muster (Patterns) 5. Typen und Datenstrukturen 6. Funktionale Programmiertechniken III.1 Prinzipien der funktionalen Programmierung

Mehr

Gliederung. n Teil I: Einleitung und Grundbegriffe. n Teil II: Imperative und objektorientierte Programmierung

Gliederung. n Teil I: Einleitung und Grundbegriffe. n Teil II: Imperative und objektorientierte Programmierung Gliederung n Teil I: Einleitung und Grundbegriffe l 1. Organisatorisches l 2. Grundlagen von Programmiersprachen n Teil II: Imperative und objektorientierte Programmierung l 1. Grundelemente der Programmierung

Mehr

1. Grundkonzepte der logischen Programmierung 2. Syntax von Prolog 3. Rechnen in Prolog. IV.1 Grundkonzepte der logischen Programmierung - 1 -

1. Grundkonzepte der logischen Programmierung 2. Syntax von Prolog 3. Rechnen in Prolog. IV.1 Grundkonzepte der logischen Programmierung - 1 - 1. Grundkonzepte der logischen Programmierung 2. Syntax von Prolog 3. Rechnen in Prolog IV.1 Grundkonzepte der logischen Programmierung - 1 - Übersicht Imperative Sprachen Deklarative Sprachen Folge von

Mehr

n 1. Grundkonzepte der logischen Programmierung n 2. Syntax von Prolog n 3. Rechnen in Prolog IV.1 Grundkonzepte der logischen Programmierung - 1 -

n 1. Grundkonzepte der logischen Programmierung n 2. Syntax von Prolog n 3. Rechnen in Prolog IV.1 Grundkonzepte der logischen Programmierung - 1 - n 1. Grundkonzepte der logischen Programmierung n 2. Syntax von Prolog n 3. Rechnen in Prolog IV.1 Grundkonzepte der logischen Programmierung - 1 - Übersicht Imperative Sprachen Deklarative Sprachen l

Mehr

Inhalt. n Algorithmus. n Euklidscher Algorithmus. n Sortieren. n Programmiersprachen. n Entwicklungsschritte eines Programms.

Inhalt. n Algorithmus. n Euklidscher Algorithmus. n Sortieren. n Programmiersprachen. n Entwicklungsschritte eines Programms. Inhalt Algorithmus Euklidscher Algorithmus Sortieren Programmiersprachen Entwicklungsschritte eines Programms Algorithmen 1 Algorithmus Eindeutige Beschreibung eines allgemeinen Verfahrens unter Verwendung

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Einleitung Gliederung Einführung in die Programmierung Wintersemester 2017/18 Zum Begriff Informatik Zum Begriff Algorithmus Zum Begriff Programmieren Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering

Mehr

Einführung in die Programmierung Wintersemester 2016/17

Einführung in die Programmierung Wintersemester 2016/17 Einführung in die Programmierung Wintersemester 2016/17 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund Einleitung Gliederung Zum Begriff Informatik Zum

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Einleitung Gliederung Einführung in die Programmierung Wintersemester 08/09 Zum Begriff Informatik Zum Begriff Algorithmus Zum Begriff Programmieren Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering

Mehr

Kapitel 1: Einleitung. Gliederung. Zum Begriff Informatik Zum Begriff Algorithmus Zum Begriff Programmieren

Kapitel 1: Einleitung. Gliederung. Zum Begriff Informatik Zum Begriff Algorithmus Zum Begriff Programmieren Kapitel 1: Einleitung Wintersemester 2006/07 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Gliederung Zum Begriff Informatik

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

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

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. Martin Wirsing in Zusammenarbeit mit Michael Barth, Philipp

Mehr

Vorlesung Automaten und Formale Sprachen Sommersemester Beispielsprachen. Sprachen

Vorlesung Automaten und Formale Sprachen Sommersemester Beispielsprachen. Sprachen Vorlesung Automaten und Formale Sprachen Sommersemester 2018 Prof. Barbara König Übungsleitung: Christina Mika-Michalski Wörter Wort Sei Σ ein Alphabet, d.h., eine endliche Menge von Zeichen. Dann bezeichnet

Mehr

Definitionen/Vorarbeit zum Thema Java

Definitionen/Vorarbeit zum Thema Java Definitionen/Vorarbeit zum Thema Java Programmiersprachen: System von Wörtern und Symbolen, die zur Formulierung von Programmen für die elektronische Datenverarbeitung verwendet werden. Arten: z.b. Javascript

Mehr

Grundlagen der Informatik I (Studiengang Medieninformatik)

Grundlagen der Informatik I (Studiengang Medieninformatik) Grundlagen der Informatik I (Studiengang Medieninformatik) Thema: 3. Datentypen, Datenstrukturen und imperative Programme Prof. Dr. S. Kühn Fachbereich Informatik/Mathematik Email: skuehn@informatik.htw-dresden.de

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

Klammersprache Definiere

Klammersprache Definiere Klammersprache w=w 1...w n {(,)}* heißt korrekt geklammert, falls die Anzahl ( ist gleich der Anzahl ). in jedem Anfangsstück w 1,...,w i (i n) ist die Anzahl ( nicht kleiner als die Anzahl ). Definiere

Mehr

Kontextfreie Sprachen. Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester Kontextfreie Sprachen

Kontextfreie Sprachen. Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester Kontextfreie Sprachen Automaten und Formale Sprachen alias Theoretische Informatik Sommersemester 2012 Dr. Sander Bruggink Übungsleitung: Jan Stückrath Wortproblem: der CYK-Algorithmus Pumping Lemma für kontextfreie Sprachen

Mehr

Syntax von Programmiersprachen

Syntax von Programmiersprachen "Grammatik, die sogar Könige zu kontrollieren weiß aus Molière, Les Femmes Savantes (1672), 2. kt Syntax von Programmiersprachen Prof. Dr. Martin Wirsing Ziele Zwei Standards zur Definition der Syntax

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

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn Ideen und Konzepte der Informatik Programme und Algorithmen Kurt Mehlhorn Algorithmen und Programme Algorithmus Schritt-für-Schritt Vorschrift zur Lösung eines Problems. Formuliert man umgangssprachlich,

Mehr

Kapitel: Die Chomsky Hierarchie. Die Chomsky Hierarchie 1 / 14

Kapitel: Die Chomsky Hierarchie. Die Chomsky Hierarchie 1 / 14 Kapitel: Die Chomsky Hierarchie Die Chomsky Hierarchie 1 / 14 Allgemeine Grammatiken Definition Eine Grammatik G = (Σ, V, S, P) besteht aus: einem endlichen Alphabet Σ, einer endlichen Menge V von Variablen

Mehr

Grundbegriffe. Grammatiken

Grundbegriffe. Grammatiken Grammatiken Grammatiken in der Informatik sind ähnlich wie Grammatiken für natürliche Sprachen ein Mittel, um alle syntaktisch korrekten Sätze (hier: Wörter) einer Sprache zu erzeugen. Beispiel: Eine vereinfachte

Mehr

Ideen und Konzepte der Informatik

Ideen und Konzepte der Informatik Ideen und Konzepte der Informatik Programme und Algorithmen Antonios Antoniadis 23. Oktober 2017 Algorithmen und Programme Algorithmus Schritt-für-Schritt Vorschrift zur Lösung eines Problems. Formuliert

Mehr

Kapitel 2: Formale Sprachen Gliederung. 0. Grundbegriffe 1. Endliche Automaten 2. Formale Sprachen 3. Berechnungstheorie 4. Komplexitätstheorie

Kapitel 2: Formale Sprachen Gliederung. 0. Grundbegriffe 1. Endliche Automaten 2. Formale Sprachen 3. Berechnungstheorie 4. Komplexitätstheorie Gliederung 0. Grundbegriffe 1. Endliche Automaten 2. Formale Sprachen 3. Berechnungstheorie 4. Komplexitätstheorie 2.1. 2.2. Reguläre Sprachen 2.3. Kontextfreie Sprachen 2/1, Folie 1 2015 Prof. Steffen

Mehr

Theoretische Informatik I

Theoretische Informatik I (702765) Skript zur Vorlesung am 30.6.2000 Aus der vorherigen Vorlesung: Theoretische Informatik I Satz W: Sei X ein Alphabet. Zu jeder regulären Sprache R X * gibt es ein n N, so daß für alle Wörter z

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

Grundlagen der Theoretischen Informatik

Grundlagen der Theoretischen Informatik Grundlagen der Theoretischen Informatik Sommersemester 2015 22.04.2015 Viorica Sofronie-Stokkermans e-mail: sofronie@uni-koblenz.de 1 Bis jetzt 1. Terminologie 2. Endliche Automaten und reguläre Sprachen

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

Formale Sprachen. Script, Kapitel 4. Grammatiken

Formale Sprachen. Script, Kapitel 4. Grammatiken Formale Sprachen Grammatiken Script, Kapitel 4 erzeugen Sprachen eingeführt von Chomsky zur Beschreibung natürlicher Sprache bedeutend für die Syntaxdefinition und -analyse von Programmiersprachen Automaten

Mehr

Grundlagen der Theoretischen Informatik

Grundlagen der Theoretischen Informatik Grundlagen der Theoretischen Informatik Sommersemester 2017 20.04.2017 Viorica Sofronie-Stokkermans e-mail: sofronie@uni-koblenz.de 1 Bis jetzt Organisatorisches Literatur Motivation und Inhalt Kurzer

Mehr

Prof. Dr. Jürgen Giesl Lehr- und Forschungsgebiet Informatik 2. Proseminar - 1 -

Prof. Dr. Jürgen Giesl Lehr- und Forschungsgebiet Informatik 2. Proseminar - 1 - Prof. Dr. Jürgen Giesl Lehr- und Forschungsgebiet Informatik 2 Proseminar - 1 - Lernziele des Proseminars Wie komme ich zu gesicherten Ergebnissen? Stimmen Angaben? Andere Quellen? Neuere Entwicklungen?

Mehr

Algorithmen und Datenstrukturen I - Exkurs Formale Sprachen -

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

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

1 Programmiersprachen 1.1 1

1 Programmiersprachen 1.1 1 1 Programmiersprachen 1.1 1 Meilensteine imperativer Programmiersprachen (teilweise objektorientiert) Fortran 1960 Cobol Algol 60 PL/I Algol W Simula 67 Algol 68 1970 Pascal C Smalltalk Modula 1980 Ada

Mehr

Sei Σ ein endliches Alphabet. Eine Sprache L Σ ist genau dann regulär, wenn sie von einem regulären Ausdruck beschrieben werden kann.

Sei Σ ein endliches Alphabet. Eine Sprache L Σ ist genau dann regulär, wenn sie von einem regulären Ausdruck beschrieben werden kann. Der Satz von Kleene Wir haben somit Folgendes bewiesen: Der Satz von Kleene Sei Σ ein endliches Alphabet. Eine Sprache L Σ ist genau dann regulär, wenn sie von einem regulären Ausdruck beschrieben werden

Mehr

Theoretische Informatik I

Theoretische Informatik I Theoretische Informatik I Einheit 2.5 Grammatiken 1. Arbeitsweise 2. Klassifizierung 3. Beziehung zu Automaten Beschreibung des Aufbaus von Sprachen Mathematische Mengennotation Beschreibung durch Eigenschaften

Mehr

2. Algorithmenbegriff

2. Algorithmenbegriff 2. Algorithmenbegriff Keine Algorithmen: Anleitungen, Kochrezepte, Wegbeschreibungen,... Algorithmus: Berechnungsvorschrift, die angibt, wie durch Ausführung bestimmter Elementaroperationen aus Eingabegrößen

Mehr

Theoretische Grundlagen der Informatik. Vorlesung am 17. Januar INSTITUT FÜR THEORETISCHE INFORMATIK

Theoretische Grundlagen der Informatik. Vorlesung am 17. Januar INSTITUT FÜR THEORETISCHE INFORMATIK Theoretische Grundlagen der Informatik 0 17.01.2019 Torsten Ueckerdt - Theoretische Grundlagen der Informatik KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Evaluation Ergebnisse

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

2.2 Syntax, Semantik und Simulation

2.2 Syntax, Semantik und Simulation 2.2 Syntax, Semantik und Simulation Ein Java Programm ist eine Folge von Buchstaben. Nicht jede Folge von Buchstaben ist ein korrektes Java Programm! Wie kann man alle korrekten Java Programme beschreiben?

Mehr

Das Halteproblem für Turingmaschinen

Das Halteproblem für Turingmaschinen Das Halteproblem für Turingmaschinen Das Halteproblem für Turingmaschinen ist definiert als die Sprache H := { T w : T ist eine TM, die bei Eingabe w {0, 1} hält }. Behauptung: H {0, 1} ist nicht entscheidbar.

Mehr

Ein Fragment von Pascal

Ein Fragment von Pascal Ein Fragment von Pascal Wir beschreiben einen (allerdings sehr kleinen) Ausschnitt von Pascal durch eine kontextfreie Grammatik. Wir benutzen das Alphabet Σ = {a,..., z, ;, :=, begin, end, while, do} und

Mehr

Theoretische Grundlagen der Informatik

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

Mehr

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn Ideen und Konzepte der Informatik Programme und Algorithmen Kurt Mehlhorn November 2016 Algorithmen und Programme Algorithmus = Schritt-für-Schritt Vorschrift zur Lösung eines Problems. Formuliert man

Mehr

Einführung in Berechenbarkeit, Formale Sprachen und Komplexitätstheorie

Einführung in Berechenbarkeit, Formale Sprachen und Komplexitätstheorie Einführung in Berechenbarkeit, Formale Sprachen und Komplexitätstheorie Wintersemester 2005/2006 07.11.2005 5. Vorlesung 1 Überblick: Kontextfreie Sprachen Formale Grammatik Einführung, Beispiele Formale

Mehr

1.3 Geschichte der Programmiersprachen

1.3 Geschichte der Programmiersprachen 50er Jahre erste Definition höherer Programmiersprachen Effizienz maßgebliches Designziel FORTRAN (Backus) als Sprache für wissenschaftliches Rechnen (komplexe Berechnungen, einfachen Daten), Arrays, Schleifen,

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

Theoretische Grundlagen der Informatik. Vorlesung am 8. Januar INSTITUT FÜR THEORETISCHE INFORMATIK

Theoretische Grundlagen der Informatik. Vorlesung am 8. Januar INSTITUT FÜR THEORETISCHE INFORMATIK Theoretische Grundlagen der Informatik 0 08.01.2019 Torsten Ueckerdt - Theoretische Grundlagen der Informatik KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Letzte Vorlesung Eine

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Einführung in die Programmierung Als Programmierung bezeichnet man die Tätigkeit Computerprogramme (software) zu erstellen. Konzeptioneller Entwurf Umsetzung des Entwurfs in Programmcode (Implementation):

Mehr

Learning Object-Oriented Programming. Algorithmen. Algorithmusbegriff. Klärung der Herkunft des Begriffs Formale Definition von Algorithmus

Learning Object-Oriented Programming. Algorithmen. Algorithmusbegriff. Klärung der Herkunft des Begriffs Formale Definition von Algorithmus Algorithmen Algorithmusbegriff Klärung der Herkunft des Begriffs Formale Definition von Algorithmus Algorithmusbegriff Algorithmen sind eine der ältesten (abstrakten) Beschreibungstechniken für Abläufe.

Mehr

kontextfreie Grammatiken Theoretische Informatik kontextfreie Grammatiken kontextfreie Grammatiken Rainer Schrader 14. Juli 2009 Gliederung

kontextfreie Grammatiken Theoretische Informatik kontextfreie Grammatiken kontextfreie Grammatiken Rainer Schrader 14. Juli 2009 Gliederung Theoretische Informatik Rainer Schrader Zentrum für Angewandte Informatik Köln 14. Juli 2009 1 / 40 2 / 40 Beispiele: Aus den bisher gemachten Überlegungen ergibt sich: aus der Chomsky-Hierarchie bleiben

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

2. JAVA-Programmierung. Informatik II für Verkehrsingenieure

2. JAVA-Programmierung. Informatik II für Verkehrsingenieure 2. JAVA-Programmierung Informatik II für Verkehrsingenieure Problem-Algorithmus-Umsetzung Problemstellung Algorithmus Umsetzung 2 Beispiele für Algorithmen 3 Definitionsversuch Algorithmus Anleitung, wie

Mehr

1. Einführung Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt

1. Einführung Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt 1. Einführung Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt 1 Ein Zitat zu Beginn Vor der Wahl, ein theoretischer Physiker oder ein Programmierer

Mehr

Wintersemester 2007/2008 Helmut Seidl Institut für Informatik TU München

Wintersemester 2007/2008 Helmut Seidl Institut für Informatik TU München Informatik 1 Wintersemester 2007/2008 Helmut Seidl Institut für Informatik TU München 1 0 Allgemeines Inhalt dieser Vorlesung: Einführung in Grundkonzepte der Informatik; Einführung in Denkweisen der Informatik;

Mehr

Programmierkurs II. C und Assembler

Programmierkurs II. C und Assembler Programmierkurs II C und Assembler Prof. Dr. Wolfgang Effelsberg Universität Mannheim Sommersemester 2003 1-1 Inhalt Teil I: Die Programmiersprache C 2. Datentypen und Deklarationen 3. Operatoren und Ausdrücke

Mehr

1 Zahlentheorie. 1.1 Kongruenzen

1 Zahlentheorie. 1.1 Kongruenzen 3 Zahlentheorie. Kongruenzen Der letzte Abschnitt zeigte, daß es sinnvoll ist, mit großen Zahlen möglichst einfach rechnen zu können. Oft kommt es nicht darauf, an eine Zahl im Detail zu kennen, sondern

Mehr

5. Die syntaktische Analyse

5. Die syntaktische Analyse mittels sog. Parser Input: Folge von Token (Symbolen), geliefert vom Scanner/Sieber Aufgabe: Teilfolgen zusammenfassen zu größeren syntaktischen Einheiten Ausdrücke, Anweisungen(-folgen), Deklarationen,

Mehr

5. Algorithmen. K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16

5. Algorithmen. K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 5. Algorithmen K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 Version: 21. Okt. 2015 1. Berechne 2 n. Zu lösende Probleme 2. Berechne die Fakultät einer nat. Zahl: n! = 1 * 2 *... n 3. Entscheide,

Mehr

Algorithmen mit konstantem Platzbedarf: Die Klasse REG

Algorithmen mit konstantem Platzbedarf: Die Klasse REG Algorithmen mit konstantem Platzbedarf: Die Klasse REG Sommerakademie Rot an der Rot AG 1 Wieviel Platz brauchen Algorithmen wirklich? Daniel Alm Institut für Numerische Simulation Universität Bonn August

Mehr

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn Ideen und Konzepte der Informatik Programme und Algorithmen Kurt Mehlhorn 26. Oktober 2015 Programme und Algorithmen Programmiersprache = Kunstsprache mit genau definierter Syntax (was ist ein zulässiger

Mehr

Übungsblatt 6. Vorlesung Theoretische Grundlagen der Informatik im WS 18/19

Übungsblatt 6. Vorlesung Theoretische Grundlagen der Informatik im WS 18/19 Institut für Theoretische Informatik Lehrstuhl Prof. Dr. D. Wagner Übungsblatt 6 Vorlesung Theoretische Grundlagen der Informatik im WS 18/19 Ausgabe 8. Januar 2019 Abgabe 22. Januar 2019, 11:00 Uhr (im

Mehr

Was bisher geschah Chomsky-Hierarchie für Sprachen: L 0 Menge aller durch (beliebige) Grammatiken beschriebenen Sprachen L 1 Menge aller monotonen

Was bisher geschah Chomsky-Hierarchie für Sprachen: L 0 Menge aller durch (beliebige) Grammatiken beschriebenen Sprachen L 1 Menge aller monotonen Was bisher geschah Chomsky-Hierarchie für Sprachen: L 0 Menge aller durch (beliebige) Grammatiken beschriebenen Sprachen L 1 Menge aller monotonen (Kontextsensitive) Sprachen L 2 Menge aller kontextfreien

Mehr

Theoretische Grundlagen der Informatik

Theoretische Grundlagen der Informatik Theoretische Grundlagen der Informatik Vorlesung am 18. Januar 2018 INSTITUT FÜR THEORETISCHE 0 18.01.2018 Dorothea Wagner - Theoretische Grundlagen der Informatik INSTITUT FÜR THEORETISCHE KIT Die Forschungsuniversität

Mehr

Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff

Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff Programmieren in C Eine Einführung in die Programmiersprache C Prof. Dr. Nikolaus Wulff Agenda Elementare Einführung C Programm Syntax Datentypen, Variablen und Konstanten Operatoren und Ausdrücke Kontrollstrukturen

Mehr

Es gibt keinen Algorithmus zum Schreiben eines Programms bzw. Algorithmus.

Es gibt keinen Algorithmus zum Schreiben eines Programms bzw. Algorithmus. 1 Einführung Programmiersprachen: Ermöglichen formale Beschreibung von Problemlösungsverfahren, die auf einem Computer oder Computersystemen ausführbar sind. Bilden die Basis zur Entwicklung von Software

Mehr

Kapitel 2: Methoden zur Beschreibung von Syntax

Kapitel 2: Methoden zur Beschreibung von Syntax Einführung in die Informatik: Programmierung und Softwareentwicklung Wintersemester 2018/19 Kapitel 2: Methoden zur Beschreibung von Syntax Prof. Dr. David Sabel Lehr- und Forschungseinheit für Theoretische

Mehr

Einführung in die Informatik Turing Machines

Einführung in die Informatik Turing Machines Einführung in die Informatik Turing Machines Eine abstrakte Maschine zur Präzisierung des Algorithmenbegriffs Wolfram Burgard Cyrill Stachniss 1/14 Motivation und Einleitung Bisher haben wir verschiedene

Mehr

6 Modellierung von Strukturen 6.1 Kontextfreie Grammatiken

6 Modellierung von Strukturen 6.1 Kontextfreie Grammatiken 6 Modellierung von Strukturen 6.1 Kontextfreie Grammatiken Mod-6.1 Kontextfreie Grammatik (KFG): formaler Kalkül, Ersetzungssystem; definiert Sprache als Menge von Sätzen; jeder Satz ist eine Folge von

Mehr

Programmiersprachen. Organisation und Einführung. Berthold Hoffmann. Studiengang Informatik Universität Bremen

Programmiersprachen. Organisation und Einführung. Berthold Hoffmann. Studiengang Informatik Universität Bremen Organisation und Einführung Studiengang Informatik Universität Bremen Sommersemester 2010 (Vorlesung am Montag, der 12. April 2010) (Montag, der 12. April 2008) 1 Vorstellung 2 Organisation 3 Einführung

Mehr

DisMod-Repetitorium Tag 4

DisMod-Repetitorium Tag 4 DisMod-Repetitorium Tag 4 Endliche Automaten, Reguläre Sprachen und Kontextfreie Grammatiken 22. März 2018 1 Endliche Automaten Definition DFA Auswertungen Äquivalenzrelationen Verschmelzungsrelation und

Mehr

Sprachanalyse. Fachseminar WS 08/09 Dozent: Prof. Dr. Helmut Weber Referentin: Nadia Douiri

Sprachanalyse. Fachseminar WS 08/09 Dozent: Prof. Dr. Helmut Weber Referentin: Nadia Douiri Sprachanalyse WS 08/09 Dozent: Prof. Dr. Helmut Weber Referentin: Inhalt 1. Formale Sprachen 2. Chomsky-Hierarchie 2 FORMALE SPRACHE 1. WAS IST EINE SPRACHE? 2. WIE BESCHREIBT MAN EINE SPRACHE? 3. WAS

Mehr

Tutorium 23 Grundbegriffe der Informatik (10. Sitzung)

Tutorium 23 Grundbegriffe der Informatik (10. Sitzung) Tutorium 23 Grundbegriffe der Informatik (10. Sitzung) Tutor: Felix Stahlberg SOFTWARE DESIGN AND QUALITY GROUP Source: pixelio.de KIT The cooperation of Forschungszentrum Karlsruhe GmbH and Universität

Mehr

Einführung in die Informatik Turing Machines

Einführung in die Informatik Turing Machines Einführung in die Informatik Turing Machines Eine abstrakte Maschine zur Präzisierung des Algorithmenbegriffs Wolfram Burgard 1 Motivation und Einleitung Bisher haben wir verschiedene Programmiersprachen

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Einführung in die Programmierung Brückenkurs Prof. Dr. Rethmann Fachbereich Elektrotechnik und Informatik Hochschule Niederrhein WS 2009/10 Einführung in die Programmierung Erste Programme 2 / 38 Übersicht

Mehr

Programmierkurs II. Prof. Dr. Wolfgang Effelsberg. Universität Mannheim. Sommersemester Wolfgang Effelsberg Programmiersprachen

Programmierkurs II. Prof. Dr. Wolfgang Effelsberg. Universität Mannheim. Sommersemester Wolfgang Effelsberg Programmiersprachen Prof. Dr. Wolfgang Effelsberg Universität Mannheim Sommersemester 2005 1-1 Inhalt (1) Teil I: Die Programmiersprache C 2. Datentypen und Deklarationen 3. Operatoren und Ausdrücke 4. Ablaufsteuerung (Kontrollstrukturen)

Mehr

Programmierkurs II. Prof. Dr. Wolfgang Effelsberg. Universität Mannheim. Sommersemester Wolfgang Effelsberg Programmiersprachen

Programmierkurs II. Prof. Dr. Wolfgang Effelsberg. Universität Mannheim. Sommersemester Wolfgang Effelsberg Programmiersprachen Prof. Dr. Wolfgang Effelsberg Universität Mannheim Sommersemester 2005 1-1 Inhalt (1) Teil I: Die Programmiersprache C 2. Datentypen und Deklarationen 3. Operatoren und Ausdrücke 4. Ablaufsteuerung (Kontrollstrukturen)

Mehr

Theorie der Informatik. Theorie der Informatik. 6.1 Einführung. 6.2 Alphabete und formale Sprachen. 6.3 Grammatiken. 6.4 Chomsky-Hierarchie

Theorie der Informatik. Theorie der Informatik. 6.1 Einführung. 6.2 Alphabete und formale Sprachen. 6.3 Grammatiken. 6.4 Chomsky-Hierarchie Theorie der Informatik 17. März 2014 6. Formale Sprachen und Grammatiken Theorie der Informatik 6. Formale Sprachen und Grammatiken Malte Helmert Gabriele Röger Universität Basel 17. März 2014 6.1 Einführung

Mehr

Theoretische Grundlagen der Informatik

Theoretische Grundlagen der Informatik Theoretische Grundlagen der Informatik Vorlesung am 15.01.2015 INSTITUT FÜR THEORETISCHE 0 KIT 15.01.2015 Universität des Dorothea Landes Baden-Württemberg Wagner - Theoretische und Grundlagen der 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

Computergrundlagen Programmiersprachen, Interpreter, Compiler, Linker

Computergrundlagen Programmiersprachen, Interpreter, Compiler, Linker Computergrundlagen Programmiersprachen, Interpreter, Compiler, Linker Axel Arnold Institut für Computerphysik Universität Stuttgart Wintersemester 2010/11 Was sind Programme? In dieser Vorlesung: Python,

Mehr

(Prüfungs-)Aufgaben zu formale Sprachen

(Prüfungs-)Aufgaben zu formale Sprachen (Prüfungs-)Aufgaben zu formale Sprachen (siehe auch bei den Aufgaben zu endlichen Automaten) 1) Eine Grammatik G sei gegeben durch: N = {S, A}, T = {a, b, c, d}, P = { (S, Sa), (S, ba), (A, ba), (A, c),

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

Einführung in die Objektorientierte Programmierung Vorlesung 2: Mikroskopisches und Makroskopisches Computational Thinking.

Einführung in die Objektorientierte Programmierung Vorlesung 2: Mikroskopisches und Makroskopisches Computational Thinking. Einführung in die Objektorientierte Programmierung Vorlesung 2: Mikroskopisches und Makroskopisches Computational Thinking Sebastian Küpper Das makroskopische Modell: Objekte Objekt: Abbild konkreter individuell

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