EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 1 Gisbert Dittrich; Claudio Moraga FBI Unido

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

Imperative Programmierung
Vorlesung Compilertechnik Sommersemester 2008
Forschungszentrum caesar
Claudio Moraga; Gisbert Dittrich
Variablen und Datentypen
Zusammenfassung der Vorwoche
der Universität Oldenburg
Grammatiken, Definitionen
Friedhelm Meyer auf der Heide 1 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Grammatiken beschreiben Sprachen L µ *, indem.
Datentyp- umwandlung. Literale sind: Bezeichner mit einem festen Wert wie z.B:
Dynamischer Speicher. In einer Funktion wird z.B. mit der Deklaration int i; Speicher auf dem sogenannten Stack reserviert. Wenn die Funktion verlassen.
WS Algorithmentheorie 02 - Polynomprodukt und Fast Fourier Transformation Prof. Dr. Th. Ottmann.
M a r c – o l i v e r p a h l Informatik II – Kapitel 18 Übersetzung Zusammenfassung des Kapitel 18 Küchlin, Weber, Vorversion Einführung in die Informatik,
Prof. Dr. rer.nat. Ralph Großmann Fakultät Informatik / Mathematik Sommersemester 2012 Internet-Technologien XML-basierte Techniken Teil Metasprache der.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 9 Claudio Moraga; Gisbert Dittrich FBI Unido
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 7 Claudio Moraga, Gisbert Dittrich FBI Unido
Claudio Moraga; Gisbert Dittrich
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 5 Claudio Moraga; Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 3 Claudio Moraga, Gisbert Dittrich FBI Unido
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 4 Claudio Moraga; Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 2 Gisbert Dittrich; Claudio Moraga FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 12 Claudio Moraga, Gisbert Dittrich FBI Unido
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 11 Claudio Moraga, Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 10 Claudio Moraga; Gisbert Dittrich FBI Unido
Beispiele für Ausdrucksalgebren
Praxis-Repetitorium JAVA zusätzliche, ergänzende Lehrveranstaltung
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Programm besteht aus mehreren Bestandteilen: Schlüsselwörter Sonderzeichen Bezeichner Kommentare Texte.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Zusammenfassung Vorwoche
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Methoden sind mit einem Namen versehene Programmabschnitte besitzen Rückgabetyp, Namen, Parameterliste.
Das erste Programm (Folie 16)
20:00.
Einführung in die Programmiersprache C 1
Einführung in die Programmiersprache C 3.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Formale Sprachen Grammatiken und die Chomsky-Hierarchie
Konzept einer Programmiersprache!
Programmierung 1. Einführung Seite 1
Formale Sprachen Reguläre Sprachen Rudolf FREUND, Marian KOGLER.
Beispiele: KFG 2.Teil Beispiel 1: Sei G eine Grammatik mit den folgenden Regeln: S  Ac | Bd A  aAb | ab B  aBbb | abb Definieren Sie.
BMEVIEEA100 Grundlagen der Programmierung
Schutzvermerk nach DIN 34 beachten 20/05/14 Seite 1 Grundlagen XSoft Lösung :Logische Grundschaltung IEC-Grundlagen und logische Verknüpfungen.
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
Christian Schindelhauer Wintersemester 2006/07 6. Vorlesung
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Der Hund jagt die Katze. Theoretische Informatik Satz S P O
7. Formale Sprachen und Grammatiken
Monatsbericht Ausgleichsenergiemarkt Gas – Oktober
Vordefinierte Datentypen (1)
Kapitel 5Strukturen Information aus der realen Welt werden in einem informationsverarbeitenden System als Daten abgelegt. Diese stellen also eine (vereinfachte)
Variablen und Operatoren. C++ Teil 2: Grundstrukturen Variablen Operatoren Kontrollstrukturen Funktionen Header-Dateien Pointer und Referenzen.
 Präsentation transkript:

EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 1 Gisbert Dittrich; Claudio Moraga FBI Unido

Kapitel 1: Erste Schritte Vorl EINI-I" Gliederung Kap. 1 Vorgehensweise bei Programmkonstruktion Grundlegendes Scenario Erstes Programm... Elementare Datentypen... Einführung zu kontextfreien Grammatiken

Kapitel 1: Erste Schritte Vorl EINI-I" Übliche Vorgehensweise bei der Programmkonstruktion Programm-Wartung und Pflege Analyse des Problems Entwurf einer Lösung Test/Verifikation des Programms Problem Programm Realisierung eines Programms

