Algorithmen zur Datenanalyse in C++

Ähnliche Dokumente
Algorithmen und Datenstrukturen

Objektorientierte Programmierung mit C++ Zusammenfassung der wichtigsten Topics rund um die objektorientierte Programmierung mit C++11

Objektorientierte Programmierung

C++ Kurs Teil 1. Architektur, Anwendungsspektrum, primitive Datentypen, Funktionsaufrufe, Referenzen, Klassen

Operatoren überladen. Grundsätzliches

Programmieren II Klassen. Programmieren II Klassen. Programmieren II Klassen. Programmieren II Klassen. Zur Erinnerung.

Javakurs 2013 Objektorientierung

Vorkurs C++ Programmierung

Einführung in C++ mit Microsoft VS

Einführung in die Programmierung mit C++

13. Vererbung. Prof. Dr. François E. Cellier Informatik I für D-ITET (HS 2012)

Objektorientierte Programmierung

10. Klassen. Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

Vererbung & Schnittstellen in C#

Methoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only

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

Objektorientierung: Klassen und Objekte

PIWIN 1 Übung Blatt 5

Programmieren in Java

Sichtbarkeit & statische Methoden. Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben

12. Vererbung. Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)

(allgemeine) OOP in C++ Klassen und header-files Konstruktorn / Destruktoren Speicherverwaltung C++ Standard Library / SLT

C++ - Einführung in die Programmiersprache Objektorientierte Programmierung

Praxisorientierte Einführung in C++ Lektion: "Die Compiler-Chain (Vom Quellcode zum ausführbaren Programm)"

Objekt-Orientierte Programmierung

Java Einführung Methoden in Klassen

11. Klassen. Prof. Dr. François E. Cellier Informatik I für D-ITET (HS 2012)

C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern

C++ - Operatoren. Eigene Klassen mit neuen Funktionen

5.4 Klassen und Objekte

Praktikum im Bereich Praktische Informatik Echtzeitgraphik in C++ und DirectX10. computer graphics & visualization

Teil 9: Vererbung. Prof. Dr. Herbert Fischer Fachhochschule Deggendorf Prof. Dr. Manfred Beham Fachhochschule Amberg-Weiden

In der Computersprache C ist die Standardmethode zur Behandlung von Matrizen durch

Probeklausur: Programmierung WS04/05

Teil 6: Klassenkonzept. Prof. Dr. Herbert Fischer Fachhochschule Deggendorf Prof. Dr. Manfred Beham Fachhochschule Amberg-Weiden

5.5.8 Öffentliche und private Eigenschaften

Klassenbeziehungen & Vererbung

FB Informatik. Fehler. Testplan

Objektorientierte Programmierung mit C++ Vector und List

Fortgeschrittene C++-Programmierung

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Prinzipien Objektorientierter Programmierung

Alltagsnotizen eines Softwareentwicklers

IT- Handbuch für Fachinformatiker, 7. Auflage: Text- Lösungen Sascha Kersken

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

Innere Klassen in Java

Javakurs für Anfänger

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Einführung in die C++ Programmierung für Ingenieure

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

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

Objektorientierte Programmierung. Objektorientierte Programmierung. Klasse. Objekt. Beispiel: Sportfest1. Methode. Eine Einführung mit BlueJ

Objektorientierte Programmierung

Programmierkurs Java

einkonto.zahle(+100); //Transaktion Einzahlung einkonto.zahle(-20); //Transaktion Auszahlung einkonto.zahle(+30); //Transaktion Einzahlung

Objektorientierte Programmierung. Kapitel 12: Interfaces

3. Auflage. O Reillys Taschenbibliothek. C# 5.0 kurz & gut. Joseph Albahari & Ben Albahari O REILLY. Aktualisierung von Lars Schulten

Angewandte Mathematik und Programmierung

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein

1. Übung zu "Numerik partieller Differentialgleichungen"

Objektorientiertes Programmieren für Ingenieure

Programmieren II Vererbung. Programmieren II Vererbung. Programmieren II Vererbung. Programmieren II Vererbung. Einleitende Bemerkungen

