8590 Romanshorn Maturaarbeit Tel Automatische Übersetzung formaler Sprachen

Größe: px
Ab Seite anzeigen:

Download "8590 Romanshorn Maturaarbeit Tel. 071 463 60 75 email michele.itten@gmx.ch. Automatische Übersetzung formaler Sprachen"

Transkript

1 Michèle Itten Kantonsschule Romanshorn Steinhaldenweg 28 Klasse 4Mb 8590 Romanshorn Maturaarbeit Tel Automatische Übersetzung formaler Sprachen Fach: Mathematik Betreuer: Dr. math. A. Brunnschweiler Abgabetermin: 11. August 2003

2 Inhaltsverzeichnis 1 Einleitung 3 2 Sprachtypen Natürliche Sprachen Formale Sprachen 5 3 Syntax Syntaxdiagramme BNF (Backus Naur Form) EBNF (Extended Backus Naur Form) 10 4 Anwendungsbereiche Übersetzung natürlicher Sprachen Computerinterne Übersetzung 13 5 Übersetzungsvorgang Analyse Synthese Anforderungen an die Grammatik Regel Regel Hinweis: Syntax dient der Semantik 17 6 UPN-Compiler Anforderungen Konzept Benutzte Sprachen Mikroalgebra Infix Mikroalgebra UPN (Postfix) Umsetzung mit Borland Delphi 21 7 Automatische_Ableitung Anforderungen Konzept Benutzte Sprachen 25 1

3 7.4 Umsetzung mit Borland Delphi Erstellung des Syntaxbaumes Vereinfachung des Syntaxbaumes mit Simplify SimplifySubTree SimplifyBin SimplifySingle SimplifyBrothers Darstellen des Syntaxbaumes mit TreeView Ableiten Gewinnen eines Strings aus dem Syntaxbaum Synthesize Parentheses-Funktionen Evaluate Darstellung im zweidimensionalen Koordinatensystem weitere Funktionen und Prozeduren 51 8 Schlusswort 51 Literaturverzeichnis 53 Glossar 54 Anhang A: UPN-Compiler 55 Anhang B: Automatische_Ableitung 62 PAutomatische_Ableitung 62 UAutomatische_Ableitung 62 UDiagramm 98 UAbout 102 Formulare 104 FAutomatische_Ableitung 104 FDiagramm 104 FAbout 105 FInfixEBNF 105 FPostfixEBNF 105 2

4 1 Einleitung Übersetzung ist ein viel wesentlicherer Bestandteil unseres täglichen Lebens als meist angenommen. Sie spielt nicht nur in der menschlichen Kommunikation eine wichtige Rolle, sondern findet überall statt, wo Information in eine andere Codierung umgewandelt wird. Auch in der Informatik ist sie fest verwurzelt: Der Umgang mit Computern, wie wir ihn heute kennen, wäre ohne automatische Übersetzung undenkbar. Aus diesem Grund ist es besonders reizvoll, einen Blick hinter die Kulissen eines automatischen Übersetzungsprogramms zu werfen und folgenden Fragen auf den Grund zu gehen: - Wie kann man sich die vielen Fehler erklären, die sich bei der automatischen Übersetzungen natürlicher Sprachen einschleichen? - Sind überhaupt zuverlässige Übersetzungen möglich? Falls ja, unter welchen Umständen? Diese Frage führte mich zur Übersetzung formaler Sprachen, welche präzise und korrekt durchführbar ist. Ausserdem funktioniert sie auch mit geringerer Komplexität und erlaubt deshalb die Entwicklung eines eigenen Programms. So bilden denn auch zwei solche das Kernstück der vorliegenden Arbeit: Das erste ist eine Konsolenanwendung zur Übersetzung eines algebraischen Ausdrucks aus der Infix- in die Postfix-Notation. Das zweite, graphische Programm dient zur Ableitung einer Funktion. An diesen beiden praktischen Beispielen werden Vorgehen und dabei auftauchende Probleme erläutert. Es gilt, folgende Leitfragen zu untersuchen: - Wie kann man eine Sprache in kurzer Form definieren, auch wenn sie unendlich viele Kombinationsmöglichkeiten besitzen soll? - Wie funktioniert die Erkennung der Sprachstruktur? - Auf welche Weise wird die Information in eine andere Struktur umgeformt? - Was muss man tun, um die Qualität der Ausgabe zu verbessern? Zusätzlich zu diesen Fragen sollen die wichtigsten Begriffe erklärt und die Anwendungsbereiche der automatischen Übersetzung formaler und natürlicher Sprachen beschrieben werden. 3

5 2 Sprachtypen Gemäss dem Brockhaus Lexikon ist eine Sprache ein "Vorrat von sinnlich wahrnehmbaren Zeichen, die allein oder nach bestimmten [...] Kombinationsregeln untereinander verbunden der Kommunikation dienen." 1 Dabei wird primär zwischen natürlichen und künstlichen Sprachen unterschieden; die künstlichen Sprachen wiederum unterteilt man in Welthilfssprachen, synthetische Sprachen (Nachbildung natürlicher Sprachen durch mechanische Schwingungen) und formale Sprachen, welche im Abschnitt 2.2 genauer behandelt werden. 2.1 Natürliche Sprachen Deutsch, Französisch, Englisch, Italienisch, Chinesisch, etc.: Alle diese Sprachen gehören zu den natürlichen Sprachen. Jahrhundertelang wurden sie sich durch den ständigen Gebrauch verändert, angepasst und erweitert. Auf diese Weise entwickelten sie sich zu sehr komplexen Gebilden, welche schwer zu durchschauen sind. Dies wird einem besonders dann bewusst, wenn man eine Fremdsprache erlernen will. "Die Ausnahme bestätigt die Regel", wie man es treffend ausdrückt. Ohne so genanntes 'Sprachgefühl' hat man keine Chance, sich in einer fremden Sprache korrekt zu verständigen. Auf die gleiche Art und Weise erweitert sich auch das Vokabular ständig und es ist längst unmöglich, jedem Wort eine einzige Bedeutung zuzuordnen. Ein Beispiel dafür ist das Wort "Bank", welches zwei völlig unterschiedliche Dinge bezeichnen kann. Zum Einen beschreibt es ein Geldinstitut, zum Andern eine bestimmte Sitzgelegenheit. Erst aus dem Zusammenhang wird klar, um welche Art von "Bank" es sich handelt, mit anderen Worten: Das Wort ist "kontextabhängig". 2 Nur wenn in einer Sprache keine kontextabhängigen Ausdrücke existieren, ist die Sprache kontextfrei. Auch Metaphern sind eine typische Eigenheit von natürlichen Sprachen und können meistens nicht wortgetreu übersetzt werden. Weitere Probleme ergeben sich mit Kompositabildungen (zusammengesetzten Wörtern), die besonders in der deutschen Sprache häufig anzutreffen sind. Sie können "unmöglich alle in einem Wörterbuch 1 [2] Brockhaus, Bd.17, S [11] Lang, Kapitel 5 4