Kapitel 1: Erste Schritte Vorl EINI-I" Zur Realisierung eines Programms Idee zur Lösung eines Problems Formulierung eines Programms ausführbares Programm (Maschinensprache) Übersetzung Laufzeit- System Aus- führung Bibliotheken

Kapitel 1: Erste Schritte Vorl EINI-I" Erstes C++-Programm Prog-1

Kapitel 1: Erste Schritte Vorl EINI-I" Erstes C++ - Programm - Anatomie int main() { int hoehe = 3;int grundseite = 5; double flaeche = grundseite * hoehe * 0.5; cout << "Flaeche des Dreiecks: " << flaeche << '\n'; return 0; } Vereinbarungen Rechnung Ausgabe Rückgabewert Haupt- programm

Kapitel 1: Erste Schritte Vorl EINI-I" Erstes C++ - Programm (Forts.) Lexikalische Elemente des Programms Bezeichner Schlüsselwörter/Interpunktion Literalkonstanten Operatoren (Liste: s. u.) Trenner: Leerzeichen, \t (d. h. Tabulatoren), Zeilenendezeichen \n, Seitenvorschübe, Kommentare

Kapitel 1: Erste Schritte Vorl EINI-I" Erstes C++ - Programm (Forts.) Kommentare /*---*/ mehrere Zeilen // bis Zeilenende Bezeichner Buchstabe gemäß Bauplan Bezeichner Buchstabe Bezeichner ZifferOderSo Hierbei –Buchstabe: a... z A Z, –ZifferOderSo: _ Interpretation ? Unterstrich

Kapitel 1: Erste Schritte Vorl EINI-I" Erstes Beispiel (Forts.) Randbedingungen: –Schlüsselwörter/Interpunktion: s. Liste Schlüsselwörter sind reserviert und dürfen nicht als Bezeichner verwendet werden. –Operatoren: s. Liste (= Zeichenfolgen mit vordefinierter Bedeutung)

Kapitel 1: Erste Schritte Vorl EINI-I" Schlüsselwörter in C++ Die folgenden Schlüsselwörter sind in C++ reserviert und dürfen nicht anderweitig (z. B. als Bezeichner) benutzt werden: asmdoinline shorttypeid autodoubleint signedtypename booldynamic_castlong sizeofunion breakelsemutable staticunsigned caseenumnamespace static_castusing catchexplicitnew structvirtual charexternoperator switchvoid classfalseprivate templatevolatile constfloatprotected´ thiswchar_t const_castforpublic throwwhile continuefriendregister true defaultgotoreinterpret_cast try deleteifreturn typedef main Eine Art abgekürzter Schlüsselwörter sind die Interpunktionszeichen von C++: ; { }, ( ) :... = \ ´ "

Kapitel 1: Erste Schritte Vorl EINI-I" Operatoren in C++ In C++ steht eine Vielzahl von Operatoren zur Verfügung - das sind Symbole, die verschiedene Operationen auf ihren Argumenten, den sog. Operanden, ausführen: ! % ^ & * () ­ + = | ~ [] ?: / ¸ · ­> ++ ­­ ·* ­>* > = == != && || *= /= %= += ­= >= &= ^= |= ::

Kapitel 1: Erste Schritte Vorl EINI-I" Header-Dateien: –dienen dazu, an anderer Stelle definierte Bezeichner bekannt zu machen (z. B. ist cout in der Datei iostream.h definiert). –Der Kenner weiß: –#include : die ist in einem festen, vordefinierten Verzeichnis zu finden –#include "... " : die wird zunächst im aktuellen Verzeichnis, dann im o.g. vordefinierten Verzeichnis gesucht Was passiert eigentlich bei #include ? Erstes Beispiel (Forts.)

Kapitel 1: Erste Schritte Vorl EINI-I" Elementare Datentypen C++ hat fest eingebaute Datentypen, aus denen alle anderen zusammengesetzt werden können. Vordefiniert sind –der Typ void –arithmetische Typen ganzzahlige Typen : short int, int, long int, char Gleitpunkttypen: float, double, long double Kleinster Typ ist char, stellt die Zeichen des Zeichensatzes dar (meist ASCII)

