EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 2 Gisbert...

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

Transcript of EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 2 Gisbert...

Page 1: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 2 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 IIngenieure I

Kapitel 2

Gisbert Dittrich; Claudio Moraga

FBI Unido

[email protected]

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

2

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

EINI-I

Kapitel 2

Elementare Daten- und

Kontrollstrukturen

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

3

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

Gliederung Kapitel 2Gliederung Kapitel 2

• Elementare Daten- und Kontrollstrukturen:

Je aus Beispielen entwickeln:– In-/Decrement-Operatoren– Getchar– Bedingte Anweisung– Zuweisung– Disjunktion/Konjunktion– Switch - break - continue– Eindimensionale Felder– For-Schleife

• Grammatikergänzung

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

4

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

Beispiel: Lesen und TestenBeispiel: Lesen und Testen

• Problem: Lies Zeichen für Zeichen aus der Eingabe, bis das Endezeichen '@' erscheint. Gelesene Zeichen, die ungleich dem Leerzeichen sind, werden ausgegeben, sofern sie druckbar sind.

Prog-4

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

5

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

// Prog-4//// Liest die Eingabe Zeichen fuer Zeichen, bis // das Endzeichen @ erscheint. Jedes gelesene Zeichen// wird ausgegeben.// Demonstriert: Deklaration, Eingabe, // while-Schleife, zusammengesetzte Anweisungen

#include <iostream.h>int main() {

char Ende ='@', c;cin >> c;while (c != Ende) {

cout << "Gelesen: " << c << endl;cin >> c;

}return 0;

}

Ausführen

//

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

6

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

Beispiel: Lesen und TestenBeispiel: Lesen und Testen

• Problem: Lies Zeichen für Zeichen aus der Eingabe, bis das Endezeichen '@' erscheint. Gelesene Zeichen, die ungleich dem Leerzeichen sind, werden ausgegeben, sofern sie druckbar sind.

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

7

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

Beispiel: Lesen und TestenBeispiel: Lesen und Testen

• Die while-Schleife

while < Bedingung > Anweisung;

while < Bedingung > { Anweisung1 ; Anweisung2 ;

....................

AnweisungN ;

}

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

8

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

Beispiel: Lesen und TestenBeispiel: Lesen und Testen

cin >> c;

while (c != Ende) {

cout << "Gelesen: " << c << endl;

cin >> c;

}

Test der Bedingung

Verlassen der while-Schleife,falls die Bedingung falsch ist

Ausführung des Blocks,

falls die Bedingung

wahr ist

{

cout << "Gelesen: " << c << endl;

cin >> c;

}

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

9

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

Sprachelemente: Test, NegationSprachelemente: Test, Negation

• Der Test einer Bedingung hat den Wert wahr, falls das Resutat von 0 verschieden ist. Das Resultat mit dem Wert 0 wird stets als falsch interpretiert.

• == ist Test auf Gleichheit • != ist Test auf Ungleichheit • Vergleich erfordert Übereinstimmung der Typen.• ! ist Negation in C++, d. h. man kann

c !=Ende auch schreiben als !(c == Ende)

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

10

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

Sprachelemente: ZuweisungSprachelemente: Zuweisung

• = ist Zuweisung – a = b weist a den Wert b zu (und gibt den Wert von b als Wert zurück: die Zuweisung hat einen Wert, ist also ein Ausdruck)

– a == b überprüft, ob die Werte von a und b identisch sind.

• Folgen von Anweisungen werden in {..} eingeschlossen und gelten als eine Anweisung.

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

11

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

Beispiel: Zeichen zählenBeispiel: Zeichen zählen

• Erweiterung des vorigen Beispiels:• Möchte zusätzlich Zeichen zählen und die

Anzahl der gelesenen Zeichen ausgeben.• Alle Zeichen werden auch ausgegeben.

Prog-5

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

12

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

// Prog-5// Liest die Eingabe Zeichen fuer Zeichen, bis // das Endzeichen @ erscheint. Jedes gelesene Zeichen// und die Gesamtzahl der Zeichen wird ausgegeben.// Demonstriert: Operator ++#include <iostream.h>int main() {

char Ende = '@', c;long int Zaehler; cin >> c; Zaehler = 1;while (c != Ende) {

cout << "Gelesen: " << c << endl;cin >> c; ++Zaehler;

}cout << "Anzahl der gelesenen Zeichen: "

