Informatik 1 Übung 8. NACHBESPRECHUNG Übung 8 Rekursion Existiert Weg von A nach B?

Slides:



Advertisements
Ähnliche Präsentationen
C Sharp (C#) Martin Saternus Senior Student Partner
Advertisements

Ziele von EINI I + II Einführen in „Informatik“
der Universität Oldenburg
der Universität Oldenburg
der Universität Oldenburg
Klassen - Verkettete Liste -
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Einführung in die Programmierung Zusammenfassung
Progwerkstatt JAVA Klasse, Objekte, Konstruktoren, Methoden
Programmierkurs C/C++
Seminar: "Einführung in C/C++" Einführung in die Programmiersprache C/C++ Donnerstag Andreas Döring SS 2004.
der Universität Oldenburg
Abstrakte Klassen HS Merseburg (FH) WS 06/07.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Listen Richard Göbel.
Indirekte Adressierung
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Konstruktoren.
Vererbung. Das Prinzip der Vererbung im täglichen Leben:
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (07 - Skiplisten) Prof. Th. Ottmann.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
Programmieren mit JAVA
Programmieren mit JAVA
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
Abstrakter Datentyp in C++ I - Klasse -
C++ Vererbung und Polymorphie
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
Einfach verkettete Listen
Einführung in die Programmierung
Einführung in die Programmierung
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
EPROG Tutorium Einheit 4 Klassen und Objekte. Wiederholung Schleifen do... while while for break/continue Strings String char Methoden für Strings Arrays.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2011/12 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Einführung in die Programmiersprache C 4
Informatik 1 Letzte Übung.
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Dynamische Datentypen
Einfach und doppelt verkettete Listen in JAVA by Jens Weibler
EPROG Tutorium #3 Philipp Effenberger
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
Java-Kurs - 6. Übung Besprechung der Hausaufgabe
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
Objektorientierte Programmierung (OOP)
Diskrete Mathe Diskrete Mathematik I Listen Vorlesung 4.
Vererbung. Klassen - Vererbung  Eine Klasse kann von einer Basisklasse abgeleitet werden  Die abgeleitete Klasse erbt die Eigenschaften und Methoden.
Java Programme nur ein bisschen objektorientiert.
Tutorium Software-Engineering SS14 Florian Manghofer.
Tutorium Software-Engineering SS14 Florian Manghofer.
C++ FÜR cOMPUTERSPIELENTWICKLER
Tutorium Software-Engineering SS14 Florian Manghofer.
Tutorium Software-Engineering SS14 Florian Manghofer.
Tutorium Software-Engineering SS14 Florian Manghofer.
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
„Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen.“
Definition Felder Konstruktor Methoden Beispiel
Implementieren von Klassen
Polymorphie Überschreiben
 Präsentation transkript:

Informatik 1 Übung 8

NACHBESPRECHUNG Übung 8

Rekursion Existiert Weg von A nach B?

Rekursion Existiert Weg von A nach B? Ja, falls: – Schritt von A zu A' möglich – Weg von A' nach B existiert

Rekursion Existiert Weg von A nach B? Ja, falls: – Schritt von A zu A' möglich – Weg von A' nach B existiert

Rekursion Musterlösung

Strings Typ string – Operatoren !=, ==,,... Typ char* oder char[N] – Funktionen strcmp, strcpy,... string s1 = "abc"; string s2 = "def"; if(s1 > s2) { s1 = s2; } cin >> s2; char s1[4] = "abc"; char s2[4] = "def"; if(strcmp(s1,s2)>0) { strcpy(s1,s2); } cin.getline(s2,3);

Listen Auf Blatt aufzeichnen Jeden Zeiger auf Gültigkeit prüfen Sonderfälle – Liste leer – Erstes/letztes Element einfügen head data next data next data next data next

Debugging Live demo

WIEDERHOLUNG Klassen

Klasse – Bauanleitung Instanz einer Klasse – Objekt, nach Bauanleitung hergestellt

Klassen Nur Bauanleitung, kein Objekt class Vektor { public: int x; int y; }; int main() { return 0; }

Klassen Ein Objekt class Vektor { public: int x; int y; }; int main() { Vektor v; return 0; }

Klassen Äquivalent ohne Klassen class Vektor { public: int x; int y; }; int main() { Vektor v; return v.x; } int main() { int v_x; int v_y; return v_x; }

Klassen Member-Funktionen – Wie normale Funktionen – Versteckter (automatischer) this-Parameter – Müssen auf Objekten aufgerufen werden

Klassen Äquivalent ohne Member-Funktionen class Vektor { public: int x,y; int getLength() ; }; int Vektor::getLength() { return x*x+y*y; } int main() { Vektor v; return v.getLength(); } class Vektor { public: int x,y; } int Vektor_getLength(Vektor* this) { return this->x*this->x+this->y*this->y; } int main() { Vektor v; return Vektor_getLength(v); }

Klassen Operatoren – Normale Funktionen, mit schöner Schreibweise – Parameter und Rückgabewert beliebig Nicht alles macht Sinn

Klassen Äquivalent ohne Operatoren class Vektor { public: int x,y; Vektor scale(int s) ; }; int main() { Vektor v, w; w = v.scale(2); return 0; } class Vektor { public: int x,y; Vektor operator*(int s) ; }; int main() { Vektor v, w; w = v.operator*(2); return 0; } class Vektor { public: int x,y; Vektor operator*(int s) ; }; int main() { Vektor v, w; w = v*2; return 0; }

Klassen Definition innerhalb der Klasse – Member-Funktion mit einem Parameter Definition ausserhalb der Klasse – Normale Funktion mit zwei Parametern class Vektor { public: int x,y; Vektor operator*(int s) ; }; class Vektor { public: int x,y; }; Vektor operator*(const Vektor& v, int s) ;

Klassen Konstruktor / Destruktor – Wie normale Member-Funktionen – Werden automatisch aufgerufen

Klassen Äquivalent ohne Konstruktoren class Vektor { public: int x,y; Vektor(); ~Vektor(); }; int main() { Vektor v;... return 0; } class Vektor { public: int x,y; void construct(); void destroy(); }; int main() { Vektor v; v.construct(); // automatisch aufgerufen... v.destroy(); // automatisch aufgerufen return 0; }

Klassen Äquivalent ohne Konstruktoren class Vektor { public: int x,y; Vektor(); Vektor(int i); ~Vektor(); }; int main() { Vektor v; Vektor w(1);... return 0; }

Klassen Instanzen einer Klasse kopieren Automatisch – Member-Variablen werden 1:1 kopiert Manuell – Kopier-Konstruktor – Zuweisungs-Operator – Immer beide definieren

Klassen Wieso? – Wenn Objekte externe Resourcen allozieren class Vektor{ public: Vektor(int length) private: float* elements; int length; }; Vektor::Vektor(int l) { elements = new int[length]; length = l; } int main() { Vektor v1(3); Vektor v2(3); v1 = v2; }

Klassen Kopier-Konstruktor – Normaler Konstruktor mit einem Parameter Am besten konstante Referenz auf Objekt class A{ public: A (const A& other) ; }; A a1; A a2 = a1; // A a2(a1);

Klassen Zuweisungs-Operator – Normaler Operator mit einem Parameter Am besten konstante Referenz auf Objekt – Rückgabewert beliebig Am besten Referenz auf eigenes Objekt (return *this) class A{ public: A& operator=(const A& other) ; }; A a1, a2; a2 = a1;

Klassen Zugriffsrechte – Bezieht sich auf Member-Variablen und Member- Funktionen Was ist erlaubt? Wer greift zu?PrivateProtectedPublic Member-Funktion eigene KlasseJa Member-Funktion abgeleitete KlasseNeinJa Member-Funktion fremde KlasseNein Ja Globale FunktionNein Ja

Klassen Friend – Gewährt uneigeschränkten Zugriff Public – Alle Funktionen Private – Nur eigene Member-Funktionen Protected – Zusätzlich Member-Funktionen von abgeleiteten Klassen

WIEDERHOLUNG Vererbung

Klassen Vererbung – Bauplan erweitern – Alten Bauplan übernehmen, mehr anhängen

Klassen Basisklasse Abgeleitete Klasse – Übernimmt alle Member-Variablen und Funktionen der Basisklasse class Base{ }; class Derived : public Base { };

Klassen Äquivalent ohne Vererbung class A{ public: int x,y; }; class B : public A { public: int z; }; struct A{ int x,y; }; struct B { A base; int z; }; struct A{ int x,y; }; struct B { int x; int y; int z; };

Klassen Funktionen überladen Abgeleitete Klasse übernimmt alle Funktionen Funktionen in abgeleiteter Klasse mit gleicher Signatur ersetzt Funktion der Basisklasse

Klassen Vererbung vs. Komposition Vererbung: "ist ein" – Auto ist ein Fahrzeug – Klasse Auto vererbt von der Klasse Fahrzeug Komposition: "hat ein" – Auto hat einen Motor – Klasse Auto hat eine Member-Variable motor

Klassen Vererbung vs. Komposition class A{ public: int x,y; }; class B : public A { public: int z; }; class A{ public: int x,y; }; class B{ public: A a; int z; };

C++ FAQ lite Beantwortet alle schweren Fragen zu C++

ÜBUNG Serie 10

Aufgabe 1 Übersicht Operatoren OperatorDefinition +Vektor operator+(const Vektor& other); +=void operator+=(const Vektor& other); =Vektor& operator=(const Vektor& other); copy constructorVektor(const Vektor& other);