Kapitel 1: Erste Schritte Vorl EINI-I" Elementare Datentypen (Forts.) Standardfunktion sizeof gibt für jeden Typ seine Größe (als Vielfaches der Größe von char ) an. Es gilt stets : 1 = sizeof(char) sizeof(short int) sizeof(int) sizeof(long int) Prog-2

Kapitel 1: Erste Schritte Vorl EINI-I" Elementare Datentypen (Forts.) Eingebaut sind für ganzzahlige Typen und für Gleitpunkttypen Konstanten, die jeweils die größte und kleinste darstellbare Zahl angeben: Beispiel: Beachte: #include #include Prog-3

Kapitel 1: Erste Schritte Vorl EINI-I" unsigned char vs. signed char unsigned short int vs. signed short int unsigned int vs. signed int unsigned long int vs. signed long int Unsigned: –Wertebereich beginnt bei 0 –doppelt so große Obergrenze wie entsprechender signed -Typ –ohne Angaben: vorzeichenbehaftete (also signed ) Version Prog-2A Bei ganzzahligen Typen: Variante unsigned/signed, also: Bei ganzzahligen Typen: Variante unsigned/signed, also:

Kapitel 1: Erste Schritte Vorl EINI-I" unsigned (Forts.)/ float Es gilt: sizeof (T) = sizeof (unsigned T) = sizeof (signed T) Behandlung ziemlich maschinenabhängig

Kapitel 1: Erste Schritte Vorl EINI-I" Datentyp void Datentyp void : –hat leere Wertemenge –also gibt es keine Variablen vom Typ void ! Dennoch nützlich zur: –Beschreibung von Funktionen, die keinen Wert zurückgeben.

Kapitel 1: Erste Schritte Vorl EINI-I" Anmerkungen zum Thema Variablen char x legt fest, daß der Wert von x ein Zeichen ist. Technisch: im Speicher wird für x eine Speicherzelle reserviert, und es wird vermerkt, daß diese Speicherzelle nur Daten von Typ char aufnehmen darf. die Zuweisung: x = 'a' bewirkt, daß dieser Wert in der Speicherzelle für x gespeichert wird.

Kapitel 1: Erste Schritte Vorl EINI-I" Variablen (Forts.) hier wird ein Datum vom Typ char gespeichert die Vereinbarung char x bewirkt: x Reservierung einer Speicherzelle die Zuweisung x = 'a' bewirkt a

Kapitel 1: Erste Schritte Vorl EINI-I" Variablen (Forts.) 'a' y hier wird ein Datum vom Typ char gespeichert... x hier wird ein Datum vom Typ char gespeichert... char x, y; x = ' a '; y = x; hat als Wirkung: a a

Kapitel 1: Erste Schritte Vorl EINI-I" Einführung in die Verwendung von Grammatiken Ziel: Beschreibung von (Teilen von) syntaktisch korrekten C++-Programmen (über [speziell dargestellte] kontextfreie Grammatiken). Konkreter: Sie sollten lernen, die im Ellis-Stroustrup in Kap. 17 beschriebene Grammatik am Ende der Veranstaltung lesen und für Ihre Zwecke verwenden zu können.

Kapitel 1: Erste Schritte Vorl EINI-I" Einführung in die Beschreibung mittels (kontextfreier) Grammatiken Einführung in die Beschreibung mittels (kontextfreier) Grammatiken Zu obigem Ziel nötig: –Sei A = {a 1, a 2,....., a n } eine endliche Menge von Zeichen (Alphabet). Beispiel: A 1 := {0,1,2} Vorsicht: Zeichen eines Alphabets können selbst zusammengesetzt sein! –Sei A* die Menge aller endlichen Wörter über dem Alphabet A. Am Beispiel: A 1 * := {0, 1, 2, 00, 01, 02, 10,...., 000, 001, 002,..., 100,.., 0000,..}

Kapitel 1: Erste Schritte Vorl EINI-I" Einführung in Grammatiken –Das Hintereinanderhängen von Zeichen wird häufig -wie auch hier- ohne ein explizites Operatorzeichen, also allein durch das Hintereinanderschreiben von links nach rechts ausgedrückt. –Länge eines Wortes aus A*: Anzahl der vorhan- denen Zeichen/Buchstaben unter Berücksichtigung der Vielfachheit des Vorkommens. –Man nimmt auch das sog. "leere" Wort der Länge 0, z. B häufig bezeichnet durch, hinzu!