<< Zaehler << "\n";return 0;

}

Ausführen

//

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

13

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

Sprachelemente: InkrementierenSprachelemente: Inkrementieren

• ++Zaehler erhöht den Wert der Variablen Zaehler um 1 (ist also gleichwertig mit der Zuweisung Zaehler = Zaehler + 1)

• Variante: Zaehler++– ++Zaehler erhöht Zaehler um 1 und

verwendet der erhöhten Wert (also: Erhöhung vor der Benutzung),

– Zaehler++ verwendet den alten Wert von Zaehler und erhöht Zaehler dann.

• Deswegen also „C++“ !!

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

14

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

Sprachelemente: InkrementierenSprachelemente: Inkrementieren

• ++Zaehler heißt Präfix-,

Zaehler++ heißt Postfix-Form

Beispiel:

a=1; b=1; c=1; d=1;cout << ++a << b++ << --c << d--

<< ‘\n' << a << b << c << d;

druckt: 2101

2200

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

15

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

Beispiel: Zeichen zählen 2Beispiel: Zeichen zählen 2

• Erweiterung: möchte zusätzlich Anzahl der Leerzeichen und die Anzahl der Zeilen kennenlernen.– c ist Leerzeichen genau dann, wenn c == ‘ '– c beendet eine Zeile genau dann, wenn c == '\n‘

• Beachte: cin überliest die Leerzeichen, sucht also in der Eingabe nach dem ersten Zeichen , das vom Leerzeichen verschieden ist.

Prog-6

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

16

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

// Programm 6#include <iostream.h>#include <stdio.h>int main() {

char Ende = '@', ZeilenEnde = '\n', c;long int Zaehler, ZeilenEndeZaehler = 0;c = getchar(); Zaehler = 1;

while (c != Ende) {

if (c == ZeilenEnde) ZeilenEndeZaehler++;cout << "Gelesen: " << c << endl;c = getchar(); ++Zaehler;

} cout << "Anzahl der gelesenen Zeichen: “; cout << Zaehler ; cout << " (!= Ende: " << --Zaehler << ")\n" << "Anzahl der Zeilen: " << ZeilenEndeZaehler << endl; return 0;}

//

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

17

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

Sprachelemente: Sprachelemente: getchar()getchar()

• getchar: liest von der Tastatur das nächste Zeichen und gibt es als Wert zurück.

• Technisch: getchar ist eine Funktion ohne Argument – Aufruf muß in C++ mit leerer Argumentliste erfolgen,

also als getchar()

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

18

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

// Programm 6#include <iostream.h>#include <stdio.h>int main() {

char Ende = '@', ZeilenEnde = '\n', c;long int Zaehler, ZeilenEndeZaehler = 0;c = getchar(); Zaehler = 1;

while (c != Ende) {

if (c == ZeilenEnde) ZeilenEndeZaehler++;cout << "Gelesen: " << c << endl;c = getchar(); ++Zaehler;

} cout << "Anzahl der gelesenen Zeichen: “; cout << Zaehler ; cout << " (!= Ende: " << --Zaehler << ")\n" << "Anzahl der Zeilen: " << ZeilenEndeZaehler << endl; return 0;}

Ausführen

//

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

19

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

Sprachelemente: Bedingte AnweisungSprachelemente: Bedingte Anweisung

• Bedingte Anweisung (einfache Form):

if (Bedingung) {Folge von Anweisungen

}• Dabei Wirkung:

– Auswertung des Ausdrucks "Bedingung" liefert: != 0 (d. h. wahr): Ausführung des Blocks { ... }

– Auswertung des Ausdrucks "Bedingung" liefert: == 0 (d. h. falsch): Ignorieren/Auslassen des Blocks { ... }

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

20

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

Sprachelemente: Bedingte AnweisungSprachelemente: Bedingte Anweisung

• Vorsicht:

In Bedingungen wird nicht auf wahr oder falsch getestet, sondern auf:

!= 0 / == 0

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

21

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

Sprachelemente: Bedingte AnweisungSprachelemente: Bedingte Anweisung

• Besteht die Folge nur aus einer Anweisung, so können die Klammern { ... } entfallen:

