EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido

Slides:



Advertisements
Ähnliche Präsentationen
Einführung in die Programmiersprache C/C++
Advertisements

Ziele von EINI I + II Einführen in „Informatik“
Funktionen und Module Einführung anhand des Beispiels Wörter sortieren Timm Grams Fachhochschule Fulda Fachbereich Elektrotechnik und Informationstechnik.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Claudio Moraga; Gisbert Dittrich
der Universität Oldenburg
Indirekte Adressierung
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 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
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.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Variable Feld Vereinbarung Zuweisung Block while-Schleife Bedingte Anweisung (if) Typ.
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)
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Repetitorium PG : Gültigkeit, Sichtbarkeit & Operatorüberladung FH-Darmstadt, FB Informatik.
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 Programmiersprache C 3.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
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.
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 (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 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
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 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 Programmierung
Auslegung eines Vorschubantriebes
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
1 // Laengste Zeile bestimmen // // Liest die Eingabe Zeichen fuer Zeichen, bis // das erscheint. // Die laengste Zeile wird ausgegeben (bei.
Funktionen. Aufgabe : Eingabe zweier Zahlen ---> Minimum bestimmen Dann nochmals Eingabe zweier Zahlen ---> Minimum bestimmen.
Einführung in die Programmierung
Einführung in die Programmierung
Einführung in die Programmierung
 Präsentation transkript:

EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido

Kap 4: Vereinbarungen + GültigkeitVorl EINI-I"Prof. Dr. G. Dittrich Gliederung Kapitel 4 Vereinbarungen + Gültigkeit –Vorweg: Beispiel Längste Zeile bestimmen +... –Beispiel: Aufteilen auf 4 Dateien 1 –Vereinbarungen –Gültigkeit –Beispiel: Aufteilen auf 4 Dateien 2 –Namensanalyse –Zwiebelschalen –Statische Variablen

Kap 4: Vereinbarungen + GültigkeitVorl EINI-I"Prof. Dr. G. Dittrich 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ültigkeitVorl EINI-I"Prof. Dr. G. Dittrich Beispiel: lokale Variablen int LiesZeile(char [], int); void Kopiere(char [], char []); int main() { const int LaengsteLaenge = 1000; int len, maxLaenge = 0; char Zeile[LaengsteLaenge]; char LaengsteZeile[LaengsteLaenge]; while (...) {... } cout <<... << endl;... } lokal

Kap 4: Vereinbarungen + GültigkeitVorl EINI-I"Prof. Dr. G. Dittrich 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ültigkeitVorl EINI-I"Prof. Dr. G. Dittrich 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ültigkeitVorl EINI-I"Prof. Dr. G. Dittrich 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ültigkeitVorl EINI-I"Prof. Dr. G. Dittrich 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]; // Hier wird das Ende-Zeichen gesetzt } Effekt: die Zeichenkette von wird in die Zeichenkette nach kopiert. Vereinbare im folgenden Null als '\0':

Kap 4: Vereinbarungen + GültigkeitVorl EINI-I"Prof. Dr. G. Dittrich 9 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ültigkeitVorl EINI-I"Prof. Dr. G. Dittrich 10 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ültigkeitVorl EINI-I"Prof. Dr. G. Dittrich 11 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ültigkeitVorl EINI-I"Prof. Dr. G. Dittrich 12 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ültigkeitVorl EINI-I"Prof. Dr. G. Dittrich 13 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ültigkeitVorl EINI-I"Prof. Dr. G. Dittrich 14 (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ültigkeitVorl EINI-I"Prof. Dr. G. Dittrich 15 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ültigkeitVorl EINI-I"Prof. Dr. G. Dittrich 16 Beispiel: Programm-Stücke in 4 Dateien abgespeichert –Hauptprogramm:längste Zeile –Funktion LiesZeile –Funktion Kopiere –Fkt-Prototypen Beispiel: Zerlegung in 4 Dateien 1

Kap 4: Vereinbarungen + GültigkeitVorl EINI-I"Prof. Dr. G. Dittrich Beispiel: Zerlegung in 4 Dateien 1 Verbindung der Dateien über Linker:

Kap 4: Vereinbarungen + GültigkeitVorl EINI-I"Prof. Dr. G. Dittrich 18 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ültigkeitVorl EINI-I"Prof. Dr. G. Dittrich 19 int x; const double z = 3.3; sind Definitionen, denn Speicherplätze und ggf. Werte werden dadurch festgelegt. Vereinbarungen

Kap 4: Vereinbarungen + GültigkeitVorl EINI-I"Prof. Dr. G. Dittrich 20 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ültigkeitVorl EINI-I"Prof. Dr. G. Dittrich 21 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ültigkeitVorl EINI-I"Prof. Dr. G. Dittrich 22 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ültigkeitVorl EINI-I"Prof. Dr. G. Dittrich 23 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ültigkeitVorl EINI-I"Prof. Dr. G. Dittrich 24 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ültigkeitVorl EINI-I"Prof. Dr. G. Dittrich 25 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ültigkeitVorl EINI-I"Prof. Dr. G. Dittrich 26 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ültigkeitVorl EINI-I"Prof. Dr. G. Dittrich 27 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ültigkeitVorl EINI-I"Prof. Dr. G. Dittrich 28 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ültigkeitVorl EINI-I"Prof. Dr. G. Dittrich 29 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ültigkeitVorl EINI-I"Prof. Dr. G. Dittrich 30 Zwiebelschalen (Bild) 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ültigkeitVorl EINI-I"Prof. Dr. G. Dittrich 31 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ültigkeitVorl EINI-I"Prof. Dr. G. Dittrich 32 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)