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

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

Embed Size (px)

Citation preview

Page 1: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 1 Gisbert Dittrich; Claudio Moraga FBI Unido moraga@cs.uni-dortmund.de

EINI-IEINI-IEinführung in die Informatik Einführung in die Informatik für Naturwissenschaftler und für Naturwissenschaftler und

Ingenieure Ingenieure II

Kapitel 1

Gisbert Dittrich; Claudio Moraga

FBI Unido

[email protected]

Page 2: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 1 Gisbert Dittrich; Claudio Moraga FBI Unido moraga@cs.uni-dortmund.de

2

Kapitel 1: Erste SchritteVorl “EINI-I"

29.10.1999

Gliederung Kap. 1Gliederung Kap. 1

• Vorgehensweise bei Programmkonstruktion• Grundlegendes Scenario• Erstes Programm• ...• Elementare Datentypen• ...• Einführung zu kontextfreien Grammatiken

Page 3: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 1 Gisbert Dittrich; Claudio Moraga FBI Unido moraga@cs.uni-dortmund.de

3

Kapitel 1: Erste SchritteVorl “EINI-I"

29.10.1999

Übliche Vorgehensweise bei der Übliche Vorgehensweise bei der ProgrammkonstruktionProgrammkonstruktion

Programm-Wartung und Pflege

Analyse des Problems

Entwurf einer Lösung

Test/Verifikation des Programms

Problem

Programm

Realisierung eines Programms

Page 4: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 1 Gisbert Dittrich; Claudio Moraga FBI Unido moraga@cs.uni-dortmund.de

4

Kapitel 1: Erste SchritteVorl “EINI-I"

29.10.1999

Zur Realisierung eines ProgrammsZur Realisierung eines Programms

Idee zurLösungeines

Problems

Idee zur Lösung

eines Problems

Formulierung eines Programms

ausführbares Programm

(Maschinensprache)

Übersetzung

Laufzeit- System

Aus-führung

Bibliotheken

Page 5: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 1 Gisbert Dittrich; Claudio Moraga FBI Unido moraga@cs.uni-dortmund.de

5

Kapitel 1: Erste SchritteVorl “EINI-I"

29.10.1999

Erstes C++-ProgrammErstes C++-Programm

Prog-1

Page 6: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 1 Gisbert Dittrich; Claudio Moraga FBI Unido moraga@cs.uni-dortmund.de

6

Kapitel 1: Erste SchritteVorl “EINI-I"

29.10.1999

Erstes C++ - Programm - AnatomieErstes 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

AusgabeAusgabe

Rückgabewert

Haupt-programm

Page 7: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 1 Gisbert Dittrich; Claudio Moraga FBI Unido moraga@cs.uni-dortmund.de

7

Kapitel 1: Erste SchritteVorl “EINI-I"

29.10.1999

Erstes C++ - Programm (Forts.)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

Page 8: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 1 Gisbert Dittrich; Claudio Moraga FBI Unido moraga@cs.uni-dortmund.de

8

Kapitel 1: Erste SchritteVorl “EINI-I"

29.10.1999

Erstes C++ - Programm (Forts.) Erstes C++ - Programm (Forts.)

• Kommentare/*---*/ mehrere Zeilen

// bis Zeilenende

• Bezeichner Buchstabe

gemäß Bauplan Bezeichner Buchstabe Bezeichner ZifferOderSo

• Hierbei– Buchstabe: a ... z A ... Z, – ZifferOderSo: 0 ... 9 _

Interpretation ?

Unterstrich

Page 9: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 1 Gisbert Dittrich; Claudio Moraga FBI Unido moraga@cs.uni-dortmund.de

9

Kapitel 1: Erste SchritteVorl “EINI-I"

29.10.1999

Erstes Beispiel (Forts.)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)

Page 10: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 1 Gisbert Dittrich; Claudio Moraga FBI Unido moraga@cs.uni-dortmund.de

10

Kapitel 1: Erste SchritteVorl “EINI-I"

