Informationsverarbeitung im Bauwesen

Größe: px
Ab Seite anzeigen:

Download "Informationsverarbeitung im Bauwesen"

Transkript

1 Einleitung 1/25 Informationsverarbeitung im Bauwesen Einführung in das Programmieren mit C++ Markus Uhlmann Institut für Hydromechanik Karlsruher Institut für Technologie WS 2010/2011 Vorlesung 12

2 Einleitung 2/ VORLESUNG Überladen von Operatoren Advice: Define operators primarily to mimic conventional usage. B. Stroustrup

3 Einleitung 3/25 Fragen, die in dieser Vorlesung diskutiert werden Wie können Operationen zwischen Objekten durch natürliche Operatorsymbole ausgedrückt werden? Welche Möglichkeiten und Beschränkungen bestehen dabei?

4 Wieso Einleitung Überladen von Operatoren? Beispiel: Arbeiten mit Vektoren Addition von Vektoren: Addieren jedes Elementes int ort[3], verschiebung[3], resultat[3]; for (int i=0; i<3; i++) resultat[i]=ort[i]+verschiebung[i];//addition per Element implementiert durch eine Klasse vektor : vektor ort, verschiebung, resultat; resultat=ort.add(verschiebung); //Addition von Objekten wäre Folgendes nicht praktisch? resultat=ort+verschiebung; //Addition von Objekten Operator + überladen durch Additionsfunktion für Klasse vektor 4/25

5 Einleitung 5/25 Überladen von Operatoren: wie funktioniert es? resultat = ort + verschiebung; //Addition von Objekten typische Notation für Addition verbirgt den Mechanismus (Details), betont das Essentielle Syntax für Operatorfunktionen: <rueckgabetyp> operator <op> (<parameterliste>) Compiler ersetzt durch resultat=ort+verschiebung; resultat=ort.operator+(verschiebung); <op> beinhaltet i.d.r. Sonderzeichen (hier erlaubt)