Vererbung. Vererbung von Methoden und Instanzvariablen. Vererbung als Realisierung einer is-a Beziehung.

Interaktive Simulationen Lektion 1/3: Event-Driven Design und Signals

Objektorientierte Programmierung mit Python Objekt und Klassen

Informatik Repetitorium SS Volker Jaedicke

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

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

C++-Zusammenfassung. H. Schaudt. August 18, 2005

Angewandte Mathematik und Programmierung

Programmieren 3 C++ Prof. Peter Sommerlad Fredy Ulmer

Praktikum Betriebssysteme 1. Aufgabe (1)

Abschnitt 9: Schnittstellen: Interfaces

C# 2000 Expression Beispielcodes für Konsolen- und Formularanwendung

Meeting C++ C++11 R-Value Referenzen

Objects First With Java A Practical Introduction Using BlueJ. Mehr über Vererbung. Exploring polymorphism 1.0

Von der UML nach C++

Aufgabe 1. »Programmieren«, WS 2006/2007. Nino Simunic M.A.

C++ - Funktionen und mehr. Kerstin Gößner und Ralf Wondratschek

Angewandte Mathematik und Programmierung

EINI WiMa/LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12

Ziele. C und C++ Was ist C? Übersicht. Überblick. C und C++ im Vergleich zu anderen Programmiersprachen einordnen können

Einführung in die Informatik für Hörer aller Fakultäten II. Andreas Podelski Stephan Diehl Uwe Waldmann

3 Objektorientierte Konzepte in Java

Große Übung Praktische Informatik 1

Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

13 OOP MIT DELPHI. Records und Klassen Ein Vergleich

VIII: Vererbung. Unterklassen einer Klasse. Vererbung von Methoden und Instanzvariablen. Überschreiben von Methoden

Objektorientierung: Klassen und Objekte

Einführung in die. objektorientierte Programmierung

9. Vererbung und Polymorphismus

Einführung in das Objektorientierte Programmieren mit C++

Erste Schritte in Java

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

Transkript:

Algorithmen zur Datenanalyse in C++ Hartmut Stadie 11.06.2012 Algorithmen zur Datenanalyse in C++ Hartmut Stadie 1/ 28

Einführung Klassen Übung Algorithmen zur Datenanalyse in C++ Hartmut Stadie 2/ 28

Übersicht Einführung Informationen Beispiel: Bruchrechnung Klassen Übung Algorithmen zur Datenanalyse in C++ Hartmut Stadie 3/ 28

Informationen Ablauf: Vorlesung: montags 16:00 Hörsaal III Übung: im Anschluss an die Vorlesung in 9/302 und 9/305 Material: Stroustrup: The C++ Programming Language, 3rd edition http://www.lernnetz-sh.de/kmlinux/doc/c++- Kurs/index.html http://www.highscore.de/cpp/einfuehrung/ Press et al: Numerical Recipes, 3rd edition http://wwwiexp.desy.de/studium/lehre/cplusplus/ Algorithmen zur Datenanalyse in C++ Hartmut Stadie 4/ 28

Aufgabe: Bruchrechnung Aufgabe: Schreibe ein Programm zur Addition zweier Brüche! Schema: Bruch a und Bruch b einlesen Bruch c = a + b berechnen Bruch c ausgeben Algorithmen zur Datenanalyse in C++ Hartmut Stadie 5/ 28

Kodieren Bruch besteht aus int zaehler,nenner #include <iostream> int main() //Bruch a und Bruch b einlesen int Azaehler, Anenner; std::cin >> Azaehler >> Anenner; int Bzaehler, Bnenner; std::cin >> Bzaehler >> Bnenner; //Bruch c = a + b berechnen int Czaehler, Cnenner; //? //Bruch c ausgeben std::cout << Czaehler << "/" << Kompilieren, testen, weiterdenken... Cnenner << \n ;; Algorithmen zur Datenanalyse in C++ Hartmut Stadie 6/ 28