29.10.1999

Schlüsselwörter in C++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:

asm do inline short typeidauto double int signed typenamebool dynamic_cast long sizeof unionbreak else mutable static unsignedcase enum namespace static_cast usingcatch explicit new struct virtualchar extern operator switch voidclass false private template volatileconst float protected ´ this wchar_tconst_cast for public throw whilecontinue friend register truedefault goto reinterpret_cast trydelete if return typedef main

Eine Art abgekürzter Schlüsselwörter sind die Interpunktionszeichen von C++: ; { } , ( ) < > : ... = \ ´ "

Page 11: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 1 Gisbert Dittrich; Claudio Moraga FBI Unido moraga@cs.uni-dortmund.de

11

Kapitel 1: Erste SchritteVorl “EINI-I"

29.10.1999

Operatoren in C++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:

! % ^ & * () + = | ~

[] < > ?: / ¸ · > ++ ·*

>* << >> <= >= == != && || *= /=

%= += = <<= >>= &= ^= |= ::

Page 12: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 1 Gisbert Dittrich; Claudio Moraga FBI Unido moraga@cs.uni-dortmund.de

12

Kapitel 1: Erste SchritteVorl “EINI-I"

29.10.1999

• 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 <Datei> ist in einem festen,

vordefinierten Verzeichnis zu finden– #include " ... " : die <Datei> wird zunächst im

aktuellen Verzeichnis, dann im o.g. vordefinierten Verzeichnis gesucht

• Was passiert eigentlich bei #include ?

Erstes Beispiel (Forts.)Erstes Beispiel (Forts.)

Page 13: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 1 Gisbert Dittrich; Claudio Moraga FBI Unido moraga@cs.uni-dortmund.de

13

Kapitel 1: Erste SchritteVorl “EINI-I"

29.10.1999

Elementare DatentypenElementare 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)

Page 14: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 1 Gisbert Dittrich; Claudio Moraga FBI Unido moraga@cs.uni-dortmund.de

14

Kapitel 1: Erste SchritteVorl “EINI-I"

29.10.1999

Elementare Datentypen (Forts.)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

Page 15: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 1 Gisbert Dittrich; Claudio Moraga FBI Unido moraga@cs.uni-dortmund.de

15

Kapitel 1: Erste SchritteVorl “EINI-I"

29.10.1999

Elementare Datentypen (Forts.)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 <limits.h>

#include <float.h>

Prog-3

Page 16: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 1 Gisbert Dittrich; Claudio Moraga FBI Unido moraga@cs.uni-dortmund.de

16

Kapitel 1: Erste SchritteVorl “EINI-I"

29.10.1999

• 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: Bei ganzzahligen Typen: Variante Variante unsigned/signedunsigned/signed, also:, also:

Page 17: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 1 Gisbert Dittrich; Claudio Moraga FBI Unido moraga@cs.uni-dortmund.de

17

Kapitel 1: Erste SchritteVorl “EINI-I"

29.10.1999

unsigned unsigned (Forts.)/ (Forts.)/ floatfloat

• Es gilt:sizeof (T) = sizeof (unsigned T)

= sizeof (signed T)

• Behandlung ziemlich maschinenabhängig

Page 18: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 1 Gisbert Dittrich; Claudio Moraga FBI Unido moraga@cs.uni-dortmund.de

18

Kapitel 1: Erste SchritteVorl “EINI-I"

29.10.1999

Datentyp voidDatentyp 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.

Page 19: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 1 Gisbert Dittrich; Claudio Moraga FBI Unido moraga@cs.uni-dortmund.de

19

Kapitel 1: Erste SchritteVorl “EINI-I"

29.10.1999

Anmerkungen zum Thema Anmerkungen zum Thema VariablenVariablen

• char xlegt 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.

Page 20: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 1 Gisbert Dittrich; Claudio Moraga FBI Unido moraga@cs.uni-dortmund.de

20

