EDV1 - Komplexe Datentypen

Slides:



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

Objektorientierte Programmierung
Imperative Programmierung
Imperative Programmierung
Strukturen in C Spelz, Sievers, Bethke.
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Kritische Betrachtung
Pascal-Datentypen Skalare Typen Zeiger- Typen Strukturierte Typen
der Universität Oldenburg
FH-Hof Extensible Markup Language Richard Göbel. FH-Hof Extensible Markup Language XML XML ist universeller Ansatz für die Strukturierung von Zeichenketten.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Listen Richard Göbel.
Indirekte Adressierung
FH-Hof Indirekte Adressierung Richard Göbel. FH-Hof Einfache Speicherung von Daten Eine "einfache" Deklaration definiert direkt eine Speicherplatz für.
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Strukturen. In einer Struktur kann eine beliebige Anzahl von Komponenten (Daten) mit unterschiedlichen Datentypen (im Gegensatz zu Feldern) zusammengefaßt.
Dynamischer Speicher und Struktur
Objekte werden als Adressen (Referenzen) übergeben. Dies führt manchmal zu unerwarteten Ergebnissen...
Parameterübergabe von zweidimensionalen Feldern in Funktionen.
Polymorphie (Vielgestaltigkeit)
Polymorphie (Vielgestaltigkeit)
Objekte und Arbeitsspeicher
V AdresseWert public static void main(...){ int[] v; v=new int[2]; } Was veranlasst diese Anweisung im Arbeitsspeicher ? Es wird im Arbeitsspeicher.
Dynamischer Speicher. In einer Funktion wird z.B. mit der Deklaration int i; Speicher auf dem sogenannten Stack reserviert. Wenn die Funktion verlassen.
ARRAY oder FELD oder VEKTOR
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
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 10 Claudio Moraga; Gisbert Dittrich FBI Unido
Java-Kurs - 2. Übung Entwicklungsumgebung Struktur von Programmen
Programmieren mit JAVA
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Zusammenfassung Vorwoche
Einführung in Visual C++
14StrukturKlasse1 Von der Struktur zur Klasse von C zu C++ Von Jens Hoffmann
DVG Felder1 Felder. DVG Felder 2 Was sind Felder? Felder sind Reihungen aus endlich vielen Elementen gleichen Typs. Z.B.: Vektoren : (x.
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Klassendefinitionen in Java
CuP - Java Elfte Vorlesung Montag, 11. November 2002.
Einführung in die Programmiersprache C 4
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Variablenkonzept Klassisch, in Java Basistyp
Arduino Kurs Abend 2.
Datentypen Überblick Datentypen Einfache / fundamentale Datentypen
Programmieren in C Grundlagen C 2
BMEVIEEA100 Grundlagen der Programmierung
Programmiervorkurs WS 2014 Referenzdatentypen
5. Zeiger und komplexe Datenstrukturen
CSS Cascading Style Sheets
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
Java-Kurs - 3. Übung Hausaufgabe Arrays For-Schleifen.
Pointer. Grundsätzliches: Im Arbeitsspeicher werden Daten gespeichert. Um auf die Daten eindeutig zugreifen zu können, werden diesen Daten Adressen zugeordnet.
Variablen und Operatoren. C++ Teil 2: Grundstrukturen Variablen Operatoren Kontrollstrukturen Funktionen Header-Dateien Pointer und Referenzen.
Pointer, Arrays und verkettete Listen. Mehrdimensionale Arrays  Pointer auf ein Array von Pointern  int32 **matrix = new int32*[3];  matrix: Zeiger.
Tutorium Software-Engineering SS14 Florian Manghofer.
C++ FÜR cOMPUTERSPIELENTWICKLER
4. GBB Green & Blue Building Conference GBB Green & Blue Building Conference 2013 Vortragstitel Titel. Vorname Nachname, Jobtitel Unternehmen Optionales.
Strukturen (Eigenschaften) Strukturen dienen zur Zusammenfassung mehrerer Komponenten verschiedener Typen zu einer Einheit, die dann mit gemeinsamen Namen.
Gruen gruen gruen sind alle meine Kleider Gruen gruen gruen ist alles was ich hab Darum lieb ich alles was so gruen ist Weil mein Schatz ein Jaeger ist.
Arrays in Java Ein Array ist eine Variable, die aus einer An-zahl von Elementen des gleichen Datentyps besteht, die aufeinanderfolgend im Speicher liegen.
Arrays in C Ein Array ist eine Variable, die aus einer Anzahl von Elementen des gleichen Datentyps besteht, die aufeinanderfolgend im Speicher liegen.
 Präsentation transkript:

EDV1 - Komplexe Datentypen

EDV1 - Komplexe Datentypen 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). EDV1 - Komplexe Datentypen

EDV1 - Komplexe Datentypen 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] ; EDV1 - Komplexe Datentypen

EDV1 - Komplexe Datentypen 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; EDV1 - Komplexe Datentypen

EDV1 - Komplexe Datentypen 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}]; EDV1 - Komplexe Datentypen

EDV1 - Komplexe Datentypen 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"}; EDV1 - Komplexe Datentypen

EDV1 - Komplexe Datentypen 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); EDV1 - Komplexe Datentypen

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; }; EDV1 - Komplexe Datentypen

EDV1 - Komplexe Datentypen 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); EDV1 - Komplexe Datentypen

EDV1 - Komplexe Datentypen 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); EDV1 - Komplexe Datentypen

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. EDV1 - Komplexe Datentypen

EDV1 - Komplexe Datentypen 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. EDV1 - Komplexe Datentypen

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 = {...}; EDV1 - Komplexe Datentypen