float f = 1.0; if (f) cout << "Bingo!";

druckt Bingo!

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

22

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

Beispiel: Wörter zählenBeispiel: Wörter zählen

• Erweiterung zu Vorigem: – Möchte zusätzlich wissen, wie viele Wörter der Text

enthält.

• Wörter? – Getrennt durch Leerzeichen, Zeilenenden oder

Tabulatoren.

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

23

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

Beispiel: Wörter zählenBeispiel: Wörter zählen

• Also: wenn beim Lesen von c gilt:c == ' ' || c == '\n' || c == '\t'

so bin ich nicht in einem Wort. • Das merke ich mir; ich merke mir auch, wenn

ich ein Wort neu betrete (; dann erhöhe ich den Wortzähler).

Prog-7

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

24

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

// Prog-7//// Liest die Eingabe Zeichen fuer Zeichen, bis // das Endzeichen @ erscheint. // Die Anzahl der Zeichen, der Zeilen und// der Woerter wird bestimmt und ausgegeben.// Demonstriert: mehrfache Zuweisung, bedingte Anweisung,// Booleschen Operator ||

#include <iostream.h>#include <stdio.h>int main() {

//const int true = 1, false = 0;char Ende = '@', ZeilenEnde = '\n',

Tab = '\t', LeerZeichen = ' ';char c;long int Zaehler, ZeilenZaehler, WortZaehler; int ImWort = false;Zaehler = WortZaehler = 0;c = getchar ();ZeilenZaehler =1;++Zaehler; 1

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

25

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

// Prog-7 (Fortsetzung)while (c != Ende) {

if (c == ZeilenEnde) ZeilenZaehler++;if ( c == LeerZeichen

|| c == ZeilenEnde || c == Tab) ImWort = false;

else if (!ImWort) {ImWort = true; ++WortZaehler;}

c = getchar ();++Zaehler;

}cout << "Anzahl der gelesenen Zeichen: " << Zaehler;cout << " (!= Ende: " << --Zaehler << ")\n"

<< "Anzahl der Zeilen: " << ZeilenZaehler << "\nAnzahl der Woerter: " << WortZaehler << endl;

return 0;} 2

•Ausführen

//

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

26

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

Beispiel: Wörter zählenBeispiel: Wörter zählen

