9. Syntaxdiagramme und Backus-Naur-Form (BNF)

Slides:



Advertisements
Ähnliche Präsentationen
Vorlesung Compilertechnik Sommersemester 2008
Advertisements

Rekursion vs. Iteration
Struktur-Funktions-Modelle von Pflanzen - Sommersemester Winfried Kurth Universität Göttingen, Lehrstuhl Computergrafik und Ökologische Informatik.
Hochschule Fulda – FB ET Sommersemester 2010
Einführung in JavaScript II
Wiederholung Was ist Informatik?
8. Formale Sprachen und Grammatiken
10. Grundlagen imperativer Programmiersprachen
12. Iteration und Rekursion
3. Berechenbarkeit Wann ist eine Funktion (über den natürlichen Zahlen) berechenbar? Intuitiv: Wenn es einen Algorithmus gibt, der sie berechnet! Was heißt,
Imperative Programmierung
Objektorientierter Entwurf
Terminierung und Deadlocks Enkhbat Daginaa Betreuerin Prof. Heike Wehrheim Totale Korrektheit.
FH-Hof Extensible Markup Language Richard Göbel. FH-Hof Extensible Markup Language XML XML ist universeller Ansatz für die Strukturierung von Zeichenketten.
Java: Objektorientierte Programmierung
FH-Hof Grammatiken Richard Göbel. FH-Hof Begriffe Eine Grammatik definiert die Struktur (Syntax) einer Zeichenkette Eine Grammatik definiert nicht die.
Parser - Verfahren: Rekursiver Abstieg
FH-Hof Alternative Darstellungsformen für Grammatiken Richard Göbel.
Java: Grundlagen der Objektorientierung
Übung 6.1Turing-Maschine 1.Machen Sie sich mit der Funktionsweise des Busy Beaver-Programms vertraut Vollziehen sie die 11 Schritte der ersten Turing-Tabelle.
Java- Syntax.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 2 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Vorlesung Informatik 3 Einführung in die Theoretische Informatik (17 –Turingmaschinen) Prof. Dr. Th. Ottmann.
Ergänzung zur Bedeutung von SW-Engineering
Die Skriptsprache Perl (2) Wolfgang Friebel DESY Zeuthen.
DVG Ablaufsteuerung
DVG Klassen und Objekte
grundlagen der Wirtschafts- informatik
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung
Wiederholte Programmausführung
Formale Sprachen Grammatiken und die Chomsky-Hierarchie
Grundkonzepte des Programmierens (mit ActionScript)
Informatik II Grundlagen der Programmierung Programmieren in C Programmstrukturen / Kontrollstrukturen Hochschule Fulda – FB ET Sommersemester 2014.
Automaten, formale Sprachen und Berechenbarkeit II SoSe 2004 Prof. W. Brauer Teil 1: Wiederholung (Vor allem Folien von Priv.-Doz. Dr. Kindler vom WS 2001/02.
Algorithmen und Datenstrukturen Übungsmodul 1
Algorithmen und Datenstrukturen Übungsmodul 3
Einführung in PHP.
Einführung in PHP 5.
Dieser nicht Fehler finden Algorithmus enthält einfach einen gravierenden welcher zu ist.
Agenda für heute, 20. April, 2006 Wiederholte ProgrammausführungWiederholte Programmausführung Algorithmische Grundlagen Bedingungen zum Abbruch von Programmschleifen.
Agenda für heute, 14. April, 2005 Wiederholte ProgrammausführungWiederholte Programmausführung Algorithmische Grundlagen Bedingungen zum Abbruch von Programmschleifen.
3. Lineare Befehle 3.1 Die Ausgabefunktion
Noam CHOMSKY, Sheila GREIBACH
PHP: Operatoren und Kontrollstrukturen
1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche Wahrheit.
Hochschule Fulda – FB ET Sommersemester 2014
DD, DTD, DFD SWT-Übung WS 10/11. 2 DD, Syntax SWT-Übung , Gregor Buchholz Data Dictionary, Syntax - = (besteht aus) / ist äquivalent.
Frühjahrs-/Sommersemester 2013
Informatik Formale Sprachen 1.2 Grammatiken formaler Sprachen
Algorithmen und Datenstrukturen 1 SS 2002
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Schleifen
Der Hund jagt die Katze. Theoretische Informatik Satz S P O
7. Formale Sprachen und Grammatiken
Software Engineering Struktogramme
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
The Programming Language Pascal
Wann ist eine Funktion (über den natürlichen Zahlen) berechenbar?
Prüfungsbesprechung Barbara Scheuner Vorlesung: Programmieren und Problemlösen Prof. Hans Hinterberger.
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
Wiederholte Programmausführung
Kontrollstrukturen von Algorithmen
Unterschiedliche Kontrollstrukturen
Unterschiedliche Arten von Kontrollstrukturen
 Präsentation transkript:

9. Syntaxdiagramme und Backus-Naur-Form (BNF) Programmiersprachen häufig definiert durch kontextfreie Grammatiken in BNF mit gewissen Zusatzbedingungen BNF statt A -> w1 A -> w2 ... A -> wn A -> w1 | w2 | ... | wn A -> xz A -> xyz A -> x(y)z A -> xz A -> xBz B -> yB B -> y A -> x{y}z

Symbol Bedeutung Beispiel = ist äquivalent zu A = B + C + Sequenz (impliziert keine Ordnung) X = X1 + X2 + X3 [  ] Auswahl (entweder ... oder) A = [B | C] { } Wiederholung A = { B } M{ }N Wiederholung von M bis N A = 1 { B } 10 ( ) Option = 0 { }1 A = B + ( C ) * * Kommentar A = X + Y * Kommentar *

While-Berechenbarkeit Ein While-Programm besteht aus folgenden Komponenten: Variablen: x0, x1, x2, ... Konstanten: 0, 1, 2, ... Trennsymbole: ; := Operationszeichen: + - ? Schlüsselwörter: WHILE DO END Syntax von While-Programmen, induktive Definition: 1. Eine Wertzuweisung der Form xi := xj + c oder xi := xj - c (c Konstante) ist ein While-Programm 2. Falls P1 und P2 While-Programme sind, so auch P1;P2 3. Falls P While-Programm ist, so ist auch WHILE xi ≠ 0 DO P END ein While-Programm 4. Nur die durch 1-3 beschiebenen Konstrukte sind While-Programme

Beispiel Multiplikation: Eingabe: x1, x2, Ausgabe: x0 WHILE x1 ≠ 0 DO END; x1 := x1 - 1 END

Syntax von WHILE-Programmen in BNF -> <Zuweisung> | <Programm>; <Programm> | WHILE <Test> DO <Programm> END <Zuweisung> <Variable> := <Variable> + <Konstante> | <Variable> := <Variable> - <Konstante> <Variable> x0 | x1 | x2 | ... <Konstante> 0 | 1 | 2 | ... <Test> <Variable> ≠ 0 Konvention: Variablen in < >-Klammern, alle anderen Symbole Terminalsymbole

Die Kundendatei besteht aus keinem, einem oder beliebig vielen Kundeneinträgen. Der Kundeneintrag setzt sich zusammen aus der Personal-Nr., dem Namen, der Adresse und dem Umsatz (Muß-Angaben). Optional können noch das Geburtsdatum und die Funktion (im Unternehmen) angegeben sein (Kann-Angaben). Bei der Adresse wird entweder die Straße und die Haus-Nr. oder die Postfachnummer angegeben, gefolgt vom optionalen Länderkennzeichen, PLZ, Ort und den optionalen Angaben Telefon und Fax.

Seminaranmeldung Als Teilnehmer zu nachfolgenden Seminaren wird angemeldet: Titel Vorname Name vom bis Anmeldebestätigung und Rechnung erbeten an: Firma Straße / Postfach LKZ ORT PLZ Telefon Veranstaltungs-Nr. Seminarbezeichnung

Syntaxdiagramme Graphische Repräsentation kontextfreier Grammatiken. Pfeilrichtung gibt an, wie Diagramme zu durchlaufen sind. Alternative Durchläufe sind möglich. Rechtecke entsprechen Variablen, werden beim Durchlauf ersetzt durch Syntaxdiagramm gleichen Namens. Ovale geben jeweils produzierte Terminalzeichen an. Die Folge von Terminalzeichen, die bei einem vollständigen Durchlauf produziert wird, ist ein Element der erzeugten Sprache. Beispiel: X Y 1 Z erzeugte Sprache: X0, Y0, Z0, X1, Y1, Z1, X00, Y00, Z00, X01, Y01, Z01, ...

Syntaxdiagramme für Katzenbeispiel Satz: Subjekt jagt Objekt Subjekt: Hund der Adjektiv Katze die das Objekt: wie Subjekt Adjektiv: kleine bissige große

Bemerkungen Beschreibung von Programmiersprachen oft in Form von Syntaxdiagrammen Nicht in allen Fällen möglich bzw. praktisch (Kontextabhängigkeit) Oft werden auch Mischformen aus Syntaxdiagrammen und zusätzlichen Kontextbedingungen angegeben, etwa: Buchstabe Bezeichner: Buchstabe Ziffer Kontextbedingungen: unzulässig als Bezeichner sind: BEGIN, END, WHILE, ...

Ablaufsteuerung Zur Ausführung eines Algorithmus benötigt man verschiedene Arten von Kontrollstrukturen, v. a. - Sequenz - Selektion - Iteration  Sequenz, Selektion und Iteration genügen, um jeden Algorithmus auszudrücken !

Sequenz (Folge von Anweisungen) 1. Zu einem Zeitpunkt wird nur ein Schritt ausgeführt. 2. Jeder Schritt wird genau einmal ausgeführt: keiner wird wiederholt, keiner wird ausgelassen. 3. Die Reihenfolge, in der die Schritte ausgeführt werden, ist die gleiche Folge, in der sie niedergeschrieben sind (d. h. nacheinander). 4. Mit der Beendigung des letzten Schrittes endet der gesamte Algorithmus. Die Ausführung eines Algorithmus ist sehr starr, wenn nur die Sequenz als Kontrollstruktur eingesetzt wird.

Selektion (Auswahl, bedingte Anweisung) a) Einfache Form IF Bedingung THEN Anweisung(en) b) Bedingte Anweisung mit Alternative (allgemeine Form): IF Bedingung THEN Anweisung 1 ELSE Anweisung 2 Die einfache Form ist ein Spezialfall der allgemeinen Form, bei der Anweisung 2 die leere Anweisung ist („tue nichts“)

