5. Abgeleitete Datentypen

Ähnliche Dokumente
5. Abgeleitete Datentypen

Abgeleitete Datentypen

Zeiger (Pointers) und Adressen

Informatik I (D-ITET)

Algorithmen und Datenstrukturen

9. Vektoren. (auch Felder/array)

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 29

Grundlagen der Programmierung in C++ Arrays und Strings, Teil 1

Grundlagen der Informatik 6. Arrays I

9. Funktionen Teil II

Grundlagen und Konzepte von C Datenstrukturen

Programmierkurs C++ Variablen und Datentypen

Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften

8. Referenzen und Zeiger

Variablen, Konstanten und Datentypen

Programmieren in C. Speicher anfordern, Unions und Bitfelder. Prof. Dr. Nikolaus Wulff

Programmieren in C/C++ und MATLAB

C++ Teil 5. Sven Groß. 13. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 18

Informatik. Wiederholung Felder (Arrays), string. Vorlesung

Informatik. Strukturen und Aufzählungstypen. Vorlesung

C++ Teil 5. Sven Groß. 16. Nov Sven Groß (IGPM, RWTH Aachen) C++ Teil Nov / 16

Angewandte Mathematik und Programmierung

C++ - Einführung in die Programmiersprache Zeiger, Referenzen und Strukturen. Leibniz Universität IT Services Anja Aue

Exercise 6. Compound Types and Control Flow. Informatik I für D-MAVT. M. Gross, ETH Zürich, 2017

C++ Notnagel. Ziel, Inhalt. Programmieren in C++

Dynamische Datentypen. Destruktor, Copy-Konstruktor, Zuweisungsoperator, Dynamischer Datentyp, Vektoren

Praxis der Programmierung

Programmierung und Angewandte Mathematik

C++ Teil 5. Sven Groß. 8. Mai IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 8. Mai / 16

Grundlagen der Informatik 2. Typen

RO-Tutorien 3 / 6 / 12

Einstieg in die Informatik mit Java

Propädeutikum. Dipl.-Inf. Frank Güttler

RO-Tutorien 15 und 16

int i=1; //Integerzahl i anlegen und mit 1 initialisieren float wert; //Floatzahl deklarieren scanf( %f,&wert); //Wert über Tastatur eingeben

Repetitorium Programmieren I + II

C++ - Objektorientierte Programmierung Konstante und statische Elemente

Elementare Datentypen in C++

Informatik I (D-MAVT)

4. Verzweigungen. Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)

C++ Teil 5. Sven Groß. 12. Nov IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Nov / 16

Die Anwesenheitspflicht beim Seminar gilt für diejenigen Teilnehmer, die einen Schein erwerben wollen. Für die Nachmittagsübungen gilt keine

Java Datentypen und Variablen

Einführung in C. Alexander Batoulis. 5. Mai Fakutltät IV Technische Universität Berlin

Probeklausur Name: (c)

Verschlüsseln eines Bildes. Visuelle Kryptographie. Verschlüsseln eines Bildes. Verschlüsseln eines Bildes

Kapitel 2/3: Darstellung von Information / Kontrollstrukturen. Inhalt. Zusammengesetzte Datentypen Wiederholungen (in Programmen)

Einführung Pointer. C-Kurs 2013, 2. Vorlesung. Nico Andy

Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)

DAP2-Programmierpraktikum Einführung in C++ (Teil 2)

Grundlagen der Informatik 11. Zeiger

Arrays (Felder/Vektoren)

Einführung in den Einsatz von Objekt-Orientierung mit C++ I

1. Referenzdatentypen: Felder und Strings. Referenz- vs. einfache Datentypen. Rückblick: Einfache Datentypen (1) 4711 r

1. Referenzdatentypen: Felder und Strings

Vorlesungsprüfung Programmiersprache 1

C- Kurs 07 Höhere Datentypen

Praxis der Programmierung

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

Zeiger und dynamischer Speicher

RO-Tutorien 17 und 18

Visuelle Kryptographie. Anwendung von Zufallszahlen

Einführung Sprachfeatures Hinweise, Tipps und Styleguide Informationen. Einführung in C. Patrick Schulz

Dynamische Datentypen

Objekte werden eindeutig beschrieben durch ihren Typ und einen beliebig wählbaren Bezeichner.