while (c != Ende) {

if (c == ZeilenEnde) ZeilenZaehler++;

if ( c == LeerZeichen ||

c == ZeilenEnde ||

c == Tab)

ImWort = false;

else if (!ImWort) {

ImWort = true;

++WortZaehler;

}

c = getchar();

++Zaehler;

Trenner gesehen keinen

Trenner gesehen,

also in einem Wort

Zeilenende gesehen

nächstes Zeichenerhöhe Zähler

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

27

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

Sprachelemente: Zuweisung Sprachelemente: Zuweisung

• Die Zuweisung WortZaehler = 0– weist der Variablen WortZaehler den Wert 0 zu– hat den Wert 0 (d. h. den zugewiesenen Wert)

• Die Zuweisung wirkt also nicht nur als Anweisung (, die etwas tut), sondern auch als Ausdruck (, die einen Wert hat).

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

28

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

Sprachelemente: Zuweisung Sprachelemente: Zuweisung

• Die mehrfache Zuweisung

Zaehler = Wortzaehler = 0

wirkt wie

Zaehler = (Wortzaehler = 0)• Also:

– Auswertung der Zuweisung Wortzaehler = 0

– Zuweisung des resultierenden Werts an die Variable Zaehler

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

29

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

Sprachelemente: ZuweisungSprachelemente: Zuweisung

• Auswertung erfolgt also von rechts nach links – a = b = c ist gleichwertig mit a = (b = c)

(„rechtsassoziativ“).– Konsequenz:

der Wert kann weiterverwendet werden.– z.B. a + (b = 3) bewirkt::

• Zuweisung von 3 an die Variable b,

• Erhöhung von a um 3,

• das ist häßlich !!.

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

30

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

Sprachelemente: ZuweisungSprachelemente: Zuweisung

• Beispiel: Testen:– if ((c = getchar( )) == Ende)

: Lies das nächste Zeichen, weise es c als Wert zu und (,da dies auch wie ein Ausdruck wirkt, ) teste den Wert von c, etc.

• Das trägt heftig zur Unlesbarkeit mancher Programme bei!

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

31

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

Sprachelemente: DisjunktionSprachelemente: Disjunktion

• || ist der „oder“ - Operator („Disjunktion“) ,

dabei ist:

x == y || a == b || e == fgleichwertig mit

(x == y || a == b) || e == f(„linksassoziativ“)

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

32

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

Sprachelemente: DisjunktionSprachelemente: Disjunktion

• Auswertung nur solange, bis das Ergebnis feststeht !!Beispiel: – if ( a = = b || e = = (k = r + 1)) cout << k

a b r k e Druck

0 1 17 0 18

0 0 17 0 18

beliebte Fehlerquelle !

18

0

• Analog: && Konjunktion („und“- Operator)

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

33

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

Sprachelemente: Bedingte AnweisungSprachelemente: Bedingte Anweisung

• Bedingte Anweisung mit Alternative. Syntaktisch sieht sie so aus:

if (Bedingung) {

Folge_1

}

else {

Folge_2

}

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

34

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

Sprachelemente: Bedingte AnweisungSprachelemente: Bedingte Anweisung

• Folge_1, Folge_2 sind Folgen von Anweisun-gen

• Bedeutung: klar.• Falls die Folge nur aus einer einzigen Anwei-

sung besteht, kann { } weggelassen werden. • Diese Anweisungen können wieder eine be-

dingte Anweisung sein (wie im Programmtext)• Folge_1 wird ausgeführt, wenn die Bedingung

wahr, Folge_2 wird ausgeführt, wenn die Bedingung falsch ist

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

35

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

Sprachelemente: Bedingte AnweisungSprachelemente: Bedingte Anweisung

• Mehrgliedrige Variante

if (Bed_1) { Folge_1 } else if (Bed_2) {

Folge_2 }

else { Folge_3

}

wird ausgeführt, wenn Bed_1 wahr ist

wird ausgeführt, wenn Bed_1 falsch,

jedoch Bed_2 wahr ist

wird natürlich in allen übrigen Fällen ausgeführt

Bitte besonders beachten !

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

36

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

Sprachelemente: Bedingte AnweisungSprachelemente: Bedingte Anweisung

• Knifflig:

if1 (Bed_1)if2 (Bed_2) {

Folge_1 }else { Folge_2

}Wohin gehört das else? Zu if1 oder zu if2? Ausprobieren!

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

37

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

Sprachelemente: Sprachelemente: switch-caseswitch-case

Beispiel: Programmausschnitt

switch (c) {

case 'A':++Zaehler_A;

case 'B':++Zaehler_B;

case 'C':++Zaehler_C;

default:++Zaehler_sonst; }

Vorsicht:

AbschließenVorsicht:

Abschließen

Vorsicht:

Abschließen

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

38

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

Sprachelemente: Sprachelemente: switch-case-breakswitch-case-break

Beispiel: Programmausschnitt

switch (c) {

case 'A':++Zaehler_A; break;

case 'B':++Zaehler_B; break;

case 'C':++Zaehler_C; break;

default:++Zaehler_ sonst; }

switch-case

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

39

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

/* switch-caseIllustriert switch-case-break.Zählt die Vorkommen von A, B, C und der sonstigen Zeichen (ohne Trennzeichen). Abschluß durch @.*/

#include <iostream.h>#include <stdio.h>int main() {

char c; int Zaehler_A = 0, Zaehler_B = 0, Zaehler_C = 0, Zaehler_sonst = 0;cin >> c;while (c!= '@') {

switch (c) {case 'A':

++Zaehler_A;break;

case 'B':++Zaehler_B;break;

1

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

40

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

//(Fortsetzung)

case 'C':++Zaehler_C;break;

default:++Zaehler_sonst;

}; cin >> c;

};cout << "Zähler_A: "<< Zaehler_A << '\n'

<< "Zähler_B: "<< Zaehler_B << '\n' << "Zähler_C: "<< Zaehler_C<< '\n' << "Zähler_sonst: "<< Zaehler_sonst<< '\n';

return 0;} 2

Ausführen

//

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

41

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

Sprachelemente: Sprachelemente: switch-case-breakswitch-case-break

• switch (x) prüft Wert von x gegen Werte const in:

case const:

• Dabei gilt:• Werte müssen verschieden sein• Werte müssen vom Typ von x sein

– Achtung: Typkonvertierungen beachten !– können über Ausdrücke berechnet werden

• zugehörige Anweisungsfolge abschließen– z.B. durch break– ansonsten werden die nachfolgenden Fälle mit durchlaufen!!

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

42

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

Sprachelemente: Sprachelemente: switch-case-breakswitch-case-break

• break – bewirkt Sprung z.B. aus switch, while, for.

• default– deckt alle nicht aufgeführten Fälle ab.– kann fehlen.

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

43

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

Beispiel: Wörter etc. zählenBeispiel: Wörter etc. zählen

• Problem:

Möchte wissen, wie oft die folgendenZeichen vorkommen:– Ziffern (pro Ziffer: wie oft?)– Trennzeichen (d. h. '\t', '\n', ' ‘)– alle anderen

Prog-8

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

44

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

// Prog-8//// Liest die Eingabe Zeichen fuer Zeichen, bis // das Endzeichen @ erscheint. // Die Anzahl der Trennzeichen (Zeilenende, Tab, // Leerzeichen), der Ziffern und aller anderen Zeichen // wird bestimmt und ausgegeben.// Demonstriert: bedingte Anweisung, Felder, for-Schleife//#include <iostream.h>#include <stdio.h>

int main() {char Ende = '@';char ZeilenEnde = '\n', Tab = '\t', LeerZeichen = ' ';char c;long int Zaehler = 0;

long int TrennZeichenZaehler = 0; long int ZiffernZaehler[10];

int i;1

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

45

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

for (i = 0; i < 10; ++i) ZiffernZaehler[i] = 0;

//// jetzt geht's los: der Text wird gelesen, die// Zaehler werden bestimmt.//c = getchar();while (c != Ende) {

if (c >= '0' && c <= '9')++ZiffernZaehler[c - '0'];

else if (c == LeerZeichen || c == ZeilenEnde || c == Tab)

++TrennZeichenZaehler;else

++Zaehler;c = getchar();}

2

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

46

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

// // Ausgabe der Ergebnisse

//

cout << "Anzahl der Trennzeichen: " << TrennZeichenZaehler;

for(i = 0; i < 10; ++i) cout << "\nZiffer " << i

<< " wurde " << ZiffernZaehler[i] << "\tmal gelesen";

cout << "\nandere Zeichen: " << Zaehler << endl;

return 0;}

Ausführen

//

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

47

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

FelderFelder

• int ZiffernZaehler[10];vereinbart ein Feld mit Namen ZiffernZaehler

• das Feld enthält die ganzzahligen Elemente ZiffernZaehler[0]..Ziffernzaehler[9]

Anzahl der Elemente in dem Feld

Beginn bei 0(immer!)

Ende bei Anzahl-1

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

48

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

FelderFelder

• Konstruktionsmuster: – TT Ara[k] stellt ein Feld Ara mit k Elementen

Ara[0], ..., Ara[k-1]

zur Verfügung, jedes Feldelement ist vom Grundtyp TT

– im Augenblick ist der Grundtyp int

• k kann ein ganzzahliger Ausdruck sein, der zur Zeit der Definition des Feldes bekannt sein muß.

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

49

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

AnmerkungenAnmerkungen

• c - '0' : – Konvertiert implizit c in eine ganze Zahl: das

Bitmuster wird als Zahl interpretiert, ebenso '0'.– Ergibt: '8'-'0' = 8– Die Konversion wird durch - ausgelöst. (Operatoren

der Subtraktion müssen Zahlen sein).

• Ziemlich unsauber, aber Teil der Magie von C++.

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

50

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

AnmerkungenAnmerkungen

• Bei ++ZiffernZaehler[c - '0'] passiert also folgendes:– der Wert der zu c gehörenden Ziffer wird ermittelt,

der entsprechende Feldeintrag wird um 1 erhöht.

• c muß einer Ziffer entsprechen• es hätte auch ZiffernZaehler[c - '0']++ heißen können.

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

51

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

Die Die forfor-Schleife-Schleife

• for (A; B; C) { Folge von Anweisungen}– A - Initialisierungsteil: Mit diesem Wert wird

die Folge von Anweisungen am Anfang durchlaufen, (falls B erfüllt).• z. B. Zuweisung eines Anfangswerts an die