Kapitel 1: Erste SchritteVorl “EINI-I"

29.10.1999

VariablenVariablen (Forts.) (Forts.)

hier wird ein Datum

vom Typ chargespeichert

die Vereinbarungchar xbewirkt:

x

Reservierung einerSpeicherzelle

die Zuweisung x = 'a' bewirkt

a

Page 21: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 1 Gisbert Dittrich; Claudio Moraga FBI Unido moraga@cs.uni-dortmund.de

21

Kapitel 1: Erste SchritteVorl “EINI-I"

29.10.1999

VariablenVariablen (Forts.) (Forts.)

'a'y

hier wird ein Datum

vom Typ chargespeichert

...

x

hier wird ein Datum

vom Typ chargespeichert

...

char x, y;

x = 'a'; y = x; hat als Wirkung:

a

a

Page 22: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 1 Gisbert Dittrich; Claudio Moraga FBI Unido moraga@cs.uni-dortmund.de

22

Kapitel 1: Erste SchritteVorl “EINI-I"

29.10.1999

Einführung in die Verwendung von Einführung in die Verwendung von GrammatikenGrammatiken

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

Page 23: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 1 Gisbert Dittrich; Claudio Moraga FBI Unido moraga@cs.uni-dortmund.de

23

Kapitel 1: Erste SchritteVorl “EINI-I"

29.10.1999

Einführung in die Beschreibung Einführung in die Beschreibung mittels (kontextfreier) Grammatikenmittels (kontextfreier) Grammatiken

• Zu obigem Ziel nötig:– Sei A = {a1, a2, ....., an} eine endliche Menge von

Zeichen (Alphabet).• Beispiel: A1:= {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: A1* := {0, 1, 2, 00, 01, 02, 10, ...., 000, 001, 002,..., 100, .., 0000,..}

Page 24: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 1 Gisbert Dittrich; Claudio Moraga FBI Unido moraga@cs.uni-dortmund.de

24

Kapitel 1: Erste SchritteVorl “EINI-I"

29.10.1999

Einführung in ...... GrammatikenEinfü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!

Page 25: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 1 Gisbert Dittrich; Claudio Moraga FBI Unido moraga@cs.uni-dortmund.de

25

Kapitel 1: Erste SchritteVorl “EINI-I"

29.10.1999

Einführung in ...... GrammatikenEinfü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(A1*): 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).

Page 26: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 1 Gisbert Dittrich; Claudio Moraga FBI Unido moraga@cs.uni-dortmund.de

26

Kapitel 1: Erste SchritteVorl “EINI-I"

29.10.1999

Einführung in ...... GrammatikenEinfü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.

Page 27: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 1 Gisbert Dittrich; Claudio Moraga FBI Unido moraga@cs.uni-dortmund.de

27

Kapitel 1: Erste SchritteVorl “EINI-I"

29.10.1999

Einführung in ...... GrammatikenEinfü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.

Page 28: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 1 Gisbert Dittrich; Claudio Moraga FBI Unido moraga@cs.uni-dortmund.de

28

Kapitel 1: Erste SchritteVorl “EINI-I"

29.10.1999

Einführung in ...... GrammatikenEinfü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.]

Page 29: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 1 Gisbert Dittrich; Claudio Moraga FBI Unido moraga@cs.uni-dortmund.de

29

Kapitel 1: Erste SchritteVorl “EINI-I"

29.10.1999

Einführung in ...... GrammatikenEinfü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.

Page 30: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 1 Gisbert Dittrich; Claudio Moraga FBI Unido moraga@cs.uni-dortmund.de

30

Kapitel 1: Erste SchritteVorl “EINI-I"

29.10.1999

Einführung in ...... GrammatikenEinfü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 !]

Page 31: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 1 Gisbert Dittrich; Claudio Moraga FBI Unido moraga@cs.uni-dortmund.de

31

Kapitel 1: Erste SchritteVorl “EINI-I"

29.10.1999

