C++ für Anfänger des Programmierens, Ergänzungen Rieckeheer GSO-Hochschule Nürnberg November

Größe: px
Ab Seite anzeigen:

Download "C++ für Anfänger des Programmierens, Ergänzungen Rieckeheer GSO-Hochschule Nürnberg November"

Transkript

1 C++ für Anfänger des Programmierens, Ergänzungen Rieckeheer GSO-Hochschule Nürnberg November Skriptergänzungen Das folgende Kapitel wird zwischen Kapitel 4: Datentyp bool und Kapitel 5: Verzeigung auf S 17 eingefügt. 4a Datentypen float, double und long 1) Allgemeines Gleitkommazahlen werden zur genäherten Abbildung von reellen Zahlen auf dem Rechner mit endlichem Zahlenbereich und mit begrenzter Genauigkeit verwendet. Es entstehen in der Regel Rundungsfehler. Die jeweiligen Zahlenbereiche sind im Anhang B aufgeführt. 2) Das Problem der Rechengenauigkeit a) Man berechne auf einem Taschenrechner und in einem C-Programm mit den Datentypen integer, long integer, double und long double den Wert s = 9p 4 q 4 + 2q 2 für p = und q = b) Welchen Ausdruck liefert das folgende Programm? // Rundungsfehler.cpp : int _tmain(int argc, _TCHAR* argv[]) { double a,eps; a = 1.0e-11; cout << "a + eps = a" << endl; cout << " a eps a/eps" << endl; do { a *= 10; eps = 0.5; do eps /= 2; while(a + eps!= a); cout.setf(ios_base::scientific,ios_base::floatfield); cout << setprecision(10) << setw(12) << a << " " << setw(12) << eps << " " << setw(12) << a/eps << endl; while (a <= 1.0e10); c) Verlust des Assoziativgesetzes Welchen Ausdruck liefert das folgende Programm? // Assoziativgesetz.cpp

2 C++ für Anfänger des Programmierens, Ergänzungen Rieckeheer GSO-Hochschule Nürnberg November int _tmain(int argc, _TCHAR* argv[]) { cout.setf(ios_base::scientific,ios_base::floatfield); cout.precision(12); cout << setw(20) << e << endl; cout << setw(20) << e << endl; cout << setw(20) << e << endl; cout << setw(20) << e << endl; cout << setw(20) << e << endl; cout << setw(20) << e << endl; cout << setw(20) << e << endl; cout << setw(20) << e << endl; cout << setw(20) << e << endl; cout << setw(20) << e << endl; cout << setw(20) << e << endl; cout << setw(20) << e << endl; cout << setw(20) << e << endl; cout << setw(20) << e << endl; cout << setw(20) << e << endl; cout << setw(20) << e << endl; cout << setw(20) << e << endl; cout << setw(20) << e << endl; cout << setw(20) << e << endl; cout << setw(20) << e << endl; cout << setw(20) << e-19 + ( ) << endl; d) Die kleinste positive Double Welchen Ausdruck liefert das folgende Programm? // kleinste_pos_double_zahl.cpp : int _tmain(int argc, _TCHAR* argv[]) { double x = 1.0e-300; do { x /= 10; cout << setprecision(12) << setw (20) << scientific << x << endl; while (x!= 0); // hier ausnahmsweise zulaessig e) Abfangen des Überlaufs bei Double Welchen Ausdruck liefert das folgende Programm? // Ueberlaufkontrolle.cpp : #include <limits> #include <cmath>