"Laufvariable".

Initialisierungs-

teil

Bedingungs-

teilAktionsteil

Schleifenrumpf

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

52

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

Die Die forfor-Schleife-Schleife

– B: Bedingungsteil: wird vor jedem Durch-lauf überprüft. Wenn die Auswertung den Wert falsch ergibt:

Abbruch/Verlassen der Schleife

Wenn die Auswertung den Wert wahr ergibt: 1. Ausführung des Schleifenrumpfs und 2. des Aktionsteils (C).

- C: Aktionsteil: wird bei jedem Durchlauf ausgeführt.

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

53

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

Beispiel 1: Beispiel 1: forfor-Schleife-Schleife

• for (i = 0; i < 10; i++)

ZiffernZaehler[i] = 0;

initialisiert alle Elemente des Feldes ZiffernZaehler zu 0

• Gleichwertige Formulierung: for (i=0; i<10;)

ZifferZaehler[i++]=0;

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

54

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

Beispiel 2: Beispiel 2: forfor-Schleife-Schleife

for (;(c=getchar())!= Ende;)

cout <<c;

ist gleichwertig mit

c=getchar();

while (c!=Ende){

cout << c;c=getchar();

}

Initialisierungsteil leer Aktionsteil leer

Überprüfung findet statt

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

55

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

Beispiel 3: Beispiel 3: forfor-Schleife-Schleife

• A, B oder C können leer sein:

"Preis"frage: for (;;);

tut was ?

Endlosschleife, die nichts tut

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

56

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

Beispiel 4: Beispiel 4: forfor-Schleife--Schleife-breakbreak

for (;;) {

cin >> c;

if (c >= '0' && c <= '9')

break;

else ++Zaehler;

}

break

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

57

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

/* BreakIllustriert break, um eine Endlosschleife beim ersten Erscheinen der ersten Ziffer im Eingabestrom zu verlassen.*/

#include <iostream.h>#include <stdio.h>int main() {

int Zaehler = 0;char c;for (;;) {

cin >> c;if (c >= '0' && c<= '9') // Enthält c Ziffer ?

break;else ++Zaehler;

}cout << "Anzahl der Zeichen (ohne Trennzeichen) vor erster Ziffer: " << Zaehler << ‘\n';

return 0;}

//

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

58

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

Beispiel 5: Beispiel 5: forfor-Schleife--Schleife-continuecontinue

for (i=1; i < 11; i++) {

cin >> c;

if (c >= '0' && c <= '9')

continue;

++Zaehler;

}

continue

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

59

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

/* ContinueIllustriert continue durch Ausgabe der Anzahl der Zeichen, wobei Trennzeichen und Ziffern nicht gezählt werden, unter den ersten zehn (echten) Zeichen. */#include <iostream.h>#include <stdio.h>int main() {

int Zaehler = 0, i = 0;char c;for (i=1; i < 11; i++) {

cin >> c;if (c >= '0' && c <= '9')// c stellt eine Ziffer dar

continue;++Zaehler;

}cout << "Anzahl der Zeichen (ohne Trennzeichen

und ohne Ziffern) für die ersten 10 Zeichen: " << Zaehler;return 0;

}//

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

60

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

Beispiel 5: Beispiel 5: forfor-Schleife--Schleife-continuecontinue

• continue– läßt den Rest des Rumpfes weg– springt an den Anfang des nächsten Durchlaufs

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

61

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

Grammatikergänzung Kapitel 2Grammatikergänzung Kapitel 2

• Expressionsexpression: assignment-expression

/* additive --> assignment- */

more

assignment-expression: conditional-expression

unary-expression assignment-operator assignment-expression

assignment-operator: =

more

constant-expression: conditional-expression

conditional-expression: logical-or-expression

more

logical-or-expression: logical-and-expression

logical-or-expression | | logical-and-expression

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

62

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

Grammatikergänzung Kapitel 2Grammatikergänzung Kapitel 2

• Expressionslogical-and-expression: inclusive-or-expression

logical-and-expression & & inclusive-or-expression

inclusive-or-expression: equality-expression

more

equality-expression: relational-expression

equality-expression == relational-expression

equality-expression != relational-expression

relational-expression: additive expression

more

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

63

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