6 Einleitung Operator + Beschränkungen Operatoren -, * Einführung in überladene Operatoren an einem Beispiel Eine Klasse zur Behandlung von Zeitdaten Zeitangabe bestehend aus Stunden, Minuten Wertebereich der Minuten: [0, 59] 2 Ganzzahlen Funktionen: Anzeigen, Summieren, Initialisieren, class Time{ 13 private: Version: ohne überladene Ops. 14 int hours; 15 int minutes; 26 int main(){ 16 public: 27 Time vorbereitung(1,30); 17 Time(); 28 Time implementierung(1,10); 18 Time(int h, int m=0); 19 void AddMin(int m); void AddHr(int h); gesamt=vorbereitung.sum(implementierung); void Reset(int h=0, int m=0); gesamt=gesamt.sum(fehlersuche); 22 Time Sum(const Time t) const; 23 void Show() const; (Quelltext 12.1) 6/25

7 Einleitung Operator + Beschränkungen Operatoren -, * Version mit überladenem Additionsoperator Ersetzen der Funktion Sum durch Operator + ermöglicht Operator- oder Funktionsschreibweise 11 class Time{ 12 private: 13 int hours; 14 int minutes; 15 public: 16 Time(); 17 Time(int h, int m=0); 18 void AddMin(int m); 19 void AddHr(int h); 20 void Reset(int h=0, int m=0); 21 Time operator+(const Time t) 22 const; 23 void Show() const; 24 }; Version: mit überladenem + 27 Time vorbereitung(1,30); 28 Time implementierung(1,10); 29 Time fehlersuche(0,40); 30 Time gesamt; 43 gesamt=vorbereitung+implementierung; 44 gesamt=gesamt+fehlersuche; 45 /* funktioniert auch: 46 gesamt=gesamt.operator+(fehlersuche); 47 */ (Quelltext 12.2) 7/25

8 Einleitung Operator + Beschränkungen Operatoren -, * 8/25 Regeln des Überladens von Operatoren (i) Regel 1: nur existierende Operatorsymbole verwenden es ist nicht möglich neue Operatorsymbole zu definieren Bsp: Operator ** zur Potenzierung (nicht möglich) Regel 2: manche Operatoren können nicht überladen werden Operatorsymbole, die nicht zu überladen sind: sizeof,., ::,? (und weitere) die meisten Operatorsymbole sind überladbar (sh. Tabelle)

9 9/25 Regeln des Einleitung Operator + Beschränkungen Operatoren -, * Überladens von Operatoren (ii) Regel 3: mind. ein Operand muss benutzerdefiniert sein Überladen von Operatoren soll neuen Datentypen dienen soll verhindern, Standardoperationen neu zu definieren Bsp: Redefinition von - für zwei Ganzzahlen nicht möglich Regel 4: Eigenschaften des Operators bleiben unverändert Überladen kann nicht die Priorität des Operators ändern ebenso bleibt Anzahl der Operanden erhalten Bsp: int x=5; Time training; % x; //illegal fuer Restwertoperator % training; //illegal fuer ueberladenen Op.

10 Einleitung Operator + Beschränkungen Operatoren -, * 10/25 Regeln des Überladens von Operatoren (iii) Regel 5: einige Operatoren müssen Elementfunktionen sein die meisten Operatoren können entweder als Elementfunktionen oder nicht-elementfunktionen implementiert werden Ausnahmen sind: =, (), [], -> nur als Elementfunktionen zu redefinieren Empfehlung: Überladen sinnverwandt mit Originaloperator Operatorsymbol soll Sinn der Operation suggerieren bei Nichtbeachtung: unverständlicher Code Bsp: Überladen von * durch Vektoraddition (nein!)

11 Einleitung Operator + Beschränkungen Operatoren -, * 11/25 Zeitklasse mit weiteren Operatoren (Version 1) Funktion für Subtraktion zweier Zeitspannen: - Multiplikation einer Zeitspanne mit Faktor: * 11 class Time{ 12 private: 13 int hours; 14 int minutes; 15 public: 16 Time(); 17 Time(int h, int m=0); 18 Time operator+(const Time t) 19 const; 20 Time operator-(const Time t) 21 const; 22 Time operator*(const float mult) 23 const; 24 void Show() const; Version: mit +, -, * 27 int main(){ 28 Time planen(18,30); 29 Time herstellen(60,0); 30 Time gesamt,diff,korrigiert; 42 gesamt=planen+herstellen; 43 diff=herstellen-planen; 44 korrigiert=gesamt*1.25; (Quelltext 12.3)

12 Einleitung Operator + Beschränkungen Operatoren -, * 12/25 Zeitklasse mit weiteren Operatoren: Problem Multiplikationsoperator erlaubt keine Vertauschung Multiplikation gesamt*1.25 möglich (s.o.) mathematisch äquivalentes 1.25*gesamt nicht möglich! wieso nicht? Elementfunktion: erster Operand ist aufrufendes Objekt aber hier 1.25 kein Objekt! Lösung: Implementierung des Operators als nicht-elementfunktion Funktion benötigt folgende Signatur (Prototyp): Time operator*(double mult, Time t) Funktion benötigt Zugriffsrechte auf Elementvariablen Deklaration als friend in Klasse Time

13 Einleitung Operator + Beschränkungen Operatoren -, * 13/25 Zeitklasse mit weiteren Operatoren (Version 2) nicht-elementfunktion wird Teil der Schnittstelle der Klasse 12 class Time{ 13 private: 14 int hours; 15 int minutes; 16 public: 17 Time operator+(const Time t) 18 const; 19 Time operator-(const Time t) 20 const; 21 Time operator*(const float mult) 22 const; 23 friend Time operator*( 24 const float mult, 25 const Time t); Version: mit friend 31 int main(){ 32 Time planen(18,30); 33 Time herstellen(60,0); 34 Time gesamt,diff,korrigiert; 46 //Elementfunktion: 47 korrigiert=gesamt*1.25; 48 //nicht-elementfunktion: 49 korrigiert=1.25*gesamt; (Quelltext 12.4)

14 Einleitung Operator + Beschränkungen Operatoren -, * Zeitklasse mit weiteren Operatoren (Version 3) friend Status kann vermieden werden: nicht-elementfunktion kehrt lediglich Reihenfolge um aber: Funktion taucht nicht in Deklaration von Time auf 12 class Time{ 13 private: 14 int hours; 15 int minutes; 16 public: 17 Time operator+(const Time t) 18 const; 19 Time operator-(const Time t) 20 const; 21 Time operator*(const float mult) 22 const; 23 //keine friend Deklaration 24 void Show() const; 25 Time(); Version: ohne friend 105 Time operator*( 106 const float mult, 107 const Time t){ 108 //ruft nur oeffentliche 109 // Elementfunktion mit 110 // umgekehrter Reihenfolge 111 // auf 112 //-> benoetigt keinen 113 // friend Status 114 return t*mult; 115 }; (Quelltext 12.5) 14/25

15 Einleitung Operator + Beschränkungen Operatoren -, * 15/25 Bemerkungen zu nicht-elementfunktionen nicht-elementfunktionen, welche die Funktionalität einer Klasse erweitern Hilfsfunktionen Hilfsfunktionen sollten zusammen mit eigentlicher Klasse deklariert und definiert werden Quelltext in gleicher Datei wie Klasse anordnen Elementfunktion oder nicht-elementfunktion? manche Operatoren erlauben nur Elementfunktion (s.o.) sonst: beide Optionen meist äquivalent

16 16/25 Einleitung Operator << Beispiel: komplexe Zahlen Überladen des Operators << zur Ausgabe von Time Bildschirmausgabe durch Objekt cout (Typ ostream) Operator << ist bereits überladen für diverse Basistypen wir wünschen uns Folgendes für die Klasse Time: Time film; cout << film; //gibt Laenge des Films aus Implementierung als nicht-elementfunktion (denn: cout<<film ist sonst äquivalent zu cout.operator<<(film) )

17 17/25 Einleitung Operator << Beispiel: komplexe Zahlen Operator << für die Klasse Time (Version 1) analog zu Operator * in Programm 12.4 Problem: diese Version erlaubt keine Verkettung 19 class Time{ 20 private: 21 int hours; 22 int minutes; 23 public: 24 Time(); 25 Time(int h, int m=0); 26 friend void operator<<( 27 ostream & os, 28 const Time & t); 29 }; Version: void 31 int main(){ 32 Time halbzeit1(0,45); 33 cout << "Halbzeit1: "; 34 cout << halbzeit1; 54 void operator<<(ostream & os, 55 const Time & t) { 56 os << t.hours << " Stunden, " 57 << t.minutes << " Minuten"; 58 } (Quelltext 12.6)

18 18/25 Einleitung Operator << Beispiel: komplexe Zahlen Operator << für die Klasse Time (Version 2) Verkettung von Ausgabeoperationen: cout<<zeit1<<zeit2 jede einzelne Operation muss Objekttyp ostream liefern 14 class Time{ 15 private: 16 int hours; 17 int minutes; 18 public: 19 Time(); 20 Time(int h, int m=0); 21 friend ostream & operator<<( 22 ostream & os, 23 const Time & t); 24 }; Version: ostream & 31 /* Verkettung funktioniert: */ 32 cout << "Halbzeit1: " 33 << halbzeit1 34 << "; " 35 << "Halbzeit2: " 36 << halbzeit2 37 << "; " 38 << "Nachspiel: " 39 << nachspiel 40 << endl; (Quelltext 12.7)

19 19/25 Einleitung Beispiel: Klasse für komplexe Zahlen Operator << Beispiel: komplexe Zahlen Komplexe Zahlen komplexe Zahlen besitzen Real- und Imaginärteil c = c r + I c i mit: I = 1 und reellen c r, c i Konsequenzen für arithmetische Operationen Überladen von Operatoren bietet sich an es existiert eine Klasse complex in Standardbibliothek dieser Entwurf dient nur zu Übungszwecken

20 20/25 Einleitung Klasse complex Operator << Beispiel: komplexe Zahlen Deklaration 15 class complex{ 16 private: 17 //Elementdaten 18 double re; //Realteil 19 double im; //Imaginaerteil 20 //-> c=c.re+c.im*i 21 //[ I steht fuer wurzel(-1)] 22 public: 23 //Konstruktor: 24 complex(double r=0, double i=0) : 25 re(r), im(i) { } //Zugriffsfunktionen: 28 double real() const {return re;} 29 double imag() const {return im;} //Zusammengesetzte binaere Operatoren: 32 complex & operator+=(complex c); 33 complex & operator+=(double d); 34 complex & operator*=(complex c); 35 complex & operator*=(double d); 36 //fehlen: -=, /= 37 }; (Quelltext 12.8)

21 Einleitung Klasse complex (ii) Operator << Beispiel: komplexe Zahlen Implementierung 39 complex & complex::operator+=(complex c){ 40 re += c.re; 41 im += c.im; 42 return *this; // this pointer zeigt auf das 43 //Objekt selber 44 } 45 complex & complex::operator+=(double d){ 46 re += d; 47 return *this; 48 } 49 complex & complex::operator*=(complex c){ 50 //Vorschrift zur Multiplikation 51 // zweier komplexer Zahlen: 52 //a*b=(ar+i*ai)*(br+i*bi) 53 // =(ar*br-ai*bi)+i*(ai*br+bi*ar) 54 double r = re*c.real()-im*c.imag(); 55 double i = im*c.imag()+re*c.real(); 56 re = r; 57 im = i; 58 return *this; // this pointer zeigt auf das 59 //Objekt selber 60 } 61 complex & complex::operator*=(double d){ 62 re *= d; 63 im *= d; 64 return *this; 65 } 21/25

22 22/25 Einleitung Klasse complex (iii) Operator << Beispiel: komplexe Zahlen Hilfsfunktionen 68 //1. binaere Operatoren 69 complex operator+(complex a, complex b){ 70 complex r = a; 71 return r += b;//aufruf: complex::operator+=(complex) 72 } 73 complex operator+(complex a, double b){ 74 complex r = a; 75 return r += b;//aufruf: complex::operator+=(double) 76 } 77 complex operator+(double a, complex b){ 78 complex r = b; 79 return r += a;//aufruf: complex::operator+=(double) 80 } 81 complex operator*(complex a, complex b){ 82 complex r = a; 83 return r *= b;//aufruf: complex::operator*=(complex) 84 } 85 complex operator*(complex a, double b){ 86 complex r = a; 87 return r *= b;//aufruf: complex::operator*=(double) 88 } 89 complex operator*(double a, complex b){ 90 complex r = b; 91 return r *= a;//aufruf: complex::operator*=(double) 92 } 93 //fehlen: -, /

23 Einleitung Klasse complex (iv) Operator << Beispiel: komplexe Zahlen Hilfsfunktionen 2 95 //2. unaere Operatoren 96 complex operator+(complex a){ 97 return a; 98 } 99 /* complex operator-(complex a){ 100 return a*(double(-1));//aufruf: complex::operator*=(double) 101 } */ 102 //3. Vergleichsoperatoren 103 bool operator==(complex a, complex b){ 104 return a.real() == b.real() && 105 a.imag() == b.imag() ; 106 } 107 //fehlt:!= //4. Ein/Ausgabeoperatoren 110 ostream & operator<<(ostream & os, complex c){ 111 os << c.real() << "+I*(" << c.imag() <<")"; 112 return os; 113 } 114 //fehlt: >> //5. diverse mathematische Funktionen 117 complex conj(complex c){ 118 //konjugiert komplexe Zahl 119 complex r=complex(c.real(),c.imag()*(-1)); 120 return r; 121 } 23/25

24 24/25 Einleitung Klasse complex (v) Operator << Beispiel: komplexe Zahlen Testprogramm 138 int main(){ 139 //einige moegliche Operationen mit Typ complex 140 complex a = complex(1,2); 141 cout << "a = " << a << endl; complex b = 3; 144 cout << "b = " << b << endl; complex c = a+2.3; 147 cout << "c = a+2.3 = " << c << endl; complex d = 2+b; 150 cout << "d = 2+b = " << d << endl; complex e = a*c; 153 cout << "e = a*c = " << e << endl; return 0; 156 }

25 25/25 Einleitung Klasse complex freiwillige Aufgabe Operator << Beispiel: komplexe Zahlen komplettieren Sie das Programm (12.8), indem Sie die fehlenden Operatorfunktionen und Hilfsfunktionen ergänzen

26 1/5 Zusammenfassung Anhang Zusammenfassung Literatur Mehr Überladen von Operatoren erlaubt intuitiven Syntax bei Operationen zwischen Objekten sollte wohldosiert eingesetzt werden Elementfunktion: erster Operand ist aufrufendes Objekt falls dies nicht erwünscht: nicht-elementfunktion überladene Operatoren behalten ihre Eigenschaften bei: Anzahl der Operanden, Priorität, Assoziativität

27 2/5 Anhang Anhang Zusammenfassung Literatur Mehr

28 3/5 Anhang Zusammenfassung Literatur Mehr Weiterführende Literatur S. Prata, C++ Primer Plus, Sams, 2005 S. Oalline, Practical C++ Programming, O Reilly, 2003 J. Liberty and B. Jones, Teach yourself C++ in 21 days, Sams, 2005 R. Lischner, C++ in a Nutshell, O Reilly, 2003 Handbücher erhältlich am Rechenzentrum: (Weblink) RRZN, Die Programmiersprache C, 17. Auflage, 2008 RRZN, C++ für C Programmierer, 13. Auflage, 2005 Online Dokumentation zum C++ Standard (Weblink) (freie) Microsoft Software für Studenten am KIT: (Weblink)

29 Bedingungsoperator? Anhang Zusammenfassung Literatur Mehr Der einzige ternäre Operator (mit 3 Operanden) in C++ Syntax: <bedingung>? <Anweisung1> : <Anweisung2> falls <bedingung> wahr: führt <Anweisung1> aus, sonst: führt <Anweisung2> aus Abkürzung für äquivalentes if...else int main (){//Bsp: Operator? int a=2,b=7,c; c = (a>b)? a : b; cout << c; return 0;} int main (){//Bsp: if...else int a=2,b=7,c; if (a>b) c=a; else c=b; cout << c; return 0;} 4/5

30 5/5 Anhang Zusammenfassung Literatur Mehr Operatorsymbole, die überladen werden können + - * / % ^ & ~=! = < > += -= *= /= %= ^= &= = << >> >>= <<= ==!= <= >= && ++ --, ->* -> () [] new delete new [] delete []

Informationsverarbeitung im Bauwesen

Informationsverarbeitung im Bauwesen 1/21 Informationsverarbeitung im Bauwesen Einführung in das Programmieren mit C++ Markus Uhlmann Institut für Hydromechanik Karlsruher Institut für Technologie www.ifh.kit.edu WS 2010/2011 Vorlesung 8

Mehr

Informationsverarbeitung im Bauwesen

Informationsverarbeitung im Bauwesen 1/24 Informationsverarbeitung im Bauwesen Einführung in das Programmieren mit C++ Markus Uhlmann Institut für Hydromechanik Karlsruher Institut für Technologie www.ifh.kit.edu WS 2010/2011 Vorlesung 7

Mehr

Informationsverarbeitung

Informationsverarbeitung 1/15 Informationsverarbeitung Einführung in das Programmieren mit C++ Markus Uhlmann Institut für Hydromechanik Karlsruher Institut für Technologie www.ifh.kit.edu WS 2011/2012 Vorlesung 14 (Download Quelldateien)

Mehr

Informationsverarbeitung

Informationsverarbeitung 1/23 Informationsverarbeitung Einführung in das Programmieren mit C++ Markus Uhlmann Institut für Hydromechanik Karlsruher Institut für Technologie www.ifh.kit.edu WS 2011/2012 Vorlesung 4 (alle Quelldateien

Mehr

Objektorientierte Programmierung mit C++

Objektorientierte Programmierung mit C++ Ziel: maximales Code-Sharing -- Weg: gemeinsame (aber ggf. in Ableitungen variierende) Funktionalität in Basisklassen festlegen Problem: die so entstehenden Basisklassen sind oft so rudimentär, dass Objekterzeugung

Mehr

Einführung in C++ Operatoren überladen (Klassen)

Einführung in C++ Operatoren überladen (Klassen) Einführung in C++ Operatoren überladen (Klassen) Operatoren überladen Die Überladung von Operatoren ermöglicht es, vorhandene Operatoren (+,-,...) auch auf Objekte von Klassen anzuwenden. Die meisten der

Mehr

Überladen von Operatoren

Überladen von Operatoren - Überladen des Indexoperators [] - Überladen des Ausgabeoperators > Programmieren in C++ Informatik FH Trier C++12-1 ähnlich dem Überladen von Funktionen Überladen

Mehr

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

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) Wintersemester 2005/06 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich Informatik Lehrstuhl

Mehr

C++ - Objektorientierte Programmierung Polymorphie

C++ - Objektorientierte Programmierung Polymorphie C++ - Objektorientierte Programmierung Polymorphie hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen C++ - Objektorientierte Programmierung 21.06.16 Seite 1 Polymorphie

Mehr

10.4 Konstante Objekte

10.4 Konstante Objekte 10.4 Konstante Objekte Genau wie bei einfachen Datentypen (int,double,...) kann man auch Objekte als const deklarieren. Eine solche Deklaration bedeutet, daß alle Attribute so behandelt werden, als wären

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

Thema heute: Vererbung und Klassenhierarchien. Abgeleitete Klassen. Vererbung von Daten und Funktionen. Virtuelle Funktionen

Thema heute: Vererbung und Klassenhierarchien. Abgeleitete Klassen. Vererbung von Daten und Funktionen. Virtuelle Funktionen 1 Thema heute: Vererbung und Klassenhierarchien Abgeleitete Klassen Vererbung von Daten und Funktionen Virtuelle Funktionen 2 Vererbung oft besitzen verschiedene Datentypen einen gemeinsamen Kern Beispiel:

Mehr

C++ Teil 10. Sven Groß. 17. Dez IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Dez / 14

C++ Teil 10. Sven Groß. 17. Dez IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Dez / 14 C++ Teil 10 Sven Groß IGPM, RWTH Aachen 17. Dez 2014 Sven Groß (IGPM, RWTH Aachen) C++ Teil 10 17. Dez 2014 1 / 14 Themen der letzten Vorlesung Objektorientierung und Klassen Attribute / Datenelemente

Mehr

C++ Teil 9. Sven Groß. 17. Juni Sven Groß (IGPM, RWTH Aachen) C++ Teil Juni / 17

C++ Teil 9. Sven Groß. 17. Juni Sven Groß (IGPM, RWTH Aachen) C++ Teil Juni / 17 C++ Teil 9 Sven Groß 17. Juni 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 9 17. Juni 2016 1 / 17 Themen der letzten Vorlesung Objektorientierung und Klassen Attribute / Datenelemente Methoden / Elementfunktionen

Mehr

Überblick. Überblick. Abstrakte Klassen - rein virtuelle Funktionen Beispiele

Überblick. Überblick. Abstrakte Klassen - rein virtuelle Funktionen Beispiele Überblick 1. Einführung C++ / Entwicklung/ Sprachfamilie 2. Nicht objektorientierte Erweiterungen von C 2.1 Das Ein-/Ausgabekonzept von C++ 2.2 Referenzen in C++ 2.3 Heap-Allokatoren in C++ 3. Grundlagen

Mehr

Vokabeln. 4.1 Benutzer definierte Datentypen. Kapitel 4. Prof. Dr. Gerhard Berendt C++ oop? SS 2002 Arbeitsblatt 4

Vokabeln. 4.1 Benutzer definierte Datentypen. Kapitel 4. Prof. Dr. Gerhard Berendt C++ oop? SS 2002 Arbeitsblatt 4 4.1 Benutzer definierte Datentypen C++ unterstützt die Einführung benutzer definierter Datentypen (auch Abstrakte Datentypen (ADT) genannt). ADTs bieten einen guten Einstieg in das Paradigma der objekt

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

Informationsverarbeitung im Bauwesen

Informationsverarbeitung im Bauwesen 1/23 Informationsverarbeitung im Bauwesen Einführung in das Programmieren mit C++ Markus Uhlmann Institut für Hydromechanik Karlsruher Institut für Technologie www.ifh.kit.edu WS 2010/2011 Vorlesung 6

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

Angewandte Mathematik in OOP WS 2011/12. Abschluss-Test

Angewandte Mathematik in OOP WS 2011/12. Abschluss-Test Angewandte Mathematik in OOP WS 2011/12 Abschluss-Test 012 6 5 4 5 6 Aufgabe 1 (9 Punkte 1 Punkt je Antwort) Bitte jeweils eine Antwort ankreuzen (je nach Fragestellung die richtige oder falsche): a.)

Mehr

Informationsverarbeitung

Informationsverarbeitung 1/24 Informationsverarbeitung Einführung in das Programmieren mit C++ Markus Uhlmann Institut für Hydromechanik Karlsruher Institut für Technologie www.ifh.kit.edu WS 2011/2012 Vorlesung 5 (Download Quelldateien)

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

Ausdrücke der Programmiersprache Java

Ausdrücke der Programmiersprache Java Ausdrücke der Programmiersprache Java Hamburg 1 Ablauf des Vortrags 01. Eigenschaften von Ausdrücken 02. Arithmetische Operatoren 03. Relationale Operatoren 04. Logische Operatoren 05. Bitweise Operatoren

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

Themen. Statische Methoden inline Methoden const Methoden this Zeiger Destruktor Kopierkonstruktor Überladen von Operatoren

Themen. Statische Methoden inline Methoden const Methoden this Zeiger Destruktor Kopierkonstruktor Überladen von Operatoren Themen Statische Methoden inline Methoden const Methoden this Zeiger Destruktor Kopierkonstruktor Überladen von Operatoren Statische Methoden Klassenmethoden Merkmal der Klasse nicht eines einzelnen Objekts

Mehr

Teil 10: Operator Überladung. Prof. Dr. Herbert Fischer Fachhochschule Deggendorf Prof. Dr. Manfred Beham Fachhochschule Amberg-Weiden

Teil 10: Operator Überladung. Prof. Dr. Herbert Fischer Fachhochschule Deggendorf Prof. Dr. Manfred Beham Fachhochschule Amberg-Weiden Teil 10: Operator Überladung Prof. Dr. Herbert Fischer Fachhochschule Deggendorf Prof. Dr. Manfred Beham Fachhochschule Amberg-Weiden Inhaltsverzeichnis 10 Operator-Überladung... 3 10.1 Übersicht aller

Mehr

Informationsverarbeitung

Informationsverarbeitung 1/19 Informationsverarbeitung Einführung in das Programmieren mit C++ Markus Uhlmann Institut für Hydromechanik Karlsruher Institut für Technologie www.ifh.kit.edu WS 2011/2012 Vorlesung 13 (Download Quelldateien)

Mehr

Polymorphie. Überladen. Definition Methodennamen überladen Konstruktoren überladen Operatoren überladen Beispiele. Dr.

Polymorphie. Überladen. Definition Methodennamen überladen Konstruktoren überladen Operatoren überladen Beispiele. Dr. Polymorphie Überladen Definition Methodennamen überladen Konstruktoren überladen Operatoren überladen Beispiele Dr. Beatrice Amrhein Definition 2 Definition: Überladen (von Namen) Überladen bedeutet, dass

Mehr

Rückblick: Benutzerdefinierte Datentypen Definition der Klasse Vektor als Container für 2-dimensionale Vektoren

Rückblick: Benutzerdefinierte Datentypen Definition der Klasse Vektor als Container für 2-dimensionale Vektoren Rückblick: Benutzerdefinierte Datentypen Definition der Klasse Vektor als Container für 2-dimensionale Vektoren class Vektor public: double k1, k2; // Deklaration der Klasse Vektor // Elementvariablen

Mehr

C++ Klassen weitere Funktionen

C++ Klassen weitere Funktionen C++ Klassen weitere Funktionen Übersicht static Elemente const Elemente Zusätzliches zu Konstruktoren Kopier-Konstruktor Konvertierung-Konstruktor Initialisierungslisten Friend Funktionen 2 Statische Klassenkomponenten

Mehr

Vorkurs Informatik WiSe 17/18

Vorkurs Informatik WiSe 17/18 Java Ausdrücke und Variablen Dr. Werner Struckmann / Stephan Mielke, Nicole Naczk, 05.10.2017 Technische Universität Braunschweig, IPS Überblick Ausdrücke, Datentypen und Variablen Kontrollstrukturen 05.10.2017

Mehr

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

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf  Seite 1 von 29 Kapitel 2 Einführung in C++ Seite 1 von 29 C++ Zeichensatz - Buchstaben: a bis z und A bis Z. - Ziffern: 0 bis 9 - Sonderzeichen: ; :,. # + - * / % _ \! < > & ^ ~ ( ) { } [ ]? Seite 2 von 29 Höhere Elemente

Mehr

Angewandte Mathematik und Programmierung

Angewandte Mathematik und Programmierung Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens WS 2013/14 Operatoren Operatoren führen Aktionen mit Operanden aus. Der

Mehr

Algorithmen & Programmierung. Ausdrücke & Operatoren (1)

Algorithmen & Programmierung. Ausdrücke & Operatoren (1) Algorithmen & Programmierung Ausdrücke & Operatoren (1) Ausdrücke Was ist ein Ausdruck? Literal Variable Funktionsaufruf Ausdruck, der durch Anwendung eines einstelligen (unären) Operators auf einen Ausdruck

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

Lösung der OOP-Prüfung WS12/13

Lösung der OOP-Prüfung WS12/13 2.1.2013 Lösung der OOP-Prüfung WS12/13 1. Aufgabe a) Da der Konstruktor im protected-bereich steht, können keine eigenständigen Objekte der Klasse angelegt werden. Durch den protected-konstruktor wird

Mehr

Klausur C++ #1 Jahr: 2001; Dozent: Dipl.Ing. Sorber

Klausur C++ #1 Jahr: 2001; Dozent: Dipl.Ing. Sorber Klausur C++ #1 Jahr: 2001; Dozent: Dipl.Ing. Sorber 1) Welche Antworten zur Operatorüberladung sind richtig? (1) a) C++ - Operatoren können zusammen mit Objekten funktionieren b) C++ - Operatoren wird

Mehr

Repetitorium Programmieren I + II

Repetitorium Programmieren I + II Repetitorium Programmieren I + II Stephan Gimbel Johanna Mensik Michael Roth 6. März 2012 Agenda 1 Operatoren 2 Datentypen Gleitpunkt Zahl Typkonvertierung 3 Strommanipulatoren 4 Bedingungen if-else switch-case

Mehr

Auswahlen (Selektionen)

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

Mehr

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

C++ Teil 5. Sven Groß. 12. Nov IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Nov / 16 C++ Teil 5 Sven Groß IGPM, RWTH Aachen 12. Nov 2014 Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 12. Nov 2014 1 / 16 Themen der letzten Vorlesung Eingabestrom, Verhalten von cin Namensräume Live Programming

Mehr

4. Objektorientierte Programmierung mit C++

4. Objektorientierte Programmierung mit C++ 4. Objektorientierte Programmierung mit C++ Einführung C++ / Entwicklung der Sprachfamilie Erweiterungen der Sprache C: Ein- und Ausgabe, Referenzen, Speicherallokation und Freigabe Grundlagen des Typkonzepts

Mehr

Crashkurs C++ Wiederholung

Crashkurs C++ Wiederholung Crashkurs C++ Wiederholung #include int main(void) { int i, j; bool is_prime; for (j = 1; j < 1000; j += 2) { is_prime = true; for (i = 3; i

Mehr

Programmieren in C++ Überblick

Programmieren in C++ Überblick Programmieren in C++ Überblick 1. Einführung und Überblick 2. Klassen und Objekte: Datenkapselung 3. Erzeugung und Vernichtung von Objekten 4. Ad-hoc Polymorphismus 6. Templates und generische Programmierung

Mehr

PVK Informatik I 1.Teil. Grundlagen Variablen Operatoren Fallunterscheidung Schleifen Kurzschreibweise Pointer Array Dynamische Strukturen Funktionen

PVK Informatik I 1.Teil. Grundlagen Variablen Operatoren Fallunterscheidung Schleifen Kurzschreibweise Pointer Array Dynamische Strukturen Funktionen PVK Informatik I 1.Teil Grundlagen Variablen Operatoren Fallunterscheidung Schleifen Kurzschreibweise Pointer Array Dynamische Strukturen Funktionen 1 Grundlagen #include #include using

Mehr

C++ Teil 12. Sven Groß. 18. Jan Sven Groß (IGPM, RWTH Aachen) C++ Teil Jan / 11

C++ Teil 12. Sven Groß. 18. Jan Sven Groß (IGPM, RWTH Aachen) C++ Teil Jan / 11 C++ Teil 12 Sven Groß 18. Jan 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 12 18. Jan 2016 1 / 11 Themen der letzten Vorlesung Wiederholung aller bisherigen Themen: Datentypen und Variablen Operatoren Kontrollstrukturen

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

Pods und Objects (Klassen)

Pods und Objects (Klassen) Pods und Objects (Klassen) Grundbegriffe: Pods = Plain Old Data: Es handelt sich dabei hauptsächlich um die schon in C eingebauten Datentypen wie Ganzzahltypen: char, short, int, long, long long (auch

Mehr

Prof. Dr. Markus Gross Informatik I für D-MAVT (FS 2014)

Prof. Dr. Markus Gross Informatik I für D-MAVT (FS 2014) 9. Klassen Prof. Dr. Markus Gross Informatik I für D-MAVT (FS 2014) Objektorientierte Programmierung, Klassen Members Objekte Konstruktoren und Destruktoren this-pointer Public und Private Sections Überladen

Mehr

Was Mathematiker schon vor Jahrhunderten erfunden haben, gibt es jetzt endlich in ihrer Programmiersprache:

Was Mathematiker schon vor Jahrhunderten erfunden haben, gibt es jetzt endlich in ihrer Programmiersprache: Kapitel 8 Operatoren Was Mathematiker schon vor Jahrhunderten erfunden haben, gibt es jetzt endlich in ihrer Programmiersprache: Operatoren definieren Es ist in C++ möglich, Operatoren wie +, oder für

Mehr

Algorithmen zur Datenanalyse in C++

Algorithmen zur Datenanalyse in C++ Algorithmen zur Datenanalyse in C++ Hartmut Stadie 16.04.2012 Algorithmen zur Datenanalyse in C++ Hartmut Stadie 1/ 39 Einführung Datentypen Operatoren Anweisungssyntax Algorithmen zur Datenanalyse in

Mehr

Teil 5 - Java. Programmstruktur Operatoren Schlüsselwörter Datentypen

Teil 5 - Java. Programmstruktur Operatoren Schlüsselwörter Datentypen Teil 5 - Java Programmstruktur Operatoren Schlüsselwörter Datentypen 1 Kommentare in Java In Java gibt es drei Möglichkeiten zur Kommentierung: // Kommentar Alle Zeichen nach dem // werden ignoriert. für

Mehr

Thema heute: Vererbung und Klassenhierarchien. Abgeleitete Klassen. Vererbung von Daten und Funktionen. Virtuelle Funktionen

Thema heute: Vererbung und Klassenhierarchien. Abgeleitete Klassen. Vererbung von Daten und Funktionen. Virtuelle Funktionen 1 Thema heute: Vererbung und Klassenhierarchien Abgeleitete Klassen Vererbung von Daten und Funktionen Virtuelle Funktionen 2 Vererbung oft besitzen verschiedene Datentypen einen gemeinsamen Kern Beispiel:

Mehr

Ausdrücke (1) Grundlegende Eigenschaften

Ausdrücke (1) Grundlegende Eigenschaften Ausdrücke () Grundlegende Eigenschaften bestehen aus Literalen, Konstanten, Variablen und Operatoren einfachster Ausdruck ist das Semikolon, es bewirkt nichts. Ausdrücke werden mit einem Semikolon abgeschlossen.

Mehr

C++ - Einführung in die Programmiersprache Header-Dateien und Funktionen. Leibniz Universität IT Services Anja Aue

C++ - Einführung in die Programmiersprache Header-Dateien und Funktionen. Leibniz Universität IT Services Anja Aue C++ - Einführung in die Programmiersprache Header-Dateien und Funktionen Leibniz Universität IT Services Anja Aue Modularisierung Logische Gliederung von Programmteilen mit Hilfe von Namensräumen. Aufteilung

Mehr

Name: Klausur Informatik III WS 2003/04

Name: Klausur Informatik III WS 2003/04 1 : Methodenimplementierung ca. 42 Punkte Gegeben ist die Klasse Mitarbeiter. Listing 1: (./Code1/Mitarbeiter.h) using namespace std; // globale Variable fuer Ausgabedatei // kann entsprechend

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

5.3 Auswertung von Ausdrücken

5.3 Auswertung von Ausdrücken 5.3 Auswertung von Ausdrücken Funktionen in Java bekommen Parameter/Argumente als Input, und liefern als Output den Wert eines vorbestimmten Typs. Zum Beispiel könnte man eine Funktion i n t min ( i n

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

5. Behälter und Iteratoren. Programmieren in C++ Überblick. 5.1 Einleitung. Programmieren in C++ Überblick: 5. Behälter und Iteratoren

5. Behälter und Iteratoren. Programmieren in C++ Überblick. 5.1 Einleitung. Programmieren in C++ Überblick: 5. Behälter und Iteratoren Programmieren in C++ Überblick 1. Einführung und Überblick 2. Klassen und Objekte: Datenkapselung 3. Erzeugung und Vernichtung von Objekten 4. Ad-hoc Polymorphismus 6. Templates und generische Programmierung

Mehr

3. Objektorientierung Ergänzungen

3. Objektorientierung Ergänzungen 3. Objektorientierung Ergänzungen 3.1 Strukturen Anstelle des Schlüsselwortes class kann auch das Wort struct verwendet werden. Unterschied zu class: Voreinstellung für die Elemente ist public (bei class

Mehr

Verwendung von Klassen in C++

Verwendung von Klassen in C++ Verwendung von Klassen in C++ Heute: Benutzerdefinierte Datentypen (Konkrete Klassen) Vektoren Komplexe Zahlen Adressdatei Morgen: Objektorientierte Programmierung (Abstrakte Klassen) Vererbung Polymorphie

Mehr

Programmieren 2 C++ Überblick

Programmieren 2 C++ Überblick Programmieren 2 C++ Überblick 1. Einführung und Überblick 2. Klassen und Objekte: Datenkapselung 3. Erzeugung und Vernichtung von Objekten 4. Ad-hoc Polymorphismus 6. Templates und generische Programmierung

Mehr

float: Fließkommazahl nach IEEE 754 Standard mit 32 bit

float: Fließkommazahl nach IEEE 754 Standard mit 32 bit Primitive Datentypen Fließkommazahlen float: Fließkommazahl nach IEEE 754 Standard mit 32 bit Vorzeichen Exponent 8 bit Mantisse 23 bit double: Fließkommazahl nach IEEE 754 Standard mit 64 bit Vorzeichen

Mehr

Studiengang Maschinenbau und Verfahrenstechnik 1. Vordiplom, Informatik I Musterlösung

Studiengang Maschinenbau und Verfahrenstechnik 1. Vordiplom, Informatik I Musterlösung Dr. K. Simon Studiengang Maschinenbau und Verfahrenstechnik 1. Vordiplom, Informatik I Musterlösung Frühling 2001 Freitag, 9. März 2001 2 Aufgabe 1: Fehlermeldungen, Typen & Konstanten, Kontrollstrukturen

Mehr

PROCESSING EINE ZUSAMMENFASSUNG. Created by Michael Kirsch & Beat Rossmy

PROCESSING EINE ZUSAMMENFASSUNG. Created by Michael Kirsch & Beat Rossmy PROCESSING EINE ZUSAMMENFASSUNG Created by Michael Kirsch & Beat Rossmy INHALT 1. Typen und Operatoren 1. Datentypen 3. Klassen und Objekte 1. Klassen und Objekte 2. Operatoren 2. Konstruktor 3. Typkonversion

Mehr

Programmieren 1 C Überblick

Programmieren 1 C Überblick Programmieren C Überblick. Einleitung 2. Graphische Darstellung von Algorithmen 3. Syntax und Semantik 4. Einstieg in C: Einfache Sprachkonstrukte und allgemeiner Programmaufbau 5. Skalare Standarddatentypen

Mehr

Informatik III. Operatoren überladen am Beispiel des ADT Complex in C und Java sowie C++, C# und Groovy. Prof. Dr. Nikolaus Wulff

Informatik III. Operatoren überladen am Beispiel des ADT Complex in C und Java sowie C++, C# und Groovy. Prof. Dr. Nikolaus Wulff Informatik III Operatoren überladen am Beispiel des ADT Complex in C und Java sowie C++, C# und Groovy Prof. Dr. Nikolaus Wulff Komplexe Zahlen Komplexe Zahlen sind ein grundlegender Datentyp für mathematische

Mehr

SimpleStat mit Methoden

SimpleStat mit Methoden SimpleStat mit Methoden Als Ausgangspunkt nehmen wir folgende Definition (Version 1) von SimpleStat: double sum2; -Quadrate Dieser Objekttyp verfügt über keine Methoden und alle Datenattribute sind public.

Mehr

Abend 4 Übung : Erweitern von Klassen durch Vererbung

Abend 4 Übung : Erweitern von Klassen durch Vererbung Abend 4 Übung : Erweitern von Klassen durch Vererbung Ziel, Inhalt Wir erweitern die Klassen, die wir zum Zeichnen mit TsuZeichnen verwenden. Dabei wenden wir die Vererbung an um die Klassen zu spezialisieren

Mehr

Vorkurs Informatik WiSe 16/17

Vorkurs Informatik WiSe 16/17 Java Ausdrücke und Variablen Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 05.10.2016 Technische Universität Braunschweig, IPS Überblick Ausdrücke, Datentypen und Variablen Kontrollstrukturen 05.10.2016

Mehr

Informatik 1 MaVt FS Übung 10

Informatik 1 MaVt FS Übung 10 Informatik 1 MaVt FS 2010 Übung 10 Claudia Kuster ckuster@inf.ethz.ch Mittwoch 13-15h HG E 27 http://graphics.ethz.ch/~ckuster/teaching/mavt_info1_2010.html Vorlesung Objektorientierte Programmierung Konstruktoren

Mehr

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe Was sind Operatoren Ein Operator ist eine in die Programmiersprache eingebaute Funktion, die

Mehr

C-Programmierung: Ausdrücke und Operatoren#Division.2F

C-Programmierung: Ausdrücke und Operatoren#Division.2F C-Programmierung: Ausdrücke und Operatoren#Division.2F http://de.wikibooks.org/wiki/c-programmierung:_ausdrücke_und_operatoren#division_.2f This Book Is Generated By Wb2PDF using RenderX XEP, XML to PDF

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

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++ 1. Teil 11. April 2012 Organisatorisches MÜNSTER Übung zur Vorlesung Wissenschaftliches

Mehr

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 3 C-Ausdrücke...3-2 3.1 Arithmetische Ausdrücke...3-3 3.2 Wertzuweisungen...3-5 3.3 Inkrementieren und Dekrementieren...3-6 3.4 Logische Ausdrücke (Bedingungen)...3-7 3.5 Bedingte Ausdrücke...3-8

Mehr

Übersicht. Bisherige Verwendung von Klassen Vererbung. Zeiger auf Objekte (abgeleiteter) Klassen Virtuelle Funktionen Konstruktoren/Destruktoren

Übersicht. Bisherige Verwendung von Klassen Vererbung. Zeiger auf Objekte (abgeleiteter) Klassen Virtuelle Funktionen Konstruktoren/Destruktoren C++ - Vererbung Übersicht Bisherige Verwendung von Klassen Vererbung Grundlagen Zugriffschutz Vererbte Funktionen Zeiger auf Objekte (abgeleiteter) Klassen Virtuelle Funktionen Konstruktoren/Destruktoren

Mehr

Einheit Datentypen in der Programmiersprache C Schwerpunkt: Elementare (arithmetische) Datentypen

Einheit Datentypen in der Programmiersprache C Schwerpunkt: Elementare (arithmetische) Datentypen Einheit Datentypen in der Programmiersprache C Schwerpunkt: Elementare (arithmetische) Datentypen Kurs C/C++ Programmierung, WS 2008/2009 Dipl.Inform. R. Spurk Arbeitsgruppe Programmierung FR 6.2 Informatik

Mehr

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++ 1. Teil 11. April 2012 Organisatorisches MÜNSTER Übung zur Vorlesung Wissenschaftliches

Mehr

Programmierkurs. Steffen Müthing. January 25, Interdisciplinary Center for Scientific Computing, Heidelberg University

Programmierkurs. Steffen Müthing. January 25, Interdisciplinary Center for Scientific Computing, Heidelberg University Programmierkurs Steffen Müthing Interdisciplinary Center for Scientific Computing, Heidelberg University January 25, 2019 Inhalt Operator Overloading Motivation Syntax Unterstützung für I/O Funktoren Beispiel

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

Vorlesung 6: Operatoren, Logische Ausdrücke

Vorlesung 6: Operatoren, Logische Ausdrücke Vorlesung 6: Operatoren, Logische Ausdrücke Inhalt Organisatorisches Offene Übungen Operatoren Logische Ausdrücke Dr. J. Raimann 1 Offene Übungen (durch Tutoren betreut) montags 1. und 2. Block (8.15 Uhr

Mehr

Abstrakte Datentypen. Daten und Operationen Mögliche Implementierungen Veränderbare Typen, Ergebnistypen

Abstrakte Datentypen. Daten und Operationen Mögliche Implementierungen Veränderbare Typen, Ergebnistypen Abstrakte Datentypen Daten und Operationen Mögliche Implementierungen Veränderbare Typen, Ergebnistypen Einheit von Daten und Operationen Daten und Operationen auf Daten gehören zusammen Konto: Daten:

Mehr

Lösungen Übung 5. Programmieren in C++ 1. Aufgabe. #include <iostream.h> #include <stdarg.h>

Lösungen Übung 5. Programmieren in C++ 1. Aufgabe. #include <iostream.h> #include <stdarg.h> Lösungen Übung 5 1. Aufgabe #include int max(int anzarg, int a, int b,...) // Hilfsvariable für variable Parameter va_list argumente; va_start(argumente,b); // "b" letzter Parameter der Funktion,

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

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

Informatik I (D-ITET)

Informatik I (D-ITET) Informatik I (D-ITET) Übungsstunde 2, 5.10.2009 ETH Zürich? Übungsgruppenwechsel? Abgabe der Übungen... Bis Mo, 24:00 Theorie: Programme: per mail oder auf Papier.cpp Datei per mail Bin euch noch Demos

Mehr

Operatoren in C/C++ und Java:

Operatoren in C/C++ und Java: Operatoren in C/C++ und Java: C/C++/Java hat eine riesige Anzahl von Operatoren (im Vergleich zu anderen Programmiersprachen). Außer den üblichen arithmetischen Operatoren +, -, *, / (und % für Ganzzahlen)

Mehr

HSR Rapperswil 2001 Markus Rigling. Programmieren: Templates Auflage

HSR Rapperswil 2001 Markus Rigling. Programmieren: Templates Auflage HSR Rapperswil 2001 Markus Rigling Programmieren: Templates 1 1. Auflage Inhaltsverzeichnis: Templates.1 1. Verwendung 3 2. Erstellen einer Templateklasse. 3 3. Faustregel zum Erstellen eines Klassentemplates..

Mehr

Mapra: C++ Teil 6. Felix Gruber, Sven Groß. IGPM, RWTH Aachen. 13. Juni 2017

Mapra: C++ Teil 6. Felix Gruber, Sven Groß. IGPM, RWTH Aachen. 13. Juni 2017 Mapra: C++ Teil 6 Felix Gruber, Sven Groß IGPM, RWTH Aachen 13. Juni 2017 Felix Gruber, Sven Groß (IGPM, RWTH Aachen) Mapra: C++ Teil 6 13. Juni 2017 1 / 22 Was bisher geschah Klassen I Attribute und Methoden

Mehr

3. Operatoren und Ausdrücke

3. Operatoren und Ausdrücke 3. Operatoren und Ausdrücke Ausdruck (expression) Verarbeitungsvorschrift zur Ermittlung eines Wertes besteht aus Operanden und Operatoren wichtigste Ausdrücke: arithmetische und logische (boole'sche)

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

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

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

Variablen. CoMa-Übung VIII TU Berlin. CoMa-Übung VIII (TU Berlin) Variablen / 15

Variablen. CoMa-Übung VIII TU Berlin. CoMa-Übung VIII (TU Berlin) Variablen / 15 Variablen CoMa-Übung VIII TU Berlin 4.12.2013 CoMa-Übung VIII (TU Berlin) Variablen 4.12.2013 1 / 15 Themen der Übung 1 Typanpassungen 2 Operatoren 3 Variablen-Gültigkeit CoMa-Übung VIII (TU Berlin) Variablen

Mehr

Implementieren von Klassen

Implementieren von Klassen Implementieren von Klassen Felder, Methoden, Konstanten Dr. Beatrice Amrhein Überblick Felder/Mitglieder (Field, Member, Member-Variable) o Modifizierer Konstanten Methoden o Modifizierer 2 Felder und

Mehr