6 enthalten sein, also wird eine morphologische Analyse [...] notwendig." 3 Doch wie trennt man das zusammengesetzte Wort Beinhaltung richtig? Be-inhaltung oder Bein-haltung? Auch hier ergibt sich ein Problem, das nur unter Berücksichtigung des umgebenden Textes gelöst werden kann. Weitere Beispiele können auf dem Internet gefunden werden Formale Sprachen Die oben genannten Eigenschaften natürlicher Sprachen machen es für einen Computer beinahe unmöglich, diese zu verstehen. Aus diesem Grund wurden weitere Sprachen erfunden, so genannte 'formale Sprachen'. Hierbei sind Eindeutigkeit und logischer Aufbau das A und O; ausserdem zeichnen sie sich durch ein sehr begrenztes Vokabular aus, welches je nach Gebrauch ausgebaut werden kann. Zu den formalen Sprachen gehören Programmiersprachen, Maschinensprachen und algebraische Ausdrücke. Der entscheidende Unterschied zu natürlichen Sprachen liegt "in ihrer Entstehung. Während natürliche Sprachen historisch gewachsen sind, verdanken künstliche Sprachen ihre Existenz einer willkürlichen, durch bestimmte Interessen motivierten Setzung. [...] Formale Sprachen ermöglichen durch ihre spezifischen Eigenschaften (Eindeutigkeit, Explizitheit und leichte Überprüfbarkeit) die bessere Behandlung von Problemen in vielen Wissenschaften." 5 Im Folgenden werden nur kontextfreie, formale Sprachen betrachtet und zur Veranschaulichung mit Vergleichen zu natürlichen Sprachen ergänzt. 3 Syntax In den Sommer warme scheinen die Sonne obwohl jedes dieser Worte zum Vokabular der deutschen Sprache gehört, können sie zusammen unmöglich als korrekter deutscher Satz gelten, da die Syntaxregeln nicht beachtet wurden. "Die Regeln der Syntax beziehen sich darauf, welche Wörter auf welche Weise mit anderen Wörtern 3 [11] Lang, Kapitel 4 4 [11] Lang, Kapitel 4 5 [1] Brockhaus, Band 20, Seite 628 5

7 oder Wortgruppen zu grösseren Einheiten [...] kombiniert werden können" 6 bezeichnen somit ein Teilgebiet der Grammatik. und Um eine Sprache zu definieren, bedarf man also zweierlei: Erstens muss der Wortschatz festgelegt werden, was man einfach durch Bestimmung aller erlaubten Wörter erreichen kann. Zweitens benötigt man ein System, das jeden zulässigen Satzbau definiert. Zu diesem Zweck stehen u.a. Syntaxdiagramme, BNF- oder EBNF-Notation zur Verfügung, welche nachfolgend erläutert werden. Diese Syntaxnotationen basieren alle auf dem gleichen Grundprinzip: Sie gehen von einem Startsymbol aus und definieren Regeln, auf welche Weise dieses ersetzt werden kann. Zur Erklärung soll ein Beispiel eines einfachen deutschen Satzes dienen: SATZ SUBJEKT PRÄDIKAT. ARTIKEL NOMEN VERB. Der Hund bellt. Abbildung 1: Aufbau des Satzes "Der Hund bellt.". In diesem Fall wird das Startsymbol 'Satz' genannt und besteht lediglich aus einem Subjekt, gefolgt von einem Prädikat und einem Punkt. Das Subjekt wiederum ist aus Artikel und Nomen zusammengesetzt; das Prädikat steht für die Personalform eines beliebigen Verbs. Ein Satz entspricht also der Folge 'Artikel Nomen Verb.'. Natürlich ist dies noch nicht die definitive Form des Satzes, da alle drei Wortarten noch durch einen Vertreter derselben ersetzt werden müssen. "Der Hund bellt." wäre eine mögliche Lösung, "Anna isst." gehört hingegen nicht zu der definierten Sprache (der Artikel fehlt). 6 [1] Brockhaus, Band 20, Seite 628 6

8 Es sind mehr Wörter zur Beschreibung einer Sprache notwendig, als die Sprache selbst enthält. Diese Metasymbole (im Beispiel Satz, Artikel, Nomen, Verb) werden in der Literatur Nonterminals oder nicht-terminale Symbole genannt. Sie dienen als Überbegriffe der Gruppierung anderer Wörter. Die tatsächlich in der Sprache enthaltenen Wörter nennt man Terminals oder terminale Symbole. Sie entsprechen dem Vokabular der Sprache und sind wörtlich zu nehmen. 3.1 Syntaxdiagramme Eine sehr anschauliche Art der Syntaxnotation sind die so genannten Syntaxdiagramme. Hierbei werden die Syntaxregeln durch mehrere verknüpfte Einzeldiagramme dargestellt. Jedes Einzeldiagramm besteht aus Knoten und Pfeilen: Die Pfeile deuten in die Richtung, in der das Diagramm durchlaufen werden darf, die Knoten teilen sich in terminale und nicht-terminale Knoten. Terminale Knoten werden als Kreise oder Ovale dargestellt; alle terminalen Knoten zusammen definieren also den gesamten Wortschatz. Nicht-terminale Knoten (mit einem rechteckigen Rahmen versehen) verweisen auf ein weiteres Einzeldiagramm, das an dieser Stelle durchlaufen werden soll, analog zum Beispiel der vorigen Seite. 7 Ein Beispiel soll dies verdeutlichen: Startdiagramm: Dezimalzahl Dezimalzahl Natürliche Zahl. Natürliche Zahl Natürliche Zahl Ziffer 7 [12] Schiedermeier 7

9 Ziffer Syntaxdefinition 1: Dezimalzahlen in Syntaxdiagrammen Bei der Anwendung der Syntaxdiagramme geht man nach folgender Regel vor: "Ein Text ist [...] korrekt, wenn er mit einem kompletten Durchlauf des Syntaxdiagrammes vollständig nachvollzogen werden kann. Dabei darf am Ende weder ein Rest des Textes noch ein Rest des Syntaxdiagrammes unverarbeitet übrigbleiben. Es kommt nur darauf an, dass es irgendeinen Weg durch das Syntaxdiagramm gibt, der zum Text passt. Es spielt keine Rolle, welche Abzweigungen dabei genommen werden." BNF (Backus Naur Form) Eine zweite Methode zur Definition der Syntax bildet die nach ihren Erfindern John Backus und Peter Naur benannte BNF. 9 Ihr Hauptvorteil liegt darin, dass sie "gegenüber Syntaxdiagrammen kompakter und als reine Textdarstellung leichter maschinell zu verarbeiten" 10 ist. Aus diesem Grund hat sie sich auch bis heute als Syntaxnotation durchgesetzt, wenn auch in leicht abgewandelter Form (siehe Kap. 3.3 EBNF) [12] Schiedermeier 9 [10] Estier 10 [12] Schiedermeier 11 [6] Schnorf, Seite 13 8

10 In BNF sieht die Definition der Dezimalzahlen folgendermassen aus: Startsymbol: Dezimalzahl Dezimalzahl = NatürlicheZahl NatürlicheZahl '.' NatürlicheZahl NatürlicheZahl = Ziffer Ziffer NatürlicheZahl Ziffer Syntaxdefinition 2: Dezimalzahlen in BNF = '1' '2' '3' '4' '5' '6' '7' '8' '9' '0' Bei dieser Notation unterteilt man die Syntax in einzelne Produktionen (analog zu den Einzeldiagrammen in Kapitel 3.1). Jede Produktion entspricht einer Art Gleichung: Auf der linken Seite befindet sich ein nicht-terminales Symbol, das durch den Ausdruck auf der rechten Seite des Gleichheitszeichens ersetzt werden kann. Auc h hier verweisen nicht-terminale Symbole auf eine weitere Produktion, während Terminale einem Symbol der definierten Sprache entsprechen und nicht weiter ersetzt werden. Zur Kennzeichnung werden Terminalsymbole oft mit Apostrophen oder Anführungszeichen markiert. 12 Für die rechte Seite der Produktionen stehen zusätzlich zwei verschiedene Meta-Symbole zur Verfügung: das griechische? für die leere Sequenz ("nichts") sowie der vertikale Strich als "oder"-symbol. 13 Bei der Anwendung nt man mit dem nicht-terminalen Startsymbol, welches man gemäss den Regeln der zugehörigen Produktion ersetzt. Solange in der Symbolfolge nicht-terminale Symbole vorkommen, werden diese nach der entsprechenden Produktion ersetzt. Auf diese Weise kann man jeden korrekten Satz konstruieren. Zwei Beispiele sollen dies verdeutlichen: Ist eine Dezimalzahl? Dezimalzahl => NatürlicheZahl '.' NatürlicheZahl => Ziffer NatürlicheZahl '.' Ziffer => Ziffer Ziffer NatürlicheZahl '.' Ziffer => Ziffer Ziffer Ziffer '.' Ziffer => '3' '5' '6' '.' '9' Beispiel 1: Herleitung nach BNF "Dezimalzahl" 12 [8] Wirth, Seite [6] Schnorf, Seite 10 9