Einführung in ...... GrammatikenEinführung in ...... Grammatiken

• Beispiele für Regeln (in dieser Beispielgrammatik): • Buchstabe : Diese drei Regeln werden

a zusammengefaßt zu:• Buchstabe : Buchstabe :

b a• Buchstabe : b

c c

oder auch: Buchstabe : one of

a | b | c

Page 32: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 1 Gisbert Dittrich; Claudio Moraga FBI Unido moraga@cs.uni-dortmund.de

32

Kapitel 1: Erste SchritteVorl “EINI-I"

29.10.1999

Einführung in ...... Grammatiken Einführung in ...... Grammatiken

RestName :

Buchstabe RestName

• RestName wird abgeleitet zu Buchstabe, gefolgt von RestName.

• bedeutet:

Page 33: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 1 Gisbert Dittrich; Claudio Moraga FBI Unido moraga@cs.uni-dortmund.de

33

Kapitel 1: Erste SchritteVorl “EINI-I"

29.10.1999

Einführung in ...... GrammatikenEinführung in ...... Grammatiken1 NameDcl :

Buchstabe RestNameOpt

2 Buchstabe : one of

A | ... | Z | a | ... | z| _

3 RestNameOpt : one of RestName | /* ist "leeres Wort" */

4 RestName :

Buchstabe | Ziffer

Buchstabe RestName

Ziffer RestName

5 Ziffer : one of 0|... |9

Page 34: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 1 Gisbert Dittrich; Claudio Moraga FBI Unido moraga@cs.uni-dortmund.de

34

Kapitel 1: Erste SchritteVorl “EINI-I"

29.10.1999

Einführung in ...... GrammatikenEinfü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 */

Page 35: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 1 Gisbert Dittrich; Claudio Moraga FBI Unido moraga@cs.uni-dortmund.de

35

Kapitel 1: Erste SchritteVorl “EINI-I"

29.10.1999

Einführung in ...... GrammatikenEinfü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 !*/

Page 36: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 1 Gisbert Dittrich; Claudio Moraga FBI Unido moraga@cs.uni-dortmund.de

36

Kapitel 1: Erste SchritteVorl “EINI-I"

29.10.1999

Einführung in ...... GrammatikenEinführung in ...... Grammatiken

• Man spricht von der Ableitung eines Wortes

w = t1 ...tn (ti Terminalzeichen (!!) für i = 1, ..., n; n0), 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.

Page 37: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 1 Gisbert Dittrich; Claudio Moraga FBI Unido moraga@cs.uni-dortmund.de

37

Kapitel 1: Erste SchritteVorl “EINI-I"

29.10.1999

Einführung in ...... GrammatikenEinfü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?

Page 38: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 1 Gisbert Dittrich; Claudio Moraga FBI Unido moraga@cs.uni-dortmund.de

38

Kapitel 1: Erste SchritteVorl “EINI-I"

29.10.1999

Regeln in Stroustrup-GrammatikRegeln 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

Page 39: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 1 Gisbert Dittrich; Claudio Moraga FBI Unido moraga@cs.uni-dortmund.de

39

Kapitel 1: Erste SchritteVorl “EINI-I"

29.10.1999

Regeln in Stroustrup-GrammatikRegeln in Stroustrup-Grammatik

primary-expression: literal

more

( expression )

name

name: identifier

more

literal: integer-constant

character-constant

floating-constant

string-literal

Page 40: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 1 Gisbert Dittrich; Claudio Moraga FBI Unido moraga@cs.uni-dortmund.de

40

Kapitel 1: Erste SchritteVorl “EINI-I"

29.10.1999

Ableitung in Stroustrup-GrammatikAbleitung 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*/

Page 41: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 1 Gisbert Dittrich; Claudio Moraga FBI Unido moraga@cs.uni-dortmund.de

41

Kapitel 1: Erste SchritteVorl “EINI-I"

29.10.1999

Ableitung in Stroustrup-GrammatikAbleitung 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 !!!*/