Kapitel 1: Erste Schritte Vorl EINI-I" Einführung in Grammatiken Aufgabe: –Zu einem gegebenen Alphabet A (Menge von Zeichen) beschreibe eine geeignete Teilmenge von A* in möglichst kompakter Form. –Beispiel: Sei T(A 1 *): Menge aller Wörter, die mit einer 1 beginnen und einer 1 enden, sonst aber keine 1 mehr aufweisen. Kompakte Darstellung? –(Übung: Darstellung über [speziell dargestellte] kontextfreie Grammatik).

Kapitel 1: Erste Schritte Vorl EINI-I" Einführung in Grammatiken Eine Lösung: –Je eine (kontextfreie) Grammatik G beschreibt eine ausgezeichnete Teilmenge der Menge aller Zeichenketten über einem gegebenen Alphabet (den Terminalzeichen T). Dies geschieht durch einen Erzeugungsprozeß. Die durch diesen Erzeugungs- prozeß eindeutig festgelegte Teilmenge von T* heißt "Sprache" von G.

Kapitel 1: Erste Schritte Vorl EINI-I" Einführung in Grammatiken Darstellung der Grammatik: –Als 4-Tupel (N, T, P, S) aus endlicher Menge von Nichtterminalzeichen (N), endlicher Menge von Terminalzeichen (T), endlicher Menge von Produktionen/Regeln (P) und Startsymbol (S). –(Meist nur explizite Angabe der Produktionen.) Hilfsgrößen: (sog. Nichtterminale) hier notiert durch Bezeichner. Stellen "Zwischengrößen" dar, die durch weitere Anwendung von Regeln (im Endeffekt) in Wörter über Terminalzeichen überführt werden. Wie? Vgl. unten.

Kapitel 1: Erste Schritte Vorl EINI-I" Einführung in Grammatiken Regeln (Produktionen): [Darstellung angepaßt an Ellis-Stroustrup, Kap. 17] –Allgemeiner Aufbau einer Regel Linke Seite : Rechte Seite Linke Seite wird durch genau ein Nichtterminal- zeichen gebildet. Beispiel: Bezeichner1 Rechte Seite: i. a. Wort über (N T), d.h. (N T)*. –[Später werden zusätzliche Sonderzeichen erlaubt, s.u.]

Kapitel 1: Erste Schritte Vorl EINI-I" Einführung in Grammatiken Eine Regel –beschreibt die Überführung von Nichtterminalzeichen (dargestellt auf der linken Seite :) in Wörter aus Terminal- und/oder Nichtterminalzeichen. Startsymbol: –stellt das Nichtterminalzeichen dar, von dem aus sog. Ableitungen gestartet werden. Zu Ableitungen später nach Einführung eines Beispiels. Kommentare –wollen wir (u.a.) durch /*... */ notieren.

Kapitel 1: Erste Schritte Vorl EINI-I" Einführung in Grammatiken Beispiel: –Grammatik für zulässige Namen (nach der Namenskonvention von C++ (eingeschränkt)) Menge der Terminalzeichen = {a,..., z, A,..., Z, 0,...,9, _} Menge der Nichtterminalzeichen: {NameDcl, Buchstabe, RestNameOpt, RestName, Ziffer} [Nichtterminalzeichen werden also kursiv dargestellt. Vorsicht: Nichtterminal"zeichen" können also selbst aus mehreren Zeichen bestehen !]

Kapitel 1: Erste Schritte Vorl EINI-I" Einführung in Grammatiken Beispiele für Regeln (in dieser Beispielgrammatik): Buchstabe : Diese drei Regeln werden a zusammengefaßt zu: Buchstabe : b a Buchstabe : b c oder auch: Buchstabe : one of a | b | c

Kapitel 1: Erste Schritte Vorl EINI-I" Einführung in Grammatiken RestName : Buchstabe RestName RestName wird abgeleitet zu Buchstabe, gefolgt von RestName. bedeutet:

Kapitel 1: Erste Schritte Vorl EINI-I" Einführung in Grammatiken 1 NameDcl : Buchstabe RestNameOpt 2Buchstabe : one of A |... | Z | a |... | z| _ 3RestNameOpt : one of RestName | /* ist "leeres Wort" */ 4RestName : Buchstabe | Ziffer Buchstabe RestName Ziffer RestName 5Ziffer : one of 0|... |9

