Repetitorium Programmieren I + II

Größe: px
Ab Seite anzeigen:

Download "Repetitorium Programmieren I + II"

Transkript

1 Repetitorium Programmieren I + II Stephan Gimbel Johanna Mensik Michael Roth 6. März 2012

2 Agenda 1 Operatorüberladung 2 Pointer Zeigervariable 3 CopyConstructor 4 Listen 5 Array String 6 STL Container und Iteratoren

3 Operatorüberladung Einleitung Operatorüberladung bedeutet das implementieren eines bestimmten Operators für einen bestimmten Datentyp Für Standarddatentypen wie int sind alle Operationen wie +, ++, <, etc. definiert Für eigene Klassen logischerweise nicht! Es gibt unäre und binäre Operatoren

4 Operatorüberladung Unäre Operatoren ++, cast Operatoren, z.b. nach int Zugriffsoperator: [ ] Binäre Operatoren Rechenoperatoren: +,,, / Vergleichsoperatoren: <, > Streamoperatoren: <<, >>

5 Operatorüberladung Codebeispiel - 1 c l a s s Number { p r i v a t e : i n t number ; p u b l i c : Number ( ) ; Number ( i n t number ) ; } Number o p e r a t o r +( c o n s t Number othernumber ) c o n s t ;

6 Operatorüberladung Codebeispiel - 2 Number Number : : o p e r a t o r +( c o n s t Number othernumber ) c o n s t { r e t u r n ( Number ( number + othernumber. number ) ) ; }

7 Operatorüberladung Sinn der Überladung Operatoren erfüllen an sich den Zweck normaler Funktionen, allerdings ist ihre Funktionsweise sowie die Schreibweise festgelegt Ein < Zeichen ist intuitiver als eine Funktion islessthan, sieht im Code besser aus und das Zeichen ist standartisiert Viele STL Funktionen verwenden überladene Operatoren wie <, = und = =, um mit Objekten zu arbeiten

8 Operatorüberladung - Beispiele < Operator b o o l e a n Number : : o p e r a t o r <( c o n s t Number& othernumber ) c o n s t { r e t u r n ( number < othernumber. number ) ; } = = Operator b o o l e a n Number : : o p e r a t o r==(c o n s t Number& othernumber ) c o n s t { r e t u r n ( number == othernumber. number ) ; }

9 Operatorüberladung Achtung! Ihr könnt keine neuen Operatoren erfinden Operatoren gehen davon aus, dass sich das Objekt linksseitig befindet Der Streamoperator wird daher meist global implementiert Streamoperator - 1 ostream& Number : : o p e r a t o r <<(ostream& os ) { os << number ; r e t u r n ( os ) ; } c o n s t // Syntax : somenumber << cout ;

10 Operatorüberladung Lösung: Globale Funktion Das Problem lässt sich beheben, in dem man den Streamoperator global implementiert. Und zwar mit cout als linksseitigen Operator! Streamoperator - 2 ostream& o p erator <<(ostream& os, c o n s t Number& n ) { os << n. number ; r e t u r n ( os ) ; } // Syntax : cout << somenumber ;

11 Pointer Pointer (Zeiger) werden zur indirekten Adressierung benutzt Anwendung i n t i = 5 ; i n t p i ; p i = &i ; i n t p i 1 = &i ;

12 Pointer können den Wert des Objekts, auf das sie zeigen, lesen Anwendung i = p i + 2 ; // i = 7 cout << p i ; // Ausgabe : p i = 7 können den Wert des Objekts, auf das sie zeigen, ändern Anwendung p i = i + 2 ; // Ausgabe : p i = 9 p i += p i ; // Ausgabe : p i = 18 können zur Laufzeit neue Adressen zugewiesen bekommen, um auf andere Objekte zu zeigen Anwendung p i 1 = p i ;

13 Pointer Anwendung // V e r g l e i c h d e r Objekt Werte : cout << ( p i == p i 1 ) ; // t r u e // V e r g l e i c h d e r Z e i g e r Werte : cout << ( p i == p i 1 ) ; // t r u e // V e r g l e i c h d e r Z e i g e r A d r e s s e n : cout << (& p i == &p i 1 ) ; // f a l s e

14 Pointer können zur Laufzeit Adressen von Objekten zugewiesen bekommen, die erst zur Laufzeit erzeugt werden Anwendung p i 1 = new i n t ; p i 1 = 2 0 ; cout << p i 1 ; // Ausgabe : 20 d e l e t e p i 1 ; // g i b t S p e i c h e r f r e i, l ö s c h t a b e r n i c h t p i 1 p i 1 = p i ;

15 Pointer bekommen zur Compile-Zeit nur Speicher für eine Objektadresse, aber nicht den Speicher für das Objekt selbst zugewiesen. Sie werden vom C++ Compiler nicht initialisiert. Falsch double pd ; pd = 2. 0 ; Richtig double pd = 0 ; Absturz zur Laufzeit vorprogrammiert und evtl. nicht reproduzierbar Fehler schwer zu finden

16 Pointer unterliegen der Typkontrolle durch den Compiler Anwendung i n t p i = 0 ; i n t i = 7 ; double pd = 0 ; p i = &i ; // Geht, b e i d e vom Typ i n t Absturz pd = &i ; // Absturz, da pd d o u b l e und i i n t i s t pd = 0xB001 ; // Absturz, da pd d o u b l e und Wert vom Typ l o n g pd = p i ; // Absturz, da pd d o u b l e und p i i n t i s t Typkontrolle aushebeln mit explizitem cast Anwendung pd = r e i n t e r p r e t c a s t < double > ( pv ) ;

17 Pointer Pointer Adressen i n t i = 4 2 ; // i l i e g t b e i 0xB000 i n t p i = &i ; // p i z e i g t a u f 0xB000 ( p i )++; // i = 4 3 ; p i ++; // z ä h l t A d r e s s e hoch, p i z e i g t nun a u f 0xB004 const Pointer (Zeiger auf Konstante) c o n s t i n t i = 4 2 ; c o n s t i n t j = 2 3 ; i n t p i = &i ; // C o m p i l e r f e h l e r c o n s t i n t p i = &i ; // geht p i = &j ; // geht Der Pointer zeigt auf eine Konstante. Wohin der Pointer zeigt kann verändert werden, nicht aber der Inhalt.