11 Ist.91 eine Dezimalzahl? Dezimalzahl => NatürlicheZahl '.' NatürlicheZahl => ZIFFER '.' Ziffer Natürliche Zahl VOR DEM PUNKT MUSS MINDESTENS EINE ZIFFER STEHEN! Beispiel 2: Herleitung.91 nach BNF "Dezimalzahl" Dieses zweite Beispiel ist nicht herleitbar, da das Startsymbol Dezimalzahl durch NatürlicheZahl '.' NatürlicheZahl ersetzt werden muss, damit der Punkt zustande kommt. Doch NatürlicheZahl muss durch mindestens eine Ziffer ersetzt werden. Damit wird es unmöglich, den Satz.91 herzuleiten. Zusammenfassend kann festgehalten werden, dass eine Sprache durch vier Elemente charakterisiert wird: Ihr Vokabular, das durch Terminalsymbole ausgedrückt wird, die Menge aller nicht-terminalen Symbole, sämtliche Produktionen und das Startsymbol, welches zu den nicht-terminalen Symbolen gehört EBNF (Extended Backus Naur Form) 15 EBNF stellt wie der Name sagt eine Weiterentwicklung der Backus Naur Form dar. Diese Erweiterung, welche auf Niklaus Wirth zurückgeht, lässt neue Metasymbole zu, welche die Notation dem menschlichen Denken anpassen. Die Produktion NatürlicheZahl beispielsweise bezeichnet nichts Anderes als eine Folge von einer oder mehreren aufeinanderfolgenden Ziffern. In den Syntaxdiagrammen wird dies durch eine beliebig wiederholbare Schlaufe verdeutlicht. In BNF muss auf Rekursivität zurückgegriffen werden: NatürlicheZahl = Ziffer Ziffer NatürlicheZahl. Durch wiederholtes Durchlaufen dieser Produktion kann jede beliebige Anzahl von Ziffern hintereinander erreicht werden, solange sie nicht kleiner als eins ist. Die Produktion ist korrekt, jedoch nicht sehr benutzerfreundlich, da die rekursive Denkweise gewöhnungsbedürftig ist. 14 [8] Wirth, Seite 7 15 [6] Schnorf, Seite 11 10

12 Ein ähnliches Problem ergibt sich, wenn man eine Option definieren will, wie beispielsweise der zweite Teil des Diagramms Dezimalzahl: In BNF wird dies durch? '.' NatürlicheZahl ausgedrückt. In Worte gefasst meint man, dass entweder nichts oder '.' Natürliche Zahl geschrieben werden kann. Es ist ungewohnt, ein Zeichen zu setzen, um auszusagen, dass nichts notiert werden soll. EBNF ist aus diesem Grund um einige Metasymbole reicher und drückt diese beiden Situationen durch bestimmte Klammer aus: {a} bedeutet Repetition und entspricht? a aa aaa aaaa aaaaa... [a] bedeutet Option und entspricht? a (a) Runde Klammern dienen der Zusammenfassung einzelner Teile der Definition. Durch diese Erweiterungen ist das Spezialsymbol? für die leere Sequenz nicht mehr nötig. Ebenso wurde zur einfacheren maschinellen Verarbeitung ein Punkt als Trennzeichen am Ende jeder Produktion eingeführt (ein Zeilenwechsel allein ist kein sichtbares Symbol). Die Definition der Dezimalzahlen lautet also in EBNF folgendermassen: Dezimalzahl = NatürlicheZahl ['.' Natürliche Zahl]. NatürlicheZahl = Ziffer {Ziffer}. Ziffer Syntaxdefinition 3: Dezimalzahlen in EBNF Ein Beispiel zur Herleitung aus EBNF: = '1' '2' '3' '4' '5' '6' '7' '8' '9' '0'. Ist eine Dezimalzahl? Dezimalzahl => NatürlicheZahl '.' NatürlicheZahl => Ziffer Ziffer Ziffer '.' Ziffer => '3' '5' '6' '.' '9' Beispiel 3: Herleitung nach EBNF "Dezimalzahl" EBNF ermöglicht eine kurze, jedoch einleuchtende Definition einer Sprache und kann deshalb nach Tremblay und Sorenson praktisch für jede formale Sprache verwendet werden: "BNF has been around for quite a while, and with all its simplicity, it is almost adequate. With the additions to BNF [...] it will serve well enough for just about any design process. [...] There is no evidence that more complex methods than these are either necessary or desirable for describing reasonable languages." in: [6] Schnorf, Seite 13 11

13 Zum Schluss sei aber darauf hingewiesen, dass Syntax nicht mit Semantik gleichzusetzen ist: Die Syntax analysiert lediglich die Form eines Textes, während sich die Semantik mit seiner Bedeutung auseinandersetzt. Es gibt Sätze, die zwar syntaktisch völlig korrekt, aber dennoch sinnlos sind (z.b. "der blaue Stein ist rot" oder "Fritz ist älter als seine Mutter"). Man bezeichnet deshalb die Syntax auch als "Aspekt einer Sprache [...], bei dem nur die formalen Gesetzmässigkeiten verwendet werden und keine Interpretationen oder Deutungen [gemacht werden]." 17 4 Anwendungsbereiche 4.1 Übersetzung natürlicher Sprachen Die Erkenntnisse aus der Anwendung mit formalen Sprachen lassen sich auch für die Übersetzung natürlicher Sprachen nutzen, allerdings mit zusätzlichen Problemen wie Kontextabhängigkeit, laufende Entwicklung, Doppeldeutigkeiten, unzähligen Ausnahmen, zusammengesetzten Wörtern, etc. 18 Auf dem Internet finden sich zahlreiche kostenlose automatische Übersetzungsdienste 19, mit denen man relativ einfach einen Einblick in den momentanen Stand der Technik gewinnen kann. Amy Lang fasst ihn in einem Internetbericht folgendermassen zusammen: "Eine vollautomatische Übersetzung ist aus heutiger Sicht nicht realistisch, menschliche Eingriffe bleiben erforderlich." 20 Zur besseren Bewältigung dieser Probleme ist man u.a. auf der Suche nach "einer generellen Zwischensprache, der Interlingua, um nicht für jedes Sprachpaar neue Systeme bauen zu müssen - allerdings bislang erfolglos. Bisher konnte weder eine umfangreiche Interlingua erstellt noch ein Verfahren zu ihrer Konzeption entwickelt werden." 21 Ein anderes Forschungsgebiet innerhalb der automatischen Übersetzung natürlicher 17 [2] Brockhaus, Band 18, S [11] Lang, Kapitel 4 19 wie z.b. [13] 20 [11] Lang, Kapitel 6 21 [11] Lang, Kapitel 6 12