Kapitel 1: Erste Schritte Vorl EINI-I" Einführung in Grammatiken Startsymbol: NameDcl Beispiele von Ableitungen (immer Start mit NameDcl ) : Abgeleitet:Verwendete Regel: 1. NameDcl/*NameDcl :Buchstabe RestNameOpt */ Buchstabe RestNameOpt/*Buchstabe: A|.... */ A RestNameOpt /*RestNameOpt :RestName | */ A/*A T*; A ist durch diese Grammatik ableitbarer Bezeichner */

Kapitel 1: Erste Schritte Vorl EINI-I" Einführung in Grammatiken 2. NameDcl/* NameDcl : Buchstabe RestNameOpt*/ Buchstabe RestNameOpt/*Buchstabe : a |...|z |A |... |Z|_*/ N RestNameOpt /*RestNameOpt : RestName| */ N RestName /*RestName :.. |Buchstabe RestName|..*/ N Buchstabe RestName /*Buchstabe : a |...|z |A |... |Z|_*/ Nr RestName /*RestName :.. |Buchstabe RestName|..*/ Nr Buchstabe RestName /*Buchstabe : a |...|z |A |... |Z|_*/ Nr_RestName /*RestName :.. | Ziffer RestName */ Nr_Ziffer RestName /*RestName :.. | Ziffer RestName */ Nr_ Ziffer Ziffer RestName/* RestName :.. |Ziffer|...*/ Nr_ Ziffer Ziffer Ziffer /* Ziffer : 0 |... |9*/ Nr_ Ziffer 0 Ziffer /* Ziffer :0 |... |9*/ Nr_Ziffer 07/*Ziffer :0 |... |9*/ Nr_007 /* abgeleiteter Bezeichner, da nur noch Terminale !*/

Kapitel 1: Erste Schritte Vorl EINI-I" Einführung in Grammatiken Man spricht von der Ableitung eines Wortes w = t 1...t n (t i Terminalzeichen (!!) für i = 1,..., n; n 0), wenn sich w aus dem Startsymbol durch endlich viele Anwendungen von Regeln der Grammatik (, d.h. jeweils durch lokales Ersetzen von Nichtterminalzeichen auf der linken Seite durch (evtl. Teile) einer Zeile der rechten Seite einer Regel) erzeugen läßt.

Kapitel 1: Erste Schritte Vorl EINI-I" Einführung in Grammatiken Die durch eine Grammatik G erzeugte Wortmenge: Menge aller Wörter (allein) aus Terminalzeichen, zu denen Ableitungen in G existieren. Übung: Sind Variable1, 1.Variable, 1_Variable, Variable_1 ableitbare Namen gemäß obiger Grammatik?

Kapitel 1: Erste Schritte Vorl EINI-I" Regeln in Stroustrup-Grammatik /*Expressions, kleiner Auszug aus der Gesamtgramma- tik von C++, vgl. Stroustrup, Kap.17.2*/ expression:additive-expression more additive-expression:multiplicative-expression additive-expression + multiplicative-expression additive-expression - multiplicative-expression multiplicative-expression: primary-expression multiplicative-expression * primary-expression multiplicative-expression / primary-expression multiplicative-expression % primary-expression

Kapitel 1: Erste Schritte Vorl EINI-I" Regeln in Stroustrup-Grammatik primary-expression: literal more ( expression ) name name:identifier more literal:integer-constant character-constant floating-constant string-literal

Kapitel 1: Erste Schritte Vorl EINI-I" Ableitung in Stroustrup-Grammatik Frage: Ist "( x +5 )" ein Ausdruck (Expression) ? Ableitung: expression /* expression:additive-expression*/ additive-expression /*additive-expression:multiplicative-expression*/ multiplicative-expression /*multiplicative-expression: primary-expression*/ primary-expression /* primary-expression: ( expression )*/ ( expression ) /* expression:additive-expression*/ ( additive-expression ) /*additive-expression: additive-expression + multiplicative- expression*/

Kapitel 1: Erste Schritte Vorl EINI-I" Ableitung in Stroustrup-Grammatik ( additive-expression + multiplicative-expression ) /* additive-expression: multiplicative-expression*/ ( multiplicative-expression + multiplicative-expression ) /*multiplicative-expression: primary-expression*/ 2X ( primary-expression + primary-expression ) /*primary-expression: literal |name*/ 2X ( name + literal ) /* name: identifier */ ( x + literal )/* literal: integer-constant */ ( x + 5 ) /*Hurra !!!*/