Grammatikergänzung Kapitel 2Grammatikergänzung Kapitel 2

• Expressionsadditive-expression: multiplicative-expression

additive-expression + multiplicative-expression

additive-expression - multiplicative-expression

multiplicative-expression: unary-expression

multiplicative-expression * unary-expression

multiplicative-expression / unary-expression

multiplicative-expression % unary-expression

unary-expression: primary-expression

++ unary-expression

more

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

64

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

Grammatikergänzung Kapitel 2Grammatikergänzung Kapitel 2

• Expressionsprimary-expression: literal

more

( expression )

name

literal: integer-constant

character-constant

floating-constant

string-literal

boolean literal

boolean literal: false

true

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

65

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

Grammatikergänzung Kapitel 2Grammatikergänzung Kapitel 2

• Statementsstatement: labeled-statement

expression-statement

compound-statement

selection-statement

iteration-statement

jump-statement

more

labeled-statement: more

case constant-expression : statement

default : statement

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

66

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

Grammatikergänzung Kapitel 2Grammatikergänzung Kapitel 2

• Statementsexpression-statement: expressionopt ; /* ; !!!!!*/

compound-statement: { statement-seqopt }

[statement-seqopt = statement-seq | ]

statement-seq: statement

statement-seq statement

selection-statement: if ( condition ) statement

if (condition ) statement else statement

switch (condition ) statement

condition: expression

more

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

67

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

Grammatikergänzung Kapitel 2Grammatikergänzung Kapitel 2

• Statementsiteration-statement: while ( expression ) statement

for ( for-init-statement ; expressionopt ; expressionopt ) statement

more

for-init-statement: expression-statement

more

jump-statement:break ;

continue ;

return expressionopt ;

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

68

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

Grammatikergänzung Kapitel 2Grammatikergänzung Kapitel 2

• Ableitungsbeispiel• Aufgabe: Leite ab:

while (c != Ende) {

if (c == Zeilenende)

++Zeilenzaehler;

else break; }

Aufgrund schon vorliegender Erfahrung werden im folgenden mehrere Schritte zusammengefaßt, jedoch noch im Kommentar erwähnt.

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

69

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

Grammatikergänzung Kapitel 2Grammatikergänzung Kapitel 2

• Ableitungsbeispiel

Ableitung:statement /* statement: ..|iteration-statement |....*/

iteration-statement

/*iteration-statement: while ( expression ) statement*/

while ( expression ) statement

/* expression: assignment-expression*/

while (assignment-expression) statement

/* assignment --> conditional--> logical-or --> logical-and --> inclusive-or --> equality */

while (equality-expression) statement

/*equality-expression: equality-expression != relational-expression*/

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

70

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

Grammatikergänzung Kapitel 2Grammatikergänzung Kapitel 2

• Ableitungsbeispielwhile (equality-expression != relational-expression) statement

/* equality --> relational --> additive --> multiplicative --> unary --> primary --> name*/

while (c != Ende) statement

/* statement-- > compound-statement --> { statement-seqopt }

{ statement-seq } --> { statement } */

while (c != Ende) { statement }

/* statement--> selection- -->

if ( condition ) statement else statement*/

while (c != Ende) { if ( condition ) statement else statement }

/* condition--> expression --> c == Zeilenende */

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

71

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

Grammatikergänzung Kapitel 2Grammatikergänzung Kapitel 2

• Ableitungsbeispielwhile (c != Ende) { if (c == Zeilenende ) statement else

statement }

/* statement --> expression-st --> expressionopt ; (Semikolon!!!) --> expression; --> assignment-exp.; --> conditional ; --> ...--> multiplicative; --> unary; --> ++ unary ; --> ++ primary ; --> ++ name; --> ++ Zeilenzaehler; */

while (c != Ende) { if (c == Zeilenende ) ++ Zeilenzaehler; else statement }

/* statement --> jump-statement--> break ;*/

while (c != Ende) {

if (c == Zeilenende ) ++ Zeilenzaehler;

else break ;}

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

72

Kap 2: Elem. Dat.+Kontrollstrukt.Vorl “EINI-I"

13.10.2000

LiteraturergänzungLiteraturergänzung

• Stroustrup, B.: Die C++ ProgrammierspracheAddison-Wesley, 3.Auflage 1998