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

Slides:



Advertisements
Ähnliche Präsentationen
Ziele von EINI I + II Einführen in „Informatik“
Advertisements

Ein- und Ausgabe von Dateien
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Claudio Moraga; Gisbert Dittrich
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.
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 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
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 1 Gisbert Dittrich; Claudio Moraga 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 Vorlesung 2 SWS WS 99/00 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
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Planung einfache Dateibehandlung (externe Dateien, Öffnen, Lesen/Schreiben, Schließen). Diskussion des Problems, die Wörter in einem gegebenen Text.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
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.
Einführung in die Programmierung Wintersemester 2011/12 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
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 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
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
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.
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 Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät.
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 Fakultät.
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 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
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 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 Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
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 Fakultät.
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 Wintersemester 2011/12 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
A) Erklären Sie den Datentyp char. b) Erklären Sie den Datentyp Struct c) Erklären Sie die Wirkungsweise des Operators & bei Anwendung im Zusammenhang.
1 // Laengste Zeile bestimmen // // Liest die Eingabe Zeichen fuer Zeichen, bis // das erscheint. // Die laengste Zeile wird ausgegeben (bei.
1 // 6_1_KKarte als Struct // // demonstriert structs // Bei Behandlung von "Randfällen" nicht robust. // Fehlerhaft !? #include const char ZeilenEnde.
1 // 9_1_Datei_IO //Elementare Verwendung von Dateien // Vorsicht: nicht robust, #include const int maxLen = 70; void Schreiben(char *, ofstream *); void.
1 // Verkettete Liste 2 // demonstriert verkettete Listen und // Rekursion // (Einfügen am "Fuß") // #include struct Liste { int Element; Liste *weiter;
 Präsentation transkript:

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

Kap 4: Vereinbarungen + Gültigkeit Vorl EINI-I" Gliederung Kapitel 4 Vereinbarungen + Gültigkeit –Vorweg: Beispiel Längste Zeile bestimmen +... –Vereinbarungen –Gültigkeit –Namensanalyse –Zwiebelschalen –Statische Variablen

Kap 4: Vereinbarungen + Gültigkeit Vorl EINI-I" Beispiel: Längste Zeile bestimmen Problem: Möchte in unserem Text die längste Zeile kennenlernen und mit ihrer Länge ausgeben. Längste Zeile bestimmen

Kap 4: Vereinbarungen + Gültigkeit Vorl EINI-I" // K4-P1: Laengste Zeile bestimmen // // Liest die Eingabe Zeichen fuer Zeichen, bis // das erscheint. // Die laengste Zeile wird ausgegeben (bei mehreren // Kandidaten, die erste). // Demonstriert: Konstanten, Funktionen #include int LiesZeile(char [], int ); void Kopiere(char [], char [] ); // Es folgt das Hauptprogramm und die zwei Funktionen // Funktionsprototypen

Kap 4: Vereinbarungen + Gültigkeit Vorl EINI-I" main() { const int LaengsteLaenge = 1000; int len, maxLaenge = 0; char Zeile[LaengsteLaenge], LaengsteZeile[LaengsteLaenge]; // Berechnung len = LiesZeile(Zeile, LaengsteLaenge); while (len > 0) { if (len > maxLaenge) { maxLaenge = len; Kopiere(Zeile, LaengsteZeile); } len = LiesZeile(Zeile, LaengsteLaenge); } // // Ausgabe der Ergebnisse // cout<< "die laengste Zeile hat " << maxLaenge << " Zeichen, sie lautet:\n" << LaengsteZeile << endl; }

Kap 4: Vereinbarungen + Gültigkeit Vorl EINI-I" // Erste Funktion int LiesZeile(char s[], int lim) { char c; int i=0; const char Ende = ZeilenEnde = '\n', Null = '\0'; c = getchar(); // Initialisierung für while-Schleife // // Verarbeitung "normaler" Zeichen in einer Zeile // while (i < lim - 1 && c != Ende && c != ZeilenEnde) { s[i] = c; ++i; c = getchar(); } s[i] = Null; return i; }

Kap 4: Vereinbarungen + Gültigkeit Vorl EINI-I" // Zweite Funktion void Kopiere(char von[], char nach[]) { int i = 0; const char Null = '\0'; while (von[i] != Null) { nach[i] = von[i]; ++i; } nach[i] = von[i]; // Hier wird das Ende-Zeichen gesetzt } Ausführen