Kodieren II Addition: az an + bz bn = az bn+bz an an bn //Bruch a und Bruch b einlesen int Azaehler, Anenner; std::cin >> Azaehler >> Anenner; int Bzaehler, Bnenner; std::cin >> Bzaehler >> Bnenner; //Bruch c = a + b berechnen int Czaehler = Azaehler * Bnenner + Bzaehler * Anenner; int Cnenner = Anenner * Bnenner; Kompilieren, testen, weiterdenken... Algorithmen zur Datenanalyse in C++ Hartmut Stadie 7/ 28

Kodieren III Ergebnis kürzen: Zähler und Nenner durch ihren größten gemeinsamen Teiler dividieren. int ggt(int a, int b) if(b == 0) return a; return ggt(b, a % b); int main()... int Czaehler = Azaehler * Bnenner + Bzaehler * Anenner; int Cnenner = Anenner * Bnenner; int d = ggt(czaehler,cnenner); Czaehler /= d; Cnenner /=d; Kompilieren, testen, weiterdenken...fertig Algorithmen zur Datenanalyse in C++ Hartmut Stadie 8/ 28

Übersicht Einführung Klassen Einführung Deklaration und Member Konstruktoren Memberfunktionen Zugriffsrechte Operatoren Ein- und Ausgabe Statische Member Übung Algorithmen zur Datenanalyse in C++ Hartmut Stadie 9/ 28

Klassen Klassen: Benutzer definierter Typ Typ mit Membern(interne Variablen und Funktionen) verschiedene Zugriffsrechte: public: alle dürfen zugreifen private: nur innerhalb der Klasse benutzbar struct : Member public als default class : Member private als default Objekt: Instanz von Typ class T this: Zeiger auf Objekt, für das die Funktionen aufgerufen wurde Algorithmen zur Datenanalyse in C++ Hartmut Stadie 10/ 28

Deklaration und Member Beispiel Bruch: class Bruch public: int z,n;//datenmember ; Algorithmen zur Datenanalyse in C++ Hartmut Stadie 11/ 28

Addier-Funktion Bruch addiere(bruch a, Bruch b) Bruch c; c.z = a.z * b.n + b.z * a.n; c.n = a.n * b.n; int d = ggt(c.z,c.n); c.z /= d; c.n /= d; return c; Algorithmen zur Datenanalyse in C++ Hartmut Stadie 12/ 28

Hauptprogramm int main() //Bruch a,b,c einlesen Bruch a; std::cin >> a.z >> a.n; Bruch b; std::cin >> b.z >> b.n; Bruch c; std::cin >> c.z >> c.n; //Bruch c = a + b +c berechnen Bruch d = addiere(a,b); Bruch e = addiere(d,c); std::cout << e.z << "/" << e.n << \n ; Algorithmen zur Datenanalyse in C++ Hartmut Stadie 13/ 28

weitere Wünsche weitere Wünsche: einfache Initialisierung einfache Ausgabe automatisches Kürzen... Algorithmen zur Datenanalyse in C++ Hartmut Stadie 14/ 28

Konstruktoren und Destruktoren Konstruktor: wird bei der Erzeugung von Variablen aufgerufen definiert, wie ein Objekt initialisiert wird erlauben Typumwandlungen Destruktor: wird bei der Zerstörung einer Variablen aufgerufen Algorithmen zur Datenanalyse in C++ Hartmut Stadie 15/ 28

Konstruktoren class Bruch public: Bruch();//default constructor Bruch(int n, int z);//specific constructor Bruch(const Bruch& b);//copy constructor ~Bruch();//destructor ;... Bruch b; Bruch a(3,2); Algorithmen zur Datenanalyse in C++ Hartmut Stadie 16/ 28

Bruch mit Konstruktoren class Bruch public: Bruch(); Bruch(int nz, int nn); int z,n; ; Bruch::Bruch() z = 0; n = 1; Bruch::Bruch(int nz, int nn) z = nz; n = nn; Bruch addiere(bruch a, Bruch b) Bruch c(a.z * b.n + b.z * a.n,a.n * b.n); int d = ggt(c.z,c.n); c.z /= d; c.n /= d; return c; Algorithmen zur Datenanalyse in C++ Hartmut Stadie 17/ 28