Programmierkurs C++ Datenstrukturen Seite 1

Grundlagen der Informatik 4. Kontrollstrukturen I

Programmierung mit C Zeiger

Informatik I - Übung 2 Programmieren in Eclipse

Wertebereich und Genauigkeit der Zahlendarstellung

Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)

Kapitel 4: Zeiger. Inhalt. Zeiger Zeigerarithmetik

C++ Teil 6. Sven Groß. 27. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 14

Strukturierte Datentypen (struct) 2006 Pearson Education, Inc. All rights reserved.

C/C++-Programmierung

Pointer und Arrays. INE1, Montag M. Thaler, Office TG208. ZHAW, M. Thaler, K. Rege, G.

Zeiger, Arrays und Strings in C und C++

Hydroinformatik I: Referenzen und Zeiger

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke

C++ Teil 6. Sven Groß. 23. Nov Sven Groß (IGPM, RWTH Aachen) C++ Teil Nov / 15

Inhalt. 1 Einstieg in die Welt von C Erste Schritte in C 31. Vorwort... 15

Programmieren in C++ Templates

2. Datentypen und Variablen I

Einführung Programmierpraktikum C Michael Zwick

Projekt 3 Variablen und Operatoren

Einfache Arrays. Dr. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung

Themen. Formatierte und unformatierte Eingabe Bedingungsoperator Namespaces Kommandozeilenargumente

Informatik - Übungsstunde

INE1 Arrays, Zeiger, Datenstrukturen

Implementieren von Klassen

Einführung in die Programmierung mit C++

Einführung in die Programmierung

Klausur: Grundlagen der Informatik I, am 06. Februar 2009 Gruppe: A Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Crashkurs C++ - Teil 1

Einführung in die Programmierung Wintersemester 2016/17

Benutzerdefinierte und zusammengesetzte Datentypen

Transkript:

5. Abgeleitete Datentypen Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)!Felder (Arrays)!Zeichenketten (Strings)!Strukturen (Structs)

Copyright: M. Gross, ETHZ, 2003 2 Arrays! Ein Array ist ein Datentyp, der mehrere Werte des gleichen Typs speichern kann! 60 ints oder 120 chars! Die Definition eines Arrays besteht aus 3 Elementen:! Typ der zu speichernden Elemente! Name des Arrays! Anzahl der Elemente! int students[241];! Legt ein Array mit 241 Variablen des Typs int an und reserviert entsprechend Speicherplatz! Allgemeine Form: typename arrayname[arraysize];

Copyright: M. Gross, ETHZ, 2003 3 Arrays! arraysize muss const sein! arraysize darf keine Variable sein! Ein Array ist ein abgeleiteter Typ, da er auf anderen Typen aufbaut! Der Zugriff auf Elemente eines Arrays erfolgt durch Indizierung! Der Index beginnt immer bei 0!! students[111] = 64;! Setzt also das 112. Element des Arrays! Dies führt leicht zu Fehlern

Copyright: M. Gross, ETHZ, 2003 4 Illustration int ragnar[7]; 0 1 2 3 4 5 6 Index ragnar drittes Element zweites Element erstes Element ragnar ist ein Array mit 7 Elementen vom Typ int

Copyright: M. Gross, ETHZ, 2003 5 Beispiel_1: Array anlegen // arrayone.cpp _ small arrays of integers #include <iostream> using namespace std; int main() { int yams[3]; // creates array with three elements yams[0] = 7; // assign value to first element yams[1] = 8; yams[2] = 6; int yamcosts[3] = {20, 30, 5}; Definition des Arrays // create, initialize array // NOTE: If your C++ compiler or translator can't initialize // this array, use static int yamcosts[3] instead of // int yamcosts[3] cout << "Total yams = "; cout << yams[0] + yams[1] + yams[2] << "\n"; cout << "The package with " << yams[1] << " yams costs "; cout << yamcosts[1] << " cents per yam.\n"; int total = yams[0] * yamcosts[0] + yams[1] * yamcosts[1]; total = total + yams[2] * yamcosts[2]; cout << "The total yam expense is " << total << " cents.\n"; Initialisierung Initialisierungsliste Adressierung } cout << "\nsize of yams array = " << sizeof yams; cout << " bytes.\n"; cout << "Size of one element = " << sizeof yams[0]; cout << " bytes.\n"; return 0; Grösse eines Elementes