18 Pointer const Pointer (konstante Zeiger auf Variablen) i n t a = 42, b=23; i n t c o n s t pa = &a ; pa = &b ; // C o m p i l e r f e h l e r pa = 1 0 ; // geht, I n h a l t von a=10 Der Pointer zeigt auf eine Variable deren Inhalt sich ändern lässt, allerdings kann der Pointer nicht auf andere Speicherstellen zeigen.

19 Pointer const Pointer (konstante Zeiger auf Variablen / Konstanten) i n t a = 4 2 ; c o n s t i n t b=23; c o n s t i n t c o n s t p=&a ; // geht cout << p << e n d l ; // Ausgabe : 42 p = 1 7 ; // geht n i c h t a = 1 7 ; // geht b = 1 7 ; // geht n i c h t Der Pointer zeigt auf eine Variable oder Konstante deren Inhalt sich nicht über den Pointer ändern lässt. Der Pointer kann nicht auf andere Speicherstellen zeigen.

20 Pointer Ersatz für Referenzparameter in Parameterlisten von Funktionen/Methoden Anwendung i n t gibwert ( ) c o n s t { r e t u r n t h i s >wert ; } Zahl& add ( c o n s t i n t wert ) { t h i s >wert += wert ; r e t u r n t h i s ; } Anwendung v o i d main ( ) { Zahl z = 1 0 ; cout << z. add ( 4 ). add ( 6 ). gibwert ( ) << e n d l ; }

21 Pointer Anwendung i n t main ( ) { Konto pkonto1 = 0, pkonto2 = 0, pkonto3 = 0 ; // Dynamisch O b j e k t e e r z e u g e n pkonto1 = new Konto ; pkonto1 >setname ( Max ) ; // K o n s t r u k t o r mit 3 Parametern a u f r u f e n pkonto2 = new Konto ( M o r i t z, 38923, ) ; // Kopie von Konto2 e r z e u g e n pkonto3 = new Konto ( pkonto2 ) ; // S p e i c h e r w i e d e r f r e i g e b e n d e l e t e pkonto1 ; d e l e t e pkonto2 ; d e l e t e pkonto3 ; }

22 Copy Constructor Bisher Objekt erzeugt von anderem Objekt des gleichen Typs Objekt übergaben (Call by Value) Objekt Rückgabe aus Funktion c l a s s A { p r i v a t e : i n t x ; p u b l i c : A( ) { x = 1 0 ; } A( ) {} } ;

23 Copy Constructor mit Copy Konstruktor c l a s s B { p r i v a t e : char name ; p u b l i c : B( ) {name = new char [ 2 0 ] ; } B( ) { d e l e t e [ ] name ; } } ; // copy c o n s t r u c t o r B( c o n s t B &b ) { name = new char [ 2 0 ] ; s t r p y ( name, b. name ) ; }

24 Deep- und Shallow-Copy

25 einfach verkette Liste Anwendung c l a s s Number { p r i v a t e : i n t number ; Number n e x t ; }

26 einfach verkette Liste Anwendung Number Anfang = 0 ; Number A k t u e l l = 0 ; Number neueselement = 0 ;

27 einfach verkette Liste Anwendung neueselement = new Number ( ) ;

28 einfach verkette Liste Anwendung Anfang = neueselement ;

29 einfach verkette Liste Anwendung A k t u e l l = neueselement ;

30 einfach verkette Liste Anwendung neueselement = new Number ( 2 ) ;

31 einfach verkette Liste Anwendung A k t u e l l >s e t N e x t ( neueselement ) ;

32 einfach verkette Liste Anwendung A k t u e l l = neueselement ;

33 einfach verkette Liste Anwendung neueselement = new Number ( 9 9 ) ;

34 einfach verkette Liste Anwendung Number Anfang = 0 ; Number A k t u e l l = 0 ; Number neueselement = 0 ; neueselement = new Number ( ) ; Anfang = neueselement ; A k t u e l l = neueselement ; neueselement = new Number ( 2 ) ; A k t u e l l >s e t N e x t ( neueselement ) ; A k t u e l l = neueselement ; neueselement = new Number ( 9 9 ) ;...

35 einfach verkette Liste Elemente ausgeben Anwendung A k t u e l l = Anfang ; do { cout << A k t u e l l >getnumber ( ) << e n d l ; A k t u e l l = A k t u e l l >getnext ( ) ; } w h i l e ( A k t u e l l!= 0) ;

36 Doppeltverkettete Liste Anwendung c l a s s Number { p r i v a t e : i n t number ; Number p r e ; Number n e x t ; }

37 Baum Anwendung c l a s s Number { p r i v a t e : i n t number ; Number l e f t ; Number r i g h t ; }

38 Array Seite 1 i n t a r r a y 1 [ 1 0 ] ; // D e f i n i t i o n f o r ( i n t i =0 ; i <10 ; i ++) { a r r a y 1 [ i ]= i i ; } f o r ( i n t i =0; i <10; i=i +1) { cout<<a r r a y 1 [ i ]<< \n ; }

39 Array Seite 2 i n t a r r a y 1 [ ] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 } ; // a r r a y hat 10 e l e m e n t e i n t a r r a y 2 [ 3 ] = { 0, 1 } ; // a r r a y 2 [0]==0, a r r a y 2 [1]==1, a r r a y 2 [2]==??? i n t a r r a y 3 [ 2 ] ; // a r r a y 3 [ 0 ] und a r r a y 3 [ 1 ] s i n d u n d e f i n i e r t i n t a r r a y 4 [ ] = { 0 } ; // a l l e e l e m e n t e haben den wert 0 i n t a r r a y 5 [ ] = { 1 } ; // das e r s t e e l e m e n t hat den wert 1, a l l e a n d e r en den wert 0 char a r r a y 6 [ 2 ] [ 5 ] = // d i e 2 i s t o p t i o n a l { { H, a, l, l, o }, { W, e, l, t } } ; // a r r a y 6 [ 1 ] [ 4 ] == 0

40 Array Seite 3 char c ; // Ein P o i n t e r a u f c h a r c=new char [ j ] ; // R e s e r v i e r e S p e i c h e r f ü r j c h a r a c t e r s // P o i n t e r c z e i g t nun d a r a u f d e l e t e [ ] c ; //wenn mit new [ ] S p e i c h e r r e s e r v i e r t wird, // muss d e r S p e i c h e r mit d e l e t e [ ] w i e d e r // f r e i g e b e n werden

