Einführung in die Programmierung

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

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

Einführung in die Programmierung

Einführung in die Programmierung

Einführung in die Programmierung

Einführung in die Programmierung

Einführung in die Programmierung Wintersemester 2017/18

Einführung in die Programmierung Wintersemester 2018/19

Einführung in die Programmierung

Kapitel 4: Zeiger. Inhalt. Zeiger Zeigerarithmetik

Physische Datenstrukturen

Einführung in die Programmierung

Einführung in die Programmierung Wintersemester 2011/12

Einführung in die Programmierung

Einführung in die Programmierung Wintersemester 2008/09

Einführung in die Programmierung Wintersemester 2008/09

Einführung in die Programmierung

Teil 5: Felder, Zeiger, Zeigerarithmetik Gliederung

Kapitel 5: Funktionen. Inhalt

Informatik. Strukturen und Aufzählungstypen. Vorlesung

Programmierkurs C++ Variablen und Datentypen

Grundlagen und Konzepte von C Datenstrukturen

Einführung in die Programmierung Wintersemester 2014/15

Probeklausur Name: (c)

9. Vektoren. (auch Felder/array)

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

Informatik Vorkurs - Vorlesung 2

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

Hello World! Eine Einführung in das Programmieren Variablen

Informatik. Wiederholung Felder (Arrays), string. Vorlesung

Variablen, Konstanten und Datentypen

Elementare Datentypen in C++

Praxis der Programmierung

+ C - Array (Vektoren, Felder)

Einführung in die Programmierung

Teil 5: Zeiger, Felder, Zeichenketten Gliederung

C- Kurs 07 Höhere Datentypen

Einstieg in die Informatik mit Java

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2

Einführung in die Programmierung Wintersemester 2016/17

Praktikum zur Vorlesung Einführung in die Programmierung WS 14/15 Blatt 3

Datenstrukturen. InE1 M. Thaler, Office TG ZHAW, M. Thaler, K. Rege, G. Burkert

Grundlagen der Informatik 2. Typen

RO-Tutorien 3 / 6 / 12

Felder in C. Felder stellen eine Reihung von Elementen gleichen Typs dar. Man spricht auch von Vektoren oder Arrays.

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

RO-Tutorien 15 und 16

Die verschiedenen Programmierparadigmen von C++ Software-Technik: Vom Programmierer zur erfolgreichen

Programmieren in C/C++ und MATLAB

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

2. Programmierung in C

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren

Algorithmen und Datenstrukturen

2. Datentypen und Deklarationen

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

Projekt 3 Variablen und Operatoren

Inhalt. Peter Sobe 63. Felder in C

Viel Erfolg bei der Bearbeitung der Aufgaben!

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

Inhalt. 4.5 Arbeit mit Zeigern (engl. Pointer)

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

Arrays. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 3. 1 Modulübersicht 3

RO-Tutorien 17 und 18

Felder, Zeiger und Adreßrechnung

Einführung in die Programmierung

Grundlagen der Informatik 6. Arrays I

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

5. Abgeleitete Datentypen

5. Abgeleitete Datentypen

Zusammengesetzte Datentypen -- Arrays und Strukturen

Programmierkurs C++ Datenstrukturen Seite 1

7. Organisation von Informationen

INE1 Arrays, Zeiger, Datenstrukturen

Abgeleitete Datentypen

ÜBUNGS-BLOCK 7 LÖSUNGEN

Informatik I (D-ITET)

Reihungen. Prof. Dr. Christian Böhm. In Zusammenarbeit mit Gefei Zhang. WS 07/08

Übersicht. Informatik 1 Teil 9: komplexe Datentypen (Strukturen, Enumerationen, Unions)

2. Programmierung in C

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)

4.2 Programmiersprache C

H S R R a p p e r s w i l \0

Einführung in die Programmierung Wintersemester 2018/19

Reihungen. Martin Wirsing. in Zusammenarbeit mit Michael Barth, Fabian Birzele und Gefei Zhang

Vorkurs Informatik WiSe 16/17

Zeiger (engl. Pointer)

Java Übung. Übung 2. Werner Gaulke. 19. April Universität Duisburg-Essen Kommedia, Übung EinPro SS06, Einführung in Java - Übung.

Einführung in die Programmierung

Dr. Monika Meiler. Inhalt

Transkript:

: Inhalt Einführung in die Programmierung Wintersemester 008/09 Zusammengesetzte Datentypen - Feld (array) - Verbund (struct) - Aufzählung (enum) Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund Array Anzahl bereitzustellender Speicherplätze Array (Feld) Datendefinition: float x[]; 0 Einführendes Beispiel: Temperaturen von gestern stündlich speichern 1 7 8 9 10 11 1 1 1 1 1 17 18 19 0 1 Datentyp Bezeichner 8. 8. 8.0 7. 7. 7.0 7.0 7. 8.0 8.8 9.8 11.1 1. 1. 1.7 1. 1. 1.0 10.1 9. 9.0 8.9 8.7 8. Zugriff auf das Feldelement: x[1]; Möglicher Ansatz: float x00, x01, x0, x0, x0, x0, x0, x07, x08, x09, x10, x11, x1, x1, x1, x1, x1, x17, x18, x19, x0, x1, x, x; Besser: Unter einem Namen zusammenfassen und zur Unterscheidung der Werte einen Index verwenden. Achtung: Der Index beginnt immer bei 0! x[1] greift also auf das 1. Feldelement zu! Der maximale Index wäre hier also. Was passiert bei Verwendung von x[]? ABSTURZ! Fataler Fehler! 1

Eindimensionales Array Eindimensionales Array: Beispiele Ein Array ist eine Aneinanderreihung von identischen Datentypen - mit einer vorgegebenen Anzahl und - unter einem gemeinsamen Bezeichner. Der Zugriff auf einzelne Elemente erfolgt über einen Index - der immer bei 0 beginnt und - dessen maximaler Wert genau Anzahl 1 ist. (Fast) alle Datentypen können verwendet werden. unsigned int Lotto[]; double Monatsmittel[1]; char Vorname[0]; bool Doppelgarage_belegt[]; Datendefinition Datentyp Bezeichner[Anzahl]; Eindimensionales Array: Initialisierung unsigned int Lotto[] = { 7, 10, 0,, 1, 1 Compiler ermittelt unsigned int Lotto[] = { 7, 10 erforderliche Anzahl unsigned int Lotto[] = { 7, 10 ist identisch zu unsigned int Lotto[] = { 7, 10, 0, 0, 0, 0 unsigned int Lotto[] = { 0 ist identisch zu unsigned int Lotto[] = { 0, 0, 0, 0, 0, 0 Eindimensionales Array: Verwendung float Temp[1] = {.,., 8.9, 1.8 float x, y, z = 1.; Temp[] = z; x = Temp[0] * 0.; y = Temp[1] +. * Temp[]; int i =, j =, k =, m = 11; z = ( Temp[i] + Temp[j] + Temp[k] ) /.0; Temp[m] = z + Temp[k - i]; 7 8

Eindimensionales Array: Verwendung float Temp[1] = {.,., 8.9, 1.8 float TempNeu[1]; TempNeu = Temp; - Pro Tag drei Temperaturmessungen: morgens, mittags, abends - Werte für eine Woche (7 Tage) ablegen Merken! Ein Array kann nicht als Ganzes einem anderen Array zugewiesen werden! Eine Zuweisung muss immer elementweise verfolgen! 8.0 7.8..8 0. 18. 1. 1.7 1. 1. 8.8 7. Tabelle oder Matrix 8.0 19.8 10. der Temperaturen 9. 1. 11.1 7. 17. 9.9 9 10 float tag0[], tag1[], tag[] usw. bis tag[]; 0 1 tag0 8.0 0. 1. tag1 7.8 18. 1. tag. 1. 8.8 tag.8 1.7 7. tag 8.0 19.8 10. Statt float tag0[], tag1[], tag[] usw. bis tag[]; bräuchte man ein Array von Arrays vom Typ float! Zeilen Spalten Nahe liegend: float tag[7][]; tag tag 9. 7. 1. 17. 11.1 9.9 Datentyp Bezeichner 11 1

Initialisierung Zeilenindex 0 1 Spaltenindex 0 1 8.0 0. 7.8 18.. 1..8 1.7 8.0 19.8 9. 1. 1. 1. 8.8 7. 10. 11.1 tag[0][] hat Wert 1. tag[][0] hat Wert. tag[][] hat Wert 10. tag[][] ist ungültig! float tag[7][] = { { 8.0, 0., 1. }, { 7.8, 18., 1. }, {., 1., 8.8 }, {.8, 1.7, 7. }, { 8.0, 19.8, 10. }, { 9., 1., 11.1 }, { 7., 17., 9.9 } oder float tag[][] = { { 8.0, 0., 1. }, { 7.8, 18., 1. }, {., 1., 8.8 }, {.8, 1.7, 7. }, { 8.0, 19.8, 10. }, { 9., 1., 11.1 }, { 7., 17., 9.9 } 7. 17. 9.9 1 1 Datendefinition bei ansteigender Dimension 1. int feld[n];. int feld[m][n];. int feld[k][m][n];. usw. Zeichenkette - ist eine Aneinanderreihung von Zeichen - also ein Array/Feld von Zeichen Datendefinition: char wohnort[0]; kennzeichnet Ende der Zeichenkette Initialisierung: char wohnort[0] = { D, o, r, t, m, u, n, d, \0 char wohnort[0] = Dortmund ; riskant! char wohnort[] = Dortmund ; sicher: Compiler zählt! 1 1

Zeichenkette - Das Ende wird durch das ASCII Steuerzeichen NUL (mit Code 0) gekennzeichnet! - Bei der Datendefinition muss also immer ein Zeichen mehr angefordert werden als zur Speicherung der Daten benötigt wird! Falsch ist: char wort[] = abc ; - Zuweisung einer Zeichenkette an eine andere nicht zulässig (weil array von char) Falsch ist: char wort[]; wort[] = abc ; oder : wort[] = abc ; - Zuweisung muss immer elementweise erfolgen! Beispiel: char wort[] = abc ; wort[0] = z ; Datenverbund (Struktur) Einführendes Beispiel: Zu speichern sei Namen und Matrikelnummer von Studierenden und ob Vordiplom bestanden ist Möglicher Ansatz: Drei verschiedene Datentypen (char[], unsigned int, bool) in Array lässt sich nur ein gemeinsamer Datentyp speichern alles als Zeichenketten, z.b. char stud[][0]; Besser: Zusammen gehörende Daten unter einem Namen zusammenfassen aber die natürlichen Datentypen verwenden! 17 18 Datenverbund (Struktur) Wir definieren uns unseren eigenen Datentyp! Wir müssen die Struktur / den Bauplan definieren! Wir müssen einen Namen für den Datentyp vergeben! Datenverbund (Struktur) Zuerst das Schlüsselwort: struct Dann folgt der gewählte Name (engl. tag). In gescheiften Klammern {} steht der Bauplan. Am Ende ein Semikolon ; struct UnserDatenTyp { Name des Datentyps struct UnserDatenTyp { Name des Datentyps char name[0]; unsigned int matrikel; bool vordiplom; Bauplan / Struktur char name[0]; unsigned int matrikel; bool vordiplom; Bauplan / Struktur 19 0

Datenverbund (Struktur) Datenverbund (Struktur) Achtung: Soeben wurde ein Datentyp definiert. Es wurde noch kein Speicherplatz reserviert! Datendefinition: UnserDatenTyp student, stud[0000]; Initialisierung: UnserDatenTyp student = { Hugo Hase, 1, true Zugriff mit Punktoperator : unsigned int mnr = student.matrikel; cout << student.name << << mnr << endl; Reihenfolge beachten! Im Bauplan kann wieder jeder Datentyp vorkommen! Also auch wieder Datenverbunde (struct)! Beispiel: struct UniStud { char ort[0]; unsigned int plz; UnserDatentyp daten; UniStud studx = { Dortmund, 1, { Jane Doe, 198, true } unsigned int mnr = studx.daten.matrikel; 1 Datenverbund (Struktur) Zuweisungen: UnserDatenTyp stud[0000]; UnserDatenTyp student = { Hugo Hase, 1, true stud[00] = student; student = stud[01]; Ganze Datensätze können strukturidentischen Variablen zugewiesen werden. Komponentenweises Zuweisen nicht nötig! Achtung: Anderer Name (tag) Anderer Datentyp! Gilt selbst bei identischen Bauplänen! struct S1 { int x; float y; struct S { int x; float y; S1 v1, vx; v1 = vx; S v; v = vx; Fehler! Aufzähltyp (enum) Umwelt beschreiben durch Begriffe statt durch Ziffern. Farben: rot, blau, grün, orange, gelb, schwarz, Spielkarten: Kreuz, Pik, Herz, Karo. Internet-Domains: de, uk, fr, ch, fi, ru, 1. Schlüsselwort enum (Enumeration, Aufzählung). Name der Aufzählung. In geschweiften Klammern die Elementnamen. enum KartenTyp { kreuz, pik, herz, karo

Aufzähltyp (enum) Was passiert im Rechner? Interne Zuordnung von Zahlen (ein Code) enum KartenTyp { kreuz, pik, herz, karo 0 1 Zuordnung der Zahlen durch Programmierer kontrollierbar: enum KartenTyp { kreuz=1, pik=, herz=, karo=8 Initialisierung: KartenTyp Spielfarbe = kreuz; Aber: cout << Spielfarbe << endl; Ausgabe ist Zahl! 7