Kap 4: Vereinbarungen + Gültigkeit Vorl EINI-I" Beispiel: lokale Variablen int LiesZeile(char [], int); void Kopiere(char [], char []); main() { const int LaengsteLaenge = 1000; int len, maxLaenge = 0; char Zeile[LaengsteLaenge]; char LaengsteZeile[LaengsteLaenge]; while (...) {... } cout <<... << endl;... } lokal

Kap 4: Vereinbarungen + Gültigkeit Vorl EINI-I" Anmerkungen zum Programm Die formalen Parameter s[ ], von[ ], nach[ ] in LiesZeile/Kopiere sind als Felder gekennzeichnet, deren Länge erst beim Aufruf durch den aktuellen Parameter bekannt gegeben wird. Das ist praktisch: Bei der Vereinbarung einer Funktion muß die Länge eines Feldes, falls es als Parameter übergeben wird, noch nicht bekannt sein. Damit kann man Funktionen allgemeiner schreiben.

Kap 4: Vereinbarungen + Gültigkeit Vorl EINI-I" Zeichenketten Bei Feldern mit dem Grundtyp char ist letztes Zeichen stets das Zeichen ' \0 ' [Konvention!]. Eine Zeichenkette wort mit genau n Buch- staben sollte dann so vereinbart werden: char wort[n+1]; Es sollte dann gesetzt werden wort[n] = '\0'. cin, cout können auf ganzen Zeichenketten arbeiten. cin überliest '\t', '\n' sowie Leerzeichen.

Kap 4: Vereinbarungen + Gültigkeit Vorl EINI-I" Zeichenketten Konstante Zeichenketten werden in ".." notiert –Bsp.: const char t[ ] = "aha, sagte er"; "a" vs. 'a' : – "a" ist eine Zeichenkette der Länge 1, –'a' ist ein Zeichen, '\0' fehlt ! a\0

Kap 4: Vereinbarungen + Gültigkeit Vorl EINI-I" Beispiele void Kopiere(char von[], char nach[]) { int i = 0; const char Null = '\0'; while (von[i] != Null) { nach[i] = von[i]; ++i; } nach[i] = von[i]; } Effekt: die Zeichenkette von wird in die Zeichenkette nach kopiert. Vereinbare im folgenden Null als '\0':

Kap 4: Vereinbarungen + Gültigkeit Vorl EINI-I" 13 int laenge (char q[]) { int i = 0; while (q[i] != Null) i++; return i; } Berechnet die Länge der als Argument übergebenen Zeichenkette. Beispiele

Kap 4: Vereinbarungen + Gültigkeit Vorl EINI-I" 14 int isLower(char); // Funktionsprototyp void ToUpper (char s[ ]) { char c, Null = '\0'; int i = 0; c = s[i]; while (c!= Null) { if(isLower(c)) s[i] = c - 'a' + 'A'; i++; c = s[i]; } } ersetzt jeden Kleinbuchstaben durch den entsprechenden Großbuchstaben. Beispiele

Kap 4: Vereinbarungen + Gültigkeit Vorl EINI-I" 15 hierbei: int isLower(char c) { return ((c >= 'a') && (c <= 'z')); } Die Funktion isLower überprüft, ob ein Buchstabe ein Kleinbuchstabe ist Beispiele

Kap 4: Vereinbarungen + Gültigkeit Vorl EINI-I" 16 void concat (char s[],char t[],char r[]) { int off, i=0; const char Null ='\0'; while ((r[i] = s[i]) != Null) i++; off = i; i = 0; while ((r[off+i] = t[i])!= Null) i++; } Verkettet (Konkateniert) s und t zu r (d. h. nach concat ("123", "abc", g) hat g die Zeichenkette "123abc" zum Inhalt) Beispiele

Kap 4: Vereinbarungen + Gültigkeit Vorl EINI-I" 17 Vergleich Z_Ketten Beispiele (Forts.) Vergleiche von Zeichenketten mit strcmp, wobei der Vergleich lexikographisch durchgeführt wird –also wie im Lexikon: Abraham steht for Bebra, Eigenheit steht vor Eigensinn Programm

