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

Größe: px
Ab Seite anzeigen:

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

Transkript

1 1 8 Strukturierte Datentypen (struct)

2 2 8.1 Einführung 8.2 Definition von Strukturen Selbstbezügliche Strukturen Definition von Variablen strukturierter Datentypen Bezeichner für Strukturen Operationen auf Strukturen 8.3 Initialisierung von Strukturen 8.4 Zugriff auf Elemente von Strukturen 8.5 Strukturen und Funktionen 8.6 typedef 8.7 Fallstudie: Verbesserte Kartenmisch- und Gebesimulation

3 3 8.1 Einführung Strukturen (oder strukturierte Datentypen ) Zusammenfassung von Variablen, die in einer Beziehung zueinander stehen, unter einem gemeinsamen Namen Dadurch wird eine Art neuer Datentyp definiert. Strukturen können Variablen vieler verschiedener Datentypen enthalten im Gegensatz zu Arrays, die nur Elemente des gleichen Datentyps enthalten. Strukturen werden für die Definition von Records, die in Dateien gespeichert werden, benutzt (s. Kapitel 9). Mit Hilfe von Zeigern und Strukturen können komplexere Datenstrukturen wie verkettete Listen, Warteschlangen, Stapel und Bäume aufgebaut werden.

4 8.2 Definition von Strukturen 4 Strukturen sind abgeleitete Datentypen sie werden aus Objekten anderer Datentypen konstruiert. Definition einer Struktur: struct card { char* face; char* suit; }; Das Schlüsselwort struct definiert die Struktur. Der Bezeichner card ist der Struktur-Bezeichner, der die Struktur benennt und zusammen mit struct für die Deklaration von Variablen benutzt wird: struct card acard;

5 5 Häufiger Programmierfehler Das Semikolon am Ende der Definition einer Struktur zu vergessen ist ein Syntaxfehler.

6 8.2 Definition von Strukturen 6 Die Definition von struct card enthält die Elemente face und suit, beide vom Typ char *. Elemente von Strukturen können Variablen primitiver Datentypen (d.h. char, int, double, usw.) oder Aggregate wie Arrays und andere Strukturen sein. Strukturen können aus vielen Elementen unterschiedlicher Typen aufgebaut sein.

7 8.2 Definition von Strukturen 7 Die folgende struct enthält die Elemente char-arrays für den Vor- und Nachnamen eines Angestellten, einen unsigned int für das Alter des Angestellten, einen char, der'm'oder'f'für das Geschlecht enthält und einen double für den Stundenlohn des Angestellten: struct employee { char firstname[ 20 ]; char lastname[ 20 ]; unsigned int age; char gender; double hourlysalary; }; // end struct employee

