Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

EDV1 - Komplexe Datentypen Komplexe Datentypen. EDV1 - Komplexe Datentypen 2 Aus primitiven Datentypen lassen sich komplexe Datentypen zusammensetzen.

Ähnliche Präsentationen


Präsentation zum Thema: "EDV1 - Komplexe Datentypen Komplexe Datentypen. EDV1 - Komplexe Datentypen 2 Aus primitiven Datentypen lassen sich komplexe Datentypen zusammensetzen."—  Präsentation transkript:

1 EDV1 - Komplexe Datentypen Komplexe Datentypen

2 EDV1 - Komplexe Datentypen 2 Aus primitiven Datentypen lassen sich komplexe Datentypen zusammensetzen. –Aufzählung (enum) –Struktur (struct) –Union (union) Für Datentypen können neue Namen definiert werden (typedef).

3 EDV1 - Komplexe Datentypen 3 Aufzählungstypen Allgemeine Definition: enum [typname] [{name1[=wert1],...,nameN[=wertN]}] [var1[=val1]],...,[varM[=valM]] ; –Es wird der Aufzählungstyp typname definiert. –Variablen dieses Typs können die Werte name1, name2,..., nameN annehmen. –Jeder Wert name1,...,nameN entspricht einer ganzen Zahl, der als wert1,...,wertN angegeben werden kann. –Wird wert1 nicht angegeben, der Wert 0 benutzt. –Wird ein anderer Wert nicht angegeben, wird der vorhergehende Wert + 1 benutzt. –Die Variablen var1,...,varM werden definiert ggf. und mit den Werten val1,...,valM initialisiert. Weitere Variablen des gleichen Typs werden dann definiert durch: enum typname var1[=val1],...,varM[=valM] ;

4 EDV1 - Komplexe Datentypen 4 Typdefinition und Variabelendefinition können getrennt werden: enum typname {name1[=wert1],...,nameN[=wertN]} ; enum typname var1[=val1],...,varM[=valM] ; Beispiel: enum farben {rot, gruen, blau, weiss, schwarz} fg=schwarz, bg=weiss; enum colors {red, rot=red, gruen, green=gruen, blau, blue=blau}; Vorteile: –Texte können selbsterklärend sein. –Variablen können nur eingeschränkte Werte annehmen. –Enum-Variablen werden automatisch nach int konvertiert, können also auch als Feldindex verwendet werden. int index[10]; index[weiss]=22; index[rot]=123;

5 EDV1 - Komplexe Datentypen 5 Strukturen Allgemeine Definition: struct [typname] {typ1 elem1; typ2 elem2;...;typN elemN;} [var1[={val11,...,val1N}]],..., [varM[={valM1,...,valMN}]]; Es wird eine Struktur mit dem Namen typname definiert. Diese besteht aus den Komponenten elem1,...,elemN, die vom Typ typ1,...,typN sind. Es werden die Variablen var1,...,varM vom Typ typname erzeugt und mit den Werten vali1,...,valiN initialisiert. Die Komponenten der Struktur können nicht mit Standardwerten belegt werden. Zugriff auf die Komponenten: vari.elemj Definition der Struktur und der Variablen kann getrennte werden: struct typname {typ1 elem1; typ2 elem2;...;typN elemN;} ; struct typname var1[={val11,...,val1N}],..., varM[={valM1,...,valMN}];

6 EDV1 - Komplexe Datentypen 6 Beispiel enum geschlechter {weiblich, maennlich}; struct person { char vorname[20]; char nachname[40]; char anrede[10]; unsigned int alter; geschlechter geschlecht; char land[40]; char ort[20]; unsigned int plz; char strasse[50]; }; struct person mueller={"Egon","Mueller","Herr", 99,maennlich,"Deutschland","Berlin",1000, "Unbekannte Str. 123"};