3 C++ für Anfänger des Programmierens, Ergänzungen Rieckeheer GSO-Hochschule Nürnberg November int _tmain(int argc, _TCHAR* argv[]) { double x = 1.0e20; bool ueberlauf = false; do { //if( 1/abs(x)/10 == 0)ueberlauf = true; // so nicht if (x*10 > numeric_limits<double>::max( )) ueberlauf = true; else { x *= 10.0; cout << setw(20) << setprecision(15) << x << " " << x*10 << " " << 1/x << endl; while(!ueberlauf); cin.get(); Entsprechend würde der Unterlauf mit if (1.0/(x*10) < numeric_limits<double>::min( )) unterlauf = true; erkannt werden können. f) Faustregeln zur Vermeidung von Fehlern aus Rundungen fa) Vermeiden Sie Algorithmen, bei denen Stellenauslöschung auftritt: - Differenzen und Summen von Zahlen sehr unterschiedlicher Größenordnung (wie in c) - Kleine Differenzen aus sehr großen Zahlen (wie in a) ) Verbesserung zu a): Schreibe statt s = 9p 4 q 4 + 2q 2 besser s = (3 p 2 q 2 ) * (3 p 2 + q 2 ) + 2q 2 Dieser Schritt vermeidet die Auslöschung, jedoch nicht die schlechte Konditionierung. fb) Ein Algorithmus ist instabil, wenn der Fehler mit der Iterationsanzahl stark (z.b. exponentiell) ansteigt. fc) Ein Problem ist schlecht konditioniert, wenn kleine Änderungen der Eingangsdaten große Änderungen der Ausgangsdaten bewirken fd) Minimieren Sie die Anzahl der auszuführenden Rechenschritte. fe) Testen Sie Fließkommazahlen nie auf exakte Gleichheit, insbesondere nicht, wenn die beiden zu vergleichenden Zahlen möglichen Rundungsfehlern unterliegen oder Sie eine Fließkommazahl mit einer Eingabe exakt treffen müssten (z.b. 2).

4 C++ für Anfänger des Programmierens, Ergänzungen Rieckeheer GSO-Hochschule Nürnberg November Die folgenden zwei Abschnitte 15.6 und 15.7 sind auf Seite 61 vor Kapitel 16 einzufügen, wobei allerdings die dynamische Speicherplatzreservierung aus Kapitel 18.2 vorausgesetzt wird Konstruktoren Wenn man in main() der Programme Aktie1 oder This die Zeile papier.lies(); vergisst, so erhält man zwar keinen Compilerfehler, aber einen mehr oder weniger erstaunlichen Bildschirmausdruck. Man hat die Initialisierung der Daten des Objekts papier vergessen und das rächt sich. Da man in vielen Jahren Programmierung erkannt hatte, dass immer wieder mal einer die Initialisierung vergisst, schenkte man diesem Punkt in C++ besonderes Augenmerk. Die Variableninitialisierung wird in C++ mit Konstruktoren bearbeitet. Jede Klasse besitzt einen oder mehrere Konstruktoren, mit denen die Datenelemente auf Anfangswerte gesetzt werden. Definiert man nicht selbst einen Konstruktor, so gibt es doch stets einen, der bei Definition einer Instanz einer Klasse aufgerufen wird. Man merkt es nicht, aber mit der Definition Aktie papier; in main() war der Aufruf des zugehörigen Konstruktors verbunden. Er hatte allerdings keine Parameter und führte auch keine eigentliche Initialisierung durch. Einen vom System verwendeten, nicht vom Programm definierten Konstruktor nennt man einen impliziten Standardkonstruktor. Dieser wurde in Aktie1 oder This verwendet und wie man sieht, hilft das nur bedingt. Man sollte also einen Standardkonstruktor schreiben. Aber welche Werte soll man eigentlich den Daten am Anfang geben? Dazu haben die Erfinder von C++ offenbar auch keine Antwort gewusst und deshalb nicht initialisiert. Sinnvoll wäre es, so zu initialisieren, dass das Objekt keinen Wert hat, ohne dass dies zu Fehlerabbruch führt. Ein Konstruktor ist eine Mitgliedsfunktion mit einigen besonderen Eigenschaften: 1) Es gibt den Konstruktor immer. 2) Der Konstruktor trägt den Namen der Klasse. 3) Der Konstruktor gibt keinen Typ zurück, auch nicht void. 4) Der Konstruktor wird automatisch bei der Deklaration des Objekts aufgerufen, notfalls ist er parameterlos undefiniert und reserviert bei seinem Aufruf Speicherplatz für die Daten, ohne diese zu initialisieren. 5) Wird der Konstruktor nicht explizit deklariert und definiert, nennt man ihn Impliziten Standardkonstruktor (implicit default constructor). Dieser ist parameterlos. 6) Ein parameterloser Konstruktor heißt Standardkonstruktor (default constructor). 7) Ist der Konstruktor parameterlos, wird er, obwohl er eine Funktion ist, ohne Parameterklammer aufgerufen. 8) Ein Konstruktor enthält return allenfalls in der parameterlosen Form return;. 9) Sobald wenigstens ein Konstruktor deklariert ist, erzeugt das System keinen impliziten Standardkonstruktor. 10) Der Konstruktor ist meistens public. Wird er jedoch z.b. ausschließlich aus befreundeten Klassen aufgerufen, so kann er auch private sein. Wird er ausschließlich aus abgeleiteten Klassen aufgerufen, sollte man ihn protected wählen. Ein Konstruktor, der versehentlich private deklariert wurde, führt bei Instantiierung zur Fehlermeldung. Für späteres Verständnis: Ein Konstruktor kann nicht const oder static oder virtual sein und er wird nicht vererbt. Gemeinsam mit anderen Funktionen hat der Konstruktor die Eigenschaften, - in der Klasse deklariert werden zu müssen, wenn nicht der parameterlose implizite Ersatz verwendet werden soll und - überladen werden zu können: Man kann denselben Funktionsnamen mit unterschiedlichen Parametern wählen. Ein Konstruktor ist nötig, weil man sonst privaten Daten keinen Wert geben kann ohne andere Funktionen dafür zu definieren. Das folgende Programm spielt mit den Konstruktoren. Dies wird zu einer ungewöhnlichen Form des Konstruktors führen. Der Gedanke dahinter ist folgender: Ein Konstruktor soll initialisieren, das kann vom Progamm aus geschehen durch Angabe der Initialisierungswerte oder vom Benutzer durch Eingabe der Werte. Später wird es lästig sein, wenn der Standardkonstruktor Dialog auslöst und dann werden wir das verwerfen. // KONSTRUKTOR.cpp : // Programm KONSTRUKTOR #include <limits> #include <string>

5 C++ für Anfänger des Programmierens, Ergänzungen Rieckeheer GSO-Hochschule Nürnberg November const char wortlaenge = 20; // globale Konstante class Aktie { public: Aktie(char* name_in, double kurs_in); // Parameterkonstruktor Aktie(); // Standardkonstruktor void lies(); void schreib(); private: char name[wortlaenge]; double kurs; ; // Ein Konstruktor mit zwei Parametern: // Ein Konstruktor gibt keinen Typ zurueck: auch nicht void! Aktie::Aktie(char* name_in, double kurs_in) { strcpy(name,name_in); kurs = kurs_in; // Ein Konstruktor ohne Parameter: ein Standardkonstruktor Aktie::Aktie() { cout << "Unbekannte Aktie im Programm: Name der Aktie? "; name[0]='\0'; while( name[0] == '\0' ) {cin.get(name, sizeof (name), '\n'); cout << "Kurs der unbekannten Aktie? "; void Aktie::lies() // ueberliest sogar fuehrende CR { cout << "Name der Aktie? "; name[0]='\0'; while( name[0] == '\0' ) {cin.get(name, sizeof (name), '\n'); cout << "Kurs der Aktie? "; ; void Aktie::schreib() { cout << name << " " << kurs << endl; int main(int argc, char* argv[]) { // Der Konstruktur mit mehr als Null Parametern // wird mit diesen zur Instanzbildung aufgerufen: Aktie papier1("basf ",356); Aktie papier2("bayer",400);

6 C++ für Anfänger des Programmierens, Ergänzungen Rieckeheer GSO-Hochschule Nürnberg November // Der Konstruktur mit Null Parametern wird ohne // Parameterklammer durch Instanzbildung aufgerufen: Aktie papier3; papier1.schreib(); papier2.schreib(); papier3.schreib(); // Ueberschreiben der Werte dieser Aktie durch Eingabe: papier3.lies(); papier3.schreib(); cin.get(); Es mag nicht üblich sein, aber am Standardkonstruktor Aktie::Aktie(); erkennt man, dass ein Konstruktor nicht im Verborgenen wirken muss, sondern Fragen an den Benutzer stellen kann: er ist eine (fast) ganz normale Mitgliedsfunktion. Wir werden von dieser Variante wieder abkommen, weil es unpraktisch ist, wenn im allgemeinen Fall mit jeder Speicherplatzreservierung für eine Aktie ein Dialog ausgelöst wird. Natürlich kann man diesen parameterlosen Konstruktor unter Verzicht auf verschiedene äußere Erscheinungsform bei Standardkonstrktor und lies() auch kürzer fassen: Aktie::Aktie() { lies(); Anmerkungen: Die Definition eines Standardkonstruktors ist kein Muss. Wenn man ihn nicht braucht, kann er entfallen. Einen Konstruktor zu haben, der alle Daten einer Klasse initialisiert, ist praktisch. Ich nenne ihn Parameterkonstruktor, ein Begriff, den ich bisher in der Literatur nicht gefunden habe. Felder von Objekten können nur mit dem Standardkonstruktor initialisiert werden und rufen diesen automatisch für jede Feldkomponente auf: // Aktienfeldinit.cpp: // Initialisierung von Objekt-Feldern #include <limits> #include <string> const char wortlaenge = 20; // globale Konstante class Aktie { public: Aktie(char* name_in, double kurs_in); // Parameterkonstruktor Aktie(); // Standardkonstruktor void lies(); void schreib(); private: char name[wortlaenge]; double kurs; ; // Ein Konstruktor mit zwei Parametern: // Ein Konstruktor gibt keinen Typ zurueck: auch nicht void!