CASE Bedingung 1: Anweisung 1 c) Mehrfachauswahl ... Bedingung n: Anweisung n ELSE Anweisung n + 1 Die Bedingungen 1 bis n müssen sich gegenseitig ausschließen; d. h. es dürfen nicht zwei Bedingungen gleichzeitig erfüllt sein.

Iteration (Wiederholung, Schleife) a) Solange-bis-Schleife Wiederholte Ausführung einer Anweisung (oder einer Folge von Anweisungen), bis eine Abbruchbedingung erfüllt ist. REPEAT Anweisung(en) UNTIL Bedingung {Abbruchbedingung}

b) Solange-noch-Schleife Die Anweisungen in der Schleife werden ausgeführt, solange die Bedingung erfüllt ist: WHILE Bedingung DO Anweisung 1 ... ... {Rumpf der Schleife} Anweisung n Anweisung n + 1 {nicht mehr in der Schleife} Unterschied zur ersten Form: Die Bedingung wird vor der Ausführung des Schleifenrumpfes geprüft. Vorteilhaft, wenn damit gerechnet werden muß, daß in manchen Fällen bereits beim erstmaligen Eintritt in die Schleife die Abbruchbedingung erfüllt ist, der Schleifenrumpf also nicht ausgeführt werden soll. Die beiden Formen der Iteration sind äquivalent, sie lassen sich (unter Verwendung der bedingten Anweisung) ineinander überführen.

Symbole für Struktogramme (1) Aktion Strukturblock Verzweigung Fallunterscheidung nicht erfüllt erfüllt Bedingung Aktion 1 Aktion 2 Fallauswahl 1 2 ... n Aktion 1 Aktion 2 ... Aktion n

Symbole für Struktogramme 2 WHILE-Bedingung Solange-noch-Schleife Solange-bis-Schleife Aktion Aktion UNTIL-Bedingung

Euklidischer Algorithmus (1) Struktogramm

Darstellungsmittel für Programmablaufpläne (1) Aktion für Aktionen für Verzweigungen für Eingaben und Ausgaben N J Bedingung Eingabe X

Darstellungsmittel für Programmablaufpläne (2) Übergangsstellen zwischen mehreren Diagrammen für Anfang und Ende Ablauflinie und Zusammenführung Unterprogramm A A Anfang Ende vollständige Aufstellung: Norm DIN 66 01 (Sinnbilder für Datenfluß- und Programmablaufpläne)

Euklidischer Algorithmus (2) Programmablaufplan

Euklidischer Algorithmus (3) Programmprotokoll ausgeführte Aktion