Kap 4: Vereinbarungen + Gültigkeit Vorl EINI-I" // K4-P2: Vergleich zweier Zeichenketten // // Demonstriert den Vergleich zweier Zeichenketten #include int strcmp(char[], char[]);// Funktionsprototyp main() { char s[] = "Alberich", t[] = "Albert"; if (strcmp(s, t) < 0) cout << "s ist:\t" << s << endl << "t ist:\t" << t << endl << "\ts ist lexikographisch kleiner als t << endl; cout << "\nist \"1\" kleiner als \"a\"? " << (strcmp("1", "a")? "ja": "nein") << endl; }

Kap 4: Vereinbarungen + Gültigkeit Vorl EINI-I" /* Programm der Funktion strcmp zum Vergleich von zwei Zeichenketten */ int strcmp(char s[], char t[]) { int i = 0; while (s[i] == t[i]) if (s[i++] == '\0') return (0); return (s[i] - t[i]); } Ausführen

Kap 4: Vereinbarungen + Gültigkeit Vorl EINI-I" 20 (a ? b : c) ist ein Ausdruck mit a != 0: Wert b a == 0: Wert c Also: y = ( x > 0 ? 3 : 7); ist gleichwertig zu if ( x > 0) y = 3; else y = 7; Der ?-Operator

Kap 4: Vereinbarungen + Gültigkeit Vorl EINI-I" 21 y = ( x > 0 ? ( z < 7? 17 : z + 7) : x - 9) ist gleichwertig zu if (x > 0){ if ( z < 7) y = 17; else y = z + 7; } else y = x - 9; Kompakte Schreibweise. Lesbarkeit? Der ?-Operator

Kap 4: Vereinbarungen + Gültigkeit Vorl EINI-I" 22 Vereinbarungen von Namen Man unterscheidet in C++ für Namen die Deklaration von der Definition: –Deklaration: informiert den Compiler über den Typ einer Variablen –Definitionen: informiert den Compiler über Speicherplätze, Werte etc

Kap 4: Vereinbarungen + Gültigkeit Vorl EINI-I" 23 int x; const double z = 3.3; sind Definitionen, denn Speicherplätze und ggf. Werte werden dadurch festgelegt. Vereinbarungen

Kap 4: Vereinbarungen + Gültigkeit Vorl EINI-I" 24 extern float x; ist eine Deklaration: x ist vom Typ float, aber an anderer Stelle definiert: weder Speicherbereich noch ein Wert werden an dieser Stelle festgelegt. Der Name wird lediglich mit seinem Typ bekanntgemacht, u.a. damit der Compiler seine korrekte Verwendung überprüfen kann. Vereinbarungen

Kap 4: Vereinbarungen + Gültigkeit Vorl EINI-I" 25 Sichtweise des Compilers Information darüber, welche Art von Speicherbereich die Variable x einnehmen wird: das geschieht in der Deklaration für x Zuweisung des Speicherbereichs für x: das geschieht in der Definition für x ein Name kann nur einmal definiert, aber oft deklariert werden.

Kap 4: Vereinbarungen + Gültigkeit Vorl EINI-I" 26 Gültigkeit von Dekls und Defs Gültigkeit bedeutet: Bezug auf eine sichtbare Definition. Jede Variable muß vor ihrer Benutzung definiert sein. Preisfrage: wann ist eine Definition sichtbar? –Die Regeln zur Sichtbarkeit bestimmen, wann eine Benutzung an eine Definition gebunden ist.

Kap 4: Vereinbarungen + Gültigkeit Vorl EINI-I" 27 Gültigkeit etc. Definitionsbereiche sind: –Funktionsdefinitionen für lokale Variablen –Dateien Dateien sind Namensräume: Alle dort definierten Variablen sehen die Definition –Extern: mit extern kann auf Namen Bezug genommen werden, die in anderen Dateien definiert sind [in Dateien, nicht in den Funktionen!].

Kap 4: Vereinbarungen + Gültigkeit Vorl EINI-I" 28 Beispiel: Programm-Stücke in 4 Dateien 2 abgespeichert –Hauptprogramm: längste Zeile –Funktion LiesZeile –Funktion Kopiere –Fkt-Prototypen Beispiel: Gültigkeit