Kopieren von Objekten ohne copyconstructor: kopiere alle Member 1 zu 1; oder eigener Konstruktor: class Bruch public: Bruch(); Bruch(int nz, int nn); Bruch(const Bruch& b); int z,n; ; Bruch::Bruch(const Bruch& b) z = b.z; n = b.n; //std::cout << "copy called fuer " << z << "/" << n << "\n"; Algorithmen zur Datenanalyse in C++ Hartmut Stadie 18/ 28

Konstruktoren und Typumwandlung Konstrukoren definieren auch die Typumwandlung(casting) Beispiel: int Bruch class Bruch Bruch(int nz);... ; Bruch::Bruch(int nz) z = nz; n = 1;... int main() Bruch f = 7; Algorithmen zur Datenanalyse in C++ Hartmut Stadie 19/ 28

Memberfunktionen Memberfunktionen werden für ein bestimmtes Objekt aufgerufen. Beispiel: class Bruch public:... void kuerze(); ; void Bruch::kuerze() int d = ggt(z,n); z /= d; n /= d; Bruch addiere(bruch a, Bruch b) Bruch c(a.z * b.n + b.z * a.n,a.n * b.n); c.kuerze(); return c; Algorithmen zur Datenanalyse in C++ Hartmut Stadie 20/ 28

addiere: class Bruch public: Bruch addiere(bruch b); ; Memberfunktionen II Bruch Bruch::addiere(Bruch b) Bruch c(z * b.n + b.z * n,n * b.n); c.kuerze(); return c; int main()... Bruch d = a.addiere(b); Algorithmen zur Datenanalyse in C++ Hartmut Stadie 21/ 28

Zugriffsrechte Damit der Bruch immer richtig gekürzt ist, sollte niemand direkt den Zähler oder Nenner ändern dürfen. Also: Setze z,n private class Bruch public: Bruch(); Bruch(int nz, int nn); Bruch(const Bruch& b); Bruch addiere(bruch b); void print(); private: void kuerze(); int z,n; ; Algorithmen zur Datenanalyse in C++ Hartmut Stadie 22/ 28

Operatoren Idee: Bruch c = a + b; in Klasse: Bruch operator+(bruch b);... Bruch Bruch::operator+(Bruch b) return Bruch(m_z * b.m_n + m_n * b.m_z, m_n * b.m_n);... Bruch erg = b1 + b2; Bruch erg = b1.operator+(b2); Algorithmen zur Datenanalyse in C++ Hartmut Stadie 23/ 28

Ausgabe std::cout ist vom Typ std::ostream benutzt: std::ostream& operator<<(std::ostream& os, Bruch b); //mit Selbstreferenz std::ostream& operator<<(std::ostream& os, Bruch b) return os << b.z << / << b.n; std::cout << "Bruch:" << erg2 << \n ; Muss friend von Bruch sein! Algorithmen zur Datenanalyse in C++ Hartmut Stadie 24/ 28

Einlesen std::cin ist vom Typ std::istream benutzt: std::istream& operator>>(std::istream& is, Bruch& b); std::istream& operator>>(std::istream& is,bruch& b) is >> z >> n; return is; int main() Bruch a; std::cin >> a; Muss friend von Bruch sein! Algorithmen zur Datenanalyse in C++ Hartmut Stadie 25/ 28

Statische Member statischer Member Member, der nur einmal für alle Objekte des neuen Typs existieren soll. class Bruch static int ggt(int a, int b); ; int g = Bruch::ggT(5,3); Algorithmen zur Datenanalyse in C++ Hartmut Stadie 26/ 28

Design mit Klassen Wann Klassen und wann Funktionen? Beschreibe Aufgabe Substantive werden zu Objekten (Klassen) Verben werden zu Funktionen der entsprechenden Klassen Beschreibe Objekte ist beschreibt Typ hat beschreibt Member Benutzer interessieren nur die Memberfunktionen!!! Algorithmen zur Datenanalyse in C++ Hartmut Stadie 27/ 28

Übersicht Einführung Klassen Übung Algorithmen zur Datenanalyse in C++ Hartmut Stadie 28/ 28