7 C++ für Anfänger des Programmierens, Ergänzungen Rieckeheer GSO-Hochschule Nürnberg November Aktie::Aktie(char* name_in, double kurs_in) { strcpy(name,name_in); kurs = kurs_in; // Ein Konstruktor ohne Parameter: ein Standardkonstruktor Aktie::Aktie() { lies(); void Aktie::lies() // ueberliest sogar fuehrende CR { cout << "Name der Aktie? "; name[0]='\0'; while( name[0] == '\0' ) {cin.get(name, sizeof (name), '\n'); cout << "Kurs der Aktie? "; ; void Aktie::schreib() { cout << name << " " << kurs << endl; int main(int argc, char* argv[]) { Aktie papier; papier.schreib(); Aktie p1[2]; // ein Feld von Aktien p1[0].schreib(); p1[1].schreib(); cin.get(); Will man ein Feld von Objekten mit verschiedenen Werten (ohne Dialog) initialisieren, so muss man dieses Feld in eine andere Klasse einbetten und diese Klasse dann mit einem Konstruktor, der die Werte durchreicht, initialisieren. Die Initialisierung im C-Stil mit Plain Old Data Structures (POD), hier sogar für ein Feld von Aktien, geht nur noch bei C++-Programmen, die aus C kommen könnten: // Aktienfeldinit_2.cpp: // Initialisierung im C-Stil nur bei speziellen structs (z.b. ohne private) #include <string> #include <limits> #define WORTLAENGE 20 struct Aktie // POD-Initialisierung geht nur mit structs { char name[wortlaenge+1]; float kurs; public: // unnoetig, unschaedlich void lies(); void schreib(); ;

8 C++ für Anfänger des Programmierens, Ergänzungen Rieckeheer GSO-Hochschule Nürnberg November void Aktie::lies() // ueberliest sogar fuehrende CR { cout << "Name der Aktie? "; name[0]='\0'; while( name[0] == '\0' ) {cin.get(name, sizeof (name), '\n'); cout << "Kurs der Aktie? "; void Aktie::schreib() { cout << name << " " << kurs << endl; int main(void) { // Normale Initialisierung: Aktie p; p.lies(); p.schreib(); // Initialisierung im C-Stil nur bei speziellen structs: // PODs (plain old data structures) Aktie p2[2] = {"GH", 234, "VE", 45; // Wow! p2[0].schreib(); p2[1].schreib(); cin.get(); 15.7 Destruktoren Ein Konstruktor erledigt Aufgaben, die zu Beginn der Verwendung eines Objekts sinnvoll sind, insbesondere also Initialisierungen. Der Destruktor ist eine entsprechende Funktion, die am Lebensende eines Objekts die Aufräumarbeiten durchführt. Ein Destruktor ist eine Mitgliedsfunktion mit einigen besonderen Eigenschaften: Es gibt den Destruktor nur, wenn er explizit deklariert und definiert wird. Der Destruktor trägt den Namen der Klasse mit vorgesetzter Tilde. Der Destruktor gibt keinen Typ zurück, auch nicht void. Der Destruktor hat keine Parameter. Der Destruktor wird nicht explizit, sondern automatisch am Lebensende des Objekts aufgerufen. Der Destruktor kann nicht überladen werden. Ein Destruktor enthält return allenfalls in der parameterlosen Form. Für späteres Verständnis: Ein Destruktor kann virtual sein, jedoch nicht const oder static, und er wird nicht vererbt. Die Aufräumarbeiten am Lebensende eines Objekts betreffen häufig Speicherfreigaben. Deshalb ist das folgende Beispiel dem gewidmet. Zur Speicheranforderung nutzen wir die Gelegenheit beim Aktiennamen: es gibt sehr lange Namen und kurze Namen und eigentlich sollte immer nur so viel gespeichert werden, wie der Namenslänge entspricht. Also muss die Speicherplatzreservierung für den Namen dynamisch auf dem Heap erfolgen. Dies wird im Konstruktor so durchgeführt; hier allerdings noch immer mit derselben Wortlänge, also zwar dynamisch, aber nicht speichersparend. Im darauffolgenden Teil werden wir dann die Änderung vornehmen, den reservierten Speicherplatz dynamisch und speichersparend zu gestalten.

9 C++ für Anfänger des Programmierens, Ergänzungen Rieckeheer GSO-Hochschule Nürnberg November Das Lebensende eines Objekts ist erreicht, wenn das Ende des Blocks seiner Definition erreicht ist. Deshalb wurden in dem nachfolgenden Beispiel einfach zwei Blöcke innerhalb von main() erzwungen, in denen jeweils ein Feld von 2 Objekten deklariert wird. Das Echo der Blöcke, des Konstruktors und des Destruktors schildert die Reihenfolge des Ablaufs. Dabei wird klar, dass Felder von Objekten in zur Konstruktion umgekehrter Reihenfolge destruiert werden. Ohne den Destruktor würden im 2. Block noch die Heap-Anforderungen aus dem 1. Block im Heap plaziert sein. Der Speicherplatz für das Objekt selbst wird natürlich bei Verlassen des Blocks ebenfalls freigegeben, aber darum braucht sich der Programmierer nicht zu sorgen. Weiter haben wir in diesem Beispiel den Umgang mit symbolischen Konstanten als Klassenmitglieder vorgeführt: Deklariere die symbolische Konstante und initialisiere sie im Konstruktor. Bei der Definition des Konstruktors steht am Ende der Wiederholung der Deklaration (der Signatur des Konstruktors) ein Doppelpunkt, dem die Elementinitialisiererliste folgt. Sie besteht hier aus dem Namen der Konstanten mit ihrem Wert in runden Klammern. // DESTRUKTOR.cpp : #include <limits> class Aktie { public: Aktie(); ~Aktie(); void lies(); void schreib(); private: const char wortfeldlaenge; // Standardkonstruktor // Destruktor // Objektkonstante: nicht mehr global! char* name_z; // dynamisches Feld double kurs; ; // Die Konstante wortfeldlaenge kann nicht hier, sondern muss in jeder // Initialisiererliste jedes Konstruktors initialisiert werden. // Auch einfache Variablen duerfen in der Initialisiererliste initialisiert // werden. // Hier ein Konstruktor ohne Parameter, aber mit Initialisierung // der Objektkonstanten wortfeldlaenge: Aktie::Aktie(): wortfeldlaenge(20) // Objektkonstante hier in Initialisiererliste initialisieren { name_z = new char[wortfeldlaenge]; // new reserviert auf Heap // hier (bei Speicherplatzreservierung) [wortfeldlaenge] erlaubt! cout << "Name der Aktie? "; name_z[0]='\0'; // ueberliest sogar fuehrende CR while( name_z[0] == '\0' ) {cin.get(name_z, wortfeldlaenge, '\n'); cout << "Kurs der Aktie? "; // Der Destruktor: Aktie::~Aktie() { cout << "Destruktor aufgerufen fuer: " << name_z << endl; delete[] name_z; // gibt Heap frei

10 C++ für Anfänger des Programmierens, Ergänzungen Rieckeheer GSO-Hochschule Nürnberg November void Aktie::schreib() { cout << name_z << " " << kurs << endl; int main(int argc, char* argv[]) { { cout << "Anfang 1.Block " << endl; Aktie papier[2]; papier[0].schreib(); papier[1].schreib(); cout << "Ende 1.Block " << endl; { cout << "Anfang 2.Block " << endl; Aktie papier[2]; papier[0].schreib(); papier[1].schreib(); cout << "Ende 2.Block " << endl; cin.get(); In den folgenden Programmteilen wollen wir die Änderung vornehmen, den reservierten Speicherplatz echt dynamisch zu gestalten. Dazu lesen wir in einen Puffer ein, stellen mit strlen() die aktuelle Länge fest und kopieren mit strcpy() den Inhalt des Puffers in den Namen name_z. Die Funktion strlen() stammt aus <cstring>, hat den Prototyp size_t strlen(const char *s); und gibt die Anzahl der Zeichen vor dem beendenden Nullzeichen zurück. Die leere Zeichenkette hat also die Länge Null. Für die geeignete Speicherplatzreservierung muss daher ein Zeichen mehr für die beendende Null reserviert werden. Die Klasse string der Standard-Bibliothek verwenden wir aus pädagogischen Gründen nicht, um das Vorgehen mit dynamischen Feldern üben zu können. In freier Wildbahn ist die Verwendung der Bibliothek vorzuziehen. Aktie::Aktie(): wortfeldlaenge(20) // Objektkonstante hier in Initialisiererliste initialisieren { char puffer[20]; // hier (bei statischem Feld) puffer[wortfeldlaenge] nicht erlaubt // Pufferlaenge >= wortfeldlaenge noetig cout << "Name der Aktie? "; puffer[0]='\0'; // ueberliest sogar fuehrende CR while( puffer[0] == '\0' ) {cin.get(puffer, wortfeldlaenge, '\n'); name_z = new char[strlen(puffer)+1]; // reserviere auf Heap den noetigen Speicher strcpy(name_z, puffer); // kopiere in Name cout << "Kurs der Aktie? ";

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

C++-Zusammenfassung. H. Schaudt. August 18, 2005 C++-Zusammenfassung H. Schaudt August 18, 2005 1 Datentypen 1.1 Grunddatentypen int (-32xxx bis +32xxx, implementerungs-abhängig) char -128 bis +128 float double bool (C++) int und char sind austauschbar:

Mehr

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

Methoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only Methoden Wie Konstruktoren und Destruktoren zum Auf- und Abbau von Objekten definiert werden, Wie inline-methoden Methoden,, Zugriffsmethoden und Read-Only Only- Methoden einzusetzen sind, Der this-pointer

Mehr

Deklarationen in C. Prof. Dr. Margarita Esponda

Deklarationen in C. Prof. Dr. Margarita Esponda Deklarationen in C 1 Deklarationen Deklarationen spielen eine zentrale Rolle in der C-Programmiersprache. Deklarationen Variablen Funktionen Die Deklarationen von Variablen und Funktionen haben viele Gemeinsamkeiten.

Mehr

Vorkurs C++ Programmierung

Vorkurs 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:

Mehr

Kurzeinführung in C/C++ Elementare Datentypen in C++

Kurzeinführung in C/C++ Elementare Datentypen in C++ Elementare Datentypen in C++ Anders als in Java sind in C++ die Größen der Elementaren Datentypen maschinenabhängig Die Größe der Datentypen lässt sich mit sizeof ermitteln: int n=sizeof(int) In C++ gilt

Mehr

Repetitorium Informatik (Java)

Repetitorium 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

Mehr

Klausur in Programmieren

Klausur in Programmieren Studiengang Sensorik/Sensorsystemtechnik Note / normierte Punkte Klausur in Programmieren Wintersemester 2010/11, 17. Februar 2011 Dauer: 1,5h Hilfsmittel: Keine (Wörterbücher sind auf Nachfrage erlaubt)

Mehr

Programmierung mit C Zeiger

Programmierung mit C Zeiger Programmierung mit C Zeiger Zeiger (Pointer)... ist eine Variable, die die Adresse eines Speicherbereichs enthält. Der Speicherbereich kann... kann den Wert einer Variablen enthalten oder... dynamisch

Mehr

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

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

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

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 7. Funktionen Einleitung Nach dem Prinzip Divide and Conquer bietet es sich an, größere Aufgaben in kleinere Teile zu unterteilen. Anweisungsblöcke,

Mehr

Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung:

Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung: Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Der Sourcecode wird an den entsprechenden Stellen im Programm wiederholt Programm wird lang

Mehr

Java Einführung Methoden. Kapitel 6

Java Einführung Methoden. Kapitel 6 Java Einführung Methoden Kapitel 6 Inhalt Deklaration und Aufruf von Methoden Lokale und globale Namen (Bezeichner) Sichtbarkeit und Lebensdauer von Variablen in Methoden Überladen von Methoden 2 Methoden

Mehr

Welche Informatik-Kenntnisse bringen Sie mit?

Welche Informatik-Kenntnisse bringen Sie mit? Welche Informatik-Kenntnisse bringen Sie mit? So gehen Sie vor! Lösen Sie die Aufgaben der Reihe nach von 1 bis 20, ohne das Lösungsblatt zur Hilfe zu nehmen. Der Schwierigkeitsgrad der Aufgaben nimmt

Mehr

Prof. W. Henrich Seite 1

Prof. W. Henrich Seite 1 Klasse - ist ein benutzerdefinierter Datentyp (Referenztyp) - hat Datenelemente - hat Methoden - Konstruktor ist spezielle Methode zum Erstellen eines Objektes vom Typ der Klasse (Instanz) - jede Klasse

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

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22 Kapitel 19 Vererbung, UML Seite 1 von 22 Vererbung - Neben der Datenabstraktion und der Datenkapselung ist die Vererbung ein weiteres Merkmal der OOP. - Durch Vererbung werden die Methoden und die Eigenschaften

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

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

13. Vererbung. Prof. Dr. François E. Cellier Informatik I für D-ITET (HS 2012) 13. Vererbung Prof. Dr. François E. Cellier Informatik I für D-ITET (HS 2012) Vererbung Konzept Protected Section Virtuelle Mitgliedsfunktionen Verwendung von Vererbung Vererbung Vererbung ist ein Mechanismus,

Mehr

Theorie zu Übung 8 Implementierung in Java

Theorie zu Übung 8 Implementierung in Java Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Theorie zu Übung 8 Implementierung in Java Klasse in Java Die Klasse wird durch das class-konzept

Mehr

Die Programmiersprache C99: Zusammenfassung

Die Programmiersprache C99: Zusammenfassung Die Programmiersprache C99: Zusammenfassung Jörn Loviscach Versionsstand: 7. Dezember 2010, 19:30 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen in der Vorlesung. Videos dazu: http://www.youtube.com/joernloviscach

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form

Mehr

3 Klassen, Attribute, Methoden

3 Klassen, Attribute, Methoden 3 Klassen, Attribute, Methoden Jörn Loviscach Versionsstand: 10. April 2011, 10:25 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen in der Vorlesung. Videos dazu: http://www.j3l7h.de/videos.html

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine

Mehr

1 Polymorphie (Vielgestaltigkeit)

1 Polymorphie (Vielgestaltigkeit) 1 Polymorphie (Vielgestaltigkeit) Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte, andere Arten von Zahlen oder andere Objekttypen

Mehr

Es ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen.

Es ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen. Ziele sind das Arbeiten mit Funktionen und dem Aufzählungstyp (enum), sowie - einfache Verzweigung (if else) - Alternativen switch case - einfache Schleifen (while oder do while) Aufgabe 3: Diese Aufgabe

Mehr

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik Klassen und höhere Datentypen Objekte, Felder, Methoden Küchlin/Weber: Einführung in die Informatik Klassen Klasse (class) stellt einen (i.a. benutzerdefinierten) Verbund-Datentyp dar Objekte sind Instanzen

Mehr

Übungspaket 29 Dynamische Speicherverwaltung: malloc() und free()

Übungspaket 29 Dynamische Speicherverwaltung: malloc() und free() Übungspaket 29 Dynamische Speicherverwaltung malloc() und free() Übungsziele Skript In diesem Übungspaket üben wir das dynamische Alloziieren 1. und Freigeben von Speicherbereichen 2. von Zeichenketten

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Programmierkurs C++ Kapitel 7:Objektorientierte Programmierung Seite 1 Objektorientierte Programmierung If programming in PASCAL is like put in a straightjacket, then programming in C is like playing with

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 26 Einstieg in die Informatik mit Java Felder Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 26 1 Was sind Felder? 2 Vereinbarung von Feldern 3 Erzeugen von Feldern

Mehr

Elementare Datentypen in C++

Elementare Datentypen in C++ Elementare Datentypen in C++ bool signed/unsigned char signed/unsigned short int signed/unsigned int signed/unsigned long int (signed/unsigned long long int) float double long double void enum char Der

Mehr

Modellierung und Programmierung

Modellierung und Programmierung Modellierung und Programmierung Dr. Martin Riplinger 19.12.2012 IAM Institut für Angewandte Mathematik Funktionszeiger: Vorüberlegungen Funktionsaufrufe sind bis jetzt im Code mit Name explizit angegeben

Mehr

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

C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung Eltern Kind Kind Vererbung Definition von Klassen auf Basis von bestehenden Klassen. Implementierung von ist ein. bildet ein hierarchisches

Mehr

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

DAP2-Programmierpraktikum Einführung in C++ (Teil 1) DAP2-Programmierpraktikum Einführung in C++ (Teil 1) Carsten Gutwenger 11. April 2008 Lehrstuhl 11 Algorithm Engineering Fakultät für Informatik, TU Dortmund Überblick Mein erstes C++-Programm Namensräume

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

Einführung in die Programmierung

Einführung in die Programmierung : Inhalt 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 - mit / ohne Parameter - mit / ohne Rückgabewerte

Mehr

magnum C++ WALTER SAUMWEBER kompakt komplett kompetent

magnum C++ WALTER SAUMWEBER kompakt komplett kompetent magnum C++ WALTER SAUMWEBER kompakt komplett kompetent Quickview... 5 Liebe Leserin, lieber Leser... 13 Teil 1 Grundlagen... 15 1 Was ist Programmieren?... 17 1.1 Was ist eigentlich ein Computerprogramm?...

Mehr

5.4 Klassen und Objekte

5.4 Klassen und Objekte 5.4 Klassen und Objekte Zusammenfassung: Projekt Figuren und Zeichner Figuren stellt Basisklassen für geometrische Figuren zur Verfügung Zeichner bietet eine übergeordnete Klasse Zeichner, welche die Dienstleistungen

Mehr

0. Einführung & Motivation

0. Einführung & Motivation 0. Einführung & Motivation Ansatz: "C++ für Java-Kenner" Konzentration auf semantische Unterschiede 'gleichartiger' Konzepte Erörterung der C++ -spezifischen Konzepte (Overloading, Templates) Anspruch

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Konstruktor, Statische Methoden Packages Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Initialisierung von Datenstrukturen

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 41 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 41 1 Überblick: Vererbung 2 Grundidee Vererbung 3 Verdeckte Variablen

Mehr

Eine Einführung in C-Funktionen

Eine Einführung in C-Funktionen Eine Einführung in C-Funktionen CGK-Proseminar 2014 Philip Gawehn 04.07.2014, Hamburg Inhaltsverzeichnis 1 Einleitung 2 2 Grundlagen 2 2.1 Der Aufbau einer Funktion....................... 2 2.2 Schlüsselwörter.............................

Mehr

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

12. Vererbung. Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04) 12. Vererbung Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)!Vererbung Konzept!Protected Section!Virtuelle Mitgliedsfunktionen!Verwendung von Vererbung Copyright: M. Gross, ETHZ, 2003 2 Vererbung!

Mehr

RO-Tutorien 3 / 6 / 12

RO-Tutorien 3 / 6 / 12 RO-Tutorien 3 / 6 / 12 Tutorien zur Vorlesung Rechnerorganisation Christian A. Mandery WOCHE 2 AM 06./07.05.2013 KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft

Mehr

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML. JavaScript JavaScript wird direkt in HTML-Dokumente eingebunden. Gib folgende Zeilen mit einem Texteditor (Notepad) ein: (Falls der Editor nicht gefunden wird, öffne im Browser eine Datei mit der Endung

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

Jürgen Bayer. OOP mit C++ Von einfachen Klassen über Vererbung zum Polymorphismus

Jürgen Bayer. OOP mit C++ Von einfachen Klassen über Vererbung zum Polymorphismus Jürgen Bayer OOP mit C++ Von einfachen Klassen über Vererbung zum Polymorphismus Inhaltsverzeichnis 1 Einführung 1 1 Die Basis der OOP: Die Klasse 2 1.1 Klassen und Strukturen 2 1.2 Die Strukturierung

Mehr

Bereits behandelt: Einfache Datentypen / Variablen. Schleifen und Verzweigungen. Funktionen. Heute: Felder, Zeiger, Referenzen. Freispeicherverwaltung

Bereits behandelt: Einfache Datentypen / Variablen. Schleifen und Verzweigungen. Funktionen. Heute: Felder, Zeiger, Referenzen. Freispeicherverwaltung Kompaktkurs C++ Themen C 1 Bereits behandelt: Einfache Datentypen / Variablen Schleifen und Verzweigungen Funktionen Heute: Felder, Zeiger, Referenzen Freispeicherverwaltung Zeichenketten Kommandozeilenargumente

Mehr

Zeiger: Der Adressoperator &

Zeiger: Der Adressoperator & Zeiger: Der Adressoperator & Variablen werden im Computer im Speicher abgelegt. Nach der Deklaration int a,b,c; double x,y,z; Sieht die Speicherbelegung etwa wie folgt aus: a b c x y z Jede Variable hat

Mehr

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

C# 2000 Expression Beispielcodes für Konsolen- und Formularanwendung C# 2000 Expression Beispielcodes für Konsolen- und Formularanwendung 1. "Hai!" [Konsolenanwendung] Console.WriteLine("Hai, wie geht's?"); 2. Muktiplikation mit sich selbst [Konsolenanwendung] // Ausgabe

Mehr

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

Objektorientierte Programmierung mit C++ Zusammenfassung der wichtigsten Topics rund um die objektorientierte Programmierung mit C++11 Objektorientierte Programmierung mit C++ Zusammenfassung der wichtigsten Topics rund um die objektorientierte Programmierung mit C++11 Wozu objektorientiertes Programmieren? Die Welt besteht für den Menschen

Mehr

Methoden (fortgeschritten) in C# - 1

Methoden (fortgeschritten) in C# - 1 Methoden (fortgeschritten) in C# - 1 Marc Satkowski 20. November 2016 C# Kurs Gliederung 1. Opertatoren Überladung 2. delegate 3. Anonyme Methoden delegate Lamda Ausdruck-Lamdas Anweisung-Lamdas Variablenbereich

Mehr

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

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java: Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen

Mehr

AuD-Tafelübung T-B5b

AuD-Tafelübung T-B5b 6. Übung Sichtbarkeiten, Rekursion, Javadoc Di, 29.11.2011 1 Blatt 5 2 OOP Klassen Static vs. Instanzen Sichtbarkeit 3 Stack und Heap Stack Heap 4 Blatt 6 1 Blatt 5 2 OOP Klassen Static vs. Instanzen Sichtbarkeit

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 04 Referenzen, Overloading, Klassen(hierarchien) Clemens Lang T2 18. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/13 Organisatorisches Nächster Übungstermin

Mehr

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff Programmieren in C Macros, Funktionen und modulare Programmstruktur Prof. Dr. Nikolaus Wulff Der C Präprozessor Vor einem Compile Lauf werden alle Präprozessor Kommandos/Makros ausgewertet. Diese sind

Mehr

Einführung in die C-Programmierung

Einführung in die C-Programmierung Einführung in die C-Programmierung Warum C? Sehr stark verbreitet (Praxisnähe) Höhere Programmiersprache Objektorientierte Erweiterung: C++ Aber auch hardwarenahe Programmierung möglich (z.b. Mikrokontroller).

Mehr

Vererbung & Schnittstellen in C#

Vererbung & Schnittstellen in C# Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung

Mehr

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Inhalt dieser Einheit Variablen (Sinn und Aufgabe) Bezeichner Datentypen, Deklaration und Operationen Typenumwandlung (implizit/explizit) 2 Variablen

Mehr

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

10. Klassen. Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04) 10. Klassen Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)!Objektorientierte Programmierung!Das Konzept der Klassen!Members!Objekte!Konstruktoren und Destruktoren!this-Pointer!Public und Private

Mehr

3. Datentypen, Ausdrücke und Operatoren

3. Datentypen, Ausdrücke und Operatoren 3. Datentypen, Ausdrücke und Operatoren Programm muß i.a. Daten zwischenspeichern Speicherplatz muß bereitgestellt werden, der ansprechbar, reserviert ist Ablegen & Wiederfinden in höheren Programmiersprachen

Mehr

Modellierung und Programmierung 1

Modellierung und Programmierung 1 Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 19. November 2015 Gültigkeitsbereich (Scope) von Variablen { int m; {

Mehr

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden. Grundwissen Informatik Objekt Attribut Methoden Als Objekte bezeichnet man alle Gegenstände, Dinge, Lebewesen, Begriffe oder Strukturen unserer Welt ( Autos, Räume, Bakterien, Lehrer, Schüler, Kunden,

Mehr

Programmieren - Vererbung & Polymorphie

Programmieren - Vererbung & Polymorphie Programmieren - Vererbung & Polymorphie Reiner Nitsch r.nitsch@fbi.h-da.de Vererbung - Was ist das? Vererbung ist ein wichtiges Konzept zur Unterstützung der Wiederverwendbarkeit, wenn auch nicht das Wichtigste.

Mehr

13 OOP MIT DELPHI. Records und Klassen Ein Vergleich

13 OOP MIT DELPHI. Records und Klassen Ein Vergleich 13 OOP MIT DELPHI Delphi war früher "Object Pascal". Dieser Name impliziert eine Funktionalität, welche in der Welt der Programmierung nicht mehr wegzudenken ist: die objektorientierte Programmierung,

Mehr

JAVA-Datentypen und deren Wertebereich

JAVA-Datentypen und deren Wertebereich Folge 8 Variablen & Operatoren JAVA 8.1 Variablen JAVA nutzt zum Ablegen (Zwischenspeichern) von Daten Variablen. (Dies funktioniert wie beim Taschenrechner. Dort können Sie mit der Taste eine Zahl zwischenspeichern).

Mehr

620.900 Propädeutikum zur Programmierung

620.900 Propädeutikum zur Programmierung 620.900 Propädeutikum zur Programmierung Andreas Bollin Institute für Informatik Systeme Universität Klagenfurt Andreas.Bollin@uni-klu.ac.at Tel: 0463 / 2700-3516 Arrays Wiederholung (1/5) Array = GEORDNETE

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

Objektbasierte Entwicklung

Objektbasierte Entwicklung Embedded Software Objektbasierte Entwicklung Objektorientierung in C? Prof. Dr. Nikolaus Wulff Objektbasiert entwickeln Ohne C++ wird meist C im alten Stil programmiert. => Ein endlose while-schleife mit

Mehr

Kapitel 3: Variablen

Kapitel 3: Variablen Kapitel 3: Variablen Thema: Programmieren Seite: 1 Kapitel 3: Variablen Im letzten Kapitel haben wir gelernt, bestimmte Ereignisse zu wiederholen solange eine Bedingung erfüllt ist. Nun möchten wir aber

Mehr

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden Kapitel 8 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Methoden Überladen von Methoden Der this-zeiger Konstruktoren Vererbung WS 07/08

Mehr

Einführung in die Programmierung

Einführung in die Programmierung : Inhalt Einführung in die Programmierung Wintersemester 2009/0 : Technik vs. Iteration Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund 2 Definition (einfache,

Mehr

Grundlagen der Programmierung Prof. H. Mössenböck. 6. Methoden

Grundlagen der Programmierung Prof. H. Mössenböck. 6. Methoden Grundlagen der Programmierung Prof. H. Mössenböck 6. Methoden Parameterlose Methoden Beispiel: Ausgabe einer Überschrift class Sample { static void printheader() { // Methodenkopf Out.println("Artikelliste");

Mehr

11.3 Virtuelle Methoden

11.3 Virtuelle Methoden 11.3 Virtuelle Methoden Überdeckte Methoden: Betrachten wir noch einmal unsere Klassen Employee und Manager. class Employee void print() const cout

Mehr

Klausur Programmieren in C Sommersemester 2007 Dipl. Biol. Franz Schenk 13. April 2007, 11.15-13.00 Uhr Bearbeitungszeit: 105 Minuten

Klausur Programmieren in C Sommersemester 2007 Dipl. Biol. Franz Schenk 13. April 2007, 11.15-13.00 Uhr Bearbeitungszeit: 105 Minuten Klausur Programmieren in C Sommersemester 2007 Dipl. Biol. Franz Schenk 13. April 2007, 11.15-13.00 Uhr Bearbeitungszeit: 105 Minuten Vorname: Nachname: Matrikelnummer: Legen Sie zu Beginn Ihren Studentenausweis

Mehr

Konstruktoren und Destruktoren Initialisierung von Objekten

Konstruktoren und Destruktoren Initialisierung von Objekten Konstruktoren und Destruktoren Initialisierung von Objekten Breymann [15] Abschn. 3.3, S. 161ff Konstruktoren Konstruktoren haben keinen Return-Wert, auch nicht void. Methoden sorgen dafür, dass sich das

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 18.4.07, Vordefinierte Datentypen Übersicht 1 Ganzzahlige Typen 2 Boolscher Typ 3 Gleitkommatypen 4 Referenztypen 5 void Typ 6 Implizite und explizite Typumwandlungen Ganzzahlige Typen Die

Mehr

Klassen und Objekte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg

Klassen und Objekte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg Klassen und Objekte Einführung in Java Folie 1 von 28 12. Mai 2011 Ivo Kronenberg Inhalt Objekte Klassendefinitionen Datenelemente (Klassenattribute) Instanzieren von Objekten Konstruktoren Vergleich primitive

Mehr

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

C++ - Funktionen und mehr. Kerstin Gößner und Ralf Wondratschek C++ - Funktionen und mehr Kerstin Gößner und Ralf Wondratschek Übersicht Deklaration, Definition und Initialisierung Variablen- und Konstantendeklaration Funktionsaufrufe und rückgabewerte Technische Grundlage

Mehr

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

In der Computersprache C ist die Standardmethode zur Behandlung von Matrizen durch Kapitel Matrizen in C++ In der Computersprache C ist die Standardmethode zur Behandlung von Matrizen durch 1 const int n=10; 3 double a[n][n]; gegeben. Allerdings gibt es bei dieser Methode eine Reihe

Mehr

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

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

Mehr

Grundlagen der Programmierung

Grundlagen der Programmierung Grundlagen der Programmierung 7. Vorlesung 18.05.2016 1 Konstanten Ganzzahlkonstante Dezimal: 42, 23, -2 Oktal (0 vorangestellt): 052 Hexadezimal (0x vorangestellt): 0x2A Gleitkommazahlen: 3.1415, 2.71,

Mehr

Programmieren in C/C++ und MATLAB

Programmieren in C/C++ und MATLAB Programmieren in C/C++ und MATLAB Sven Willert Sabine Schmidt Christian-Albrechts-Universität zu Kiel CAU 4-1 Übung 1) Schreiben Sie ein Programm, das die Fläche unter einer Parabel, also das Integral

Mehr

Algorithmische Kernsprache. Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging.

Algorithmische Kernsprache. Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging. Algorithmische Kernsprache Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging. Ausdrücke Anweisungen Ausdrücke bezeichnen einen Wert Kontext stellt Werte von Variablen Werte

Mehr

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

2. Semester, 2. Prüfung, Lösung 2. Semester, 2. Prüfung, Lösung Name Die gesamte Prüfung bezieht sich auf die Programmierung in C++! Prüfungsdauer: 90 Minuten Mit Kugelschreiber oder Tinte schreiben Lösungen können direkt auf die Aufgabenblätter

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 18

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 18 Kapitel 3 Datentypen und Variablen Seite 1 von 18 Datentypen - Einführung - Für jede Variable muss ein Datentyp festgelegt werden. - Hierdurch werden die Wertemenge und die verwendbaren Operatoren festgelegt.

Mehr

Programmieren in C/C++ und MATLAB

Programmieren in C/C++ und MATLAB Programmieren in C/C++ und MATLAB Sven Willert Christian-Albrechts-Universität zu Kiel CAU 2-1 Datentypen und Formate Mit der Festlegung des Datentyps wird die Art bestimmt, mit der der Computer die Informationen

Mehr

Klausur in Programmieren

Klausur in Programmieren Studiengang Sensorik/Sensorsystemtechnik Note / normierte Punkte Klausur in Programmieren Sommer 2010, 19. Juli 2010 Dauer: 1,5h Hilfsmittel: Keine (Wörterbücher sind auf Nachfrage erlaubt) Name: Matrikelnr.:

Mehr

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2015/2016 Wirtschaftsingenieur Bachelor 5. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2015/2016 Wirtschaftsingenieur Bachelor 5. Aufgabe Datenstruktur, Dateieingabe und -ausgabe Aufgabenstellung Für eine Hausverwaltung sollen für maximal 500 Wohnungen Informationen gespeichert werden, die alle nach der gleichen Weise wie folgt strukturiert sind: Art Baujahr Wohnung Whnginfo Nebenkosten

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java Bisherige Beobachtungen zu Objekten: werden in Klassen zusammengefasst besitzen Eigenschaften und Verhalten verbergen private Informationen werden geboren, leben und

Mehr

Klausur zu Objektorientierter Softwareentwicklung in C++ 4. Februar 2003 (WS 2002/2003) Beispiellösung

Klausur zu Objektorientierter Softwareentwicklung in C++ 4. Februar 2003 (WS 2002/2003) Beispiellösung Klausur zu Objektorientierter Softwareentwicklung in C++ 4. Februar 2003 (WS 2002/2003) Beispiellösung Bearbeitungszeit: 120 Minuten NICHT MIT BLEISTIFT SCHREIBEN!!! Name: Vorname: Matrikelnummer: Aufgabe

Mehr

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

Java Kurs für Anfänger Einheit 4 Klassen und Objekte Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse

Mehr

Java Einführung Methoden in Klassen

Java Einführung Methoden in Klassen Java Einführung Methoden in Klassen Lehrziel der Einheit Methoden Signatur (=Deklaration) einer Methode Zugriff/Sichtbarkeit Rückgabewerte Parameter Aufruf von Methoden (Nachrichten) Information Hiding

Mehr

Übersicht. Einführung in die Programmierung. main. main. main. main. Speicherverwaltung. Definition nach ANSI C:

Übersicht. Einführung in die Programmierung. main. main. main. main. Speicherverwaltung. Definition nach ANSI C: Übersicht Einführung in die Programmierung Bachelor of Science die -Funktion Prof. Dr. Rethmann Fachbereich Elektrotechnik und Informatik Hochschule Niederrhein WS 009/0 Einführung in die Programmierung

Mehr

Klausur C-Programmierung / 15.02.2014 / Klingebiel / 60 Minuten / 60 Punkte

Klausur C-Programmierung / 15.02.2014 / Klingebiel / 60 Minuten / 60 Punkte Klausur C-Programmierung / 15.02.2014 / Klingebiel / 60 Minuten / 60 Punkte Musterlösung 1. Aufgabe (5 Punkte) Im folgenden Programmcode sind einige Fehler enthalten. Finden und markieren Sie mindestens

Mehr

Abend 7 Vererbung und Polymorphie, Abstrakte Klassen

Abend 7 Vererbung und Polymorphie, Abstrakte Klassen Abend 7 Vererbung und Polymorphie, Abstrakte Klassen Ziel, Inhalt Wir sehen heute weitere Beispiele für Polymorphie und virtuelle Methoden. Wir lernen auch Klassen kennen, von denen man keine Objekte erzeugen

Mehr

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2014/2015 Wirtschaftsingenieur Bachelor 4. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2014/2015 Wirtschaftsingenieur Bachelor 4. Aufgabe Datenstruktur, Dateieingabe und -ausgabe Aufgabenstellung Für ein Baumkataster sollen für maximal 500 Bäume Informationen gespeichert werden, die alle nach der gleichen Weise wie folgt strukturiert sind: Nummer Bauminfo Baumart Hoehe Baum Umfang

Mehr

3. Anweisungen und Kontrollstrukturen

3. Anweisungen und Kontrollstrukturen 3. Kontrollstrukturen Anweisungen und Blöcke 3. Anweisungen und Kontrollstrukturen Mit Kontrollstrukturen können wir den Ablauf eines Programmes beeinflussen, z.b. ob oder in welcher Reihenfolge Anweisungen

Mehr

Es gibt zwei verschiedene Arten, wie Programme auf dem Rechner ausgeführt werden:

Es gibt zwei verschiedene Arten, wie Programme auf dem Rechner ausgeführt werden: 3 Grundlagen 3.1 Starten eines C++ Programms Es gibt zwei verschiedene Arten, wie Programme auf dem Rechner ausgeführt werden: 1. Programme, die vom Interpreter der Programmiersprache Zeile für Zeile interpretiert

Mehr

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

Programmieren II Klassen. Programmieren II Klassen. Programmieren II Klassen. Programmieren II Klassen. Zur Erinnerung. Vorbemerkungen Zur Erinnerung aktueller Standpunkt: Entwickler von (bibliotheken) jetzt sind wichtig interne Repräsentation der Daten Realisierung der gewünschten Funktionalität Bereitstellung geeigneter

Mehr