Copyright: M. Gross, ETHZ, 2003 6 Initialisierung! Initialisierung kann auf zwei Arten erfolgen! Initialisierungsliste bei Definition int hotel[2] = {1,2};! Explizit hotel[0] = 1;! Arrays können auch partiell initialisiert werden! int hotel[5] = {1,2};! int hotel[500] = {0};! Compiler setzt die restlichen Elemente zu 0! Compiler berechnet Arraygösse automatisch bei Initialiserung! int hotel[] = {0,1,2,3};

Copyright: M. Gross, ETHZ, 2003 7 Mehrdimensionale Arrays! Arrays können in beliebiger Dimension angelegt werden! Für jede Dimension muss die Arraygrösse getrennt angegeben werden! Definition erfolgt analog zu 1D! int hotel[3][2];! Initialisierung ebenso! Initialisierungsliste bei Definition int hotel[3][2] = {{1,2},{3,4},{5,6}};! Explizit hotel[0][1] = 2;! Zugriff durch Index-Vektor! int ndarray[2][2][2][2];! ndarray[1][1][1][1] = 3;

Copyright: M. Gross, ETHZ, 2003 8 Strings! Ein String ist eine Reihe von Zeichen, welche in aufeinanderfolgenden Bytes im Speicher gehalten werden! Ein C++ String muss immer mit \0 (null character) enden! \0 benötigt ein zusätzliches Byte! char stud[5] = {'b','i','l','l','\0'};! char stud[5] = {'b','i','l','l','y'}; Kein String!! Initialisierung auf zwei Arten! char stud[5] = {'b','i','l','l','\0'};! char stud[] = "billy";! "billy" ist ein String Literal

Copyright: M. Gross, ETHZ, 2003 9 Strings! Bei String Literalen wird der Null Character automatisch eingefügt! Einzelnes Zeichen darf nicht mit String verwechselt werden! char stud = 'b'; //O.K.! char stud = "b"; //not O.K. Type mismatch! cout kann Strings sinnvoll auf der Konsole ausgeben! cout << "Markus ist ein Lieber \n";! Strings können mit Hilfe von Arrays gespeichert und verwaltet werden! <cstring> Bibliothek (library) stellt viele wichtige String-Funktionen zur Verfügung

Copyright: M. Gross, ETHZ, 2003 10 Beispiel_2: String und Array // strings.cpp _ storing strings in an array #include <iostream> #include <cstring> // for the strlen() function using namespace std; int main() { const int Size = 15; char name1[size]; // empty array char name2[size] = "C++owboy"; // initialized array // NOTE: some implementations may require the static keyword // to initialize the array name2 Definition einer Konstanten Array für String cout << "Howdy! I'm " << name2; cout << "! What's your name?\n"; cin >> name1; cout << "Well, " << name1 << ", your name has "; cout << strlen(name1) << " letters and is stored\n"; cout << "in an array of " << sizeof name1 << " bytes.\n"; cout << "Your initial is " << name1[0] << ".\n"; name2[3] = '\0'; // null character Initialisierung Eingabe } cout << "Here are the first 3 characters of my name: "; cout << name2 << "\n"; return 0; Funktion aus cstring Ausgabe

Copyright: M. Gross, ETHZ, 2003 11 Initialisierung des Arrays! Bei der Initialisierung werden die restlichen Stellen des Arrays unbesetzt belassen const int ArSize = 15; char name2[arsize] = "C++owboy"; String DON T C + + o w b o y \0 name2[3] = '\0'; String PANIC C + + \0 w b o y \0 Ignored! String Input pp. 100-109 bitte selbstständig anschauen

Copyright: M. Gross, ETHZ, 2003 12 Structs! Ein Struct ist ein Datentyp, der mehrere Werte verschiedener Typen speichern kann! Vielseitiger als Array und enorm mächtig! Ein Struct ist ein Vorläufer einer Klasse! Trennung von Deklaration des Typs und Definition einer Variable des Typs! Deklaration des Typs erfolgt durch! Schlüsselwort struct! Name (Name Tag)! Aufzählung der Struct Member Variablen! Definition einer Variablen dieses Typs erfolgt durch Verwendung des Name Tags