Kap 4: Vereinbarungen + Gültigkeit Vorl EINI-I" 29 längste_Zeile.cpp const int LaengsteLaenge = 1000; char Zeile[LaengsteLaenge], LaengsteZeile[LaengsteLaenge]; int LLaenge = LaengsteLaenge; int main() { int len, maxLaenge = 0;... } Definition; in der gesamten Datei sichtbar Definition; lokal für main

Kap 4: Vereinbarungen + Gültigkeit Vorl EINI-I" 30 void Kopiere() { const char Null = '\0'; int i=0; extern char Zeile[], LaengsteZeile[]; while (Zeile[i] != Null) { LaengsteZeile[i] = Zeile[i]; ++i; } LaengsteZeile[i] = Zeile[i]; } Kopiere.cpp

Kap 4: Vereinbarungen + Gültigkeit Vorl EINI-I" 31 int LiesZeile() { const char Null = '\0', Ende = ZeilenEnde = '\n'; char c; int i; extern int LLaenge; extern char Zeile[];... } lokal extern LiesZeile.cpp int LiesZeile() { const char Null = '\0', Ende = ZeilenEnde = '\n'; char c; int i; extern int LLaenge; extern char Zeile[];... } int LiesZeile() { const char Null = '\0', Ende = ZeilenEnde = '\n'; char c; int i; extern int LLaenge; extern char Zeile[];... }

Kap 4: Vereinbarungen + Gültigkeit Vorl EINI-I" 32 Namensanalyse LaengsteZeile : –definiert in der Datei für das Hauptprogramm ( main ) also dort mit Speicherplatz versehen –als extern deklariert in der Datei Kopiere.cpp also dort als Name bekannt len : lokal für main ZeilenEnde : lokal für LiesZeile

Kap 4: Vereinbarungen + Gültigkeit Vorl EINI-I" 33 Zwiebelschalen Namen können innerhalb von Funktionen an beliebiger Stelle definiert werden, –{...} stellen dann Blöcke dar, die ineinander geschachtelt sind. Regel: von innen nach außen beim Ermitteln der jeweils gültigen Definition. Beispiel: Zwiebelschalen

Kap 4: Vereinbarungen + Gültigkeit Vorl EINI-I" 34 Zwiebelschalen (Bild) #include int c = -568; int main() { cout << "c zum ersten " << c << endl; float c = ; { cout << "\tc zum zweiten " << c << endl; char c[] = "ganz innen"; cout << "\t\tc jetzt: " << c << endl; } cout << "\tc jetzt wieder: " << c << endl; }

Kap 4: Vereinbarungen + Gültigkeit Vorl EINI-I" 35 Statische Variablen Mittelding zwischen globalen und lokalen Variablen: –lokale Variablen leben nur, wenn die Funktion, in der sie deklariert sind, aktiv ist. –statische Variablen leben während der gesamten Laufzeit des Programms, sind aber nur innerhalb ihres Definitionsbereichs zugreifbar. –globale Variablen sind überall im Programm zugreifbar. Statische Variablen Beispiel:

Kap 4: Vereinbarungen + Gültigkeit Vorl EINI-I" 36 Statische Variablen Unterschied zu lokalen Variablen: –statische Variablen behalten ihren Wert zwischen zwei Aufrufen, –lokale Variablen werden bei jedem Aufruf neu angelegt (der letzte Wert geht daher verloren)

Kap 4: Vereinbarungen + Gültigkeit Vorl EINI-I" //K4-P4: Statische Variable // // Demonstriert statische Variable // #include void demoStatisch(); // Funktionsprototyp int Global = 9; main() { int i; for(i=0; i < 3; ++i) { cout <<"\nDurchlauf i = "<< i << " :"; demoStatisch(); } Global++; cout << "\nGlobal in main: " << Global << endl; }

Kap 4: Vereinbarungen + Gültigkeit Vorl EINI-I" void demoStatisch() { static Statisch = 9; int nurLokal = 9; // Erinnerung: cout <<"Durchlauf i = "<< i << " :" cout << "\nGlobal in demoStatisch: " << Global << endl; Global++; cout << "\tStatisch in demoStatisch: " << Statisch << endl; Statisch++; cout << "\t\tnurLokal in demoStatisch: " << nurLokal << endl; nurLokal++; } Ausführen