Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido"—  Präsentation transkript:

1 EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido dittrich@cs.uni-dortmund.de

2 Kap 6: StrukturenVorl EINI-I"Prof. Dr. G. Dittrich 2 9.12.1999 Gliederung Kapitel 6: Strukturen Zusammengesetzte Strukturen: struct Beispiel Buchdaten (einfach) Vereinbarung Zugriff u.a. unter Verwendung von Zeigern Verwendung Beispiel Buchdaten (komplexer) Karteikarte KarteLesen Aufruf Namensraum

3 Kap 6: StrukturenVorl EINI-I"Prof. Dr. G. Dittrich 3 Zusammengesetzte Strukturen Möchte die Daten von Büchern verwalten (Daten eines Buchs sollen logisch zusammengefügt werden). Buch- Daten jahr (int) seiten (int) preis (float)

4 Kap 6: StrukturenVorl EINI-I"Prof. Dr. G. Dittrich 4 Name der Komponenten Typ der Komponentenstructs Name der struct Vereinbarung durch –Angabe der einzelnen Komponenten –mit Namen und Typ: struct BuchDaten { int jahr, seiten; float preis; };

5 Kap 6: StrukturenVorl EINI-I"Prof. Dr. G. Dittrich 5 Anmerkungen zu struct Name der Struktur ist zugleich Typname. –damit können Variable und Konstanten deklariert werden: BuchDaten meineDaten ; Danach hat die Variable meineDaten den Typ BuchDaten Zugriff auf die Komponenten ( jahr, seiten, preis ) durch Qualifikation: meineDaten.jahr

6 Kap 6: StrukturenVorl EINI-I"Prof. Dr. G. Dittrich 6 Anmerkungen zu struct Beispiel (Zuweisung über Komponenten) meineDaten.jahr = GanzeZahlLesen("Jahr: "); meineDaten.seiten = GanzeZahlLesen ("Seiten: "); meineDaten.preis = ReelleZahlLesen("Preis: "); Andere Möglichkeit durch Zuweisung einer vollständigen struct (vom Typ BuchDaten ) meineDaten = dieseDaten Über Verwendung von Zeigern (analog)

7 Kap 6: StrukturenVorl EINI-I"Prof. Dr. G. Dittrich 7 Zuweisung unter Verwendung von Zeigern: Z.B.: Gib die Adresse eines Elements von Buchdaten an, schreibe die eingelesenen Daten "an die entsprechende Adresse": BuchDaten meineDaten LiesBuchDaten (&meineDaten); Die Funktion LiesBuchDaten ist so definiert: Anmerkungen zu struct

8 Kap 6: StrukturenVorl EINI-I"Prof. Dr. G. Dittrich 8 Anmerkungen struct int GanzeZahlLesen (char *); float ReelleZahlLesen (char *); void LiesBuchDaten (BuchDaten *bd) { bd->jahr = GanzeZahlLesen ("Jahr: "); bd->seiten = GanzeZahlLesen ("Seiten: "); bd->preis = ReelleZahlLesen ("Preis: "); } Zeiger auf Typ BuchDaten Zuweisung an Komponenten bd->jahr steht für (*bd).jahr Signatur benutzter Funktionen

9 Kap 6: StrukturenVorl EINI-I"Prof. Dr. G. Dittrich 9 Anmerkungen struct Also: –in der Funktionsdefinition wird als formaler Parameter verwendet Zeiger auf Element vom Typ BuchDaten. –im Rumpf der Definition Zugriff durch Dereferen- zieren Beispiel: Die Komponente jahr wird angesprochen als (*bd).jahr, abgekürzt als bd->jahr –Aufruf : Im Beispiel: mit konkreter Adresse &meineDaten

10 Kap 6: StrukturenVorl EINI-I"Prof. Dr. G. Dittrich 10 Anmerkungen struct Vereinbarung konstanter structs durch Angabe der Werte: const BuchDaten dieseDaten = {1997,234,14.70};

11 Kap 6: StrukturenVorl EINI-I"Prof. Dr. G. Dittrich 11 Anmerkungen zu {..} Allgemein: –Wertangaben bei der Definition zur gleichzeitigen Initialisierung mehrerer Werte können in geschweiften Klammern {..} angegeben werden. Weiteres Beispiel: char s[4] = {'a', 'b', 'c', \0'}; (wirkt wie die Zeichenkette s="abc")

12 Kap 6: StrukturenVorl EINI-I"Prof. Dr. G. Dittrich 12 Beispiel Karteikarte für ein Buch soll enthalten:

13 Kap 6: StrukturenVorl EINI-I"Prof. Dr. G. Dittrich 13 Beispiel const int autorMax = 75, titelMax = 100, verlagMax = 128; struct karteikarte { char autor [autorMax]; char titel [titelMax]; char verlag [verlagMax]; BuchDaten dieDaten; }; Direkte Umsetzung der angegebenen Spezifi- kation für die Daten. Strukturen können selbst Strukturen enthalten

14 Kap 6: StrukturenVorl EINI-I"Prof. Dr. G. Dittrich 14 Buchdatei void AngabeLesen (char *, char *, int); void KarteLesen(int i, karteikarte * k){ cout << "Buch Nr. :" << (i + 1) << endl; AngabeLesen("Autor: ", k->autor, autorMax); AngabeLesen("Titel: ", k->titel, titelMax); AngabeLesen("Verlag : ", k->verlag, verlagMax); LiesBuchDaten (&(k->dieDaten)); }

15 Kap 6: StrukturenVorl EINI-I"Prof. Dr. G. Dittrich 15 KarteLesen/Buchdatei Der Aufruf KarteLesen (17, &ka) liest die Karte Nr. 17 ein und speichert sie unter der Adresse &ka (wobei vereinbart ist Karteikarte ka) Programm: KKarte als struct

16 Kap 6: StrukturenVorl EINI-I"Prof. Dr. G. Dittrich 16 KarteLesen/Buchdatei Jedes struct hat seinen eigenen Namensraum struct eins { int x; char *t; } struct zwei { float x; int t; } unabhängig voneinander


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

Ähnliche Präsentationen


Google-Anzeigen