Copyright: M. Gross, ETHZ, 2003 13 Structs! Beispiel für Deklaration struct product { }; char name[20]; float volume; double price;! Deklaration erfolgt oft ausserhalb von Funktionen! Externe Deklaration - Globale Sichtbarkeit (scope)! Interne Deklaration - Lokale, auf Funktion beschränkte Sichtbarkeit! Definition einer Variablen des Typs! struct product p1; // C-Stil! product p1; // C++ Stil...ist einfacher

Copyright: M. Gross, ETHZ, 2003 14 Initialisierung und Zugriff! Initialisierung erfolgt explizit durch Liste product p1 = { }; "Informatik", 500.0, 6.7! Komma als Separator verwendet! Zuweisungsoperator kann auf Structs angewandt werden! product p2 = p1;! Jede einzelne Mitgliedsvariable wird zugewiesen

Copyright: M. Gross, ETHZ, 2003 15 Initialisierung und Zugriff! Deklaration und Definition können auch kombiniert werden struct product { char name[20]; float volume; double price; } p1, p2;! Deklariert Typ und legt zwei Variablen des Typs an! p2, p1;! Variablen haben hier gleichen Gültigkeitsbereich, wie Typendeklaration

Copyright: M. Gross, ETHZ, 2003 16 Beispiel_3: Structs // assgn_st.cpp -- assigning structures #include <iostream> using namespace std; struct inflatable { char name[20]; float volume; double price; }; Externe Deklaration int main() { inflatable bouquet = { "sunflowers", 0.20, 12.49 }; Initialisierung } inflatable choice; cout << "bouquet: " << bouquet.name << " for $"; cout << bouquet.price << "\n"; choice = bouquet; // assign one structure to another cout << "choice: " << choice.name << " for $"; cout << choice.price << "\n"; return 0; Zugriff auf Members

Copyright: M. Gross, ETHZ, 2003 17 Zugriff! Zugriff auf Mitglieder durch.-operator! p1.price = 5.3;! Ebenso können Arrays von Structs angelegt werden! product parray[10];! Definiert Array von 10 Variablen vom Typ product! Initialisierung ebenso durch Listen product parray[2] = {{"Informatik I", 500.0, 6.7}, {"Informatik I", 300.0, 3.7}};! Bitfelder für hardwarenahe Programmierung! Variablen sind dabei auf bestimmte Anzahl von Bits beschränkt

Copyright: M. Gross, ETHZ, 2003 18 Unions! Ein Union ist ein Struct, der jeweils nur EINE der Mitgliedsvariablen speichern kann! Die Grösse von Union-Variablen entspricht somit der Grösse der grössten Mitgliedsvariablen! Variablen teilen die gleiche Speicheradresse union one { int i; float f; double d; } var_1;! Zuweisung, wie bei Structs! var_1.i = 10;

Copyright: M. Gross, ETHZ, 2003 19 Aufzählungstypen (Enumerations)! Eine Enumeration erlaubt es, elegant symbolische Konstanten zu definieren! enum colors = {red, green, blue};! Legt neuen Typ des Namens colors an! Definiert red, green, blue als symbolische Integer-Konstanten der Werte 0,1,2! Heissen auch Enumerators! Im Standard-Fall (default) weist ein enum Integer-Werte von 0 an aufsteigend zu! Zuweisung nur sehr beschränkt möglich! colors c1 = red; // O.K.! colors c1 = 4; // not O.K.! Konstanten können auch explizit gesetzt werden! enum {one = 1, three = 3};

Copyright: M. Gross, ETHZ, 2003 20 typedef! typedef wird benutzt um ein Synonym für bestehende Datentypen zu erzeugen.! Beispiel: typedef int Integer;! Ab dieser Anweisung kann Integer als Type benutzt werden und ist identisch mit int.! Achtung: typedef erzeugt keinen neuen Datentyp, nur ein Synonym (Alias) für einen bestehenden Datentyp!! Verwendung:! Häufig im Zusammenhang mit Structs (C-Style).! Flexibilität, z.b. ein Algorithmus wird mit dem Typ Number programmiert, und je nachdem ob man typedef float Number; oder typedef double Number; festlegt, verändert sich die Genauigkeit der Berechnung.