41 Array Seite 4 char c [ 4 ] ; // A r r a y von P o i n t e r n c [ 0 ] = new char ; c [ 1 ] = new char ; c [ 2 ] = new char ; c [ 3 ] = new char ; c [ 0 ] = A ; c [ 1 ] = B ; c [ 2 ] = C ; c [ 3 ] = D ; d e l e t e c [ 0 ] ; d e l e t e c [ 1 ] ; d e l e t e c [ 2 ] ; d e l e t e c [ 3 ] ;

42 Array Array als Parameter v o i d somefunction ( i n t a r r [ ] ) { cout << s i z e o f ( a r r ) << e n d l ; // Ausgabe : 4 } i n t main ( ) { i n t meinarray [ 1 5 ] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 1 0, 1 1, 1 2, 1 3, 1 4, 1 5 } ; somefunction ( meinarray ) ; cout << s i z e o f ( meinarray ) << e n d l // Ausgabe : 60 << s i z e o f ( i n t ) << e n d l // Ausgabe : 4 << s i z e o f ( meinarray ) / s i z e o f ( i n t ) << e n d l ; // Ausgabe : 15 r e t u r n 0 ; } Achtung! In einer Parameterliste ist int arr[] das gleiche wie int*, daher kann sizeof() nicht zur ermittling der Größe verwendet werden. Dies funktioniert nur im Sichtbarkeitsbereich der Definition!

43 Array Array als Parameter - korrekt v o i d somefunction ( i n t a r r [ ], s i z e t n ) { f o r ( s i z e t i =0; i <n ; ++i ) cout << a r r [ i ] << e n d l ; }

44 Array Mehrdimensionale Arrays als Parameter (2D) v o i d t a b e l l e n a u s g a b e ( i n t ( T) [ 3 ], s i z e t n ) { // A l t e r n a t i v : v o i d t a b e l l e n a u s g a b e ( i n t T [ ] [ 3 ], s i z e t n ) { f o r ( s i z e t i =0; i <n ; ++i ) { f o r ( s i z e t j =0; j <3; ++j ) cout << T[ i ] [ j ] ; cout << e n d l ; } cout << e n d l ; } i n t main ( ) { i n t f e l d 1 [ 2 ] [ 3 ] = { { 1, 2, 3 }, { 4, 5, 6 } } ; i n t ( p F e l d ) [ 3 ] = f e l d 1 ; // z e i g t a u f Z e i l e f e l d 1 [ 0 ] ; t a b e l l e n a u s g a b e ( f e l d 1, 2) ; r e t u r n 0 ; }

45 Array Mehrdimensionale Arrays als Parameter - Fortsetzung 3D... Information [3][4] für den Datentyp int Matrix3D [2][3][4], usw... v o i d t a b e l l e n a u s g a b e ( i n t ( T) [ 3 ] [ 4 ], s i z e t n ) ; // bzw : v o i d t a b e l l e n a u s g a b e ( i n t T [ ] [ 3 ] [ 4 ], s i z e t n ) ;

46 Array Zweidimensionale Arrays als Parameter - Beliebige Spaltengröße template<typename Datentyp> v o i d t a b e l l e n a u s g a b e T m p l ( Datentyp t a b e l l e, s i z e t n ) { c o n s t s i z e t SPALTEN = s i z e o f t a b e l l e [ 0 ] / s i z e o f t a b e l l e [ 0 ] [ 0 ] ; f o r ( s i z e t i =0; i <n ; ++i ) { f o r ( s i z e t j =0; j <SPALTEN ; ++j ) cout << t a b e l l e [ i ] [ j ] << ; cout << e n d l ; } cout << e n d l ; } i n t main ( ) { i n t f e l d 1 [ 2 ] [ 7 ] = { { 1, 2, 3, 4, 5, 6, 7 }, { 4, 5, 6, 7, 8, 9, 1 } } ; t a b e l l e n a u s g a b e T m p l ( f e l d 1, 2) ; r e t u r n 0 ; } Funktioniert für beliebige Spaltengröße, aber Zeilen müssen angegeben werden!

47 Array Interpretation von [], [][],... Compiler wandelt Indexoperatoren in Zeigerdarstellung um X bezeichnet alles vor dem letzten Klammerpaar, Y ist der Inhalt des letzten Klammerpaares X[Y] = *((X)+(Y)) Fortgesetzte Anwendung löst alle Indexoperatoren auf statt matrix[i][j] geht also auch: *(matrix[i]+j) oder *(*(matrix+i)+j) Interpretation: Matrix[i] ist ein Zeiger auf i-te Zeile Position (matrix+i) liegt (i mal sizeof(matrix[0])) Bytes von der Stelle matrix entfernt siehe Template Beispiel auf vorheriger Seite!

48 String Stellt typische Operationen für die Verarbeitung von Zeichenketten zur Verfügung Anwendung #i n c l u d e <i o s t r e a m > #i n c l u d e <s t r i n g > u s i n g namespace s t d ; Anwendung s t r i n g month = J u l i ;

49 String Verwendung Stellt typische Operationen für die Verarbeitung von Zeichenketten zur Verfügung Anwendung c i n >> month ; // Eingabe i n t l e n g t h = month. l e n g t h ( ) ; // Länge des S t r i n g s i f ( month == J u l i ) // V e r g l e i c h e n z w e i e r S t r i n g s cout << month ; cout << month. s u b s t r ( 1, 2) ; // S u b s t r i n g month2 = August ; month. swap ( month2 ) ; // I n h a l t e t a u s c h e n

50 String Verwendung Anwendung month = month + + month2 ; // S t r i n g s zusammensetzten s i z e t pos1 = month. f i n d ( J u l i ) ; //Wort f i n d e n i f ( pos1!= s t r i n g : : npos ) // F a l l s S t r i n g vorkommt month. e r a s e ( pos1, 4) ; f o r ( i n t i = 0 ; i < month. l e n g t h ( ) ; i ++) cout << month [ i ] ; // Z u g r i f f a u f e i n z e l n e Z e i c h e n

51 String Verwendung Anwendung s t r i n g s t r i n g 1 = A ; // ASCII : 65 s t r i n g s t r i n g 2 ; s t r i n g 2 [ 0 ] = ( s t r i n g 1 [ 0 ] + 1 ) ; cout << s t r i n g 2 [0]<< e n d l ; // ASCII : 66 = B

52 STL Container und Iteratoren Häufig verwendete Container vector list set multiset map multimap Für jeden dieser Container gibt es einen Iterator

53 STL Container und Iteratoren Anlegen von Containern und Iteratoren Container und Iteratoren sind Templates, sie werden also entsprechend angelegt: // Einen v e c t o r a n l e g e n v e c t o r <i n t > myvector ; // Ein Set a n l e g e n s e t <s t r i n g > myset ; // I t e r a t o r a u f s e t a n l e g e n s e t <s t r i n g >:: i t e r a t o r i t = myset. b e g i n ( ) ;

54 STL Container und Iteratoren vector Einfaches dynamisches Array Einfügen typischerweise mit push back() Zugriff über [ ] Operator oder Iteratoren list Einfügen mit push back oder insert() Zugriff über Iteratoren, kein wahlfreier Zugriff auf Elemente in der Mitte Sortierbar über sort(), verwendet entweder den < Operator oder einen Funktionszeiger zu einer eigenen lessthan Funktion

55 STL Container und Iteratoren set Ein Satz von einmaligen Elementen, intern ein binärer Baum Einfügen über insert, beim Einfügen wird sortiert Zugriff über Iteratoren multiset Elemente dürfen mehrfach vorkommen count() Funktion gibt Auskunft über die Häufigkeit

56 STL Container und Iteratoren Vector #i n c l u d e <v e c t o r >... v e c t o r <i n t > myvector ; // d e c l a r e V e c t o r myvector. p u s h b a c k ( 4 2 ) ; // add Element a t end myvector. p u s h b a c k ( 2 3 ) ; myvector. p u s h b a c k ( ) ; // V e c t o r c o n t e n t : 42, 23, 117 cout << myvector. s i z e ( ) ; //... 3 cout << myvector. f r o n t ( ) ; // cout << myvector. back ( ) ; // myvector. empty ( ) ; //... f a l s e cout << myvector. a t ( 1 ) ; // cout << myvector [ 1 ] ; // myvector. e r a s e ( myvector. b e g i n ( ) +1) ; // Vec c o n t e n t : 42, 117 myvector. pop back ( ) ; // Vec c o n t e n t : 42

57 STL Container und Iteratoren Vector Iteration v e c t o r <i n t > o t h e r V e c t o r ;... // V e c t o r Content : 17, 64, 74, 23, 42, 73, 87 v e c t o r <i n t >:: i t e r a t o r i t ; // I t e r a t o r ( wie P o i n t e r ) z u r N a v i g a t i o n durch STL C o n t a i n e r f o r ( i t=o t h e r V e c t o r. b e g i n ( ) ; i t < o t h e r V e c t o r. end ( ) ; i t ++) cout << << i t ; // Ausgabe : f o r ( i n t i =0; i <o t h e r V e c t o r. s i z e ( ) ; i ++) cout << << o t h e r V e c t o r. a t ( i ) ; f o r ( i n t i =0; i <o t h e r V e c t o r. s i z e ( ) ; i ++) cout << << o t h e r V e c t o r [ i ] ; o t h e r V e c t o r. c l e a r ( ) ; //... l e e r

58 STL Container und Iteratoren List #i n c l u d e <l i s t >... v e c t o r <i n t > mylist ; mylist. p u s h b a c k ( 1 7 ) ; mylist. p u s h b a c k ( 6 4 ) ; mylist. p u s h b a c k ( 7 4 ) ; mylist. p u s h b a c k ( 2 3 ) ; mylist. p u s h b a c k ( 4 2 ) ; mylist. p u s h b a c k ( 7 3 ) ; mylist. p u s h b a c k ( 8 7 ) ; // L i s t c o n t e n t : 17, 64, 74, 23, 42, 73, 87 mylist. p u s h f r o n t ( 1 0 ) ; // L i s t c o n t e n t : 10, 17, 64, 74, 23, 42, 73, 87 mylist. pop back ( ) ; //... 10, 17, 64, 74, 23, 42, 73 mylist. p o p f r o n t ( ) ; //... 17, 64, 74, 23, 42, 73 mylist. remove ( 7 4 ) ; //... 17, 64, 23, 42, 73

59 STL Container und Iteratoren List Iteration v e c t o r <i n t > o t h e r L i s t ; // I n h a l t : 23, 43, 45, 67, 34, 54, 43, 17, 43, 56 o t h e r L i s t. u n i q u e ( ) ; //... 23, 43, 45, 67, 34, 54, 17, 56 o t h e r L i s t. s o r t ( ) ; //... 17, 23, 34, 43, 45, 54, 56, 67 l i s t <i n t >:: i t e r a t o r i t ; f o r ( i t=o t h e r L i s t. b e g i n ( ) ; i t!= o t h e r L i s t. end ( ) ; ++i t ) cout << << i t ; kein Index-Operator [] kein.at() sequentiell!

Programmierkurs C++ Templates & STL (1/2)

Programmierkurs C++ Templates & STL (1/2) Programmierkurs C++ Templates & STL (1/2) Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck https://www.itm.uni-luebeck.de/people/fischer #2 Templates Die wichtigsten objekt-orientierten

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

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

C++ Teil 5. Sven Groß. 13. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 18 C++ Teil 5 Sven Groß 13. Mai 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 13. Mai 2016 1 / 18 Themen der letzten Vorlesung Funktionen Funktionsüberladung, Signatur Rekursion const-deklaration Referenzen

Mehr

Einführung in die STL

Einführung in die STL Einführung in die STL Fimberger Lucia lfimberg@cosy.sbg.ac.at Nidetzky Marion mnidetzk@cosy.sbg.ac.at Was ist die STL? Abkürzung für Standard Template Library Eine generische Bibliothek Ist kaum objektorientiert,

Mehr

6 ZEIGER UND REFERENZEN - ALLGEMEINES

6 ZEIGER UND REFERENZEN - ALLGEMEINES 6 ZEIGER UND REFERENZEN - ALLGEMEINES Leitideen: Zeiger sind Adressen mit zusätzlicher Typinformation über das dort gespeicherte Objekt. Die Vereinbarungssyntax soll der Ausdruckssyntax entsprechen und

Mehr

Zeiger, Arrays und Strings in C und C++

Zeiger, Arrays und Strings in C und C++ Zeiger, Arrays und Strings in C und C++ 1 Zeiger in Java und C/C++ Zeigervariable (kurz: Zeiger, engl.: pointer): eine Variable, die als Wert eine Speicheradresse enthält Java: Zeiger werden implizit für

Mehr

Programmieren in C++ Arrays, Strings und Zeigerarithmetik

Programmieren in C++ Arrays, Strings und Zeigerarithmetik Programmieren in C++ Arrays, Strings und Zeigerarithmetik Inhalt Eindimensionale C-Arrays C-Strings und Strings (Mehrdimensionale C-Arrays) Arrays und Vektoren (C++) Unique Pointers (C++11) Zeigerarithmetik

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

Programmierung und Angewandte Mathematik

Programmierung und Angewandte Mathematik Programmierung und Angewandte Mathematik C++ /Scilab Programmierung und Einführung in das Konzept der objektorientierten Anwendungen zu wissenschaftlichen Rechnens SS 2012 Ablauf Was sind Funktionen/Methoden

Mehr

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

C++ Teil 6. Sven Groß. 27. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 14 C++ Teil 6 Sven Groß 27. Mai 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 6 27. Mai 2016 1 / 14 Themen der letzten Vorlesung Musterlösung A2 Wdh.: Zeiger und Felder Kopieren von Feldern Dynamische Speicherverwaltung

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

Programmieren in C/C++ und MATLAB

Programmieren in C/C++ und MATLAB Programmieren in C/C++ und MATLAB Sven Willert Sabine Schmidt Christian-Albrechts-Universität zu Kiel CAU 5-1 Übung Schreiben Sie ein Programm, das die Zahl π durch π = 4 4 4 4 4 4 + + +... 3 5 7 9 11

Mehr

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

DAP2-Programmierpraktikum Einführung in C++ (Teil 2) DAP2-Programmierpraktikum Einführung in C++ (Teil 2) Carsten Gutwenger 18. April 2008 Lehrstuhl 11 Algorithm Engineering Fakultät für Informatik, TU Dortmund Überblick Dynamischer Speicher Klassen und

Mehr

C++ Teil 7. Sven Groß. 3. Juni Sven Groß (IGPM, RWTH Aachen) C++ Teil 7 3. Juni / 16

C++ Teil 7. Sven Groß. 3. Juni Sven Groß (IGPM, RWTH Aachen) C++ Teil 7 3. Juni / 16 C++ Teil 7 Sven Groß 3. Juni 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 7 3. Juni 2016 1 / 16 Themen der letzten Vorlesung dynamische Speicherverwaltung (Wdh.) Cast bei Zeigern STL-Vektoren + Live Programming

Mehr

5.4 Arrays. Oft müssen viele Werte gleichen Typs gespeichert werden. Idee: Lege sie konsekutiv ab! Greife auf einzelne Werte über ihren Index zu!

5.4 Arrays. Oft müssen viele Werte gleichen Typs gespeichert werden. Idee: Lege sie konsekutiv ab! Greife auf einzelne Werte über ihren Index zu! 5.4 Arrays Oft müssen viele Werte gleichen Typs gespeichert werden. Idee: Lege sie konsekutiv ab! Greife auf einzelne Werte über ihren Index zu! Feld: Index: 17 3-2 9 0 1 0 1 2 3 4 5 Harald Räcke 114/656

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

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

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

9. Vektoren. (auch Felder/array)

9. Vektoren. (auch Felder/array) 9. Vektoren (auch Felder/array) Motivation Hat man mehrere Objekte gleichen Datentyps, so kann man sie explizit deklarieren, wenn die Anzahl bekannt ist double x1,x2,x3,x4; Nachteile: versagt, -wenn die

Mehr

Physische Datenstrukturen

Physische Datenstrukturen Elementare Datentypen Strukturierte Datentypen Zeiger Seite 1 Einfache Datentypen Datentyp char Verwendung: ASCII-Zeichen Wertebereich: alle darstellbaren Zeichen, 8 bit lange Ganzzahlen im Intervall -128

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

Arrays,Strings&Pointer in C/C++

Arrays,Strings&Pointer in C/C++ Arrays,Strings&Pointer in C/C++ Vortrag Mathias Reich Am 21.5.2002 Pointer Da zur Zeit der Compelierung des Programms nicht immer der Umfang der zu bearbeitenden Daten feststeht muss man sich - in manchen

Mehr

Polymorphismus 179. Function.h. #include <string>

Polymorphismus 179. Function.h. #include <string> Polymorphismus 179 #include Function.h class Function { public: virtual ~Function() {}; virtual std::string get_name() const = 0; virtual double execute(double x) const = 0; }; // class Function

Mehr

Programmieren in C++ Überladen von Methoden und Operatoren

Programmieren in C++ Überladen von Methoden und Operatoren Programmieren in C++ Überladen von Methoden und Operatoren Inhalt Überladen von Methoden Überladen von Operatoren Implizite und explizite Konvertierungsoperatoren 7-2 Überladen von Methoden Signatur einer

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

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

Objektorientierte Programmierung mit C++ SS 2007

Objektorientierte Programmierung mit C++ SS 2007 Objektorientierte Programmierung mit C++ SS 2007 Andreas F. Borchert Universität Ulm 5. Juni 2007 Polymorphismus #include Function.h class Function { public: virtual ~Function() {}; virtual std::string

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

Hier wird die Verwendung der Standard Template Library (kurz STL) kurz beschrieben. Inhalt 1.Verwendung der STL Grundlagen...

Hier wird die Verwendung der Standard Template Library (kurz STL) kurz beschrieben. Inhalt 1.Verwendung der STL Grundlagen... STL Die C++ Bibliothek ist eine Sammlung von standardisierten Klassen und Containern. Zu beachten ist, dass nicht jede C++ Implementierung den ganzen Umfang der Standardbibliothek realisiert hat. Hier

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

Assoziative Container in C++ Christian Poulter

Assoziative Container in C++ Christian Poulter Assoziative Container in C++ Christian Poulter Seminar: Die Sprache C++ Mat-Nr.: 53 03 129 EMail: inf@poulter.de Christian Poulter Assoziative Container in C++ Seite 1/10 Inhalt 1. Einleitung: Container...

Mehr

Peter Prinz Ulla Kirch-Prinz C+ + Lernen und professionell anwenden. ffl mitp

Peter Prinz Ulla Kirch-Prinz C+ + Lernen und professionell anwenden. ffl mitp Peter Prinz Ulla Kirch-Prinz C+ + Lernen und professionell anwenden ffl mitp Inhaltsverzeichnis Einleitung 19 1 Grundlagen 21 Entwicklung und Eigenschaften von C + + 22 Objektorientierte Programmierung

Mehr

C-Arrays vs. C++-Container

C-Arrays vs. C++-Container C-Arrays vs. C++-Container In C verwendet man (mangels Alternativen) sehr häufig das C-Array (= Feld): im Speicher hintereinander abgelegte Elemente vom gleichen Typ. Arrays haben einen Basistyp (Typ des

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

Eine praktische Einführung in die Programmierung mit der Programmiersprache C

Eine praktische Einführung in die Programmierung mit der Programmiersprache C Eine praktische Einführung in die Programmierung mit der Programmiersprache C www.c-howto.de C-HowTo www.c-howto.de Inhaltsverzeichnis 1 Einführung.. 10 1:1 Wozu Programmieren? 10 1.2 Was ist ein Programm?

Mehr

Wo und wie lange leben Objekte? globale Objekte lokale Objekte dynamische Objekte

Wo und wie lange leben Objekte? globale Objekte lokale Objekte dynamische Objekte Wo und wie lange leben Objekte? globale Objekte lokale Objekte dynamische Objekte entstehen durch... globale Objektvereinbarung: T o; blocklokale Objektvereinbarung: {.. T o;.. durch expliziten Aufruf

Mehr

Arnold Willemer. Einstieg in C++ Galileo Press

Arnold Willemer. Einstieg in C++ Galileo Press Arnold Willemer Einstieg in C++ Galileo Press Vorwort 13 1.1 Programmieren 17 1.1.1 Start eines Programms 17 1.1.2 Eintippen, übersetzen, ausführen 18 1.1.3 Der Algorithmus 20 1.1.4 Die Sprache C++ 21

Mehr

Einführung in die STL

Einführung in die STL 1/29 in die STL Florian Adamsky, B. Sc. (PhD cand.) florian.adamsky@iem.thm.de http://florian.adamsky.it/ cbd Softwareentwicklung im WS 2014/15 2/29 Outline 1 3/29 Inhaltsverzeichnis 1 4/29 Typisierung

Mehr

Programmieren in Java

Programmieren in Java Ein Projekt 2 Wiederholung: new-operator Werte nicht-primitiver Datentypen müssen mit new erzeugt werden Es gibt keine Möglichkeit primitive Daten mit new zu erzeugen Beispiele int[] myarray = new int[]

Mehr

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.

Mehr

Informatik 1 ( ) D-MAVT F2010. Schleifen, Felder. Yves Brise Übungsstunde 5

Informatik 1 ( ) D-MAVT F2010. Schleifen, Felder. Yves Brise Übungsstunde 5 Informatik 1 (251-0832-00) D-MAVT F2010 Schleifen, Felder Nachbesprechung Blatt 3 Aufgabe 1 ASCII... A > a Vorsicht: Lösen Sie sich von intuitiven Schlussfolgerungen. A ist nicht grösser als a, denn in

Mehr

Zeiger (engl. Pointer)

Zeiger (engl. Pointer) Zeiger (engl. Pointer) Zeiger Ein Zeiger (engl. Pointer) speichert eine Adresse, unter der ein Wert im Speicher des Computers gespeichert werden kann. Eine Variable im Gegensatz speichert einen Wert. Der

Mehr

VDK-Informatik

VDK-Informatik Florian Andritsch 7. Juli 2010 1 / 16 Übersicht Heute: Mittwoch Themen, Dynamische Arrays, Wiederholung Funktionen-Arrays- Rekursionen, Structs 2 / 16 Übersicht Was gabs gestern? Themen double, float Konversion

Mehr

Einführung in die STL anhand eines ausgewählten Beispiels

Einführung in die STL anhand eines ausgewählten Beispiels Einführung in die STL anhand eines ausgewählten Beispiels Frank M. Thiesing http://home.t-online.de/home/ frank.thiesing/stl/stl-folien.pdf Inhalt Überblick über die C++ STL Container Iteratoren Algorithmen

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

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

Auswahlen (Selektionen)

Auswahlen (Selektionen) 1 Anhang 10.3 Ein/Ausgaben Eingabe mit Prompt (Beispiel) cout ; // Prompt ohne endl cin

Mehr

... Vorwort Einstieg in die Programmierung Ablaufsteuerung... 71

... Vorwort Einstieg in die Programmierung Ablaufsteuerung... 71 ... Vorwort... 13 1... Einstieg in die Programmierung... 15 1.1... Programmieren... 15 1.1.1... Start eines Programms... 15 1.1.2... Eintippen, übersetzen, ausführen... 16 1.1.3... Der Algorithmus... 18

Mehr

Mapra: C++ Teil 2. Felix Gruber, Sven Groß. 2. Mai 2017 IGPM. Felix Gruber, Sven Groß (IGPM) Mapra: C++ Teil 2 2. Mai / 11

Mapra: C++ Teil 2. Felix Gruber, Sven Groß. 2. Mai 2017 IGPM. Felix Gruber, Sven Groß (IGPM) Mapra: C++ Teil 2 2. Mai / 11 Mapra: C++ Teil 2 Felix Gruber, Sven Groß IGPM 2. Mai 2017 Felix Gruber, Sven Groß (IGPM) Mapra: C++ Teil 2 2. Mai 2017 1 / 11 Themen vom letzten Mal Kontrollstrukturen Funktionen const Referenzen Zeiger

Mehr

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

C++ Teil 5. Sven Groß. 8. Mai IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 8. Mai / 16 C++ Teil 5 Sven Groß IGPM, RWTH Aachen 8. Mai 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 8. Mai 2015 1 / 16 Themen der letzten Vorlesung Live Programming zu A2 Gleitkommazahlen Rundungsfehler Auswirkung

Mehr

Sortierte Assoziative Container der STL

Sortierte Assoziative Container der STL Sortierte Assoziative Container der STL Speichern die Daten intern in einer Baumstruktur Elementzugriff O(log 2 N) Das mathematische Konzept einer Relation oder eine diskrete Abbildung wird mit map realisiert,

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

Zeiger in C und C++ Zeiger in Java und C/C++

Zeiger in C und C++ Zeiger in Java und C/C++ 1 Zeiger in Java und C/C++ Zeigervariable (kurz: Zeiger, engl.: pointer): eine Variable, die als Wert eine Speicheradresse enthält Java: Zeiger werden implizit für Referenztypen (Klassen und Arrays) verwendet,

Mehr

C-Pointer (Zeiger, Adressen) vs. C++ Referenzen

C-Pointer (Zeiger, Adressen) vs. C++ Referenzen C-Pointer (Zeiger, Adressen) vs. C++ Referenzen Der Pointer (C/C++): In C/C++ ist der Pointer ein eigener Datentyp, der auf Variablen/Objekte zeigen kann. Indem man den Pointer dereferenziert, gewinnt

Mehr

STL-Container und Laufzeit

STL-Container und Laufzeit STL-Container und Laufzeit Eine Übersicht Höhere Programmierung / C++ Yannick Kaiser, LMU 1 C++11 Array konstanter Länge, die bei der Initalisierung angegeben werden muss STL-Kapselung für klassische

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

Betriebssysteme, Rechnernetze und verteilte Systeme 1. Crashkurs C (2)

Betriebssysteme, Rechnernetze und verteilte Systeme 1. Crashkurs C (2) Betriebssysteme, Rechnernetze und verteilte Systeme 1 Crashkurs C (2) Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/teaching/ss2008/bsrvs1/

Mehr

1. Übung zu "Numerik partieller Differentialgleichungen"

1. Übung zu Numerik partieller Differentialgleichungen 1. Übung zu "Numerik partieller Differentialgleichungen" Simon Gawlok, Eva Treiber Engineering Mathematics and Computing Lab 22. Oktober 2014 1 / 15 1 Organisatorisches 2 3 4 2 / 15 Organisatorisches Ort:

Mehr

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

Arrays. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 3. 1 Modulübersicht 3 Programmieren mit Java Modul 3 Arrays Theorieteil Inhaltsverzeichnis 1 Modulübersicht 3 2 Eindimensionale Arrays 3 2.1 Arrays deklarieren.............................. 3 2.2 Arrays erzeugen................................

Mehr

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

Dynamische Datentypen. Destruktor, Copy-Konstruktor, Zuweisungsoperator, Dynamischer Datentyp, Vektoren Dynamische Datentypen Destruktor, Copy-Konstruktor, Zuweisungsoperator, Dynamischer Datentyp, Vektoren Probleme mit Feldern (variabler Länge) man kann sie nicht direkt kopieren und zuweisen Probleme mit

Mehr

5.1 Mehr Basistypen. (Wie viele Werte kann man mit n Bit darstellen?)

5.1 Mehr Basistypen. (Wie viele Werte kann man mit n Bit darstellen?) 5.1 Mehr Basistypen Außer int, stellt Java weitere Basistypen zur Verfügung. Zu jedem Basistyp gibt es eine Menge möglicher Werte. Jeder Wert eines Basistyps benötigt die gleiche Menge Platz, um ihn im

Mehr

Programmieren in C++ Templates

Programmieren in C++ Templates Programmieren in C++ Templates Inhalt Templates Funktions- und Klassen-Templates Spezialisierung von Templates Generische Klassen Einbinden von Templates Instantiierung (implizit und explizit) Templates

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

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

Typ : void* aktuelle Parameter Pointer von beliebigem Typ

Typ : void* aktuelle Parameter Pointer von beliebigem Typ 2. Funktionen - Prototypvereinbarung typangabe funktionsname(parameterliste); - Funktionsdefinition typ funktionsname(parameterliste){ Anweisung - Funktionstyp -> Typ der Funktionswertes zulaessige Typangaben

Mehr

C++ - Operatoren. Eigene Klassen mit neuen Funktionen

C++ - Operatoren. Eigene Klassen mit neuen Funktionen C++ - Operatoren Eigene Klassen mit neuen Funktionen Übersicht Klassen bisher Eigene Operatoren definieren 2 Bisher Durch Kapselung, Vererbung und Polymorphy können nun eigene Klassen definiert werden,

Mehr

Gran Turismo Cars - WS 11/12

Gran Turismo Cars - WS 11/12 WS 2011/2012 Stephan Gimbel Repetitorium PAD 1+2 Übungsblatt Gran Turismo Cars - WS 11/12 Empfehlung: Arbeiten Sie in kleinen Schritten und sorgen Sie dafür, dass Sie jederzeit ein lauffähiges Anwendungssystem

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, 08. Januar

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

C-Pointer (Zeiger, Adressen) vs. C++ Referenzen

C-Pointer (Zeiger, Adressen) vs. C++ Referenzen C-Pointer (Zeiger, Adressen) vs. C++ Referenzen Der Pointer (C/C++): In C/C++ ist der Pointer ein eigener Datentyp, der auf Variablen/Objekte zeigen kann. Indem man den Pointer dereferenziert, gewinnt

Mehr

3.8 Objekttypen und Arrays. Wir werden uns in diesem Kapitel näher mit den Objekttypen in Java beschäftigen.

3.8 Objekttypen und Arrays. Wir werden uns in diesem Kapitel näher mit den Objekttypen in Java beschäftigen. 3.8 Objekttypen und Arrays Wir werden uns in diesem Kapitel näher mit den Objekttypen in Java beschäftigen. Praktische Informatik I Wolfgang Effelsberg 3. Die Programmiersprache Java 3.8-1 Primitive Datentypen

Mehr

Viel Erfolg bei der Bearbeitung der Aufgaben!

Viel Erfolg bei der Bearbeitung der Aufgaben! Musterlösung Name:... 1 2 3 4 5 Gesamt Note 12 8 10 15 11 56 Bitte tragen Sie auf dem Deckblatt Ihr Namen und Ihre Matrikelnummer ein und auf allen weiteren Seiten nur noch Ihre Matrikelnummer. Lösungen

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Funktionen Rückblick Operatoren logische Verknüpfungen Zusammengesetzte Operatoren ( Zuweisungsoperatoren ) Kontrollstrukturen Bedingte Anweisungen (if-abfrage, switch-konstrukt)

Mehr

Programmieren I. Arrays Heusch 7.2 Ratz Institut für Angewandte Informatik

Programmieren I. Arrays Heusch 7.2 Ratz Institut für Angewandte Informatik Programmieren I Arrays Heusch 7.2 Ratz 5.1 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Arrays: Definition Arrays (dt. Felder) dienen zum Speichern mehrerer gleichartiger Daten

Mehr

Objekttypen. Referenzen, Objekte, Gleichheit, Wrapper, Arrays, mehr-dimensionale Arrays, Bildbearbeitung, krumme Arrays

Objekttypen. Referenzen, Objekte, Gleichheit, Wrapper, Arrays, mehr-dimensionale Arrays, Bildbearbeitung, krumme Arrays Objekttypen Referenzen, Objekte, Gleichheit, Wrapper, Arrays, mehr-dimensionale Arrays, Bildbearbeitung, krumme Arrays Primitive- und Objekt-Datentypen Primitive Datentypen benötigen einen vorher genau

Mehr

Der Gnu-C++-Compiler allerdings lässt den oben beschriebenen Code durchgehen. Das ist allerdings nicht Standardkonform und sollte deswegen vermieden

Der Gnu-C++-Compiler allerdings lässt den oben beschriebenen Code durchgehen. Das ist allerdings nicht Standardkonform und sollte deswegen vermieden 1 Der Gnu-C++-Compiler allerdings lässt den oben beschriebenen Code durchgehen. Das ist allerdings nicht Standardkonform und sollte deswegen vermieden werden. 2 Der Speicher wird auf einem besonderen Speicherbereich,

Mehr

Crashkurs C++ - Teil 1

Crashkurs C++ - Teil 1 Crashkurs C++ - Teil 1 Intro Speicherverwaltung Variablen, Pointer, Referenzen Felder statische & dynamische Allozierung Birgit Möller & Denis Williams AG Bioinformatik & Mustererkennung Institut für Informatik

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

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

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2 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 2 SS 2016

Mehr

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

Java Einführung Objekt-Datentypen und Strings. Kapitel 8 und 9

Java Einführung Objekt-Datentypen und Strings. Kapitel 8 und 9 Java Einführung Objekt-Datentypen und Strings Kapitel 8 und 9 Inhalt Was sind Objekt-Datentypen Sonderheiten bei Zuweisung und Vergleich Zeichenketten (Strings) Zeichencodes Char, Char-Arrays und Strings

Mehr

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

Verschlüsseln eines Bildes. Visuelle Kryptographie. Verschlüsseln eines Bildes. Verschlüsseln eines Bildes Verschlüsseln eines Bildes Visuelle Kryptographie Anwendung von Zufallszahlen Wir wollen ein Bild an Alice und Bob schicken, so dass Alice allein keine Information über das Bild bekommt Bob allein keine

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

C++ Teil 4. Sven Groß. 30. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 16

C++ Teil 4. Sven Groß. 30. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 16 C++ Teil 4 Sven Groß IGPM, RWTH Aachen 30. Apr 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 4 30. Apr 2015 1 / 16 Themen der letzten Vorlesung Funktionen: Definition und Aufruf Wert- und Referenzparameter,

Mehr

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

Pointer und Arrays. INE1, Montag M. Thaler, Office TG208.  ZHAW, M. Thaler, K. Rege, G. Pointer und Arrays INE1, Montag M. Thaler, tham@zhaw.ch Office TG208 http://www.zhaw.ch/~tham 1 Um was geht es? Variable Speicherplatz Datenwert über Name ansprechbar hat Typ hat Adresse (Speicheradresse)

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

Schwerpunkte. 10. Felder (Arrays) Grundprinzip von Arrays. Klassifikation von Typen in Programmiersprachen

Schwerpunkte. 10. Felder (Arrays) Grundprinzip von Arrays. Klassifikation von Typen in Programmiersprachen Schwerpunkte 10. Felder (Arrays) Teil 1 Java-Beispiele: Echo.java Primzahlen.java Monate.java Klassifikation von Typen in Programmiersprachen Array: einziger strukturierter Typ in Java Deklaration, Erzeugung

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1 Kapitel 11 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 2 Ziele Implementierungen für

Mehr

Die C++ Standard Template Library Andreas Obrist

Die C++ Standard Template Library Andreas Obrist Die C++ Standard Template Library 24. 06. 2004 Andreas Obrist Was dürft Ihr erwarten? 1. Teil Das Wichtigste in Kürze über die Standard Template Library 2. Teil Praktische Beispiele Was dürft Ihr nicht

Mehr

Variablen in C++ Einfache Variablen Strukturen Arrays und Zeichenketten Zeiger und Referenzen Parameter Dynamische Speicherverwaltung

Variablen in C++ Einfache Variablen Strukturen Arrays und Zeichenketten Zeiger und Referenzen Parameter Dynamische Speicherverwaltung Variablen in C++ Einfache Variablen Strukturen Arrays und Zeichenketten Zeiger und Referenzen Parameter Dynamische Speicherverwaltung Einfache Variablen Typen int, long, short, unsigned bool char float,

Mehr

II. Grundlagen der Programmierung. Beispiel: Merge Sort. Beispiel: Merge Sort (Forts. ) Beispiel: Merge Sort (Forts. )

II. Grundlagen der Programmierung. Beispiel: Merge Sort. Beispiel: Merge Sort (Forts. ) Beispiel: Merge Sort (Forts. ) Technische Informatik für Ingenieure (TIfI) WS 2006/2007, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Rekursion Datenstrukturen Merge S ( split, s, merge ) Beispiel:

Mehr

Algorithmen und Datenstrukturen I. Blatt 2. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München

Algorithmen und Datenstrukturen I. Blatt 2. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München Algorithmen und Datenstrukturen I Blatt 2 Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 18.03.2018 20:05 Aufgabe 1 struct, Parameterübergabe und const Das Repository für diese

Mehr

Übungen zur Vorlesung EidP (WS 2015/16) Blatt 6

Übungen zur Vorlesung EidP (WS 2015/16) Blatt 6 Andre Droschinsky Ingo Schulz Dortmund, den 0. Dezember 2015 Übungen zur Vorlesung EidP (WS 2015/16) Blatt 6 Block rot Es können 4 + 1 Punkte erreicht werden. Abgabedatum: 10. Dezember 2015 2:59 Uhr Hinweise

Mehr

Informatik I (D-ITET)

Informatik I (D-ITET) Ablauf Informatik I (D-ITET) Übungsstunde 5, 26.10.2009 simonmayer@student.ethz.ch ETH Zürich Nachbesprechung Übung 3 Besprechung/Vertiefung der Vorlesung [21.10.2009] Vorbesprechung Übung 5 2.c) Test

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

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

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

4. Objektorientierte Programmierung mit C++

4. Objektorientierte Programmierung mit C++ 4. Objektorientierte Programmierung mit C++ Einführung C++ / Entwicklung/ Sprachfamilie Nicht objektorientierte Erweiterungen von C Grundlagen des Typkonzepts von C++ Ziele der Objektorientierung Objekt

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 13. Listen. Listen 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 13. Listen. Listen 1 Kapitel 13 Listen Listen 1 Ziele Implementierungen für Listen kennenlernen Einfach verkettete und doppelt verkettete Listen verstehen Listen-Implementierungen in der Java-Bibliothek kennenlernen Durch

Mehr