14 Sprachen ist die Anwendung für gesprochenen Text, 22 was aber an dieser Stelle nicht näher behandelt wird. 4.2 Computerinterne Übersetzung Würde der Computer keine internen Übersetzungsprogramme besitzen, welche in der Lage wären, die Eingaben des Anwenders (solange sie sich innerhalb eines genau vordefinierten Bereichs bewegen) in den Maschinencode zu übersetzen, dann wären selbst die einfachsten Programmieraufgaben nur eine Angelegenheit von Experten. Man wäre gezwungen, sämtliche Eingaben im Maschinencode (eine Folge von hexadezimalen Zahlen) einzugeben, der nicht nur für die meisten Leute unverständlich, sondern zusätzlich auch bei jedem Prozessortyp unterschiedlich ist. 23 Man erstellt deshalb zuerst einen Compiler, der aus einer höheren Programmiersprache wie Pascal in die Maschinensprache übersetzen kann. Dank diesem können Programme in einer verständlicheren und kürzeren Form entwickelt werden. Der Bau solcher Compiler ist jedoch sehr anspruchsvoll und somit "eines der best fundierten [Gebiete] in der Informatik" 24. Dadurch wurden Compiler zu verlässlichen, wesentlichen und dennoch oft unbemerkten Bestandteilen der Computerwissenschaft. 5 Übersetzungsvorgang Der gesamte Ablauf des Übersetzungsprogramms besteht aus unterschiedlichen Teilschritten, die hier der Reihe nach erläutert werden sollen: 5.1 Analyse 25 In diesem ersten Schritt geht es darum, die Eingabe in ihre Bestandteile zu zerlegen und diese so umzuwandeln, dass die Maschine 'versteht', worum es sich handelt (z.b. die Umwandlung von Zahlzeichen in Informationen, die der Computer als 'Zahlen' wahrnimmt). Um die syntaktische Richtigkeit zu überprüfen sucht ein so ge- 22 [5] Kurematsu und Morimoto [9] Brunnschweiler, Seite 2f [6] Schnorf, Seite 1 25 [8] Wirth, Seite 11 13

15 nannter Parser die Struktur, mit welcher die einzelnen Teile zusammenhängen. 26 Dies geschieht durch die Bildung eines so genannten 'Syntaxbaums' (Parsetree): Hierbei wird der eingegebene Satz gemäss den Regeln der EBNF-Sprachdefinition in eine Form gebracht, die an einen umgekehrten Baum erinnert. Für diese Umwandlung stehen zwei unterschiedliche Verfahren zur Verfügung, genannt Top-Down und Bottom-Up. Dieses beiden Varianten erstellen den Baum in genau umgekehrter Reihenfolge: Bottom-Up nt mit den einzelnen Symbolen des eingelesenen Textes und fasst diese immer wieder zu grösseren Gruppen zusammen, bis am Ende alles auf einen einzigen Baum reduziert wurde. Man ersetzt also immer wieder Gruppen von Symbolen, die der rechten Seite einer Produktion entsprechen, durch das zugehörige linke Nonterminal. In der graphischen Darstellung wächst so der Baum von unten nach oben, woher auch die Bezeichnung 'bottom-up' herrührt. Der Nachteil ist, dass sich solche Parser "kaum mehr von Hand erstellen [lassen]" 27 Das hier verwendete 'Top-Down'-Verfahren geht vom Startsymbol aus und nt gemäss den EBNF-Produktionen, Nonterminals der linken Seite durch den passenden Ausdruck der rechten Regelseite zu ersetzen. Betrachtet man den graphischen Aufbau, wird auch hier die Namengebung offensichtlich: Abbildung 2: Verfahren zur Erstellung des Syntaxbaums [6] Schnorf, Seite 2 27 [6] Schnorf, Seite [8] Wirth, Seite 10f 14

16 Die Eigenschaft des top-down Parsers, ausgehend von nichtterminalen Symbolen zu den terminalen zu gelangen, stellt einige Anforderungen an die Grammatik der verwendeten Sprache, welche in Kapitel 5.3 genauer erläutert werden. Sofern ein solcher Syntaxbaum erstellt werden kann (die Vorgehensweise spielt dabei keine Rolle), ist gleichzeitig auch gewährleistet, dass die Regeln der Syntax beachtet wurden. Je nach Übersetzungssituation schliesst an diesem Punkt noch eine semantische Analyse an, welche jene Spracheinschränkungen überprüft, die "nicht in die Syntaxdefinition fallen, aber dennoch zur Übersetzungszeit festzulegen sind " Synthese 30 Im zweiten Teil des Übersetzungsvorgangs geht es darum, aus dem Baum den Satz in der Zielsprache zu generieren. Das kann unter Umständen bedeuten, dass man zuerst den Baum umformen oder ihn zuerst in einen Zwischencode verwandeln muss, weil sich die Strukturen der beiden Sprache unterscheiden. Dies ist sowohl bei formalen, als auch bei natürlichen Sprachen der Fall, man denke nur einmal an die unterschiedliche Platzierung von Subjekt und konjugiertem Verb im deutschen, französischen oder englischen Nebensatz. Zuletzt wird aus dem Zwischencode der Satz in der Zielsprache hergeleitet und als Endresultat ausgegeben. Je nach Notwendigkeit können dazwischen zusätzliche Optimierungsphasen eingebaut werden (Siehe Kapitel und 7.4.5). 5.3 Anforderungen an die Grammatik 31 "Anstatt einen möglichst allgemeinen Erkennungs-Algorithmus, genannt Parser, zu finden, gehen wir in umgekehrter Richtung vor: Wir postulieren einen einfachen Algorithmus und bestimmen danach die Klasse der Sprachen, die er verarbeiten kann. Eine erste Folge dieser grundlegenden Forderung ist, dass jeder Schritt in der Zerlegung eines Satzes lediglich durch den gegenwärtigen Zustand der Analyse und ein 29 [6] Schnorf, Seite 2 30 [6] Schnorf, Seite 2 31 [8] Wirth, Seite 10ff 15

17 einziges, nächstes zu lesendes Symbol bestimmt werden darf [One symbol lookahead]. Ferner wird gefordert, dass kein Schritt später rückgängig gemacht werden darf [no backtracking]." 32 Diese Arbeit baut auf dem von Wirth vorgeschlagenen Algorithmus auf und deshalb gelten für sie die gleichen Einschränkungen, was die Auswahl der möglichen Sprach- Grammatiken betrifft. In den folgenden Unterkapiteln werden die daraus folgenden Regeln genauer betrachtet Regel 1 Die erste Folgerung bedeutet konkret, dass es keine Alternativen a ß geben darf, die beide mit dem selben Symbol nen können, weil sonst erst beim zweiten Symbol über die Wahl der Produktion entschieden werden kann. Dies zeigt das folgende Beispiel: S = A B. A = 'x' 'y'. B = {'x'} 'z'. Beispiel 4: Missachtung von Regel 1 Das erste Symbol von A heisst in jedem Fall x, dasjenige von B x oder z. Beginnt nun der Satz mit x, so kann nicht entschieden werden, ob S durch A oder B ersetzt werden soll. Die Entscheidung für die Wahl von A oder B kann nur mit Blick auf das übernächste Symbol getroffen werden. Um der Forderung 'One symbol lookahead' nachzukommen, müssen sich die Anfangssymbole von Alternativen auf jeden Fall voneinander unterscheiden Regel 2 Die zweite Regel, die diesen Forderungen entspringt, lautet wie folgt: "Für jedes nicht-terminale Symbol A, aus welchem die leere Folge hergeleitet werden kann, muss die Menge seiner Initialsymbole disjunkt von der Menge seiner Folgesymbole sein." 33 Dies bedeutet, dass ein Nonterminal, das durch? ('nichts') ersetzt werden kann (was bei [n] oder {n} der Fall ist), nie von einem seiner möglichen 32 [8] Wirth, Seite [8] Wirth, Seite 13 16