8 8.2.1 Selbstbezügliche Strukturen 8 Eine Struktur kann keine Instanz von sich selbst enthalten. Eine Variable vom Typ struct employee kann nicht in der Definition für struct employee erklärt werden. Ein Zeiger auf struct employee hingegen schon: struct employee2 { char firstname[ 20 ]; char lastname[ 20 ]; unsigned int age; char gender; double hourlysalary; // struct employee2 person; // ERROR! struct employee2* eptr; // pointer is okay }; // end struct employee2 Falls struct employee2 eine Instanz von sich selbst (person) enthält, ist dies ein Syntaxfehler.

9 8.2.1 Selbstbezügliche Strukturen 9 Da eptr ein Zeiger (auf den Typ struct employee2) ist, ist er als Element der Struktur employee2 erlaubt. Eine Struktur, die einen Zeiger auf den gleichen Typ von Struktur als Element enthält, wird als selbstbezügliche Struktur bezeichnet. Selbstbezügliche Strukturen werden wir im zweiten Semester verwenden, um verkettete Datenstrukturen aufzubauen.

10 8.2.2 Definition von Variablen strukturierter Datentypen 10 Die Definition einer Struktur reserviert keinen Platz im Speicher; jede Definition erzeugt vielmehr einen neuen Datentyp, der dann zur Variablendefinition benutzt wird. Struktur-Variablen werden wie Variablen anderer Typen definiert, wobei das Schlüsselwort struct als Bestandteil des Typs mit angegeben werden muss. Die Definition struct card acard, deck[ 52 ], *cardptr; deklariert acard als Variable des Typs struct card, deck als ein Array mit 52 Elementen vom Typ struct card und cardptr als Zeiger auf struct card.

11 8.2.2 Definition von Variablen strukturierter Datentypen Variablen eines gegebenen Struktur-Typs können auch deklariert werden, indem eine kommaseparierte Liste der Variablennamen zwischen die schließende geschweifte Klammer der Struktur-Definition und das abschließende Semikolon gesetzt wird. So hätte die Variablendefinition auf der vorausgegangenen Folie auch auf die folgende Weise innerhalb der Definition der struct card geschrieben werden können: struct card { char* face; char* suit; } acard, deck[ 52 ], *cardptr; 11

12 8.2.3 Bezeichner für Strukturen 12 Der Bezeichner für eine Struktur (wie das card in struct card) ist optional. Falls die Definition einer Struktur keinen Bezeichner für diese Struktur enthält, können Variablen dieses Struktur-Typs nur in der Definition dieser Struktur deklariert werden - nicht in einer separaten Deklaration.

13 13 Praxis-Tipp Bei der Definition einer neuen Struktur sollte auch immer ein Bezeichner für diese Struktur festgelegt werden. Ist dieser Bezeichner vorhanden, können auch später im Programm Variablen des entsprechenden Typs deklariert werden und das Programm wird übersichtlicher.

14 8.2.4 Operationen auf Strukturen 14 Die einzigen Operationen, die auf Strukturen ausgeführt werden können, sind: Zuweisung von Struktur-Variablen an Struktur-Variablen desselben Typs, Ermittlung der Adresse (&) einer Struktur-Variablen, Zugriff auf die Elemente einer Struktur-Variablen (s. Abschnitt 8.4), Nutzung des sizeof Operators, um die Größe einer Struktur- Variablen zu bestimmen. Struktur-Variablen dürfen nicht mit Hilfe der Operatoren == und!= verglichen werden, da ihre Elemente nicht unbedingt in aufeinanderfolgenden Bytes im Speicher abgelegt werden.

15 8.3 Initialisierung von Strukturen 15 Struktur-Variablen können wie Arrays mit Initialisierungslisten initialisiert werden. Um eine Struktur-Variable zu initialisieren, wird ihr bei der Definition eine kommaseparierte Liste von Initialisierern innerhalb geschweifter Klammern zugewiesen. Die Definition struct card acard = { "Three", "Hearts" }; erzeugt eine Variable acard vom Typ struct card (wie in Abschnitt 8.2 definiert) und initialisiert die Elemente face mit "Three" und suit mit "Hearts".

16 8.3 Initialisierung von Strukturen 16 Sind weniger Initialisierer in der Liste als Elemente in der Struktur, werden die übrigen Elemente automatisch mit 0 (oder NULL, falls das Element ein Zeiger ist) initialisiert. Struktur-Variablen, die außerhalb einer Funktionsdefinition (d.h. extern) definiert werden, werden mit 0 oder NULL initialisiert, falls sie nicht explizit initialisiert werden. Struktur-Variablen können auch durch Zuweisungen initialisiert werden, indem eine Variable desselben Typs zugewiesen wird, oder indem Werte für die einzelnen Elemente der Struktur zugewiesen werden.

17 8.4 Zugriff auf Elemente von Strukturen 17 Zwei Operatoren werden für den Zugriff auf Elemente von Strukturen benutzt: der Element- oder Punktoperator (.) und der Zeiger- oder Pfeiloperator (->). Der Punktoperator greift auf ein Element der Struktur über den Namen der Struktur-Variablen zu. Um beispielsweise das Element suit der Struktur- Variablen acard aus Abschnitt 8.3 auszugeben, kann folgende Anweisung verwendet werden: printf( "%s", acard.suit ); // displays Hearts

18 8.4 Zugriff auf Elemente von Strukturen 18 Der Pfeiloperator bestehend aus einem Minuszeichen (-) und einem Größerzeichen (>) ohne Leerzeichen dazwischen greift auf ein Element der Struktur über einen Zeiger auf die Struktur-Variable zu. Falls der Zeiger cardptr ein struct card -Zeiger ist und die Adresse der Struktur-Variablen acard diesem Zeiger zugewiesen wurde, kann das Element suit der Struktur-Variablen acard über den Zeiger cardptr wie folgt ausgegeben werden: printf( "%s", cardptr->suit ); // displays Hearts

19 8.4 Zugriff auf Elemente von Strukturen 19 Der Ausdruck cardptr->suit ist äquivalent mit dem Ausdruck (*cardptr).suit, bei dem zuerst der Zeiger dereferenziert wird und dann auf das Element suit mit dem Punktoperator zugegriffen wird. Die Klammern sind hierbei notwendig, weil der Punktoperator (.) einen höheren Vorrang hat als der Dereferenzierungsoperator (*). Pfeil- und Punktoperator haben zusammen mit Klammern (für Funktionsaufrufe) und eckigen Klammern ([]) für die Arrayindizierung den höchsten Operatorvorrang. Sie assoziieren von links nach rechts.

20 20 Praxis-Tipp Vor und hinter dem Punkt- und dem Pfeiloperator sollten keine Leerzeichen stehen. Das hilft zu betonen, dass die Ausdrücke, in denen diese beiden Operatoren stehen, im Kern die Namen von einzelnen Variablen sind.

21 21 Häufiger Programmierfehler Der Versuch, auf ein Element einer Struktur allein über den Elementnamen zuzugreifen, ist ein Syntaxfehler.

22 8.4 Zugriff auf Elemente von Strukturen 22 Das folgende Programm demonstriert den Gebrauch von Punkt- und Pfeiloperator. Mit dem Punktoperator werden den Elementen der Struktur acard die Werte "Ace" und "Spades" zugewiesen (Zeilen 16 und 17). Dem Zeiger cardptr wird die Adresse der Struktur acard zugewiesen (Zeile 19). Die Funktion printf gibt die Elemente der Struktur- Variablen acard aus, wobei der Punktoperator mit dem Variablennamen acard, der Pfeiloperator mit den Zeiger cardptr und der Punktoperator mit dem dereferenzierten Zeiger cardptr verwendet wird (Zeilen 22 bis 24).

23 1 // Fig. 8.2: fig08_02.c 2 // Structure member operator and structure pointer operator 3 #include <stdio.h> 4 5 // card structure definition 6 struct card { 7 char* face; // define pointer face 8 char* suit; // define pointer suit 9 }; // end structure card int main( void ) 12 { 13 struct card acard; // define one struct card variable 14 struct card* cardptr; // define a pointer to a struct card acard.face = "Ace"; // place strings into acard 17 acard.suit = "Spades"; cardptr = &acard; // assign address of acard to cardptr printf( "%s%s%s\n%s%s%s\n%s%s%s\n", 22 acard.face, " of ", acard.suit, 23 cardptr->face, " of ", cardptr->suit, 24 ( *cardptr ).face, " of ", ( *cardptr ).suit ); 25 } // end main Definitionen von Strukturen müssen mit einem Semikolon abgeschlossen werden. Outline fig08_02.c (1 von 1) 23 Ace of Spades Ace of Spades Ace of Spades 2006 Pearson Education, Inc. All rights reserved.

24 8.5 Strukturen und Funktionen 24 Strukturen können an Funktionen übergeben werden, indem individuelle Elemente, die ganze Struktur oder ein Zeiger auf eine Struktur übergeben werden. Wenn ganze Strukturen oder individuelle Elemente an eine Funktion übergeben werden, werden sie wertmäßig übergeben ( pass by value ). In diesem Fall können die Elemente einer Struktur- Variablen der aufrufenden Funktion in der aufgerufenen Funktion nicht verändert werden. Um eine Struktur referenzmäßig zu übergeben, muss die Adresse der Struktur-Variablen übergeben werden.

25 8.5 Strukturen und Funktionen 25 Arrays von Strukturen werden wie alle Arrays automatisch referenzmäßig übergeben. Will man ein Array wertmäßig an eine Funktion übergeben, kann man eine Struktur mit dem Array als Element definieren. Strukturen werden wertmäßig übergeben und somit wird das in ihr enthaltene Array wertmäßig übergeben.

26 26 Häufiger Programmierfehler Anzunehmen, dass Strukturen wie Arrays automatisch referenzmäßig übergeben werden und zu versuchen, die Elemente der Struktur in der aufgerufenen Funktion zu ändern, ist ein logischer Fehler. Geändert werden nur die Elemente einer lokalen Kopie.

27 27 Performanz-Tipp Strukturen referenzmäßig zu übergeben ist effizienter, da vermieden wird, alle Elemente der Struktur zu kopieren.

28 8.6 typedef 28 Das Schlüsselwort typedef bietet die Möglichkeit Synonyme (oder Zweitnamen) für zuvor definierte Datentypen zu erzeugen. Gerade für strukturierte Datentypen werden oft mit typedef kürzere Typnamen vereinbart. So definiert beispielsweise die Anweisung typedef struct card Card; den neuen Typnamen Card als ein Synonym für den Typ struct card. C Programmierer nutzen oft typedef, um einen Typ für eine Struktur zu definieren, so dass ein Bezeichner für die Struktur selbst überflüssig wird.

29 8.6 typedef 29 So erzeugt beispielsweise die folgende Definition typedef struct { char* face; char* suit; } Card; den strukturierten Datentyp Card, ohne dass eine separate typedef Anweisung nötig ist.

30 30 Praxis-Tipp Die mit typedef definierten Typnamen sollten mit Großbuchstaben beginnen, um darauf hinzuweisen, dass sie Synonyme für andere Typnamen sind.

31 8.6 typedef 31 Card kann jetzt zur Deklaration von Variablen vom Typ struct card verwendet werden. Die Deklaration Card deck[ 52 ]; erklärt ein Array von 52 Card Strukturen (d.h. Variablen vom Typ struct card). Die Erzeugung eines neuen Namens mit typedef erzeugt keinen neuen Typ; typedef erzeugt einfach einen weiteren Typnamen, der als Zweitnamen für einen existierenden Typnamen verwendet werden kann.

32 32 Praxis-Tipp Ein aussagekräftiger Name für einen neuen Typ hilft dabei, ein Programm selbstdokumentierend zu machen. Wenn man die Deklaration auf der vorausgegangenen Folie liest, weiß man, dass deck ein Array von 52 Cards ist

33 8.7 Fallstudie: Verbesserte Kartenmischund Gebesimulation 33 Das folgende Programm basiert auf der in Kapitel 7 behandelten Kartenmisch- und Gebesimulation. Das Programm modelliert das Kartenspiel als Array des strukturierten Datentyps Card und verwendet verbesserte Misch- und Gebealgorithmen.

34 1 // Fig. 8.3: fig08_03.c 2 // Card shuffling and dealing simulation using structures. 3 #include <stdio.h> 4 #include <stdlib.h> 5 #include <time.h> 6 7 #define SUITS 4 8 #define FACES 13 9 #define CARDS // card structure definition 12 struct card { 13 const char* face; // define pointer face 14 const char* suit; // define pointer suit 15 }; // end structure card 16 Outline fig08_03.c (1 von 4) card ist ein neuer Datentyp, der zwei Zeiger auf char zusammenfasst. Card ist ein Zweitname für den Typ struct card. 17 typedef struct card Card; // new type name for struct card // prototypes 20 void filldeck( Card * const, const char * [], const char * [] ); 21 void shuffle( Card * const ); 22 void deal( const Card * const); Pearson Education, Inc. All rights reserved.

35 24 int main( void ) 25 { 26 // initialize suit array 27 const char* suit[ SUITS ] = 28 { "Hearts", "Diamonds", "Clubs", "Spades" }; // initialize face array 31 const char* face[ FACES ] = 32 { "Ace", "Deuce", "Three", "Four", "Five", "Six", "Seven", 33 "Eight", "Nine", "Ten", "Jack", "Queen", "King" }; // initialize deck array 36 Card deck[ CARDS ]; 38 Card-Array enthält 52 Card-Strukturen 39 srand( ( unsigned ) time( NULL ) ); // seed random-number generator filldeck( deck, face, suit ); // load the deck with Cards 42 shuffle( deck ); // put Cards in random order 43 deal( deck ); // deal all 52 Cards 44 } // end main 45 Outline fig08_03.c (2 von 4) Pearson Education, Inc. All rights reserved.

36 46 // place strings into Card structures 47 void filldeck( Card * const deck, const char * face[], const char * suit[] ) 48 { 49 size_t i; // loop counter // loop through deck 52 for( i = 0; i < CARDS; ++i ) { 53 deck[ i ].face = face[ i % FACES ]; 54 deck[ i ].suit = suit[ i / FACES ]; 55 } // end for 56 } // end function filldeck // shuffle cards in deck 60 void shuffle( Card* const deck ) 61 { 62 size_t i; // loop counter 63 size_t randindex; // variable to hold random value between 0 and Card temp; // temporary struct for swapping Cards // loop through deck randomly swapping Cards 67 for( i = 0; i < CARDS; ++i ) { 68 randindex = rand() % CARDS; 69 temp = deck[ i ]; 70 deck[ i ] = deck[ randindex ]; 71 deck[ randindex ] = temp; 72 } // end for 73 } // end function shuffle Outline fig08_03.c (3 von 4) Pearson Education, Inc. All rights reserved.

37 74 75 // deal cards 76 void deal( const Card * const deck ) 77 { 78 size_t i; // loop counter 79 size_t row; // loop counter 80 size_t column; // loop counter // loop through deck 83 for( i = 0; i < CARDS; ++i ) 84 printf( "%5s of %-8s%s", deck[ i ].face, deck[ i ].suit, 85 ( i + 1 ) % 4? " " : "\n" ); // 4-column format 86 puts( "" ); 87 } // end function deal Outline fig08_03.c (4 von 4) 37 Seven of Clubs Three of Hearts Five of Hearts Ten of Hearts Seven of Diamonds Eight of Diamonds Nine of Diamonds Four of Clubs Four of Hearts Ace of Clubs Nine of Hearts Queen of Diamonds Jack of Clubs Eight of Clubs Six of Spades Deuce of Diamonds Queen of Spades Ace of Hearts Six of Diamonds Six of Clubs Jack of Diamonds Four of Spades Five of Diamonds Queen of Hearts Jack of Hearts Queen of Clubs Ace of Spades Three of Clubs Ace of Diamonds King of Clubs Deuce of Spades Seven of Hearts Ten of Diamonds King of Hearts Four of Diamonds Nine of Spades Deuce of Hearts Five of Spades Ten of Clubs Deuce of Clubs King of Diamonds Three of Diamonds Seven of Spades Nine of Clubs Five of Clubs Eight of Hearts King of Spades Three of Spades Ten of Spades Eight of Spades Jack of Spades Six of Hearts 2006 Pearson Education, Inc. All rights reserved.

38 38 Häufiger Programmierfehler Falls man eine individuelle Struktur in einem Array von Strukturen ansprechen möchte und hierbei der Arrayindex vergessen wird, resultiert ein Syntaxfehler.

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja Aue

Mehr

Arrays (Felder/Vektoren)

Arrays (Felder/Vektoren) Arrays (Felder/Vektoren) Zusammenfassung mehrerer Variablen des gleichen Typs unter einem Namen im Speicher direkt hintereinander abgelegt Definition: Typname Arrayname [Größe]; Beispiel: int ar [5]; Zugriff

Mehr

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

C++ Notnagel. Ziel, Inhalt. Programmieren in C++ C++ Notnagel Ziel, Inhalt Ich versuche in diesem Dokument noch einmal die Dinge zu erwähnen, die mir als absolut notwendig für den C++ Unterricht und die Prüfungen erscheinen. C++ Notnagel 1 Ziel, Inhalt

Mehr

Programmierung mit C Zeiger

Programmierung mit C Zeiger Programmierung mit C Zeiger Zeiger (Pointer)... ist eine Variable, die die Adresse eines Speicherbereichs enthält. Der Speicherbereich kann... kann den Wert einer Variablen enthalten oder... dynamisch

Mehr

Variablen. Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes

Variablen. Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes Variablen Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes v ist Stück im Speicher, der 4 Bytes lang ist Speicherzugriff? Über Adressen!

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dynamische Datenobjekte Pointer/Zeiger, Verkettete Liste Eigene Typdefinitionen 1 Zeigeroperatoren & und * Ein Zeiger ist die Speicheradresse irgendeines Objektes. Eine

Mehr

Zeiger. C-Kurs 2012, 2. Vorlesung. Tino Kutschbach 10.

Zeiger. C-Kurs 2012, 2. Vorlesung. Tino Kutschbach  10. Zeiger C-Kurs 2012, 2. Vorlesung Tino Kutschbach tino.kutschbach@campus.tu-berlin.de http://wiki.freitagsrunde.org 10. September 2012 This work is licensed under the Creative Commons Attribution-ShareAlike

Mehr

float *point(float a, float b); // Funktionsdeklaration Zeiger als Funktionswert // point liefert als Wert die Adresse seines Ergebnisses

float *point(float a, float b); // Funktionsdeklaration Zeiger als Funktionswert // point liefert als Wert die Adresse seines Ergebnisses Zeiger auf Funktionen 1 Zeiger als Funktionswert... 1 2 "Zeiger als Funktionswert" versus "Zeiger auf eine Funktion"... 2 2.1 Das Beispiel zu Zeiger auf eine Funktion veranschaulicht den Sachverhalt...

Mehr

Grundlagen und Konzepte von C Datenstrukturen

Grundlagen und Konzepte von C Datenstrukturen Grundlagen und Konzepte von C Datenstrukturen Ausarbeitung von Andreas Gadelmaier Proseminar C Grundlagen und Konzepte Arbeitsbereich Wissenschaftliches Rechnen Fachbereich Informatik Fakultät für Mathematik,

Mehr

Abgeleitete Datentypen

Abgeleitete Datentypen Abgeleitete Datentypen Prof. Dr. Markus Gross Informatik I für D-MAVT (FS 2014) Felder (Arrays) Zeichenketten (Strings) Strukturen (Structs) union, enum & typedef Arrays Ein Array ist ein Datentyp, der

Mehr

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

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 9. Zeiger Arbeitsspeicher / Adressen Der Arbeitsspeicher des Computers (RAM) besteht aus einem Feld von Speicherzellen, beginnend bei Adresse

Mehr

8. Referenzen und Zeiger

8. Referenzen und Zeiger 8. Referenzen und Zeiger Motivation Variable werden in C++ an speziellen Positionen im Speicher abgelegt. An jeder Position befindet sich 1 Byte. Sie sind durchnummeriert beginnend bei 0. Diese Positionen

Mehr

Programmierkurs C++ Datenstrukturen Seite 1

Programmierkurs C++ Datenstrukturen Seite 1 Programmierkurs C++ Datenstrukturen Seite 1 3 Datenstrukturen 3.1 Arrays Zur Wiederholung als Strukturelement der Programmierung gehört auf der Seite der Datenstrukturen die Liste. Eine Liste kann auf

Mehr

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

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke Java 2 Markus Reschke 07.10.2014 Datentypen Was wird gespeichert? Wie wird es gespeichert? Was kann man mit Werten eines Datentyps machen (Operationen, Methoden)? Welche Werte gehören zum Datentyp? Wie

Mehr

5. Abgeleitete Datentypen

5. Abgeleitete Datentypen 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

Mehr

Programmierkurs C/C++

Programmierkurs C/C++ Blockkurs: "Einführung in C/C++" Programmierkurs C/C++ Donnerstag Sandro Andreotti andreott@inf.fu-berlin.de WS 2008/09 1 Structs Blockkurs: "Einführung in C/C++" 2 Structs sind Bündel von Variablen (unter

Mehr

7 Funktionen. 7.1 Definition. Prototyp-Syntax: {Speicherklasse} {Typ} Name ({formale Parameter});

7 Funktionen. 7.1 Definition. Prototyp-Syntax: {Speicherklasse} {Typ} Name ({formale Parameter}); S. d. I.: Programieren in C Folie 7-1 7 Funktionen 7.1 Definition Prototyp-Syntax: Speicherklasse Typ Name (formale Parameter); der Funktions-Prototyp deklariert eine Funktion, d.h. er enthält noch nicht

Mehr

GI Vektoren

GI Vektoren Vektoren Problem: Beispiel: viele Variablen vom gleichen Typ abspeichern Text ( = viele char-variablen), Ergebnisse einer Meßreihe ( = viele int-variablen) hierfür: Vektoren ( = Arrays = Feld ) = Ansammlung

Mehr

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

Programmieren in C. Speicher anfordern, Unions und Bitfelder. Prof. Dr. Nikolaus Wulff Programmieren in C Speicher anfordern, Unions und Bitfelder Prof. Dr. Nikolaus Wulff Vergleich: Felder und Strukturen Felder müssen Elemente vom selben Typ enthalten. Strukturen können Elemente unterschiedlichen

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 27 Einstieg in die Informatik mit Java Klassen als Datenstrukturen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 27 1 Überblick: Klassen als Datenstruktur 2 Vereinbarung

Mehr

C++ - Objektorientierte Programmierung Konstante und statische Elemente

C++ - Objektorientierte Programmierung Konstante und statische Elemente C++ - Objektorientierte Programmierung Konstante und statische Elemente hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja

Mehr

Übungspaket 14 Eindimensionale Arrays

Übungspaket 14 Eindimensionale Arrays Übungspaket 14 Eindimensionale Arrays Übungsziele: Skript: Deklaration und Verwendung eindimensionaler Arrays Kapitel: 33 Semester: Wintersemester 2016/17 Betreuer: Kevin, Matthias, Thomas und Ralf Synopsis:

Mehr

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

1. Referenzdatentypen: Felder und Strings. Referenz- vs. einfache Datentypen. Rückblick: Einfache Datentypen (1) 4711 r 1. Felder und Strings Eigenschaften von Referenzdatentypen 1. Referenzdatentypen: Felder und Strings Referenzdatentypen sind Konstrukte, mit deren Hilfe wir aus einfachen Datentypen neue eigene Typen erzeugen

Mehr

1. Referenzdatentypen: Felder und Strings

1. Referenzdatentypen: Felder und Strings 1. Felder und Strings Eigenschaften von Referenzdatentypen 1. Referenzdatentypen: Felder und Strings Referenzdatentypen sind Konstrukte, mit deren Hilfe wir aus einfachen Datentypen neue eigene Typen erzeugen

Mehr

Elementare Datentypen in C++

Elementare Datentypen in C++ Elementare Datentypen in C++ bool signed/unsigned char signed/unsigned short int signed/unsigned int signed/unsigned long int (signed/unsigned long long int) float double long double void enum char Der

Mehr

C- Kurs 07 Höhere Datentypen

C- Kurs 07 Höhere Datentypen C- Kurs 07 Höhere Datentypen Dipl.- Inf. Jörn Hoffmann jhoffmann@informa?k.uni- leipzig.de Universität Leipzig Ins?tut für Informa?k Technische Informa?k Höhere Datentypen Überblick Höhere Datentypen Werden

Mehr

Zusammengehörige Daten struct. Strukturierte Datentypen und Funktionszeiger. Zugriff auf struct-elemente. Variablendeklarationen mit struct

Zusammengehörige Daten struct. Strukturierte Datentypen und Funktionszeiger. Zugriff auf struct-elemente. Variablendeklarationen mit struct Zusammengehörige Daten Anstatt logisch zusammengehörende Daten in mehreren unabhängigen Variablen zu speichern, kann man für sie einen eigenen Datentyp ( Verbund, Record ) definieren, der diesen Zusammenhang

Mehr

Speicherklassen (1) Lokale Variablen

Speicherklassen (1) Lokale Variablen Speicherklassen (1) Lokale Variablen Lokale Variablen beschränken sich auf die Funktionen, in denen sie definiert werden Sind in der Funktion gekapselt können also nur in der Funktion verändert werden

Mehr

2. Programmierung in C

2. Programmierung in C 2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten, Operatoren und Ausdrücke Anweisungen und Kontrollstrukturen (Steuerfluss)

Mehr

Deklarationen in C. Prof. Dr. Margarita Esponda

Deklarationen in C. Prof. Dr. Margarita Esponda Deklarationen in C 1 Deklarationen Deklarationen spielen eine zentrale Rolle in der C-Programmiersprache. Deklarationen Variablen Funktionen Die Deklarationen von Variablen und Funktionen haben viele Gemeinsamkeiten.

Mehr

F Zeiger, Felder und Strukturen in C

F Zeiger, Felder und Strukturen in C F Zeiger, Felder und Strukturen in C F Zeiger, Felder und Strukturen in C F.1 Zeiger(-Variablen) 1 Einordnung Konstante: Bezeichnung für einen Wert a 0110 0001 Variable: Bezeichnung eines Datenobjekts

Mehr

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

Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften Programmiertechnik Teil 4 C++ Funktionen: Prototypen Overloading Parameter C++ Funktionen: Eigenschaften Funktionen (Unterprogramme, Prozeduren) fassen Folgen von Anweisungen zusammen, die immer wieder

Mehr

+ C - Array (Vektoren, Felder)

+ C - Array (Vektoren, Felder) + C - Array (Vektoren, Felder) Eindimensionale Arrays Beim Programmieren steht man oft vor dem Problem, ähnliche, zusammengehörige Daten (vom gleichen Datentyp) zu speichern. Wenn man zum Beispiel ein

Mehr

Programmierung mit C Strukturen

Programmierung mit C Strukturen Programmierung mit C Strukturen Strukturen Variablen mit unterschiedlichen Datentypen werden zusammengefasst. Variablen zu einem Thema werden zusammengefasst. Beispiele für Strukturen: Personendaten (Name,

Mehr

Zusammenfassung des Handzettels für Programmieren in C

Zusammenfassung des Handzettels für Programmieren in C Zusammenfassung des Handzettels für Programmieren in C In der handschriftlichen Kopie werden mehr Abkürzungen verwendet. Alles Grün markierte dient zum lernen und wird nicht auf den Handzettel übertragen.

Mehr

Zusammengesetzte Datentypen -- Arrays und Strukturen

Zusammengesetzte Datentypen -- Arrays und Strukturen Zusammengesetzte Datentypen -- und Strukturen Informatik für Elektrotechnik und Informationstechnik Benedict Reuschling benedict.reuschling@h-da.de Hochschule Darmstadt Fachbereich Informatik WS 2013/14

Mehr

einlesen n > 0? Ausgabe Negative Zahl

einlesen n > 0? Ausgabe Negative Zahl 1 Lösungen Kapitel 1 Aufgabe 1.1: Nassi-Shneiderman-Diagramm quadratzahlen Vervollständigen Sie das unten angegebene Nassi-Shneiderman-Diagramm für ein Programm, welches in einer (äußeren) Schleife Integer-Zahlen

Mehr

Einführung in die Programmierung II. 5. Zeiger

Einführung in die Programmierung II. 5. Zeiger Einführung in die Programmierung II 5. Zeiger Thomas Huckle, Stefan Zimmer 16. 5. 2007-1- Bezüge als Objekte Bisher kennen wir als Bezüge (Lvalues) nur Variablennamen Jetzt kommt eine neue Sorte dazu,

Mehr

Java Einführung Klassendefinitionen

Java Einführung Klassendefinitionen Java Einführung Klassendefinitionen Inhalt dieser Einheit Java-Syntax Klassen definieren Objekte instanziieren Instanzvariable deklarieren Klassenvariable deklarieren 2 Klassen definieren In der Problemanalyse

Mehr

Inhalt. 4.5 Arbeit mit Zeigern (engl. Pointer)

Inhalt. 4.5 Arbeit mit Zeigern (engl. Pointer) Inhalt Inhalt: 4. Programmiersprache C 4.1 Programmaufbau in C 4.2 Basisdatentypen und einfache Anweisungen 4.3 Steuerfluss-Konstrukte 4.4 Arbeit mit indizierten Größen (Felder) 4.5 Arbeit mit Zeigern

Mehr

1 Klassen und Objekte

1 Klassen und Objekte 1 Klassen und Objekte Datentyp - Spezifikation des Typs von Datenobjekten Datenstruktur - logische Ordnung von Elementen eines Datentyps - zur (effizienten) Speicherung, Verwaltung, Zugriff - auf die Elemente

Mehr

Dynamische Speicherverwaltung

Dynamische Speicherverwaltung Dynamische Speicherverwaltung 1/ 23 Dynamische Speicherverwaltung Tim Dobert 17.05.2013 Dynamische Speicherverwaltung 2/ 23 Gliederung 1 Allgemeines zur Speichernutzung 2 Ziele und Nutzen 3 Anwendung in

Mehr

Felder (1) Allgemeines

Felder (1) Allgemeines Felder (1) Allgemeines Gleichartige Daten, wie Tabelle von Zahlen, Datumswerten, Namen etc. Felder (engl. Array) stellen einen Verbundtyp dar, in dem mehrere Daten desselben Typs gespeichert werden Oft

Mehr

Klassen als Datenstrukturen

Klassen als Datenstrukturen Einstieg in die Informatik mit Java, Vorlesung vom 27.11.07 Übersicht 1 Klassen als Datenstruktur 2 Vereinbarung von Klassen 3 Erzeugen von Objekten - Instanzen einer Klasse 4 Zugriff auf Attribute 5 Initialisierung

Mehr

Globale Variablen Diverses. Globale Variablen. Globale Variablen

Globale Variablen Diverses. Globale Variablen. Globale Variablen lokale Variablen Variablen bisher nur am Anfang von Funktionen auch erlaubt: am Anfang innerer Codeblöcke (innerhalb geschweifter Klammern) in C99 und als gcc-erweiterung: an beliebiger Stelle innerhalb

Mehr

Tag 4 Repetitorium Informatik (Java)

Tag 4 Repetitorium Informatik (Java) Tag 4 Repetitorium Informatik (Java) Dozent: Michael Baer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Übersicht Arrays (Reihungen)

Mehr

Zeichendarstellung. Zeichen sind Zahlen (in C) Zeichen und switch

Zeichendarstellung. Zeichen sind Zahlen (in C) Zeichen und switch darstellung Arbeiten mit darstellung werden im Computer durch (kleine) Zahlen dargestellt in C können im Datentyp char gespeichert werden, dieser umfasst ein Byte und gilt als Ganzzahltyp darstellung Arbeiten

Mehr

Teil 5: Zeiger, Felder, Zeichenketten Gliederung

Teil 5: Zeiger, Felder, Zeichenketten Gliederung Teil 5: Zeiger, Felder, Zeichenketten Gliederung Zeiger und Adressen Felder (Arrays) Zeichenketten (Strings) Zeigerarithmetik Mehrdimensionale Felder Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 24 Einstieg in die Informatik mit Java Klassen als Datenstrukturen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 24 1 Klassen als Datenstruktur 2 Vereinbarung von

Mehr

Zeiger, C-Arrays und C-Strings Pearson Education, Inc. All rights reserved.

Zeiger, C-Arrays und C-Strings Pearson Education, Inc. All rights reserved. 1 8 Zeiger, C-Arrays und C-Strings 2 8.1 Einführung 8.2 Deklaration und Initialisierung von Zeigervariablen 8.3 Operatoren für Zeiger 8.4 Referenzmäßige Übergabe von Argumenten mit Hilfe von Zeigern 8.5

Mehr

Wertebereich und Genauigkeit der Zahlendarstellung

Wertebereich und Genauigkeit der Zahlendarstellung Wertebereich und Genauigkeit der Zahlendarstellung Sowohl F als auch C kennen bei ganzen und Floating Point-Zahlen Datentypen verschiedener Genauigkeit. Bei ganzen Zahlen, die stets exakt dargestellt werden

Mehr

Arrays. Einleitung. Deklarieren einer Array Variablen

Arrays. Einleitung. Deklarieren einer Array Variablen Arrays Einleitung bisher jede Variable einzeln deklariert: 12 3 14 12 32 32 3 32 5 3 double sum; int count; ÿ Sie können Zweck und Aufbau von Array-Datentypen erklären ÿ Sie können einen Array korrekt

Mehr

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

Inhalt. 1 Einstieg in die Welt von C Erste Schritte in C 31. Vorwort... 15 Vorwort... 15 1 Einstieg in die Welt von C 17 1.1 Die Sprache C... 17 1.2 Die C-Standardbibliothek... 18 1.3 Die nötigen Werkzeuge für C... 21 1.4 Übersetzen mit der Entwicklungsumgebung... 23 1.5 Übersetzen

Mehr

C++ - Objektorientierte Programmierung Vererbung

C++ - Objektorientierte Programmierung Vererbung C++ - Objektorientierte Programmierung Vererbung Personen Kunden Mitarbeiter Verwaltung Verkäufer Leibniz Universität IT Services Anja Aue Vererbung Definition von Klassen auf Basis von bestehenden Klassen.

Mehr

Einführung in die Programmierung zusammengesetzte Datentypen, dynamischer Speicher

Einführung in die Programmierung zusammengesetzte Datentypen, dynamischer Speicher Einführung in die Programmierung zusammengesetzte Datentypen, dynamischer Speicher Arvid Terzibaschian 1 Zusammengesetzte Datentypen 2 Wozu zusammengesetzte Datentypen? Anforderung: Sie sollen ein Kundenverzeichnis

Mehr

Strukturen & Math. Strukturen und Vektoren. Allokieren eines Vektors. Zugriff auf Strukturen. Freigeben eines Vektors

Strukturen & Math. Strukturen und Vektoren. Allokieren eines Vektors. Zugriff auf Strukturen. Freigeben eines Vektors Strukturen & Math Strukturen für mathematische Objekte: allgemeine Vektoren Matrizen Strukturen und Vektoren 1 #ifndef _STRUCT_VECTOR_ 2 #define _STRUCT_VECTOR_ 3 4 #include 5 #include

Mehr

Zeiger und dynamischer Speicher

Zeiger und dynamischer Speicher Informatik für Elektrotechnik und Informationstechnik Benedict Reuschling benedict.reuschling@h-da.de Hochschule Darmstadt Fachbereich Informatik WS 2013/14 Zuletzt aktualisiert: 09.12.2013, 07:49 Uhr

Mehr

Dynamischer Speicher

Dynamischer Speicher Dynamischer Speicher C-Kurs 2012, 3. Vorlesung Tino Kutschbach tino.kutschbach@campus.tu-berlin.de http://wiki.freitagsrunde.org 13. September 2012 This work is licensed under the Creative Commons Attribution-ShareAlike

Mehr

Projekt 3 Variablen und Operatoren

Projekt 3 Variablen und Operatoren Projekt 3 Variablen und Operatoren Praktisch jedes Programm verarbeitet Daten. Um mit Daten programmieren zu können, muss es Möglichkeiten geben, die Daten in einem Programm zu verwalten und zu manipulieren.

Mehr

Tag 4 Repetitorium Informatik (Java)

Tag 4 Repetitorium Informatik (Java) Tag 4 Repetitorium Informatik (Java) Dozent: Patrick Kreutzer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2016/2017 Willkommen zum Informatik-Repetitorium!

Mehr

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

Übersicht. Informatik 1 Teil 9: komplexe Datentypen (Strukturen, Enumerationen, Unions) Übersicht 9.1 Strukturen (Verwendung) 9.2 Strukturen (Typdeklaration) 9.3 Strukturen (Variablendeklaration) 9.4 Felder aus Strukturen 9.5 Zugriff auf Strukturkomponenten 9.6 Zugriff auf Strukturkomponenten

Mehr

Vektoren 105. array-qualifier static restrict const volatile array-size-expression assignment-expression * simple-declarator identifier

Vektoren 105. array-qualifier static restrict const volatile array-size-expression assignment-expression * simple-declarator identifier Vektoren 105 direct-declarator simple-declarator ( simple-declarator ) function-declarator array-declarator array-declarator direct-declarator [ [ array-qualifier-list ] [ array-size-expression ] ] array-qualifier-list

Mehr

Einführung in die Programmierung für NF MI. Übung 07

Einführung in die Programmierung für NF MI. Übung 07 Einführung in die Programmierung für NF MI Übung 07 Inhalt Wiederholung Kommentare Wiederholung Arrays Einführung in Objekte Einführung in die Programmierung für NF Übung 07 2 Wiederholung Kommentare Kommentare

Mehr

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

Grundlagen der Programmierung in C++ Arrays und Strings, Teil 1 Grundlagen der Programmierung in C++ Arrays und Strings, Teil 1 Wintersemester 2005/2006 G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de Das C++ Typsystem simple structured integral enum

Mehr

Unterlagen. CPP-Uebungen-08/

Unterlagen.  CPP-Uebungen-08/ Unterlagen http://projects.eml.org/bcb/people/ralph/ CPP-Uebungen-08/ http://www.katjawegner.de/lectures.html Kommentare in C++ #include /* Dies ist ein langer Kommentar, der über zwei Zeilen

Mehr

Programmiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm

Programmiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm Programmiersprachen Einführung in C Teil 2: Prof. Dr. int main (int argc, char *argv[]) int sum = 0; for (i = 0; i

Mehr

Kapitel 3. Programmierkurs. Arten von Anweisungen. 3.1 Was sind Anweisungen?

Kapitel 3. Programmierkurs. Arten von Anweisungen. 3.1 Was sind Anweisungen? Kapitel 3 Programmierkurs Birgit Engels, Anna Schulze ZAIK Universität zu Köln Anweisungen, Variablen Arten von Anweisungen Variablen Konstanten Höchste Zeit für ein Programm Gültigkeitsbereich von Variablen

Mehr

7. Übung Informatik II - Objektorientierte Programmierung

7. Übung Informatik II - Objektorientierte Programmierung 7. Übung Informatik II - Objektorientierte Programmierung 29. Mai 2015 Inhalt 1 2 3 Übersicht 1 2 3 Idee Menschen nehmen die Welt in Form von Objekten wahr manche Objekte haben gleiche Eigenschaften, hierüber

Mehr

Grundlagen der Informatik 12. Strukturen

Grundlagen der Informatik 12. Strukturen 12. Strukturen Strukturen und deren Komponenten Strukturen im Projekt Dynamisch erstellte Strukturen Strukturen und Operatoren Strukturen und Funktionen Einfach verkettete Liste Grundlagen der Informatik

Mehr

2. Semester, 2. Prüfung, Lösung

2. Semester, 2. Prüfung, Lösung 2. Semester, 2. Prüfung, Lösung Name Die gesamte Prüfung bezieht sich auf die Programmierung in C++! Prüfungsdauer: 90 Minuten Mit Kugelschreiber oder Tinte schreiben Lösungen können direkt auf die Aufgabenblätter

Mehr

C/C++ Programmierung

C/C++ Programmierung 1 C/C++ Programmierung Verbunde, Reihungen, Zeiger Sebastian Hack Christoph Mallon (hack mallon)@cs.uni-sb.de Fachbereich Informatik Universität des Saarlandes Wintersemester 2009/2010 2 Typen 6.2.5 Primitive

Mehr

Organisatorisches. drei Gruppen Gruppe 1: 10:10-11:40, Gruppe 2: 11:45-13:15 Gruppe 3: 13:20-14:50

Organisatorisches. drei Gruppen Gruppe 1: 10:10-11:40, Gruppe 2: 11:45-13:15 Gruppe 3: 13:20-14:50 Organisatorisches Vorlesung Donnerstag 8:35 bis 10:05 Übung drei Gruppen Gruppe 1: 10:10-11:40, Gruppe 2: 11:45-13:15 Gruppe 3: 13:20-14:50 Tutorium (Mehr oder weniger) abwechselnd Mo und Mi 10-11:30 Termine

Mehr

Organisatorisches. Neue Übungsblätter: Nur mehr elektronisch? Abgabe Di, , 14 Uhr bis Do, , 8Uhr

Organisatorisches. Neue Übungsblätter: Nur mehr elektronisch? Abgabe Di, , 14 Uhr bis Do, , 8Uhr Organisatorisches Neue Übungsblätter: Nur mehr elektronisch? Abgabe Di, 14.10., 14 Uhr bis Do, 23.10., 8Uhr. 14.10.2014 IT I - VO 1 1 IT I: Heute Wiederholung CuP ctd: this Arrays, ArrayLists Schleifen:

Mehr

Dynamische Datentypen

Dynamische Datentypen Dynamische Datentypen Tupel und Folgen o Wertebereich eines Structs / einer Klasse: T1 T2... Tk Werte sind k-tupel Tupel und Folgen o Wertebereich eines Structs / einer Klasse: T1 T2... Tk Werte sind k-tupel

Mehr

C-Kurs 2010 Pointer. 16. September v2.7.3

C-Kurs 2010 Pointer. 16. September v2.7.3 C-Kurs 2010 Pointer Sebastian@Pipping.org 16. September 2010 v2.7.3 This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 License. C-Kurs Mi Konzepte, Syntax,... printf, scanf Next

Mehr

Hydroinformatik I: Referenzen und Zeiger

Hydroinformatik I: Referenzen und Zeiger Hydroinformatik I: Referenzen und Zeiger Prof. Dr.-Ing. habil. Olaf Kolditz 1 Helmholtz Centre for Environmental Research UFZ, Leipzig 2 Technische Universität Dresden TUD, Dresden Dresden, 06. Januar

Mehr

Zeiger: Der Adressoperator &

Zeiger: Der Adressoperator & Zeiger: Der Adressoperator & Variablen werden im Computer im Speicher abgelegt. Nach der Deklaration int a,b,c; double x,y,z; Sieht die Speicherbelegung etwa wie folgt aus: a b c x y z Jede Variable hat

Mehr

Felder (Arrays) und Zeiger (Pointers) - Teil I

Felder (Arrays) und Zeiger (Pointers) - Teil I Felder (Arrays) und Zeiger (Pointers) - Teil I Feldtypen, Sieb des Eratosthenes, Iteration, Zeigertypen, Zeigerarithmetik, dynamische Speicherverwaltung Felder: Motivation n Wir können jetzt über Zahlen

Mehr

RO-Tutorien 3 / 6 / 12

RO-Tutorien 3 / 6 / 12 RO-Tutorien 3 / 6 / 12 Tutorien zur Vorlesung Rechnerorganisation Christian A. Mandery WOCHE 2 AM 06./07.05.2013 KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft

Mehr

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

Einführung in den Einsatz von Objekt-Orientierung mit C++ I Einführung in den Einsatz von Objekt-Orientierung mit C++ I ADV-Seminar Leiter: Mag. Michael Hahsler Syntax von C++ Grundlagen Übersetzung Formale Syntaxüberprüfung Ausgabe/Eingabe Funktion main() Variablen

Mehr

Felder, Zeiger und Adreßrechnung

Felder, Zeiger und Adreßrechnung Felder, Zeiger und Adreßrechnung Felder bestehen aus Variablen eines einzigen Datentyps. Bisher kennen wir eindimensionale Felder. In C sind Felder mit beliebigen Dimensionen möglich. Unsere räumliche

Mehr

C/C++-Programmierung

C/C++-Programmierung 1 C/C++-Programmierung Speicherverwaltung, 0, const Sebastian Hack Christoph Mallon (hack mallon)@cs.uni-sb.de Fachbereich Informatik Universität des Saarlandes Wintersemester 2009/2010 2 Speicherverwaltung

Mehr

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java: Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen

Mehr

Modellierung und Programmierung 1

Modellierung und Programmierung 1 Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 19. November 2015 Gültigkeitsbereich (Scope) von Variablen { int m; {

Mehr

RO-Tutorien 15 und 16

RO-Tutorien 15 und 16 Tutorien zur Vorlesung Rechnerorganisation Tutorienwoche 2 am 04.05.2011 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft

Mehr

Einführung in die Programmiersprache C

Einführung in die Programmiersprache C Einführung in die Programmiersprache C 2 Arrays und Pointer Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät statische Arrays Deklaration (eindimensional): /* 40

Mehr

structure-type-specifier struct [ identifier ] { struct-declaration-list } struct identifier struct-declaration-list struct-declaration

structure-type-specifier struct [ identifier ] { struct-declaration-list } struct identifier struct-declaration-list struct-declaration Verbundtypen structure-type-specifier struct [ identifier ] { struct-declaration-list } struct identifier struct-declaration-list struct-declaration struct-declaration-list struct-declaration struct-declaration

Mehr

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen 5 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Referenzen Beispiel an der einfachen Klasse Walze: public class Walze { int id; public Walze(int id) { this.id = id; Verwenden

Mehr

Die Programmiersprache C. 2. Strukturen, Felder und Funktionen

Die Programmiersprache C. 2. Strukturen, Felder und Funktionen Die Programmiersprache C 2. Strukturen, Felder und Funktionen Vorlesung des Grundstudiums Prof. Johann-Christoph Freytag, Ph.D. Institut für Informatik, Humboldt-Universität zu Berlin WS 2007/08 Teil I:

Mehr

Die Programmiersprache C. 2. Strukturen, Felder und Funktionen

Die Programmiersprache C. 2. Strukturen, Felder und Funktionen Die Programmiersprache C 2. Strukturen, Felder und Funktionen Vorlesung des Grundstudiums Prof. Johann-Christoph Freytag, Ph.D. Institut für Informatik, Humboldt-Universität zu Berlin WS 2005/06 Teil I:

Mehr

Programmierkurs C++ Variablen und Datentypen

Programmierkurs C++ Variablen und Datentypen Programmierkurs C++ Variablen und Datentypen Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer #2 Überblick Welche Datentypen gibt es in

Mehr

Einführung in die Programmiersprache C

Einführung in die Programmiersprache C Einführung in die Programmiersprache C Marcel Arndt arndt@ins.uni-bonn.de Institut für Numerische Simulation Universität Bonn Der Anfang Ein einfaches Programm, das Hello World! ausgibt: #include

Mehr

Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff

Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff Programmieren in C Eine Einführung in die Programmiersprache C Prof. Dr. Nikolaus Wulff Textausgabe per printf Die Funktion printf ist kein Bestandteil der C Sprache sondern gehört zur C Bibliothek. printf

Mehr

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

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 1 Fakultät Verkehrswissenschaften Friedrich List, Professur für Verkehrsbetriebslehre und Logistik Modul Entscheidungsunterstützung in der Logistik Einführung in die Programmierung mit C++ Übung 1 SS 2016

Mehr

C++ - Funktionen und mehr -

C++ - Funktionen und mehr - C++ - Funktionen und mehr - Friedrich-Schiller-Universität Jena Kerstin Gößner und Ralf Wondratschek Prof. Dr. habil. Wolfram Amme Dipl.-Inf. Thomas Heinze Inhaltsverzeichnis 1 Einleitung 3 2 Deklaration,

Mehr

Klassen. Kapitel Klassendeklaration

Klassen. Kapitel Klassendeklaration Kapitel 4 Klassen Wir kommen nun zu einem sehr wichtigen Aspekt der OOT: zu den Klassen. Eine Klasse ist eine vom Benutzer definierte Datenstruktur, eine Sammlung von Variablen (unterschiedlichen Typs)

Mehr

Grundlagen der Informatik 6. Arrays I

Grundlagen der Informatik 6. Arrays I 6. Arrays I Motivation Array (konstante Länge) Speicherbereich Eingabe von Arrays Grundlagen der Informatik (Alex Rempel) 1 Motivation Beispiel: Bildschirmpixel zeichnen Auflösung 800x600, d.h. insgesamt

Mehr

Einführung in C. EDV1-04C-Einführung 1

Einführung in C. EDV1-04C-Einführung 1 Einführung in C 1 Helmut Erlenkötter C Programmieren von Anfang an Rowohlt Taschenbuch Verlag ISBN 3-4993 499-60074-9 19,90 DM http://www.erlenkoetter.de Walter Herglotz Das Einsteigerseminar C++ bhv Verlags

Mehr

Algorithmen und Programmierung II

Algorithmen und Programmierung II Algorithmen und Programmierung II Vererbung Prof. Dr. Margarita Esponda SS 2012 1 Imperative Grundbestandteile Parameterübergabe String-Klasse Array-Klasse Konzepte objektorientierter Programmierung Vererbung

Mehr