Strukturen (Eigenschaften) Strukturen dienen zur Zusammenfassung mehrerer Komponenten verschiedener Typen zu einer Einheit, die dann mit gemeinsamen Namen.

Slides:



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

Imperative Programmierung
Imperative Programmierung
der Universität Oldenburg
Strukturen in C Spelz, Sievers, Bethke.
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Variablen und Datentypen
Seminar: "Einführung in C/C++" Einführung in die Programmiersprache C/C++ Donnerstag Andreas Döring SS 2004.
der Universität Oldenburg
der Universität Oldenburg
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof Indirekte Adressierung Richard Göbel. FH-Hof Einfache Speicherung von Daten Eine "einfache" Deklaration definiert direkt eine Speicherplatz für.
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. Ein Vergleich aus dem täglichen Leben...
Dynamisches Array als "verkettete Liste". Ein Vergleich.
Dynamischer Speicher und Struktur
Klassenvariable. Da man für jede Kuh bzw. jede Henne auf dem Markt den gleichen Preis für ein Liter Milch, bzw. den gleichen Preis für ein Ei bekommt,
Objekte werden als Adressen (Referenzen) übergeben. Dies führt manchmal zu unerwarteten Ergebnissen...
Polymorphie (Vielgestaltigkeit)
Polymorphie (Vielgestaltigkeit)
Objekte und Arbeitsspeicher
Dynamischer Speicher. In einer Funktion wird z.B. mit der Deklaration int i; Speicher auf dem sogenannten Stack reserviert. Wenn die Funktion verlassen.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Variable Feld Vereinbarung Zuweisung Block while-Schleife Bedingte Anweisung (if) Typ.
Vorbereitung: struct SX { int x; struct SX *p; } *px, *ph; px: Zeiger auf Listen- anfang ph: Hilfszeiger px = NULL; px zeigt auf leere Liste px.
Verkettete Liste Visualisierung. New-Operator Mit dem New-Operator kann zur Laufzeit (dynamisch) Speicherplatz reserviert und angelegt werden Vorteil:
Einführung in Visual C++
DVG Felder1 Felder. DVG Felder 2 Was sind Felder? Felder sind Reihungen aus endlich vielen Elementen gleichen Typs. Z.B.: Vektoren : (x.
Arrays,Strings&Pointer in C/C++
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
Wichtige Fachausdrücke in C
Informatik Grundlagen, WS04, Seminar 11
Programmieren in C Zeichen-/Stringfunktionen Dynamischer Speicher
Repetitorium PG : Pointer FH-Darmstadt, FB Informatik.
Einführung in die Programmiersprache C 3.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.
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.
Dynamische Datentypen
Variablenkonzept Klassisch, in Java Basistyp
Programmieren in C Grundlagen C 2
5. Zeiger und komplexe Datenstrukturen
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
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.
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
C Tutorium – Memory Management – Knut Stolze. 2 Agenda Einführung in die Speicherverwaltung Stack vs. Heap Malloc Free Sizeof Tipps/Hinweise.
Dynamisches Array als "verkettete Liste". Ein Vergleich.
Pointer. Grundsätzliches: Im Arbeitsspeicher werden Daten gespeichert. Um auf die Daten eindeutig zugreifen zu können, werden diesen Daten Adressen zugeordnet.
Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.
Pointer. Precompiled Header  Vorübersetzung eingebundener Dateien häufig genutzt, selten geändert  Projekttyp „Win32 Console Application“
TRUE und FALSE in C Der Wert 0 steht für FALSE Jeder von 0 verschiedene Wert steht für TRUE FALSE wird als 0 dargestellt TRUE wird als 1 dargestellt.
Variablen und Operatoren. C++ Teil 2: Grundstrukturen Variablen Operatoren Kontrollstrukturen Funktionen Header-Dateien Pointer und Referenzen.
Tutorium Software-Engineering SS14 Florian Manghofer.
Tutorium Software-Engineering SS14 Florian Manghofer.
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.
Funktionen (Zweck und Eigenschaften) Funktionen sind Unterprogramme, die einen bestimmten Zweck erfüllen Sie zerlegen Probleme in kleine, abgeschlossene.
Inhalte der Übungen 1.Grundlagen, Ein- und Ausgabe 2.Kontrollstrukturen (Projekt 1) 3.Funktionen 4.Zeiger, Felder (Projekt 2) 5.Strings, Strukturen 6.Fileverarbeitung.
Pointer. * und &  Bei der Definition int var1; ○ // „normale“ Variable int *var2; ○ // Zeiger auf einen Integer int *var2 = NULL; ○ // … incl. Initialisierung.
Dr. Wolfram Amme, Automatische Speicherverwaltung, Informatik II, FSU Jena, SS Automatische Speicherverwaltung.
Arrays (Eigenschaften)
Referenzen In c kennen wir gewöhnliche Variablen und Pointer.
Raphael Fischer Informatik II - Übung 05 Raphael Fischer
«Delegierter» Methoden Schablone Funktionszeiger
Implementieren von Klassen
Schleifen Datenfelder (Arrays) Verzweigungen
 Präsentation transkript:

Strukturen (Eigenschaften) Strukturen dienen zur Zusammenfassung mehrerer Komponenten verschiedener Typen zu einer Einheit, die dann mit gemeinsamen Namen angesprochen werden können. Sie belegen einen zusammenhängenden Speicherblock Regeln vgl. Kompaktreferenz S 105

Strukturdeklaration Beispiel: struct student { char name[21]; //Nachname char vorname[21]; //Vorname long nummer; //Matrikelnummer int punkte[4]; //Beurteilung };

Definition von Variablen Die Deklaration beschreibt den Aufbau der Struktur. Es wird noch keine Variable angelegt. Dies geschieht mit: struct student s1, s2; struct student f[120]; struct student *ps;

Zugriff auf Komponenten Der Zugriff auf Komponenten erfolgt mit Hilfe des Punktoperators: struct student s; strcpy(s.name, “Huber“); strcpy(s.vorname, “Franz“); s.nummer = ; s.punkte[0] = 7;

Initialisierung von Strukturvariablen Strukturvariable können ähnlich wie Felder bei ihrer Definition auch initialisiert werden: struct student s = { “Huber“, “Franz“, , {7,10,8,60} };

Erlaubte Operationen mit Strukturen Zuweisung kompletter Strukturvariablen (im ANSI-C Standard erlaubt) struct student s1, s2; s2 = s1; Anwendung von Adress- und sizeof- Operatoren struct student *p = &s1; printf(“%d“, sizeof(s1));

Nicht erlaubte Operationen mit Strukturen Vergleich ganzer Strukturvariablen struct student s1, s2; if(s1 < s2) {...} //falsch Strukturvariable können nur komponentenweise verglichen werden. Explizite Typumwandlung ist nicht möglich. struct student s; struct person p; p = (struct person) s; //falsch

Zugriff über Pointer, Pfeiloperator Wird mit sp=&s; im Pointer sp die Adresse von s abgespeichert, so müssten die einzelnen Komponenten z.B. mit (*sp).nummer = ; angesprochen werden. Da diese kompliziert zu schreibende Anweisung oft benötigt wird, gibt es einen speziellen Operator (den Pfeiloperator): sp->nummer = ;

Strukturen als Funktionsparameter Da im ANSI-C die Zuweisung ganzer Strukturen erlaubt ist, können Strukturvariable wie ganz normale Variable by Value an Funktionen übergeben werden und mit Hilfe von return retourniert werden. Besser ist jedoch die Übergabe by Reference, da andernfalls jedes Mal die ganze Struktur am Stack kopiert wird.

Übung 7_1 Es ist ein Programm zu schreiben, das maximal 20 Sätze von Personendaten(Name, Vorname, Alter) einliest und anschließend die Daten der ältesten Person ausgibt.

Dynamische Speicherverwaltung Mit Hilfe dynamischer Speicherverwaltung wird Speicher für einzelne Variable oder Felder erst zur Laufzeit angefordert. Dieser Speicher liegt nicht am Stack, sondern am sog. freien Speicher oder Heap Dynamisch angeforderter Speicher muss wieder freigegeben werden.

Dynamische Speicherverwaltung In C erfolgt dynamische Speicherverwaltung über Funktionen: void *malloc( size_t size ); Fordert Speicher der Größe size Bytes an und schickt bei Erfolg die Adresse, sonst NULL zurück. void free( void *memblock ); Gibt den ab der Adresse memblock dynamisch angeforderten Speicherbereich wieder frei.

Beispiel Das folgende Beispiel zeigt die dynamische Speicherverwaltung an Hand eines Integerfeldes: int *p, n = 100, i; // Anforderung des Feldes p = malloc(n * sizeof(int)); // p = (int *) malloc(n * sizeof(int)); // Abarbeitung for(i=0; i<n; i++) p[i] = i*i; // Freigabe des Speichers free(p);

Übung 7_2 Lesen Sie maximal 200 Strings über die Tastatur, speichern Sie die Strings dynamisch mit Hilfe eines Feldes von char- Pointern möglichst platzsparend, sortieren Sie die Strings und geben Sie die sortierten Strings wieder aus.