18 Anfangssymbole gefolgt sein darf. Etwas weniger abstrakt wird diese Regel mit einem Beispiel: S = A 'x'. A = ['x']. Beispiel 5: Missachtung von Regel 2 34 Hier sind Anfangssymbol und Folgesymbol beide x und aus A kann die leere Folge hergeleitet werden. Der Satz 'x' würde gemäss Produktion zur Ersetzung von S durch Ax führen. Bei der Substitution von A würde das nächste Symbol betrachtet, x, und dementsprechend für die Option gestimmt. Allerdings folgt ja nach A noch einmal ein x und der Satz kann nicht mehr hergeleitet werden. Dies wird zu einer unberechtigten Fehlermeldung führen. Eine Verletzung von Regel 2 kann also zu falschen Entscheidungen bei Option und Repetition führen Hinweis: Syntax dient der Semantik Es ist wichtig, an dieser Stelle zu erwähnen, dass die Syntax die Bedeutung des Satzes stets unterstützen soll. Viele Schwierigkeiten mit den beiden vorangehenden Regeln können durch eine Umformulierung der Syntax beseitigt werden. Allerdings kann sich dadurch die Bedeutung des Satzes ändern, wie im folgenden Beispiel: S = A ( S '-' A ). A = 'a' 'b' 'c'. Beispiel 6: Verletzung von Regel 1 35 In der Produktion S wird Regel 1 verletzt, da die möglichen ersten Symbole von A gleich sind wie jene von S A (nämlich 'a', 'b' oder 'c'). Dieses Problem kann durch Umformung umgangen werden: S = AB. B = ['-'S]. A = 'a' 'b' 'c'. Beispiel 7: Umformulierte Syntax aus Beispiel 6, die keine Regeln mehr verletzt 36 Bezüglich ihrer Syntax sind die beiden Notationen völlig identisch, jedoch ergeben 34 [8] Wirth, Seite [8] Wirth, Seite 13f 36 [8] Wirth, Seite 14 17

19 sich Unterschiede, wenn man die Semantik betrachtet. Bei der Herleitung von 'a - b - c' ergeben sich folgende Strukturen (durch Klammerung hervorgehoben): aus Beispiel 6: S => (S-A) => ((S-A)-A) => ((S-A)-A) => ((A-A)-A) => ((a-b)-c) aus Beispiel 7: S => (A B) => (A -S) => (A -(A B)) => (A -(A -S)) => (A -(A AB)) =>(A -(A A )) => (a-(b-c)) Beispiel 8: Herleitung des Satzes a-b-c Diese Strukturen sind im Syntaxbaum durch die verschiedenen Ebenen gespeichert. Durch das Top-Down-Verfahren ist der zuerst erstellte auch gleichzeitig der Hauptknoten. Dies ist in der ersten Herleitung das zweite Minuszeichen und subtrahiert deshalb vom nachher erstellte Teilbaum a-b den Minuenden c. In der anderen Herleitung ist es genau umgekehrt, da das erste Minuszeichen vor dem zweiten erstellt wird. Gemäss den üblichen Regeln der Subtraktion sind diese beiden Resultate aber nicht identisch. Deshalb muss bei der Umformung einer Syntax "stets beachtet werden, dass damit die Bedeutungsstruktur der Sprache nicht in Mitleidenschaft gezogen wird." 37 6 UPN-Compiler 6.1 Anforderungen Das Ziel dieser einfachen Konsolenanwendung war die Entwicklung eines Compilers, der in der Lage ist, algebraische Ausdrücke aus der Infix- in die Postfix-Notation zu übersetzen. Die benötigten Methoden sollten so einfach und kurz sein wie möglich, damit sie die technische Umsetzung der vorher erarbeiteten Theorie möglichst einleuchtend erklären. 6.2 Konzept Bei einer einfachen Struktur wie der hier verwendeten ist es nicht nötig, die Eingabe zuerst in einen Baum umzuwandeln. Es genügt, sie bereits bei der Erkennung in die richtige Reihenfolge zu bringen und gleich wieder auszugeben. Auch Optimierungsphasen sind keine nötig. Der Computer wird also alle aufgenommenen Daten im 37 [8] Wirth, Seite 13 18

20 gleichen Durchlauf wieder aufschreiben und aus dem Speicher löschen. 6.3 Benutzte Sprachen Im folgenden Abschnitt sollen die beiden verwendeten Sprachen erklärt und mit Hilfe der EBNF-Notation definiert werden. Sie sind beide auf die vier Grundoperationen Addition, Subtraktion, Multiplikation und Division beschränkt, bieten allerdings bei der Eingabe der Zahlen einige Freiheiten (wie Fliesspunktzahlen oder negative Werte) Mikroalgebra Infix Diese Sprache umfasst einen Teil der heute üblichen Mathematiksprache, wie sie in der Schule gelehrt wird. Der Beiname Infix weist darauf hin, dass die Operationszeichen jeweils zwischen den Operanden stehen. Die EBNF dieser Sprache lautet: (1)Terminalsymbole: 0,1,2,3,4,5,6,7,8,9,+,-,*,/,(,),.,E (2) (3)Nicht-terminale Symbole:Expression, Term, Factor, Number, Digit (4) (5)Produktionen: Expression = ['-'] Term {('+' '-') Term}. (6) Term = Factor {('*' '/') Factor}. (7) Factor = Number '(' Expression ')'. (8) Number = PosDecNumber ['E'['-']NatNumber]. (9) PosDecNumber = NatNumber ['.' NatNumber]. (10) NatNumber = {Digit}Digit. (11) Digit = '0' '1' '2' '3' '4' '5' '6' '7' '8' '9'. (12) (13)Startsymbol Expression (14) (15)Die Semantik ist die übliche Semantik der Algebra. Listing 1: EBNF der Sprache Mikroalgebra Infix 38 Aus der EBNF ist auch ersichtlich, dass negative Zahlen mit unärem Minus immer eingeklammert werden müssen Mikroalgebra UPN (Postfix) Die Postfix-Notation ist eine andere Schreibweise für die gleichen Informationen. Der Unterschied besteht darin, dass hier die Zahlen in einen so genannten Stack ge- 38 Anhang A 19

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

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

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

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

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

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

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder Programmieren in PASCAL Bäume 1 1. Baumstrukturen Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder 1. die leere Struktur oder 2. ein Knoten vom Typ Element

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

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

1. Formale Sprachen 1.2 Grammatiken formaler Sprachen

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

Mehr

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

Programmierkurs: Delphi: Einstieg

Programmierkurs: Delphi: Einstieg Seite 1 von 6 Programmierkurs: Delphi: Einstieg Aus Wikibooks Inhaltsverzeichnis 1 Einstieg Einstieg Was ist Delphi Borland Delphi ist eine RAD-Programmierumgebung von Borland. Sie basiert auf der Programmiersprache

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

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 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

syntax.tex Eine Übersicht

syntax.tex Eine Übersicht syntax.tex Eine Übersicht Bernd Worsch 7. Juli 1997 Inhaltsverzeichnis 1 Einleitung 1 2 Bevor es funktioniert... 1 3 Grundelemente von syntax.tex 1 4 Strukturelemente von syntax.tex 3 5 Setzen von Syntaxdiagrammen