7 EDV1 - Komplexe Datentypen 7 printf( "Name : %s %s %s\n" "Alter : %u\n" "geschlecht : %s\n" "Adresse:\n%s\n%u %s\n%s\n", mueller.anrede, mueller.vorname, mueller.nachname, mueller.alter, (mueller.geschlecht==weiblich?"weiblich":"maennlich"), mueller.strasse, mueller.plz, mueller.ort, mueller.land);

8 EDV1 - Komplexe Datentypen 8 Schachtelung von Strukturen Die Definitionen von Strukturen können geschachtelt werden. Z.B.: enum geschlechter {weiblich, maennlich}; struct name { char vorname[20]; char nachname[40]; char anrede[10]; }; struct adresse { char land[40]; char ort[20]; unsigned int plz; char strasse[50]; }; struct person { struct name cname; unsigned int alter; geschlechter geschlecht; struct adresse addr; };

9 EDV1 - Komplexe Datentypen 9 struct person mueller={"Egon","Mueller","Herr", 99,maennlich,"Deutschland","Berlin",1000, "Unbekannte Str. 123"}; printf( "Name : %s %s %s\n" "Alter : %u\n" "geschlecht : %s\n" "Adresse:\n%s\n%u %s\n%s\n", mueller.cname.anrede, mueller.cname.vorname, mueller.cname.nachname,mueller.cname.alter, (mueller.geschlecht==weiblich?"weiblich":"maennlich"), mueller.addr.strasse, mueller.addr.plz, mueller.addr.ort, mueller.addr.land);

10 EDV1 - Komplexe Datentypen 10 Analogie zu JAVA public class typname { typ1 elem1;... typN elemN; typname(){super()}; typname(typ1 elem1,...,typN elemN) { this.elem1=elem1;... this.elemN=elemN; } } typname var1=new typname(val11,...,val1N);... typname varM=new typname(valM1,...,valMN);

11 EDV1 - Komplexe Datentypen 11 Pointer und Strukturen Wir definieren einen pointer auf eine Struktur: struct typname *zeiger; Zugriff auf die i-te Komponente der Struktur: (*zeiger).elemi Äquivalent kann geschrieben werden: zeiger->elemi Strukturen eignen sich sehr gut zur Programmierung von Listen. Um Listen programmieren zu können, muss man die Listenelement miteinander verketten, d.h. jedes Listenelement muss einen Zeiger auf das nächste Listenelement enthalten: struct listenelement { struct listenelement *next; struct listenelement *prev;... }; Daher dürfen in der Definition der Struktur Zeiger auf den noch nicht fertig definierten Strukturtyp verwendet werden.

12 EDV1 - Komplexe Datentypen 12 Unions Unions werden genauso definiert wie Strukturen. Im Unterschied zu Strukturen liegen alle Elemente auf dem selben Platz im Speicher, d.h. der selbe Speicherbereichkann unterschiedlich interpretiert werden. Allgemeine Definition: union [typname] {typ1 elem1; typ2 elem2;...;typN elemN;} [var1[={val1}]],...,varM[={valM}]]; Der Initialisierungswert wird immer dem ersten Element zugewiesen. Verwendung z.B.: –Ein Speicherbereich soll unterschiedlich interpretiert werden, z.B. um bei einer Variablen auf die interne Darstellung zugreifen zu können. –In einer Struktur soll die Interpretation bestimmter Felder vom Inhalt anderer Felder abhängen.

13 EDV1 - Komplexe Datentypen 13 Definition neuer Typen Mit Hilfe der typedef -Anweisung können neue Variabelentypen definiert werden. typedef alttyp neutyp; Nach der Definition eines Typs kann dieser genau so benutzt werden, wie die vordefinierten Typen. Beispiel: typedef long int longint; longint i, j; struct person {... }; typdef struct person persontyp; persontyp mueller = {...};


Herunterladen ppt "EDV1 - Komplexe Datentypen Komplexe Datentypen. EDV1 - Komplexe Datentypen 2 Aus primitiven Datentypen lassen sich komplexe Datentypen zusammensetzen."

Ähnliche Präsentationen


Google-Anzeigen