Informatik 1 ( ) D-MAVT F2010. Klassen, Konstruktoren, Operatoren, Templates. Yves Brise Übungsstunde 10
|
|
- Insa Hofer
- vor 5 Jahren
- Abrufe
Transkript
1 Informatik 1 ( ) D-MAVT F2010 Klassen, Konstruktoren, Operatoren, Templates
2 Nachbesprechung Blatt 8 Aufgabe 1 - FIFO Keine Probleme Aufgabe 2 - Stack einige Fallstudien... double pop (double* &stack, int cur); Keine Struktur, fragwürdiger Übergabeparameter. double pop (tstack& stack) { if (stack.cur < 1) { std::cout << Error ; return -1; else { return stack.data[--stack.cur]; So ist richtig! Elemente nicht überschreiben, geschweige denn den Speicher freigeben und neu allozieren.
3 Nachbesprechung Blatt 8 Beim neu Allozieren nicht zwei Mal kopieren! void push (double val, tstack& stack) { if (stack.cur == stack.max){ double *tmp_data = new double[stack.max]; for (int i=0; i<stack.max; i++){!!! *(tmp_data+i) = *(stack.data+i); delete[] stack.data; stack.data=new double[2*stack.max]!! for (int j=0; j<stack.max; j++){!!! *(stack.data+j) = *(tmp_data+j); Besser: double *tmp_data = new double [2*stack.max]; // Ein Mal kopieren delete[] stack.data; stack.data = tmp_data;! stack.max *= 2; delete [] tmp_data; *(stack.data+stack.cur) = val; ++stack.cur;
4 Nachbesprechung Blatt 8 Operationen nur ein Mal ausführen, wenn nicht anders nötig. double push(tstack &stack, double val){ if (stack.size < stack.max){ stack.data[stack.size] = val; stack.size++; else { double *temp = stack.data; stack.data = new double[2*stack.max]; for (int i = 0; i < stack.max; ++i){ stack.data[i] = temp[i]; stack.max *= 2; stack.data[stack.size] = val; stack.size++; delete[] temp; Besser ans Ende setzen! Wartbarkeit, Übersicht. Und: Man kann auch stack.data[stack.size++] = val; schreiben.
5 Nachbesprechung Blatt 8 Andere Lösung für einen Stapel. struct Item{ double val; Item* next; ; typedef Item* Stack; double pop(stack& stack) { if (stack!= null) { double ret = stack->val; Item* del = stack; stack = stack->next; delete del; return ret; else { std::cout << Error!\n ; return -1; void push (double val, Stack& stack) { Item* item = new Item; item->val = val; item->next = stack; stack = item; int size (Stack stack) { int i = 0; while (stack!= null) { ++i; stack = stack->next; return i; int clear (Stack& stack) { while (stack!= 0) pop(stack); Die Funktionen size und clear sind aufwendiger geworden, und unschöne Übergabeparameter. Noch bessere Lösung: Als Klasse implementieren, dann entfällt der Übergabeparameter stack.
6 Klassen Objektorientierte Programmierung Reale Dinge oder logische Untereinheiten werden als Klassen modelliert. Beispiele: Klassen enthalten nicht nur Daten sondern auch Funktionalität (Methoden). Rechteck Höhe Breite Skalieren Rotieren Spielbrett Felder Zug Bewege Figur Gewinnstellung? Kinosaal #Reihen Sitze Klimaanlage Reservieren Abfragen Matrix Dimension Einträge Zerlegen Multiplizieren Eintrag setzen Eintrag abfragen Auto Position Ziel Richtung Geschwindigkeit Bewege Kollision Berechne Weg
7 Freunde Berechtigungen in Klassen Es gibt private, protected und public. Zusätzlich können auch Freunde deklariert werden, die privaten Zugriff haben sollen. class Foo { friend void fkt(foo&); friend class Bar; private: void geheim(); ; class Bar { public: void oeffentlich(foo& f) { f.geheim(); ; void Foo::geheim() { std::cout << Geheim!\n ; void fkt(foo& f) { f.geheim(); int main() { Foo f; Bar b; f.geheim(); // NOK (private) b.oeffentlich(f); // OK fkt(f); // OK Erster Aufruf schlägt fehl, da die Funktion geheim nicht öffentlich ist. Die anderen Aufrufe sind in Ordnung, weil sie indirekt über befreundete Funktionen/Klassen getätigt werden.
8 Vererbung Auto Position Ziel Richtung Geschwindigkeit Bewege Kollision Berechne Weg Limousine Pool Helipad Heize Pool Öffne Trennscheibe class Auto { double posx, posy; double zielx, ziely; public: bool kollision();... ; class Limousine : public Auto { private: Pool pool; Helipad helipad; void heizepool(int celsius); void oeffnescheibe(): ; int main() { Auto auto; Limousine limo; auto = limo; // OK (Daten gehen verloren) limo = auto; // NOK (keine Zuweisung moegl.)
9 Templates Template Klasse Template Funktion template <typename T, typename E> class Klasse { T t; E e; ; template <typename T> T& fkt(); Template Parameter Templates sind Schablonen, um gewisse Typen unspezifiziert zu lassen. Der Kompiler generiert die konkreten Klassen/ Funktionen bei Bedarf. Gebrauch: Klasse<int,double> k; fkt<klasse<int,double> >();
10 Templates sind mächtig! template <int i> struct D { D(void*); ; template <int p, int i> struct is_prime { enum { prim = (p==2) (p%i) && is_prime<(i>2?p:0), i-1>::prim ; ; template<> struct is_prime<0,0> { enum {prim=1; ; template<> struct is_prime<0,1> { enum {prim=1; ; template <int i> struct Prime_print { Prime_print<i-1> a; enum { prim = is_prime<i, i-1>::prim ; void f() { D<i> d = prim? 1 : 0; a.f(); ; template<> struct Prime_print<1> { enum { prim = 0 ; void f() { D<1> d = prim? 1 : 0; ; ; int main() { Prime_print<18> a; a.f(); return 0; Sie müssen nebenstehendes Programm nicht verstehen! Das Programm berechnet zur Kompilierzeit die Primzahlen. Sie sollen nachvollziehen können, dass es qualitativ etwas ganz anderes ist, ob eine Berechnung zur Kompilierzeit oder zur Laufzeit geschieht. Jedes Computerprogramm kann mit Templates zur Kompilierzeit simuliert werden.
11 C++ als Konglomerat von Sprachen Es gibt verschiedene rel. eigenständige Teilbereiche, die oft unter dem Begriff C++ zusammengefasst werden: C Grundelemente der Sprache schon in C vorhanden. Blöcke, Anweisungen, primitive Datentypen, Felder, Zeiger. Objektorientiertes C++ Aus der Sprache C wurde dann irgendwann eine objektorientierte Sprache mit Klassen, Datenkapselung, Vererbung, virtuellen Funktionen, Polymorphismus. Template C++ Generisches Programmieren. Templates wurden eingeführt und erst später wurde entdeckt, dass Templates sog. Turing-vollständig sind. Standard Template Library Umfangreiche Bibliothek von generischen Containern und Algorithmen.
12 Blatt 10, Polynom Ein Polynom des Grades n ist durch n+1 Koeffizienten bestimmt. p n (x) = n c i x i i=0 Bearbeiten Sie die Datei polynom.cpp. class cpolynom { private: double *coef; int deg; public: ; // Ausgabefunktion fuer das Polynom void print() const;
13 Blatt 10, Polynom Funktionalität: // erstellt 2 Polynome 3. und 2. Grades double w[] = {5,4,2,1; cpolynom a(w,3); double v[] = {3,1,9; cpolynom b(v,2); // Erstellt ein neues Polynom und initialisiert // es mit der Addition von a und b. // Dies braucht den Kopierkonstruktor. cpolynom c = a+b; // gibt es aus c.print(); // testet den Zuweisungsoperator b = c + a; b.print(); // wertet ein Polynom aus cout << a.eval(2) << endl;
14 Blatt 10, Polynom Die Ausgabe ist schon implementiert... void cpolynom::print() const { // gehe vom hoechsten zum tiefsten Grad for (int i = deg; i>= 0; i--) { // Nur die Konstante ausgeben und kein + if (i == 0 ) cout << coef[i]; // Bei Grad eins, kein "Hoch" ausgeben else if (i == 1) cout << coef[i] << "*x" << " + "; else cout << coef[i] << "*x^" << i << " + "; cout << endl;
15 Blatt 10, Teilaufgabe a) Konstruktoren implementieren... cpolynom() { // mit der Nullfunktion initialisieren cpolynom(const double* const coef, int deg) { // Funktion aus coef übernehmen Teilaufgabe f): Copy-Konstruktor cpolynom (const cpolynom& rhs) { // Funktion aus rhs in ret übernehmen Ist notwendig wenn es Zeiger-Datenmitglieder gibt. Wenn man es nicht manuell macht, werden einfach die Zeiger kopiert und keine neuen Daten angelegt.
16 Blatt 10, Teilaufgabe b) Destruktor implementieren... class cpolynom { public: ~cpolynom();... Nicht vergessen: Wie für alle anderen Funktionen auch braucht es immer eine Deklaration im Klassenrumpf und eine Implementation später in der Datei. cpolynom::~cpolynom() { // Speicher freigeben
17 Blatt 10, Teilaufgabe c) Auswertung implementieren... double eval(double val) const; Effiziente Auswertung mit Horner-Schema p n (x) = n c i x i =(...(c n x + c n 1 )x +...)x + c 0 i=0 Braucht n-1 Multiplikationen und n Additionen (Vergleiche mit 2n und n naiv oder sogar O(n^2) und n sehr naiv).
18 Blatt 10, Teilaufgabe d) & e) Addition und Subtraktion implementieren... spolynom operator+ (const spolynom& rhs); spolynom operator- (spolynom rhs); Variante 2 (operator-) nur verwenden wenn es einen Copy-Konstruktor gibt. Bei der Parameterübergabe wird sonst auch eine bitweise Kopie erstellt. Dann tritt möglicherweise wieder das Zeiger Problem ein. Sollte auch für unterschiedliche Grade funktionieren O.B.d.A. n m, p n (x)+q m (x) = m i=0 (cp i + cq i )xi + n i=m+1 cp i xi
19 Blatt 10, Teilaufgabe f) Copy-Konstruktor schon gesehen. Hier einige Anwendungsbeispiele von Konstruktoren allgemein: int main() { double coeff[] = {1,2,3,4; cpolynom a(coeff, 3); // Feld Konstruktor cpolynom b(a); // Copy-Konstuktor cpolynom c; // Leerer Konstruktor cpolynom& d = a; // Referenz, kein Konstruktor cpolynom* e = &b; // Zeiger ohne Konstruktor cpolynom* f = new cpolynom(a); // Zeiger mit Copy-Konstr. cpolynom* g = new cpolynom(); // Zeiger mit leerem Konstruktor. cpolynom* h = new cpolynom(coeff, 3); // guess what...
20 Blatt 10, Teilaufgabe g) Zuweisungsoperator implementieren. cpolynom& cpolynom::operator= (const cpolynom& rhs) { if (this!= &rhs) { // Konstruiere Objekt return *this; Hier ist auch wichtig, dass die Daten und nicht die Zeiger kopiert werden. Es muss natürlich auch der entsprechende Speicherplatz reserviert werden. Code wiederverwenden? cpolynom& operator= (const cpolynom& rhs); cpolynom(const cpolynom& rhs) { *this = rhs; Gibt Probleme, wenn die Klasse als Mitglieder andere Klassen oder Strukturen hat. Diese werden 2 Mal initialisiert. Besser: Speicher allozieren und dann private Funktion copy o.ä. aufrufen.
21 Mehr Informationen Operatorüberladung Buch Willemer: Einstieg in C++, Kapitel 5.4 und 5.5 Vorlesungsunterlagen Allgemein (inkl. Klassen)
Informatik 1 ( ) D-MAVT F2011. Klassen. Yves Brise Übungsstunde 10
Informatik 1 (251-0832-00) D-MAVT F2011 Klassen Übungsbetrieb Es gibt noch eine Übung 11 (7.5 Punkte ist trotzdem die Testatgrenze) Testate bestätige ich euch per Mail Es gibt noch 3 weitere Übungstermine,
MehrInformatik 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
MehrInformatik 1 ( ) D-MAVT F2010. Letzte Übungsstunde. Yves Brise Übungsstunde 12
Informatik 1 (251-0832-00) D-MAVT F2010 Letzte Übungsstunde Evaluation S3 Frage zu Assistierenden INFK Anz. Der/die Assistent/in war fachlich k.ä. 0 kompetent 1 0 2 0 3 0 4 23% 3 5 77% 10 MW = 4.8 SA =
MehrDAP2-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
MehrInformatik 1 ( ) D-MAVT F2011. Klassen, Funktionen. Yves Brise Übungsstunde 9
Informatik 1 (251-0832-00) D-MAVT F2011 Klassen, Funktionen Nachbesprechung Blatt 7, Aufgabe 1 Wenn Funktion void als Rückgabetyp hat, dann ist return nicht notwendig. void swap3(int* a, int* b) { int
MehrC++ 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
MehrMapra: C++ Teil 4. Felix Gruber. 6. Mai IGPM, RWTH Aachen. Felix Gruber (IGPM, RWTH Aachen) Mapra: C++ Teil 4 6.
Mapra: C++ Teil 4 Felix Gruber IGPM, RWTH Aachen 6. Mai 2015 Felix Gruber (IGPM, RWTH Aachen) Mapra: C++ Teil 4 6. Mai 2015 1 / 22 Themen vom letzten Mal Kompilieren mit Makefiles Ein-/Ausgabe über Dateien
MehrC++ 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
MehrInformatik 1 ( ) D-MAVT F2010. Rekursion, Signaturen. Yves Brise Übungsstunde 8
Informatik 1 (251-0832-00) D-MAVT F2010 Rekursion, Signaturen Nachbesprechung Blatt 6 Aufgabe 1 - Strukturen und Zeiger Genau die Variablen angeben, die sich geändert haben. Implizite Initialisierung ergänzt
Mehr5. 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
MehrProgrammieren 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
MehrDynamische 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
MehrProgrammieren 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
MehrDatenkapselung: public / private
627 18. Klassen Klassen, Memberfunktionen, Konstruktoren, Stapel, verkettete Liste, dynamischer Speicher, Copy-Konstruktor, Zuweisungsoperator, Destruktor, Konzept Dynamischer Datentyp Datenkapselung:
Mehrvirtual Wertpapier& operator=(const Wertpapier&); // VIRTUELLE ZUWEISUNG protected: static enum {wortfeldlaenge = 20}; char* name_z; double kurs; };
C++ für Anfänger des Programmierens Rieckeheer GSO-Hochschule Nürnberg März 2008 174 a neu Vor Kapitel 24 ist folgender Text einzufügen. Das folgende Programm variiert das Programm VIRTfunktion3.cpp und
MehrVisuelle Kryptographie. Anwendung von Zufallszahlen
Visuelle Kryptographie Anwendung von Zufallszahlen Verschlüsseln eines Bildes Wir wollen ein Bild an Alice und Bob schicken, so dass Verschlüsseln eines Bildes Wir wollen ein Bild an Alice und Bob schicken,
MehrSchriftlicher Test (120 Minuten) VU Einführung ins Programmieren für TM. 23. Januar 2017
Familienname: Vorname: Matrikelnummer: Aufgabe 1 (3 Punkte): Aufgabe 2 (1 Punkt): Aufgabe 3 (2 Punkte): Aufgabe 4 (4 Punkte): Aufgabe 5 (2 Punkte): Aufgabe 6 (2 Punkte): Aufgabe 7 (4 Punkte): Aufgabe 8
MehrC++ - 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
MehrObjektorientierte Programmierung mit C Strukturierte Anweisungen: Exception Handling
1.5. Strukturierte Anweisungen: Exception Handling Exceptions sind Objekte beliebigen Typs stack unwinding ruft Destruktoren aller erfolgreich konstruierten Objekte in einem catch-block kann eine Exception
MehrDatenkapselung: public / private
612 18. Klassen Klassen, Memberfunktionen, Konstruktoren, Stapel, verkettete Liste, dynamischer Speicher, Copy-Konstruktor, Zuweisungsoperator, Destruktor, Konzept Dynamischer Datentyp Datenkapselung:
MehrVerschlü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
MehrInformatik - Übungsstunde
Informatik - Übungsstunde Jonas Lauener (jlauener@student.ethz.ch) ETH Zürich Woche 12-23.05.2018 Lernziele Klassen Dynamic Memory Jonas Lauener (ETH Zürich) Informatik - Übung Woche 12 2 / 20 Structs
MehrWas 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
MehrC++ 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
MehrGrundlagen der Informatik
Grundlagen der Informatik Musterklausur 1. Dynamische Datenstrukturen und objektorientierte Programmierung Zur Verwaltung einer digitalen Fotogalerie sollen Techniken der objektorientierten Programmierung
MehrInformatik 1 ( ) D-MAVT F2010. Klassen. Yves Brise Übungsstunde 9
Informatik 1 (251-0832-00) D-MAVT F2010 Klassen Aufgabennachschub Informatik für Mathematiker und Physiker (251-0847-00) von Bernd Gärtner gehalten im Wintersemester. http://www.ti.inf.ethz.ch/ew/courses/info1_09/
MehrTeil 8: Dynamische Speicherverwaltung. Prof. Dr. Herbert Fischer Fachhochschule Deggendorf Prof. Dr. Manfred Beham Fachhochschule Amberg-Weiden
Teil 8: Dynamische Speicherverwaltung Prof. Dr. Herbert Fischer Fachhochschule Deggendorf Prof. Dr. Manfred Beham Fachhochschule Amberg-Weiden Inhaltsverzeichnis 8 Dynamische Speicherverwaltung... 3 8.1
MehrC++ 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
MehrC++ Teil 7. Sven Groß. 30. Nov Sven Groß (IGPM, RWTH Aachen) C++ Teil Nov / 13
C++ Teil 7 Sven Groß 30. Nov 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 7 30. Nov 2015 1 / 13 Themen der letzten Vorlesung Zeiger, Felder (Wdh.) dynamische Speicherverwaltung Sven Groß (IGPM, RWTH Aachen)
MehrImplementieren 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
Mehr10.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
MehrBeispiel 1/3. Abstrakte Datentypen. Beispiel 3/3. Beispiel 2/3. Abstrakte Klasse SortierVerfahren
Beispiel 1/ Abstrakte Klasse SortierVerfahren Abstrakte Datentypen Die Methode sort von Sortierverfahren ist sinnlos bietet keinerlei Sortierung Objekte können in Wahrheit nicht sortieren Überhaupt sind
MehrCrashkurs 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
MehrC++ Quellcodes zum Buch Kapitel 5
1 HARALD NAHRSTEDT C++ für Ingenieure Einführung in die objektorientierte Programmierung Erstell am 27.04.2009 C++ Quellcodes zum Buch Kapitel 5 Beschreibung Diese Seiten enthalten den Quellcode aus dem
MehrFallstudie: Online-Statistik
Fallstudie: Online-Statistik Ziel: Klasse / Objekt, welches Daten konsumiert und zu jeder Zeit Statistiken, z.b. Mittelwert, Varianz, Median (etc.) ausgeben kann Statistics s = new Statistics(maxSize);...
MehrPraxis der Programmierung
Liste, Ausnahmefehler, Template-Funktionen und -Klassen Institut für Informatik und Computational Science Henning Bordihn 1 Stack als einfach verkettete Liste 2 Aufgabe 1 1. Kopieren Sie aus /home/rlehre/w13
MehrC++ - 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
MehrGrundlagen 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
MehrSchriftlicher Test (120 Minuten) VU Einführung ins Programmieren für TM. 25. Jänner 2016
Familienname: Vorname: Matrikelnummer: Aufgabe 1 (3 Punkte): Aufgabe 2 (4 Punkte): Aufgabe 3 (2 Punkte): Aufgabe 4 (2 Punkte): Aufgabe 5 (2 Punkte): Aufgabe 6 (1 Punkte): Aufgabe 7 (3 Punkte): Aufgabe
MehrHSR Rapperswil 2001 Markus Rigling. Programmieren: Smart Pointer Auflage
HSR Rapperswil 2001 Markus Rigling Programmieren: Smart Pointer 1 1. Auflage Inhaltsverzeichnis: 1. Smart Pointer3 2. Vor- Nachteile von Smart Pointer..3 3. auto_ptr..3 4. Umsetzung / Anwendung:.4 5. Wertzuweisung
Mehr7. Ü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
MehrDynamische Datentypen
Dynamische Datentypen Tupel und Folgen o Wertebereich eines Structs / einer Klasse: T1 T2... Tk Werte sind k-tupel Tupel und Folgen o Wertebereich eines Structs / einer Klasse: T1 T2... Tk Werte sind k-tupel
MehrProgrammierkurs C/C++
Blockkurs: "Einführung in C/C++" Programmierkurs C/C++ Donnerstag Sandro Andreotti andreott@inf.fu-berlin.de WS 2008/09 1 Structs Blockkurs: "Einführung in C/C++" 2 Structs sind Bündel von Variablen (unter
MehrGrundkurs C++ IDE Klassenhierarchien
Grundkurs C++ IDE Klassenhierarchien Martin Knopp 03.05.2017 Folie 1/34 GK C++: IDE, Klassenhierarchien Martin Knopp 03.05.2017 IDE Integrated Development Environment Wir empfehlen: Qt Creator (Bestandteil
MehrProgrammieren - C++ Templates
Programmieren - C++ Templates Reiner Nitsch r.nitsch@fbi.h-da.de Was sind Templates? C++ Templates ermöglichen generische Programmierung. Das ist Programmierung unabhängig vom speziellen Objekt-Typ Templates
MehrVorkurs Informatik: Erste Schritte der Programmierung mit C++
Vorkurs Informatik WS 14/15 Vorkurs Informatik: Erste Schritte der Programmierung mit C++ Tag 3: Objektorientiere Programmierung 8. Oktober 2014 Vorkurs Informatik WS 14/15 > Einführung Agenda 1 Einführung
MehrEinstieg in die Informatik mit Java
1 / 25 Einstieg in die Informatik mit Java Objektorientierte Programmierung und Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 25 1 Die Philosophie 2 Definition
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Dynamische Datenobjekte Pointer/Zeiger, Verkettete Liste Eigene Typdefinitionen 1 Zeigeroperatoren & und * Ein Zeiger ist die Speicheradresse irgendeines Objektes. Eine
MehrName: 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
MehrRepetitorium Informatik (Java)
Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen
MehrMapra: 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
MehrMapra: C++ Teil 4. Felix Gruber, Michael Rom. 24. Mai 2016 IGPM. Felix Gruber, Michael Rom (IGPM) Mapra: C++ Teil 4 24.
Mapra: C++ Teil 4 Felix Gruber, Michael Rom IGPM 24. Mai 2016 Felix Gruber, Michael Rom (IGPM) Mapra: C++ Teil 4 24. Mai 2016 1 / 25 Themen vom letzten Mal Kompilieren mit Makefiles Ein-/Ausgabe über Dateien
MehrVorkurs C++ Programmierung
Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:
MehrRepetitorium 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
Mehr19. Vererbung und Polymorphie
667 19. Vererbung und Polymorphie Ausdrucksbäume, Vererbung, Code-Wiederverwendung, virtuelle Funktionen, Polymorphie, Konzepte des objektorientierten Programmierens (Ausdrucks-)Bäume -(3-(4-5))*(3+4*5)/6
Mehr7. Vererbung und Polymorphie
210 7. Vererbung und Polymorphie Ausdrucksbäume, Vererbung, Code-Wiederverwendung, virtuelle Funktionen, Polymorphie, Konzepte des objektorientierten Programmierens (Ausdrucks-)Bäume -(3-(4-5))*(3+4*5)/6
Mehr3. Exkurs in weitere Arten der Programmierung
3. Exkurs in weitere Arten der Programmierung Inhalt: Objektorientierte Programmierung in C++ Logische Programmierung in Prolog Peter Sobe Objektorientierte Programmierung in C++ C++ ist eine objektorientierte
MehrSchriftlicher Test (120 Minuten) VU Einführung ins Programmieren für TM. 24. Juni 2016
Familienname: Vorname: Matrikelnummer: Aufgabe 1 (3 Punkte): Aufgabe 2 (4 Punkte): Aufgabe 3 (2 Punkte): Aufgabe 4 (1 Punkt): Aufgabe 5 (3 Punkte): Aufgabe 6 (1 Punkt): Aufgabe 7 (1 Punkt): Aufgabe 8 (2
MehrWintersemester 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
MehrInformatik 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
MehrC++ 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
MehrC++ 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
MehrProbeklausur: 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,
MehrDatenkapselung: public / private class rational { r.d = 0 int n; int d; // INV: d!= Klassen rational r; r.n = 1; // error: n is private
Datenkapselung: public / private 7. Klassen Klassen, Memberfunktionen, Konstruktoren, Stapel, verkettete Liste, dynamischer Speicher, Copy-Konstruktor, Zuweisungsoperator, Destruktor, Konzept Dynamischer
MehrOOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik
Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik WS 2011/12 Inhalt Test-Besprechung! Ziele verdeutlichen Große Bild von OOP Wiederholung: Einbettung als Technik
MehrGrundlagen der Informatik
Grundlagen der Informatik Klausur 1. August 2008 1. Dynamische Datenstrukturen und objektorientierte Programmierung (45 Punkte) Gegeben sei eine Datenstruktur mit folgendem Aufbau struct lelem { int w;
MehrGrundkurs C++ IDE Klassenhierarchien
Grundkurs C++ IDE Klassenhierarchien Martin Knopp & Johannes Feldmaier 20.04.2016 Folie 1/35 GK C++: IDE, Klassenhierarchien Martin Knopp & Johannes Feldmaier 20.04.2016 IDE Integrated Development Environment
MehrÜberblick. 6. Konstruktor und Destruktor - obligatorische Elementfunktionen einer Klasse
Ü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
MehrVorlesungsprüfung Programmiersprache 1
Vorlesungsprüfung Programmiersprache 1 Termin der Prüfung: 1) Di 20.03.2018 16:15 17:00 HSB 3 2) Di 15.05.2018 16:15 17:00 HSB 3 3) Di 12.06.2018 16:15 17:00 HSB 3 Stoffgebiete: 1) Ganzzahltypen: char,
MehrÜ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
MehrObjektorientierte 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
MehrProgrammieren in C++
Programmieren in C++ SS 2012 Vorlesung 5, Dienstag 5. Juni 2012 (Klassen, Objekte, Methoden, new & delete) Prof. Dr. Hannah Bast Lehrstuhl für Algorithmen und Datenstrukturen Institut für Informatik Universität
MehrGrundkurs C++ IDE Klassenhierarchien
Grundkurs C++ IDE Klassenhierarchien Martin Gottwald und Stefan Röhrl 8 Mai 2019 Folie 1/34 GK C++: IDE, Klassenhierarchien Martin Gottwald und Stefan Röhrl 8 Mai 2019 IDE - Integrated Development Environment
MehrC++ Teil 7. Sven Groß. 26. Nov IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Nov / 18
C++ Teil 7 Sven Groß IGPM, RWTH Aachen 26. Nov 2014 Sven Groß (IGPM, RWTH Aachen) C++ Teil 7 26. Nov 2014 1 / 18 Themen der letzten Vorlesung Referenzen Zeiger Felder dynamische Speicherverwaltung Sven
MehrUnterlagen. CPP-Uebungen-08/
Unterlagen http://projects.eml.org/bcb/people/ralph/ CPP-Uebungen-08/ http://www.katjawegner.de/lectures.html Kommentare in C++ #include /* Dies ist ein langer Kommentar, der über zwei Zeilen
MehrHSR 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..
MehrC++ Klassen, Vererbung. Philipp Lucas. Sebastian Hack. Wintersemester 2008/09. saarland.
C++ Klassen, Vererbung Philipp Lucas phlucas@cs.uni-sb.de Sebastian Hack hack@cs.uni-sb.de Wintersemester 2008/09 saarland university computer science 1 Inhalt Klassen in C++ Sichtbarkeit Erzeugen von
MehrSystemnahe Programmierung in C/C++
Systemnahe Programmierung in C/C++ Peter Piehler peter.piehler@symetrion.com Lehrstuhl für Datenbanken und Informationssysteme Fakultät für Mathematik und Informatik 2006 12 13 Peter Piehler (DBIS) C/C++
Mehr19. Vererbung und Polymorphie
(Ausdrucks-)Bäume 19. Vererbung und Polymorphie Ausdrucksbäume, Vererbung, Code-Wiederverwendung, virtuelle Funktionen, Polymorphie, Konzepte des objektorientierten Programmierens -(3-(4-5))*(3+4*5)/6
MehrKlausur im WS 2003/04 : Informatik III
Dr.-Ing. Hartmut Helmke Fachhochschule Braunschweig/Wolfenbüttel Fachbereich Informatik Matrikelnummer: Punktzahl: Ergebnis: Freiversuch F1 F2 F3 Klausur im WS 2003/04 : Informatik III Hilfsmittel sind
MehrGrundzüge der objektorientierten Programmierung
BERGISCHE UNIVERSITÄT GESAMTHOCHSCHULE WUPPERTAL GAUSS-STRASSE 20 42097 WUPPERTAL (Korrespondenzanschrift) 42119 WUPPERTAL (Lieferanschrift) TELEX 8 592 262 bughw TELEFAX (0202) 439-2901 TELEFON (0202)
MehrEinfü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
Mehr4. 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
MehrVorlesung Objektorientierte Programmierung Klausur
Prof. Dr. Stefan Brass 16. Februar 2007 Dipl.-Inform. Annett Thüring Institut für Informatik MLU Halle-Wittenberg Vorlesung Objektorientierte Programmierung Klausur Name: Matrikelnummer: Studiengang: Aufgabe
MehrMatrikelnummer:
Übungen zur Informatik A Hauptklausur 20.02.2003 Universität Koblenz-Landau Institut für Informatik WS 2002/3 Prof. Dr. Dietrich Paulus Dr. Manfred Jackel Bitte lösen Sie jede Aufgabe auf dem jeweiligen
MehrAlgorithmen 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
MehrKlassen können auch sogenannte static Member enthalten, diese werden nur einmal pro Klasse angelegt!
Klassen können auch sogenannte static Member enthalten, diese werden nur einmal pro Klasse angelegt! static Memberfunktionen dürfen (implizit) nur auf static Memberdaten zugreifen, (sie haben keinen this-zeiger!)
MehrObjektorientierte Programmierung II
Objektorientierte Programmierung II OOP I Erlaubt Entwicklers, im Problemraum zu denken und zu arbeiten. Das Problem wird in eine Menge von Objekten zerlegt. Objekte wirken aufeinander, um das Problem
MehrObjektorientierte Anwendungsentwicklung
Name, Vorname Matrikelnummer Klausur zur Vorlesung Objektorientierte Anwendungsentwicklung Krefeld, 2. Juli 2014 Hinweise: Schreiben Sie Ihren Namen und Ihre Matrikelnummer auf dieses Deckblatt. Tragen
MehrVorwort zur zweiten Auflage 1. Vorwort zur ersten Auflage 2
Vorwort zur zweiten Auflage 1 Vorwort zur ersten Auflage 2 1 Über dieses Buch 3 1.1 WarumdiesesBuch?... 3 1.2 Voraussetzungen...... 4 1.3 Systematik... 4 1.4 WieliestmandiesesBuch?... 6 1.5 ZugriffaufdieQuellenzudenBeispielen...
MehrAngewandte 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.)
MehrAngewandte 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
MehrSchriftlicher Test (120 Minuten) VU Einführung ins Programmieren für TM. 01. März 2015
Familienname: Vorname: Matrikelnummer: Aufgabe 1 (3 Punkte): Aufgabe 2 (3 Punkte): Aufgabe 3 (2 Punkte): Aufgabe 4 (5 Punkte): Aufgabe 5 (3 Punkte): Aufgabe 6 (1 Punkte): Aufgabe 7 (2 Punkte): Aufgabe
MehrEinführung in C. Alexander Batoulis. 5. Mai Fakutltät IV Technische Universität Berlin
Fakutltät IV Technische Universität Berlin 5. Mai 2014 Inhaltsverzeichnis 1 2 3 4 5 6 7 Überblick Beispielprogramm in Java Beispielprogramm in C 1 2 3 4 5 6 7 Beispielprogramm in Java Beispielprogramm
MehrProgrammierkurs 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
MehrInformatik 1 ( ) D-MAVT F2011. Pointer, Structs. Yves Brise Übungsstunde 6
Informatik 1 (251-0832-00) D-MAVT F2011 Pointer, Structs Organisatorisches Übungsstunde 20110413 Da ich abwesend bin, bitte Gruppe von David Tschirky besuchen. Mittwoch, 20110413, 13:15-15:00 Uhr, VAW
MehrEinführung in die Programmierung Wintersemester 2008/09
Einführung in die Programmierung Wintersemester 28/9 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund : Darstellung von Information Inhalt Einfache Datentypen
MehrObjektorientierte Programmierung und Klassen
Objektorientierte Programmierung und Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 16.5.07 G. Bohlender (IANM UNI Karlsruhe) OOP
Mehr