Mehr

Vorlesung Theoretische Informatik

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

Mehr

ARBEITSBLATT ZU FORMALEN SPRACHEN

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

Mehr

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

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

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.

Mehr

Übung zur Vorlesung Einführung in die Computerlinguistik und Sprachtechnologie

Übung zur Vorlesung Einführung in die Computerlinguistik und Sprachtechnologie Übung zur Vorlesung Einführung in die Computerlinguistik und Sprachtechnologie Wintersemester 2009/10, Prof. Dr. Udo Hahn, Erik Fäßler Übungsblatt 3 vom 19.11.2009 Abgabe bis 26.11.2009, 14:30 Uhr; per

Mehr

Sprachbeschreibung und Erweiterung

Sprachbeschreibung und Erweiterung Sprachbeschreibung und Erweiterung Worte, Sprachen, reguläre Ausdrücke, Automaten, BNF, Grammatik, Syntax- Diagramme, Spracherweiterungen do, for, break, switch Formale Beschreibung von Programmiersprachen

Mehr

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

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

Mehr

Information in einem Computer ist ein

Information in einem Computer ist ein 4 Arithmetik Die in den vorhergehenden Kapiteln vorgestellten Schaltungen haben ausschließlich einfache, Boole sche Signale verarbeitet. In diesem Kapitel wird nun erklärt, wie Prozessoren mit Zahlen umgehen.

Mehr

2 Einfache Rechnungen

2 Einfache Rechnungen 2 Einfache Rechnungen 2.1 Zahlen Computer, auch bekannt als Rechner, sind sinnvoller eingesetzt, wenn sie nicht nur feste Texte ausgeben, sondern eben auch rechnen. Um das Rechnen mit Zahlen zu verstehen,

Mehr

368 4 Algorithmen und Datenstrukturen

368 4 Algorithmen und Datenstrukturen Kap04.fm Seite 368 Dienstag, 7. September 2010 1:51 13 368 4 Algorithmen und Datenstrukturen Java-Klassen Die ist die Klasse Object, ein Pfeil von Klasse A nach Klasse B bedeutet Bextends A, d.h. B ist

Mehr

1. LPC - Lehmanns Programmier Contest - Lehmanns Logo

1. LPC - Lehmanns Programmier Contest - Lehmanns Logo Aufgabe ist die Entwicklung einer vereinfachten Variante der beliebten Programmiersprache Logo. Die Aufgabe ist in drei Stufen zu erledigen, von der wir zunächst nur die erste Stufe bekannt geben. Die

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

Ausarbeitung des Interpreter Referats

Ausarbeitung des Interpreter Referats Ausarbeitung des Interpreter Referats Gliederung 1. Programmiersprache 1.2. Syntax 1.2.1. Konkrete Syntax 1.2.2. Abstrakter Syntax Baum (Abstrakte Syntax) 2. Parser 2.1. Syntaktische Struktur einer Sprache

Mehr

Binäre Bäume Darstellung und Traversierung

Binäre Bäume Darstellung und Traversierung Binäre Bäume Darstellung und Traversierung Name Frank Bollwig Matrikel-Nr. 2770085 E-Mail fb641378@inf.tu-dresden.de Datum 15. November 2001 0. Vorbemerkungen... 3 1. Terminologie binärer Bäume... 4 2.

Mehr

Compiler, Übersetzer. Allgemeine Erklärung / Definition

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

Mehr

Grundbegriffe der Informatik

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

Mehr

2.11 Kontextfreie Grammatiken und Parsebäume

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

Mehr

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

VBA-Programmierung: Zusammenfassung

VBA-Programmierung: Zusammenfassung VBA-Programmierung: Zusammenfassung Programmiersprachen (Definition, Einordnung VBA) Softwareentwicklung-Phasen: 1. Spezifikation 2. Entwurf 3. Implementierung Datentypen (einfach, zusammengesetzt) Programmablaufsteuerung

Mehr

Klausur in 12.1 Themen: Zahlsysteme, Grundlagen von Delphi (Bearbeitungszeit: 90 Minuten)

Klausur in 12.1 Themen: Zahlsysteme, Grundlagen von Delphi (Bearbeitungszeit: 90 Minuten) Name: «Vorname» «Name» Klausur in 12.1 Themen: Zahlsysteme, Grundlagen von Delphi (Bearbeitungszeit: 90 Minuten) Informatik 12 2 VP je 2 VP 6 VP 0 Notieren Sie alle Antworten in einer Word-Datei Klausur1_«Name».doc

Mehr

Installation. Arbeiten mit der MATLAB-Entwicklungsumgebung. MATLAB als Taschenrechner mit Matrix- und Vektorrechnung.

Installation. Arbeiten mit der MATLAB-Entwicklungsumgebung. MATLAB als Taschenrechner mit Matrix- und Vektorrechnung. Installation. Arbeiten mit der MATLAB-Entwicklungsumgebung. MATLAB als Taschenrechner mit Matrix- und Vektorrechnung. Die heutige Sitzung dient dem ersten Kennenlernen von MATLAB. Wir wollen MATLAB zuerst

Mehr

Entwurf von Algorithmen - Kontrollstrukturen

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

Mehr

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

Kontrollstrukturen, Pseudocode und Modulo-Rechnung

Kontrollstrukturen, Pseudocode und Modulo-Rechnung Kontrollstrukturen, Pseudocode und Modulo-Rechnung CoMa-Übung III TU Berlin 29.10.2012 CoMa-Übung III (TU Berlin) Kontrollstrukturen, Pseudocode und Modulo-Rechnung 29.10.2012 1 / 1 Themen der Übung 1

Mehr

ax 2 + bx + c = 0, (4.1)

ax 2 + bx + c = 0, (4.1) Kapitel 4 Komplexe Zahlen Wenn wir uns auf die reellen Zahlen beschränken, ist die Operation des Wurzelziehens (also die Umkehrung der Potenzierung) nicht immer möglich. Zum Beispiel können wir nicht die

Mehr

Theoretische Informatik I

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

Mehr

Mathematische Grundlagen 2. Termrechnen

Mathematische Grundlagen 2. Termrechnen Inhaltsverzeichnis: 2. Termrechnen... 2 2.1. Bedeutung von Termen... 2 2.2. Terme mit Variablen... 4 2.3. Vereinfachen von Termen... 5 2.3.1. Zusammenfassen von gleichartigen Termen... 5 2.3.2. Vereinfachen

Mehr

Visual Basic Basisbefehle Hinweis: Der Text in eckigen Klammern [ ] ist variabel, z.b. [var] => 5.3. Eckige Klammern sind stets wegzulassen!

Visual Basic Basisbefehle Hinweis: Der Text in eckigen Klammern [ ] ist variabel, z.b. [var] => 5.3. Eckige Klammern sind stets wegzulassen! Visual Basic Basisbefehle Hinweis: Der Text in eckigen Klammern [ ] ist variabel, z.b. [var] => 5.3. Eckige Klammern sind stets wegzulassen! Grundstrukturen: Sub [name]([übergabe]) End Sub [Übergabe] ist

Mehr

Druckanpassung von Mahnungen

Druckanpassung von Mahnungen Druckanpassung von Mahnungen Nur wenn Sie die faktura in der Einzelversion nutzen, steht Ihnen für die Druckanpassung der Mahnungen auch der Formularassistent zur Verfügung. Dort können Sie die gewünschten

Mehr

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12 Grundlagen: Folge 19 - Bäume 19.1 Binärbäume - Allgemeines Unter Bäumen versteht man in der Informatik Datenstrukturen, bei denen jedes Element mindestens zwei Nachfolger hat. Bereits in der Folge 17 haben

Mehr

Sprachen/Grammatiken eine Wiederholung

Sprachen/Grammatiken eine Wiederholung Sprachen/Grammatiken eine Wiederholung Was sind reguläre Sprachen? Eigenschaften regulärer Sprachen Sprachen Begriffe Symbol: unzerlegbare Grundzeichen Alphabet: endliche Menge von Symbolen Zeichenreihe:

Mehr

Java Einführung Operatoren Kapitel 2 und 3

Java Einführung Operatoren Kapitel 2 und 3 Java Einführung Operatoren Kapitel 2 und 3 Inhalt dieser Einheit Operatoren (unär, binär, ternär) Rangfolge der Operatoren Zuweisungsoperatoren Vergleichsoperatoren Logische Operatoren 2 Operatoren Abhängig

Mehr

Mathematische Grundlagen der Kryptographie. 1. Ganze Zahlen 2. Kongruenzen und Restklassenringe. Stefan Brandstädter Jennifer Karstens

Mathematische Grundlagen der Kryptographie. 1. Ganze Zahlen 2. Kongruenzen und Restklassenringe. Stefan Brandstädter Jennifer Karstens Mathematische Grundlagen der Kryptographie 1. Ganze Zahlen 2. Kongruenzen und Restklassenringe Stefan Brandstädter Jennifer Karstens 18. Januar 2005 Inhaltsverzeichnis 1 Ganze Zahlen 1 1.1 Grundlagen............................

Mehr

Parser4Kids interaktive Lernumgebung

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

Mehr

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

Zahlensysteme: Oktal- und Hexadezimalsystem

Zahlensysteme: Oktal- und Hexadezimalsystem 20 Brückenkurs Die gebräuchlichste Bitfolge umfasst 8 Bits, sie deckt also 2 8 =256 Möglichkeiten ab, und wird ein Byte genannt. Zwei Bytes, also 16 Bits, bilden ein Wort, und 4 Bytes, also 32 Bits, formen

Mehr

Lehrstuhl Informatik VI Grundzüge der Informatik * WS 2008/2009 Prof. Dr. Joachim Biskup

Lehrstuhl Informatik VI Grundzüge der Informatik * WS 2008/2009 Prof. Dr. Joachim Biskup Universität Dortmund Lehrstuhl Informatik VI Grundzüge der Informatik * WS 28/29 Prof. Dr. Joachim Biskup Leitung der Übungen: Arno Pasternak Lösungs-Ideen Übungsblatt 6 A: Grammatiken, Syntaxdiagramme

Mehr

Codierungstheorie Rudolf Scharlau, SoSe 2006 9

Codierungstheorie Rudolf Scharlau, SoSe 2006 9 Codierungstheorie Rudolf Scharlau, SoSe 2006 9 2 Optimale Codes Optimalität bezieht sich auf eine gegebene Quelle, d.h. eine Wahrscheinlichkeitsverteilung auf den Symbolen s 1,..., s q des Quellalphabets

Mehr

Kurs 1613 Einführung in die imperative Programmierung

Kurs 1613 Einführung in die imperative Programmierung Aufgabe 1 Gegeben sei die Prozedur BubbleSort: procedure BubbleSort(var iofeld:tfeld); { var hilf:integer; i:tindex; j:tindex; vertauscht:boolean; i:=1; repeat vertauscht := false; for j := 1 to N - i

Mehr

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

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

Mehr

Python ist leicht zu erlernen, unterstützt mehrere Programmierparadigmen und ist klar strukturiert.

Python ist leicht zu erlernen, unterstützt mehrere Programmierparadigmen und ist klar strukturiert. 1 Einführung In diesem Kapitel wird die moderne Programmiersprache Python vorgestellt. Nach einigen Bemerkungen zur Installation dieser Sprache wird gezeigt, wie Python interaktiv ausgeführt werden kann.

Mehr

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java: Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen

Mehr

PIWIN 1 Übung Blatt 5

PIWIN 1 Übung Blatt 5 Fakultät für Informatik Wintersemester 2008 André Gronemeier, LS 2, OH 14 Raum 307, andre.gronemeier@cs.uni-dortmund.de PIWIN 1 Übung Blatt 5 Ausgabedatum: 19.12.2008 Übungen: 12.1.2009-22.1.2009 Abgabe:

Mehr

Einführung in die Theoretische Informatik

Einführung in die Theoretische Informatik Einführung in die Theoretische Informatik Woche 10 Harald Zankl Institut für Informatik @ UIBK Wintersemester 2014/2015 Zusammenfassung Zusammenfassung der letzten LV Satz Sei G = (V, Σ, R, S) eine kontextfreie

Mehr

Grundlagen und Basisalgorithmus

Grundlagen und Basisalgorithmus Grundlagen und Basisalgorithmus Proseminar -Genetische Programmierung- Dezember 2001 David König Quelle: Kinnebrock W.: Optimierung mit genetischen und selektiven Algorithmen. München, Wien: Oldenbourg

Mehr

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

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

Mehr

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

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

Mehr

25 kann ohne Rest durch 5 geteilt werden! ist wahr

25 kann ohne Rest durch 5 geteilt werden! ist wahr Lehrbrief 2: Lektion 8 - C -Praxis 4-1 - 5.2 Einfache Entscheidungen mit if und die Vergleichsoperatoren Nun tauchen wir immer tiefer in die Geheimnisse von C ein und beschäftigen uns mit einem sehr wichtigen

Mehr

Definition von domänenspezifischen Sprachen mit Xtext: Einführung. 19. November 2014

Definition von domänenspezifischen Sprachen mit Xtext: Einführung. 19. November 2014 Definition von domänenspezifischen Sprachen mit Xtext: Einführung 19. November 2014 Überblick Was ist zu tun, wenn wir selbst einen Ansatz für modellgetriebenen Entwicklung definieren wollen? Anforderungserfassung

Mehr

Äquivalente Grammatiken / attributierte Grammatik

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

Mehr

4. Relationen. Beschreibung einer binären Relation

4. Relationen. Beschreibung einer binären Relation 4. Relationen Relationen spielen bei Datenbanken eine wichtige Rolle. Die meisten Datenbanksysteme sind relational. 4.1 Binäre Relationen Eine binäre Relation (Beziehung) R zwischen zwei Mengen A und B

Mehr

Programmierung und Modellierung

Programmierung und Modellierung Programmierung und Modellierung Terme, Suchbäume und Pattern Matching Martin Wirsing in Zusammenarbeit mit Moritz Hammer SS 2009 2 Inhalt Kap. 7 Benutzerdefinierte Datentypen 7. Binärer Suchbaum 8. Anwendung:

Mehr

Programmierkurs Java

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

Mehr

Kapitel 1: Einführung

Kapitel 1: Einführung 10 Kapitel 1: Einführung 1.1 Was ist eine Programmiersprache? 1.2 Details zu C++ 1.3 Phasen der Programmierung 1.4 Ein erstes Programm: Hello World! 1.5 Addition zweier Zahlen 1.6 Entscheidungen 1.1 Was

Mehr

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

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

Mehr

AplusixEditor : Editor für Aplusix 3 Benutzerhandbuch

AplusixEditor : Editor für Aplusix 3 Benutzerhandbuch 1. Einleitung AplusixEditor : Editor für Aplusix 3 Benutzerhandbuch Mai 2011 Deutsche Übersetzung von Marion Göbel verfaßt mit epsilonwriter Der Übungs-Editor ermöglicht das Erstellen und Bearbeiten der

Mehr

Excel Funktionen durch eigene Funktionen erweitern.

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

Mehr

Grammatiken in Prolog

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

Mehr

Theoretische Informatik I

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

Mehr

13 OOP MIT DELPHI. Records und Klassen Ein Vergleich

13 OOP MIT DELPHI. Records und Klassen Ein Vergleich 13 OOP MIT DELPHI Delphi war früher "Object Pascal". Dieser Name impliziert eine Funktionalität, welche in der Welt der Programmierung nicht mehr wegzudenken ist: die objektorientierte Programmierung,

Mehr

Alternative Schutzmechanismen für Excel

Alternative Schutzmechanismen für Excel Alternative Schutzmechanismen für Excel Bernd Held, Vaihingen an der Enz Neben dem in Excel standardmäßig angebotene Tabellenschutz können Sie weitere Schutzmechanismen in Excel einsetzen. Dazu bedarf

Mehr

Reihungen. Martin Wirsing. in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03

Reihungen. Martin Wirsing. in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03 Reihungen Martin Wirsing in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03 2 Ziele Die Datenstruktur der Reihungen verstehen: mathematisch und im Speicher Grundlegende Algorithmen auf Reihungen

Mehr

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

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

Mehr

Informatik A ( Frank Hoffmann)

Informatik A ( Frank Hoffmann) Teillösungen zum 1. Aufgabenblatt zur Vorlesung Informatik A ( Frank Hoffmann) 1. Improvisieren Stellen Sie die Zahl 6 dar durch einen Ausdruck, der genau dreimal die Ziffer i enthält und ansonsten neben

Mehr

Theoretische Grundlagen der Informatik

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

Mehr

1 ÜBERSETZER. Compilerbau 1

1 ÜBERSETZER. Compilerbau 1 1 ÜBERSETZER 1 A.V.Aho, J.D.Ullmann: Principles of Compiler Design, Addison Wesley (1977) J.Amsterdam: Building a computer in Software, BYTE (Okt. 1985) Programming Project: A SIMPL Compiler, BYTE (Dez.

Mehr

I. Aussagenlogik. Aussagenlogik untersucht Verknüpfungen wie "und", "oder", "nicht", "wenn... dann" zwischen atomaren und komplexen Sätzen.

I. Aussagenlogik. Aussagenlogik untersucht Verknüpfungen wie und, oder, nicht, wenn... dann zwischen atomaren und komplexen Sätzen. I. Aussagenlogik 2.1 Syntax Aussagenlogik untersucht Verknüpfungen wie "und", "oder", "nicht", "wenn... dann" zwischen atomaren und komplexen Sätzen. Sätze selbst sind entweder wahr oder falsch. Ansonsten

Mehr

Informatik I WS 07/08 Tutorium 24

Informatik I WS 07/08 Tutorium 24 Info I Tutorium 24 Informatik I WS 07/08 Tutorium 24 15.11.07 Bastian Molkenthin E-Mail: infotut@sunshine2k.de Web: http://infotut.sunshine2k.de Review / Organisatorisches o Probleme bei Foliendownload?

Mehr

Werkstatt Euler und die Lösung der quadratischen Gleichung

Werkstatt Euler und die Lösung der quadratischen Gleichung Werkstatt Leonhard Euler und die Lösung der quadratischen Gleichungen Im Jahr 1767 hat der Mathematiker Leonhard Euler (1707 1783) das Buch Vollständige Anleitung zu Algebra im russischen Original veröffentlicht,

Mehr

Programmieren was ist das genau?

Programmieren was ist das genau? Programmieren was ist das genau? Programmieren heisst Computerprogramme herstellen (von griechisch programma für Vorschrift). Ein Computerprogramm ist Teil der Software eines Computers. Als Software bezeichnet

Mehr

Übungen zu Modellierung verteilter Systeme

Übungen zu Modellierung verteilter Systeme Technische Universität München SoSe 2014 Institut für Informatik Lösungsblatt 1 PD Dr.habil. B. Schätz Ausgabe: 17. April 2014 M. Gleirscher, D. Marmsoler Besprechung: 24. April 2014 Übungen zu Modellierung

Mehr

Kapitel 3 Mathematik. Kapitel 3.3. Algebra Gleichungen

Kapitel 3 Mathematik. Kapitel 3.3. Algebra Gleichungen TG TECHNOLOGISCHE GRUNDLAGEN Kapitel 3 Mathematik Kapitel 3.3 Algebra Gleichungen Verfasser: Hans-Rudolf Niederberger Elektroingenieur FH/HTL Vordergut 1, 877 Nidfurn 055-654 1 87 Ausgabe: Februar 009

Mehr

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

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

Mehr

Parsing-EinfŸhrung Ð 1

Parsing-EinfŸhrung Ð 1 Parsing-EinfŸhrung bersicht Falsifizierbarkeit, oder: Sind Grammatiken wissenschaftlich? Grammatik, Formalismus Kontextfreie Grammatiken Ableitungen Ziel Verstehen der linguistischen Motivation Intuitives

Mehr

6 Conways Chequerboard-Armee

6 Conways Chequerboard-Armee 6 Conways Chequerboard-Armee Spiele gehören zu den interessantesten Schöpfungen des menschlichen Geistes und die Analyse ihrer Struktur ist voller Abenteuer und Überraschungen. James R. Newman Es ist sehr

Mehr

Kapiteltests zum Leitprogramm Binäre Suchbäume

Kapiteltests zum Leitprogramm Binäre Suchbäume Kapiteltests zum Leitprogramm Binäre Suchbäume Björn Steffen Timur Erdag überarbeitet von Christina Class Binäre Suchbäume Kapiteltests für das ETH-Leitprogramm Adressaten und Institutionen Das Leitprogramm

Mehr

Datumsangaben, enthält mindestens Jahr, Monat, Tag

Datumsangaben, enthält mindestens Jahr, Monat, Tag Datenbanken mit SQL Informatik - Sprenger Häufig wird mit Tabellenkalkulationen gearbeitet, obwohl der Einsatz von Datenbanken sinnvoller ist. Tabellenkalkulationen wie Microsoft Excel oder LibreOffice

Mehr

FERNHEIZWERKE Software zur Sammlung der Betriebsdaten

FERNHEIZWERKE Software zur Sammlung der Betriebsdaten FERNHEIZWERKE Software zur Sammlung der Betriebsdaten Über dieses Programm können die Betriebsdaten einer Anlage eingegeben werden und dann automatisch via E-Mail ans Amt für Energieeinsparung an die Email

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

4. 4. Algorithmen und Datenstrukturen in deskriptiven Programmiersprachen

4. 4. Algorithmen und Datenstrukturen in deskriptiven Programmiersprachen Kapitel Kapitel 4 Deskriptive Programmierung SS 2008 4. 4. Algorithmen und Datenstrukturen in in deskriptiven Programmiersprachen Deskriptive Programmierung 1 Sprachverarbeitung in in Prolog Prolog Prolog

Mehr

Informatik I WS 07/08 Tutorium 24

Informatik I WS 07/08 Tutorium 24 Info I Tutorium 24 Informatik I WS 07/08 Tutorium 24 20.12.07 Bastian Molkenthin E-Mail: infotut@sunshine2k.de Web: http://infotut.sunshine2k.de Rückblick Semi-Thue-Systeme Ein Semi-Thue-System besteht

Mehr

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Inhalt dieser Einheit Variablen (Sinn und Aufgabe) Bezeichner Datentypen, Deklaration und Operationen Typenumwandlung (implizit/explizit) 2 Variablen

Mehr