ANSI C++ Grundlagen der Programmierung. Ricardo Hernández García. 4. Ausgabe, 1. Aktualisierung, März 2018 ISBN CANSIPP

Größe: px
Ab Seite anzeigen:

Download "ANSI C++ Grundlagen der Programmierung. Ricardo Hernández García. 4. Ausgabe, 1. Aktualisierung, März 2018 ISBN CANSIPP"

Transkript

1 ANSI C++ Ricardo Hernández García Grundlagen der Programmierung 4. Ausgabe, 1. Aktualisierung, März 2018 CANSIPP ISBN

2 I ANSI C++ Grundlagen der Programmierung Bevor Sie beginnen 4 1. Einführung in C Die Entstehung von C Bezeichnung der Dateinamen Auswahl von Internetadressen zu C Ein- und Ausgabe Grundlagen der Ein- und Ausgabe in C Standardausgabestream cout Standardeingabestream cin Übungen Vererbung Grundlagen der Vererbung Art der Ableitung Konstruktoren und Destruktoren abgeleiteter Klassen Zuweisungskompatibilität in Klassenhierarchien Klassenhierarchien this-zeiger Virtuelle Methoden Virtuelle Destruktoren Workshop Übungen Einfache Erweiterungen in C Kommentare in C Das Blockkonzept von C Der Auflösungsoperator q Der Komma-Operator Präfix- und Postfix-Operatoren Strukturen in C Union in C Der Datentyp bool Der Datentyp string Dynamische Speicherverwaltung Übungen Erweiterte Funktionen inline-funktionen Prototyping Defaultwerte Variable Parameterlisten Referenzen und Referenzvariablen Referenzparameter Referenzen als Funktionsergebnisse Überladen von Funktionen Übungen Klassen Klassenkonzept Instanzen einer Klasse Zugriffsspezifizierer Konstruktoren und Destruktoren Friends Statische Klassenelemente Geschachtelte Klassen Die Attribute mutable und explicit Workshop Übungen Mehrfachvererbung Grundlagen der Mehrfachvererbung Virtuelle Basisklassen Zugriffsrechte bei Vererbung und Überladung Workshop Übungen Polymorphismus Grundlagen des Polymorphismus Rein virtuelle Methoden Abstrakte Basisklassen Übungen Datei-, I/O- und String-Streams Grundlagen der I/O-Streams Datei-Streams String-Streams Übungen Überladen von Operatoren Grundlagen der Überladung von Operatoren Operator-Overloading durch friend-funktionen Operator-Overloading mit Methoden Überladen der Post- und Präfix-Operatoren Typumwandlungsoperatoren Konstruktoren als Typumwandlungsoperatoren Typumwandlungsoperator-Funktionen Kopieren von Objekten Überladen des Funktionsoperators t Überladen des Operators r Überladen von new und delete Übungen HERDT-Verlag

3 Inhalt I 11. Mit Namensbereichen arbeiten Das Modulkonzept in C Namensbereiche Standard-Namensbereich std Übungen Exception Handling Grundlagen des Exception Handlings Verschachtelte Exception-Blöcke einsetzen Eigene Exception-Klassen definieren Übungen Templates Grundlagen zu Templates Funktions-Templates Klassen-Templates Übungen Standard Template Library Die Inhalte der STL STL-Begriffserklärung Iteratoren vector deque (Double Ended Queue) Doppelt verkettete Liste list set und multiset map und multimap Zeichenketten string Algorithmen der STL Beispielanwendung zur STL Übungen Objektorientierter Entwurf Grundlagen der objektorientierten Softwareentwicklung Das Objektmodell Identifizieren von Klassen Verifizieren der Klassen durch Szenarios Gemeinsamkeiten und Beziehungen zwischen Klassen Verfeinerung durch Identifizieren der Daten Grafische Darstellung von Klassen und Beziehungen Design-Fehler Übung 234 A Anhang 235 A.1 Schlüsselwörter und Operatoren 235 A.2 Übersicht C++-Bibliotheken und STL 237 Stichwortverzeichnis 241 HERDT-Verlag 3

4 Bevor Sie beginnen Bevor Sie beginnen BuchPlus unser Konzept: Problemlos einsteigen Effizient lernen Zielgerichtet nachschlagen (weitere Infos unter Nutzen Sie dabei unsere maßgeschneiderten, im Internet frei verfügbaren Medien: So können Sie schnell auf die BuchPlus-Medien zugreifen: Rufen Sie im Browser die Internetadresse auf. 2 Geben Sie den folgenden Matchcode ein: CANSIPP. 1 Wählen Sie Codes. Die Beispiel-, Übungs- und Ergebnisdateien können Sie in C++-Entwicklungsumgebungen wie beispielsweise Microsoft Visual Studio 2017, C++-Builder von Embarcadero, Eclipse CDT (Open Source) oder in CodeLite (Open Source) laden, kompilieren und ausführen. Hinweise zu Soft- und Hardware In den Funktionsbeschreibungen des Buches wird von einer Erstinstallation der Entwicklungsumgebung Microsoft Visual Studio 2017 unter dem Betriebssystem Windows 10 und den Standardeinstellungen für diese Programme ausgegangen. Allerdings sollten sich weder bei der Verwendung eines anderen Betriebssystems noch beim Verwenden einer anderen Entwicklungsumgebung größere Abweichungen ergeben. 4 HERDT-Verlag

5 Bevor Sie beginnen Empfohlene Vorkenntnisse Für das Programmieren mit C++ sollten Sie über folgende Grundkenntnisse verfügen: C-Grundlagenkenntnisse (Programmaufbau, Verwendung von Steuerstrukturen) Grundkenntnisse der Programmentwicklung (Codierung, Übersetzung, Ausführung) Typografische Konventionen Im Text erkennen Sie bestimmte Programmelemente an der Formatierung. So werden z. B. Bezeichnungen für Programmelemente wie Register immer kursiv geschrieben und wichtige Begriffe fett hervorgehoben. Kursivschrift kennzeichnet alle von Programmen vorgegebenen Bezeichnungen für Schaltflächen, Schaltflächen, Register, Gruppen, Menüs bzw. Menüpunkte (z. B. Datei - Schließen) sowie alle vom Anwender zugewiesenen Namen wie Dateinamen, Ordnernamen, Hyperlinks und Pfadnamen. Courier New kennzeichnet Programmcode. Courier New kursiv kennzeichnet Zeichenfolgen, die vom Anwendungsprogramm ausgegeben oder in das Programm eingegeben werden. [ ] Bei Darstellungen der Syntax einer Programmiersprache kennzeichnen eckige Klammern optionale Angaben. Bei Darstellungen der Syntax einer Programmiersprache werden alternative Elemente durch einen senkrechten Strich voneinander getrennt. HERDT-Verlag 5

6 1 Einführung in C Einführung in C Die Entstehung von C++ Die Programmiersprache C wurde in den 70er-Jahren von Dennis Ritchie auf Basis der Sprache BCPL entwickelt. Programme, die mit C geschrieben werden, zeichnen sich durch eine hohe Ausführungsgeschwindigkeit und die Möglichkeit, systemnah zu programmieren, aus. C++ ist eine Erweiterung von C und wurde Mitte der 80er-Jahre von Bjarne Stroustrup entwickelt. Als Neuerung wurden Elemente der objektorientierten Programmierung (Klassen, Vererbung, Templates) in die Sprache aufgenommen. Elemente der Sprache C++ Elemente der Sprache C (1989-Normierung) C++ unterstützt wie C die Modulbildung, d. h. das Aufsplitten eines Programms in kleinere Einheiten (Unterprogramme, Bibliotheken). Der Schwerpunkt liegt jedoch in der Entwicklung von Klassen und Objekten (vgl. Kapitel 5). Somit unterstützt die Programmiersprache C++ die objektorientierte Softwareentwicklung. Das Accredited Standards Committee, das dem American National Standards Institute (amerikanisches Normungsinstitut) unterstellt ist, hat einen internationalen Standard für C++ verfasst. Der C++-Standard wurde auch zum ISO-Standard (International Standards Organization) und in Kombination zum ANSI/ ISO-Standard erhoben. Aufgrund dieser Normung kann der gleiche C++-Quelltext auf mehreren Rechnerplattformen ohne Anpassung des Quelltextes kompiliert werden. In den Jahren 1998 und 2003 erfolgten entsprechende C++-ANSI-Standard-Normierungen. Der aktuelle C++-ANSI-Standard wurde 2017 der ISO zur Verabschiedung vorgelegt. Auch die Programmiersprache C wurde seit ihrer Entstehung weiterentwickelt und mehrfach entsprechend normiert (1989, 1990, 1995, 1999, 2011). C++ basiert auf dem ursprünglichen C-Sprachumfang, der 1989 als ANSI-Standard verabschiedet wurde. Aufgrund der unterschiedlichen Weiterentwicklungen und obwohl der C Standard weitgehend die Neuerungen des C-2011-Standards integrierte, bestehen zwischen den aktuellen C- und C++-Versionen in Teilbereichen Unterschiede bzw. Inkompatibilitäten. 6 HERDT-Verlag

7 Einführung in C++ 1 Die meisten neueren Compiler unterstützen den ANSI-Standard, besitzen aber häufig eigene Erweiterungen. Wenn Sie unabhängig von einem konkreten Compiler programmieren wollen, stellen Sie in den Optionen des jeweiligen Compilers die Verwendung des ANSI-Standards ein. Die Programmierung mit dem Sprachumfang des ANSI-Standards für C++ schließt häufig nicht die grafischen Oberflächen der Betriebssysteme ein. Dort haben viele Plattformen ihre eigenen Konzepte und Funktionen. Trennen Sie aus diesem Grund in Ihren Programmen die Benutzerschnittstelle und die Programmlogik voneinander. Um C++ zu erlernen, können Sie zunächst wie bisher in der Sprache C programmieren und nach und nach einige der Erweiterungen von C++ in Ihre Programme einbauen. Möchten Sie eine rein objektorientierte Programmerstellung realisieren, müssen Sie ausschließlich die objektorientierten Sprachelemente von C++ verwenden. Verwenden Sie in der Übergangsphase C- und C++-Sprachelemente gemischt, können auch in Programmen Fehlermeldungen beim Kompilieren auftreten, die unter C fehlerfrei übersetzt wurden. Gründe dafür sind Inkompatibilitäten wie z. B. die erweiterte Typprüfung des C++-Compilers oder die Nutzung von C-Sprachelementen, die nach 1989 eingeführt wurden und nicht Bestandteil von C++ sind. 1.2 Bezeichnung der Dateinamen Quelltext-Dateien erhalten in C++ standardmäßig die Endung.cpp. Sie können andere Endungen verwenden, wenn dies sinnvoll erscheint. Die Header-Dateien erhalten, wie schon in C, die Endung.h (einige Compiler verwenden.hpp als Standard für C++-Header-Dateien). Um die Leistungsfähigkeit von C++ zu nutzen, können Sie in Ihrem Compiler oder in Ihrer Entwicklungsumgebung die Verwendung des C++-Compilers einstellen. Standardmäßig wird bei Dateien mit der Endung.c der C-Compiler und bei der Endung.cpp der C++-Compiler eingesetzt. Sie erhalten eventuell bei der Kompilierung von Quelltext mit C++-Sprachelementen Fehlermeldungen, wenn der C-Compiler den Quelltext übersetzt. Dieser kennt die C++-Spracherweiterungen nicht. 1.3 Auswahl von Internetadressen zu C++ Die folgende Tabelle enthält eine Auswahl von Internetadressen, unter denen Sie Quelltextbeispiele, Informationen über Entwicklungsumgebungen, Foren und Online-Seminare für die Programmiersprache C++ finden können. Rubrik C++-Compiler / Entwicklungsumgebung Foren / C++-Quellcode / Online-Seminare Adressen downloads (Visual Studio C++) (C++-Builder) (CodeLite) (C++-Eclipse) (GCC) HERDT-Verlag 7

8 2 Ein- und Ausgabe 2 2. Ein- und Ausgabe 2.1 Grundlagen der Ein- und Ausgabe in C++ Streams stellen den gesamten Umfang der C-Bibliothek cstdio (gets, puts, printf...) zur Verfügung. Durch Streams können Eingabedaten über die Tastatur, Ausgabedaten auf dem Bildschirm sowie die Ein- und Ausgabedaten von Dateien bearbeitet werden. Ein Stream ist ein Datenstrom von einer Quelle zu einem Ziel. Die Datentypen der zu übertragenden Daten müssen nicht angegeben werden, da durch die in C++ bereitgestellte Typinformation die Typen bekannt sind. Zur Steuerung der Ein- und Ausgabe stehen in C++ folgende Objekte zur Verfügung: cout cin cerr clog Standardausgabestream (Bildschirm) Standardeingabestream (Tastatur) Standardfehlerausgabestream Gepufferter Standardfehlerausgabestream Zur Ein- und Ausgabe stehen die folgenden vordefinierten Streams zur Verfügung. Die Implementierung von Streams erfolgt dabei in verschiedenen Klassen. Aktion Ziel Standard- Ein- und Ausgabe Datei Speicher Ausgabe ostream ofstream ostrstream Eingabe istream ifstream istrstream Ein- und Ausgabe iostream iofstream strstream Einbinden der Header-Datei iostream fstream strstream Die Methoden der Ein- und Ausgabe eines Streams werden jeweils immer in einer Klasse zusammengefasst. Sie müssen in Ihrem Programm dann jeweils die betreffende Header-Datei einbinden. Damit Sie Streams für die Ein- und Ausgabe verwenden können, müssen Sie die Datei iostream über die Anweisung #include einbinden und die zu nutzenden Objekte einzeln mittels der using std::-anweisung aus dem Standard-Namensbereich std (vgl. Abschnitt 11.3) benennen. 8 HERDT-Verlag

9 Ein- und Ausgabe 2 #include <iostream> using std::cout; using std::cin; Die funktionsübergreifende Einbindung aller Objekte des Standards-Namensbereichs std erfolgt mit der Anweisung using namespace std. #include <iostream> using namespace std; Um den Stream-Mechanismus zu verstehen, ist die Kenntnis von Klassen und Objekten notwendig. Die folgenden Betrachtungen sind darauf beschränkt, mit den Streams zu arbeiten, ohne näher auf den Zusammenhang mit Klassen und Objekten einzugehen. 2.2 Standardausgabestream cout Über diesen Stream wird eine Ausgabe auf dem Standardausgabegerät durchgeführt, in den meisten Fällen auf dem Bildschirm. Die auszugebenden Daten werden durch den Ausgabeoperator «an den Ausgabestream gesendet. Innerhalb einer Ausgabeanweisung können mehrere Daten durch den Operator» verkettet werden. cout << "Hallo " << "C++ " << "Welt!"; Zur Ausgabe können Sie beliebige Ausdrücke angeben. Es wird zuerst das Ergebnis des Ausdrucks berechnet und dann das Ergebnis ausgegeben. Um auf dem Bildschirm den Text Das Ergebnis von 7 mal 9 ist 63 auszugeben, verwenden Sie die folgende Anweisung: cout << "Das Ergebnis von " << 7 << " mal " << 9 << " ist " << (7 * 9); Sie müssen keine Angaben zu den Typen der Daten übergeben, da jeder Datentyp über eine vordefinierte Ausgabeform für seinen Typ verfügt. Formatierung der Ausgabe Für die Formatierung der ausgegebenen Daten stehen sogenannte Manipulatoren zur Verfügung. Diese werden genau wie die Daten über den Operator «an den Ausgabestream cout gesendet. Um z. B. einen Zeilenvorschub nach der Ausgabe der Daten zu erreichen, wird der Manipulator endl eingesetzt (entspricht in der Wirkung der C-Anweisung printf("\n");). cout << "Erste Zeile." << endl << "Dieser Text steht in einer neuen Zeile"; HERDT-Verlag 9

10 2 Ein- und Ausgabe Die folgende Tabelle stellt wichtige Manipulatoren und deren Einfluss auf die Formatierung der Ausgabe zusammen. Bevor Sie die Manipulatoren setw, setfill, setprecision und setiosflags verwenden können, müssen Sie die Datei iomanip nach der Datei iostream einbinden. Manipulator dec, hex, oct setw(int x) Setfill (int x) Setprecision (int x) Beschreibung Die auf den Manipulator folgenden Ganzzahlen werden dec dezimal oct oktal hex hexadezimal ausgegeben. // Ausgabe einer Zahl in drei Zahlensystemen: cout << "oktal: " << oct << 255 << endl; cout << "hexadezimal: " << hex << 255 << endl; cout << "dezimal: " << dec << 255 << endl; Für die nächste Ausgabe über cout (und nur für diese) wird die durch den Parameter x angegebene Ausgabebreite (in Zeichen) definiert. Da die Ausgabe grundsätzlich rechtsbündig erfolgt, wird somit vor der nächsten Ausgabe mit Füllzeichen aufgefüllt. // Drei Zahlen werden untereinander ausgegeben. cout << setw(8) << 565 << endl; cout << setw(8) << << endl; cout << setw(8) << 8 << endl; Nimmt die Ausgabe weniger Zeichen ein, als Sie z. B. über setw eingestellt haben, können Sie mit setfill angeben, welches Füllzeichen verwendet wird. Standardmäßig wird mit Leerzeichen aufgefüllt. // legt als Füllzeichen den Punkt. fest cout << setfill('.'); cout << setw(8) << 8 << endl; Über den Manipulator setprecision wird die Anzahl der Nachkommastellen bei der Ausgabe von Fließkommazahlen festgelegt. Die letzte Stelle wird gerundet (128,458 => 128,56 bei 5 Stellen). Der vom Compiler vorgegebene Wert von 6 Stellen wird mit dem Manipulator überschrieben. Hat die Zahl mehr Ziffern vor dem Dezimalpunkt als vorgegeben, wird die exponentielle Schreibweise verwendet. // Die Anzahl wird auf drei Ziffern eingestellt. cout << setprecision(3); 10 HERDT-Verlag

11 Ein- und Ausgabe 2 Manipulator Setiosflags (ios::flag) Resetiosflags (ios::flag) flush endl Beschreibung setiosflags ermöglicht das Setzen von Ausgabeformatierungsflags. Sie können eine rechtsbündige Ausgabe mit der Übergabe von ios::right und eine linksbündige mit der Übergabe ios::left für den Parameter durchführen. // Setzt die Ausrichtung auf rechtsbündig. cout << setiosflags(ios::right); ios::left ios::right ios::internal ios::dec ios::oct ios::hex ios::showbase Richtet die Ausgabe linksbündig aus. Richtet die Ausgabe rechtsbündig aus. Vorzeichen links, Wert rechtsbündig ausgegeben. Die Ausgabe erfolgt im dezimalen Zahlensystem. Die Ausgabe erfolgt im oktalen Zahlensystem. Die Ausgabe erfolgt im hexadezimalen Zahlensystem. Fügt '0x' an hexadezimale und '0' an oktale Zahlen an. ios::showpoint Dezimalpunkt wird immer angezeigt. ios::uppercase Die Ausgabe erfolgt mit Großbuchstaben. ios::showpos Positiven Zahlen wird ein '+' vorangestellt. ios::scientific Zahlen in wissenschaftlicher Schreibweise ausgeben. ios::fixed Zeigt Nachkommastellen gemäß eingestellter Genauigkeit an. int z = 15; cout << setiosflags(ios::showbase) << oct << z << endl; Setzt die angegebenen Flags wieder zurück Der Ausgabepuffer wird geleert und sein Inhalt an das entsprechende Ziel, z. B. die Standardausgabe, geschrieben. Beachten Sie dies z. B. beim Debuggen eines Programms, um sicherzustellen, dass die Daten an das vorgesehene Ziel gesendet wurden und sich nicht mehr im Puffer befinden. Der Manipulator endl erzeugt einen Zeilenumbruch. Sie können mit der Ausgabe von "\n" auch weiterhin einen Zeilenumbruch bewirken. Bei den folgenden beiden Anweisungen gibt es jedoch einen wesentlichen Unterschied: cout << endl; // Daten im Ausgabepuffer werden angezeigt. cout << "\n"; Die Ausgabe wird im Speicher zwischengespeichert (gepuffert). Es ist nicht garantiert, dass die bisher mit cout ausgegebenen Zeichen zu diesem Zeitpunkt wirklich bereits auf dem Bildschirm sichtbar sind und die beabsichtigten Ausgaben sofort auf dem Bildschirm erscheinen. Die Anzeige erfolgt garantiert, wenn endl eingesetzt oder die Ausgaberichtung mit dem Aufruf von cin gewechselt wird. HERDT-Verlag 11

12 2 Ein- und Ausgabe Beispiel: Manip.cpp Das folgende Beispiel verwendet einige der Manipulatoren für die formatierte Ausgabe eines Inhaltsverzeichnisses mit folgendem Erscheinungsbild: Einfuehrung...5 Referenz.28 Uebungen...45 #include <iostream> #include <iomanip> using namespace std; int main() { cout << setfill('.'); cout << setiosflags(ios::left) << setw(30) << "Einfuehrung" << resetiosflags(ios::left); } cout << setw(5) << setiosflags(ios::right) << 5 << endl; cout << resetiosflags(ios::right) << setiosflags(ios::left) << setw(30) <<"Referenz" << resetiosflags(ios::left); cout << setiosflags(ios::right) << setw(5) << 28 << endl; cout << resetiosflags(ios::right) << setiosflags(ios::left) << setw(30) << "Uebungen" << resetiosflags(ios::left); cout << setiosflags(ios::right) << setw(5) << 45 << endl; cin.peek(); return 0; Für die Bildschirmausgabe über den Stream cout muss die Header-Datei iostream eingebunden werden. Die Manipulatoren setfill, setiosflags und setw benötigen die Header-Datei iomanip. Als Füllzeichen wird der Punkt festgelegt. Die Ausrichtung wird linksbündig eingestellt. Die Ausgabebreite wird auf 30 Zeichen (maximaler Verzeichniseintrag) festgelegt und ein Eintrag wird ausgegeben. Da die Ausrichtung für die Seitenzahlen auf rechtsbündig gestellt werden soll, wird das gesetzte Flag für die linksbündige Ausrichtung zurückgesetzt. Für die Ausgabe der Seitenzahlen wird eine Ausgabebreite von 5 Zeichen festgelegt und die Ausrichtung auf rechtsbündig eingestellt. Als Füllzeichen dient immer noch der in festgelegte Punkt. Die Methode peek liest das nächste Zeichen aus dem Eingabepuffer, ohne es von dort zu löschen. Dadurch wird die Ausführung des Programms bis zum Betätigen der Taste Ü angehalten. Einige der Manipulatoren besitzen eine äquivalente Methode innerhalb der Stream-Klassen, die die gleiche Funktionalität besitzt. Diese Methoden werden über den Namen des Streams cout aufgerufen. 12 HERDT-Verlag

13 Ein- und Ausgabe 2 cout.fill('x'); cout.width(10); cout << "Test"; // setzt das Füllzeichen auf x // legt die Ausgabebreite auf 10 Zeichen fest Eigene Manipulatoren Manipulatoren sind Funktionen. Sie können Ihre eigenen Manipulatoren unter Verwendung der entsprechenden Ein- oder Ausgabestream-Klasse implementieren. Übergeben Sie dazu der Funktion einen Stream per Referenz (vgl. Abschnitt 4.5). Verändern Sie den Inhalt des Streams innerhalb der Funktion und geben Sie anschließend den veränderten Stream als Rückgabewert der Funktion zurück. Beispiel: Mymanip.cpp Im folgenden Beispiel wird ein neuer Manipulator implementiert. Er bewirkt die Ausgabe eines Tabulators (8 Zeichen pro Spalte), wenn er an die Standardausgabe gesendet wird. Dazu wird innerhalb der Funktion MyManip dem Stream ein Tabulatorzeichen '\t' hinzugefügt. #include <iostream> using namespace std; ostream& MyManip(ostream& os) { os << '\t'; return os; } int main() { cout << "Test: " << MyManip << "Test"; cin.get(); return 0; } Die Funktion MyManip wird definiert. Ihr wird ein Stream als Referenz übergeben, der aufgrund der Übergabe per Referenz über den Parameter os innerhalb der Funktion verändert werden kann. Dem Stream os wird ein Tabulator hinzugefügt. Der mit dem Tabulatorzeichen erweiterte Stream os wird von der Funktion zurückgegeben. Über den Manipulator MyManip wird zwischen den Zeichenketten ein Tabulator ausgegeben, der die Bildschirmausgabe der beiden Zeichenketten in zwei nebeneinander liegende Spalten realisiert. HERDT-Verlag 13

14 2 Ein- und Ausgabe 2.3 Standardeingabestream cin Dieser Stream dient zum Einlesen von Daten über die Standardeingabe, meist die Tastatur. Die Daten, die Sie im Programm weiterverwenden möchten, müssen Sie in Variablen speichern. Der Typ dieser Variablen muss dem Typ der eingelesenen Daten entsprechen. Die Übergabe der über die Tastatur eingegebenen Daten in die Programmvariablen erfolgt über den Eingabeoperator». int i; // eine Integer-Variable deklarieren cin >> i; // Einlesen eines Wertes in die Variable i Beim Einlesen von Daten über den Eingabeoperator werden Sonderzeichen, wie Leerzeichen, Tabulatorzeichen und Zeilenwechselzeichen, überlesen. Die Konvertierung der Zeichen der Eingabe in den gewünschten Typ wird ausgeführt, bis ein Zeichen auftritt, das nicht konvertiert werden kann. Erfolgt z. B. die Eingabe der Zeichenkette " 25Test", wird der Variablen i nur der Wert 25 zugewiesen, da die führenden Leerzeichen überlesen werden und das Zeichen 'T' der Zeichenkette Test zum Abbruch der Zeichenübernahme führt, weil dieses Zeichen nicht in eine Zahl konvertiert werden kann. Fließkommazahlen können auf die gleiche Weise eingelesen werden, zusätzlich ist jedoch die Angabe eines Dezimalpunkts und/oder eines Exponenten zulässig. Möchten Sie mit der Funktion cin Zeichen einlesen, müssen Sie lediglich eine Variable des Typs char angeben. Hierbei werden jedoch Leerzeichen überlesen. Wenn Sie auch diese Zeichen einlesen möchten, können Sie die Funktion get verwenden. Die Funktion get ist eine Memberfunktion (Methode) der Klasse istream und wird über den Namen des Streams aufgerufen. char c; cin.get(c); // liest ein einzelnes Zeichen ein Über den Manipulator ws können Sie Leerzeichen überlesen. char c1, c2; cin >> c1 >> ws >> c2; // Einlesen von 2 durch white spaces getrennte Buchstaben Über die Funktion ignore kann eine festgelegte Anzahl von Zeichen aus dem Standardeingabestream ignoriert werden. Dazu werden in Klammern die zu überlesenden Zeichen angegeben. char c1, c2; cin >> c1; cin.ignore(10); cin >> c2; // ein Zeichen wird eingelesen // die nächsten 10 Zeichen werden ignoriert // das 11. Zeichen wird gelesen Es kann in der Funktion ignore ein zweiter Parameter angegeben werden, der den Begrenzer (delimiter) bezeichnet. Tritt dieses Zeichen innerhalb der angegebenen Zeichenanzahl auf, wird das Überlesen von Zeichen abgebrochen. Voreingestellt ist der Begrenzer EOF. Dieses Zeichen steht für das Ende einer Datei. 14 HERDT-Verlag

15 Ein- und Ausgabe 2 cin.ignore(10, '\n'); Über die oben stehende Anweisung können maximal 10 Zeichen überlesen werden, es sei denn, dass das Zeichen '\n' (Zeilenumbruch) darin enthalten ist. Diese Zeichen beendet die Wirkung des Aufrufs. Beispiel: Ignore.cpp Nach der Ausgabe des Ergebnisses einer Berechnung soll die Programmabarbeitung erst nach der Betätigung einer beliebigen Taste fortgesetzt werden. Der dargestellte Quelltextausschnitt führt noch nicht zum gewünschten Ergebnis. Das Programm wird nach den Ausgaben beendet und wartet keine weitere Eingabe ab. Der Grund liegt darin, dass sich noch ein Zeichen '\n' im Eingabepuffer befindet und dieses gelesen wurde. int i; char Taste; cout << "Geben Sie bitte eine Zahl ein: "; cin >> i; // i einlesen cout << "Das Quadrat von " << i << " ist " << i * i << endl; // Ergebnis ausgeben cout << "Betaetigen Sie eine beliebige Taste, um fortzusetzen!"; cin.get(taste); // auf Eingabe warten Um mit der Abfrage dennoch eine Unterbrechung der Programmausführung zu erreichen, wird zunächst der Zustand des Eingabepuffers betrachtet und das Verhalten des Programms untersucht. Zu Beginn des Programms ist der Eingabepuffer leer. Bei der ersten Eingabe gibt der Benutzer eine Zahl (z. B. 13) ein und schließt diese Eingabe mit Ü ab. Diese Zeichen werden in den Eingabepuffer gestellt. Auch die Ü-Taste hinterlässt ein Zeichen im Eingabepuffer, nämlich das Zeilenendezeichen '\n'. Beim Einlesen der Variablen i werden die Ziffern aus dem Eingabepuffer gelesen und der Wert 13 wird in der Variablen gespeichert. '1' '\n' '3' '\n' Das Zeilenendezeichen '\n' bleibt jedoch im Eingabepuffer, da es von der Funktion cin nicht in einen Ganzzahlwert konvertiert werden konnte. Beim folgenden Aufruf der Funktion cin.get(taste) wird nicht gewartet, bis neue Zeichen über die Tastatur eingegeben werden, sondern das noch im Eingabestream enthaltene Zeichen '\n' wird ohne Tastaturabfrage der Variablen Taste zugewiesen. Um die gewünschte Funktionsweise dennoch zu erhalten, müssen Sie den Eingabestream vor dem Aufruf der Funktion cin.get(taste) aus dem Eingabepuffer entfernen. Dazu kann z. B. die oben erwähnte Funktion ignore verwendet werden. Die Funktion ignore überliest den Übergabeparameter und entfernt die Zeichen aus dem Eingabepuffer. Der nachfolgende Befehl wartet auf die gewünschte erneute Tastatureingabe. HERDT-Verlag 15

Anwendung höherer Programmiersprachen. Formatierte Ausgabe mit cout. Angewandte Informatik I C / C++ Teil B: Formatierte Ein- und Ausgabe

Anwendung höherer Programmiersprachen. Formatierte Ausgabe mit cout. Angewandte Informatik I C / C++ Teil B: Formatierte Ein- und Ausgabe Angewandte Informatik I Anwendung höherer Programmiersprachen C / C++ Vorlesung der FH Münster Prof. Dr.-Ing. H. Bösche // Programm b0301208 #include { int i = 1, j = 2; cout

Mehr

Inhalte. Einführung. Algorithmus, Programmiersprache, Compiler und Linker. Kontrollstrukturen. Präprozessoranweisungen. Libraries

Inhalte. Einführung. Algorithmus, Programmiersprache, Compiler und Linker. Kontrollstrukturen. Präprozessoranweisungen. Libraries INFIO.1 Informatik I Einführung Algorithmus, Programmiersprache, Compiler und Linker Datentypen Kontrollstrukturen Präprozessoranweisungen Libraries Funktionen und Klassen Inhalte INFIO.2 Auszug Daten

Mehr

Objektorientiertes Programmieren für Ingenieure

Objektorientiertes Programmieren für Ingenieure Uwe Probst Objektorientiertes Programmieren für Ingenieure Anwendungen und Beispiele in C++ 18 2 Von C zu C++ 2.2.2 Referenzen und Funktionen Referenzen als Funktionsparameter Liefert eine Funktion einen

Mehr

Inhalt Streams Eingabe / Ausgbe in C Dateizugriff in C Eingabe / Ausgabe in C++ Dateizugriff in C++ Error Handling

Inhalt Streams Eingabe / Ausgbe in C Dateizugriff in C Eingabe / Ausgabe in C++ Dateizugriff in C++ Error Handling Input / Output in C, C++ Inhalt Streams Eingabe / Ausgbe in C Dateizugriff in C Eingabe / Ausgabe in C++ Dateizugriff in C++ Error Handling Page 1 Ausgaben in C,C++ - generell Fuer C basierte Ausgaben:

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

Kapitel 1: Einführung

Kapitel 1: Einführung 10 Kapitel 1: Einführung 1.1 Was ist eine Programmiersprache? 1.2 Details zu C++ 1.3 Phasen der Programmierung 1.4 Ein erstes Programm: Hello World! 1.5 Addition zweier Zahlen 1.6 Entscheidungen 1.1 Was

Mehr

Die Programmiersprache C

Die Programmiersprache C Die Programmiersprache C höhere Programmiersprache (mit einigen Assembler-ähnlichen Konstrukten) gut verständliche Kommandos muss von Compiler in maschinenlesbaren Code (Binärdatei) übersetzt werden universell,

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

Informationsverarbeitung

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

Mehr

Die elementare Ausgabe von Daten auf externe Medien, wie Dateien und das Einlesen davon wird demonstriert.

Die elementare Ausgabe von Daten auf externe Medien, wie Dateien und das Einlesen davon wird demonstriert. Ein- und Ausgabe Die elementare Ausgabe von Daten auf externe Medien, wie Dateien und das Einlesen davon wird demonstriert. Komplexe E/A-Operationen werden erst diskutiert, nachdem das Klassenkonzept erarbeitet

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

Programmierkurs C++ Grundlagen. Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.

Programmierkurs C++ Grundlagen. Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck. Programmierkurs C++ Grundlagen Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Algorithmen, Maschinen- und Programmiersprachen Algorithmen

Mehr

Grundlagen. Kapitel 1

Grundlagen. Kapitel 1 Grundlagen Dieses Kapitel umfasst grundlegende Fragen und Aufgaben zur Erstellung von C++-Programmen. Hierzu zählen auch das Inkludieren von Header-Dateien Eine Header-Datei beinhaltet Informationen, die

Mehr

C vs. C++ Sebastian Meyer. Proseminar C - Grundlagen und Konzepte. Universität Hamburg

C vs. C++ Sebastian Meyer. Proseminar C - Grundlagen und Konzepte. Universität Hamburg C vs. C++ Sebastian Meyer Universität Hamburg Proseminar C - Grundlagen und Konzepte 2013 1 / 31 Gliederung 1 Einführung 2 Vergleich der Spracheigenschaften 3 Neue Sprachelemente in C++ 4 Fazit 5 Zusammenfassung

Mehr

PIWIN 1 Übung Blatt 5

PIWIN 1 Übung Blatt 5 Fakultät für Informatik Wintersemester 2008 André Gronemeier, LS 2, OH 14 Raum 307, andre.gronemeier@cs.uni-dortmund.de PIWIN 1 Übung Blatt 5 Ausgabedatum: 19.12.2008 Übungen: 12.1.2009-22.1.2009 Abgabe:

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

Klausur in Programmieren

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

Mehr

Überblick. 7. Überladen von Operatoren

Überblick. 7. Überladen von Operatoren Überblick 1. Einführung C++ / Entwicklung/ Sprachfamilie 2. Nicht objektorientierte Erweiterungen von C 2.1 Das Ein-/Ausgabekonzept von C++ 2.2 Referenzen in C++ 2.3 Heap-Allokatoren in C++ 3. Grundlagen

Mehr

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

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

Historien AB"C" Einführung in die Programmierung mit C/C++ Dipl. Ing. (FH) Hans-Peter Kiermaier. Dr. Bjarne Stroustrup Entwickler von C++

Historien ABC Einführung in die Programmierung mit C/C++ Dipl. Ing. (FH) Hans-Peter Kiermaier. Dr. Bjarne Stroustrup Entwickler von C++ Dipl. Ing. (FH) Hans-Peter Kiermaier Einführung in die Programmierung mit C/C++ Historien AB"C" CPL (1963) BCPL (1967) B (1969) C (1971) ANSI-C (1989) ISO-C (1990) C# (2000) ISO-C (1999) C with Classes

Mehr

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 4

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 4 Fakultät Verkehrswissenschaften Friedrich List, Professur für Verkehrsbetriebslehre und Logistik Modul Entscheidungsunterstützung in der Logistik Einführung in die Programmierung mit C++ Übung 4 SS 2016

Mehr

Praktikum Ingenieurinformatik. Termin 2. Verzweigungen (if-else), printf und scanf, while-schleife

Praktikum Ingenieurinformatik. Termin 2. Verzweigungen (if-else), printf und scanf, while-schleife Praktikum Ingenieurinformatik Termin 2 Verzweigungen (if-else), printf und scanf, while-schleife 1 1. Import/Export von Projekten 2. Verzweigungen (if-else-anweisung) 3. printf und scanf 4. Übungsaufgaben

Mehr

C++ - Eine Ubersicht fur Java-Programmierer

C++ - Eine Ubersicht fur Java-Programmierer C++ - Eine Ubersicht fur Java-Programmierer Daniel Wasserrab Lehrstuhl fur Programmierparadigmen Universitat Karlsruhe 23. April 2008 C++ I Entwickelt Anfang der 80er von Bjarne Stroustrup I Beeinut von

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

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

Übungen zu C++ Kapitel 1

Übungen zu C++ Kapitel 1 Übungen zu C++ Kapitel 1 Aufgabe 1 Ergänze den Text. a) Die sechs logischen Einheiten eines Computers sind Eingabe-Einheit, Ausgabe-Einheit, RAM, ALU, CPU, Plattenspeicher. b) Die Programme, welche Hochsprachenprogramme

Mehr

Grundlegende Anweisungen in C++

Grundlegende Anweisungen in C++ Grundlegende in C++ Peter Bastian Dieses Dokument basiert auf einer ursprünglich englischen Fassung von Katharina Vollmayr-Lee (http: // www. eg. bucknell. edu/ ~ kvollmay/ caps_ s2010/ C+ +_ summary.

Mehr

Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff

Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff Programmieren in C Eine Einführung in die Programmiersprache C Prof. Dr. Nikolaus Wulff Der Anfänger sollte nicht entmutigt sein, wenn er nicht die Voraussetzungen besitzt, um die Voraussetzungen zu verstehen...

Mehr

Z:\Informatik 3\Labor_GINF3\Labor_01-Sonstiges.txt

Z:\Informatik 3\Labor_GINF3\Labor_01-Sonstiges.txt Z:\Informatik 3\Labor_GINF3\Labor_0-Sonstiges.txt Laborbericht Nils Gemba Informatik 3 - OOP Labor 0 Vorbereitungszeit: ca. 4 Stunden Durchführungszeit: ca. 3 Stunden z:\informatik 3\Labor_GINF3\Labor_0\Labor_0.0\main.cpp

Mehr

Objektorientierte Programmierung mit C++ Vector und List

Objektorientierte Programmierung mit C++ Vector und List Vector und List Ziel, Inhalt Wir lernen die Klassen vector und list aus der Standard-C++ Library kennen und anwenden. In einer Übung wenden wir diese Klassen an um einen Medienshop (CD s und Bücher) zu

Mehr

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

Einführung in die C++ Programmierung für Ingenieure Einführung in die C++ Programmierung für Ingenieure MATTHIAS WALTER / JENS KLUNKER Universität Rostock, Lehrstuhl für Modellierung und Simulation 14. November 2012 c 2012 UNIVERSITÄT ROSTOCK FACULTY OF

Mehr

C++ - Lernen und professionell anwenden

C++ - Lernen und professionell anwenden mitp Professional C++ - Lernen und professionell anwenden von Prof. Dr. Ulla Kirch, Dr. Peter Prinz 6., überarbeitete Auflage 2012 C++ - Lernen und professionell anwenden Kirch / Prinz schnell und portofrei

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

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

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

2 Grundelemente eines C++-Programms

2 Grundelemente eines C++-Programms 9 In diesem Kapitel legen wir den Grundstein zur Programmierung in C++. Wir schauen uns an, welche Elemente immer in einem C++-Programm vorkommen und wie Texte auf dem Bildschirm ausgegeben werden können.

Mehr

Grundlagen der Programmiersprache C++

Grundlagen der Programmiersprache C++ / TU Braunschweig Grundlagen der Programmiersprache C++ Um den Studierenden den Einstieg in die FE-Programmierung zu erleichtern werden die wesentlichen Elemente eines C-Programmes beschrieben, soweit

Mehr

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

C++ Kurs Teil 1. Architektur, Anwendungsspektrum, primitive Datentypen, Funktionsaufrufe, Referenzen, Klassen C++ Kurs Teil 1 "hello world" Vergleich von C++ und Java Architektur, Anwendungsspektrum, primitive Datentypen, Funktionsaufrufe, Referenzen, Klassen C++ Spezialitäten Schlüsselwort 'const', Copy Constructor,

Mehr

Grundlagen der Informatik - 6. Praktikum

Grundlagen der Informatik - 6. Praktikum Grundlagen der Informatik - 6. Praktikum In diesem Praktikum soll es neben der Anwendung von Funktionsdefinitionen auch um einfache Prinzipien der verteilten Quelltext-Strukturierung gehen. Diese spielt

Mehr

Ulla Kirch Peter Prinz C+ + Lernen und professionell anwenden. mitp

Ulla Kirch Peter Prinz C+ + Lernen und professionell anwenden. mitp Ulla Kirch Peter Prinz C+ + Lernen und professionell anwenden mitp Inhaltsverzeichnis Einleitung 19 Grundlagen 21 Entwicklung und Eigenschaften von C++ 22 Objektorientierte Programmierung 24 Erstellen

Mehr

Programmieren für Physiker: C++

Programmieren für Physiker: C++ Programmieren für Physiker: C++ Termine: Vorlesung: Di. 8:00-9:30 Uhr, Lehmann-HS (M. Steinhauser) Hörsaalübungen: Fr. 8:00-9:30 Uhr, Lehmann-HS (A. Mildenberger) Computerübungen: (voraussichtlich) (Fragen

Mehr

Unterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur

Unterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur Unterprogramme Unterprogramme sind abgekapselte Programmfragmente, welche es erlauben, bestimmte Aufgaben in wiederverwendbarer Art umzusetzen. Man unterscheidet zwischen Unterprogrammen mit Rückgabewert

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

Einstieg in die Programmierung mit Visual Basic.NET

Einstieg in die Programmierung mit Visual Basic.NET Einstieg in die Programmierung mit Visual Basic.NET Agenda - Methoden mit Argumenten - Überladen von Methoden - Eigenschaftenprozeduren - Eigenschaftenprozeduren automatisch generieren - Konstruktoren

Mehr

2.4 Das erste C++-Programm *

2.4 Das erste C++-Programm * 2.4 Das erste C++-Programm * 11 2.4 Das erste C++-Programm * Den besten Lernerfolg erzielen Sie, wenn Sie alle Beispiele dieses Buchs selbst nachvollziehen. Sie können hierzu einen Compiler verwenden,

Mehr

Widmung... 5. Einleitung... 15. Vorwort 15 Übersicht zu diesem Buch 17. 1 Einführung in die Welt der Objektorientierung... 21

Widmung... 5. Einleitung... 15. Vorwort 15 Übersicht zu diesem Buch 17. 1 Einführung in die Welt der Objektorientierung... 21 Inhaltsverzeichnis Widmung........................................ 5 Einleitung...................................... 15 Vorwort 15 Übersicht zu diesem Buch 17 1 Einführung in die Welt der Objektorientierung.........

Mehr

C++ Einführung. und Datenanalyse mit ROOT. Jörg Marks, Physikalisches Institut, INF 226

C++ Einführung. und Datenanalyse mit ROOT. Jörg Marks, Physikalisches Institut, INF 226 Sommer Semester 2016 C++ Einführung 10.4-14.4.2016 14:00 17:00 CIP Pool INF 226 und Datenanalyse mit ROOT Jörg Marks, Physikalisches Institut, INF 226 marks@physi.uni-heidelberg.de Inhalt Programmierwerkzeuge

Mehr

+ C - Formatierte Eingabe mit scanf()

+ C - Formatierte Eingabe mit scanf() + C - Formatierte Eingabe mit scanf() BKTM - Programmieren leicht gemacht. Formatierte Eingabe mit scanf() Um eine Eingabe von der Tastatur bereitzustellen, kann man die scanf()-funktion benutzen. Der

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

ANSI C. Grundlagen der Programmierung. Ricardo Hernández García. 3. Ausgabe, September 2011 CANSI2

ANSI C. Grundlagen der Programmierung. Ricardo Hernández García. 3. Ausgabe, September 2011 CANSI2 ANSI C Ricardo Hernández García 3. Ausgabe, September 2011 Grundlagen der Programmierung CANSI2 2 ANSI C - Grundlagen der Programmierung 2.4 Vom Quellcode zum Maschinenprogramm Das folgende Beispiel geht

Mehr

ANSI C. Grundlagen der Programmierung. Ricardo Hernández García. 3. Ausgabe, 2. Aktualisierung, Dezember 2013 CANSI2

ANSI C. Grundlagen der Programmierung. Ricardo Hernández García. 3. Ausgabe, 2. Aktualisierung, Dezember 2013 CANSI2 ANSI C Ricardo Hernández García 3. Ausgabe, 2. Aktualisierung, Dezember 2013 Grundlagen der Programmierung CANSI2 2 ANSI C - Grundlagen der Programmierung 2.4 Vom Quellcode zum Maschinenprogramm Das folgende

Mehr

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

(allgemeine) OOP in C++ Klassen und header-files Konstruktorn / Destruktoren Speicherverwaltung C++ Standard Library / SLT Architektur Übersicht (allgemeine) OOP in C++ Polymorphie Virtuelle Funktionen Kompilieren Linken dynamische/statische Bibliotheken Tutorial: vs2008+ogre+(campus modell) Architektur (allgemeine) OOP in

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

C++-Entwicklung mit Linux

C++-Entwicklung mit Linux C++-Entwicklung mit Linux Eine Einführung in die Sprache und die wichtigsten Werkzeuge von GCC und XEmacs bis Eclipse Thomas Wieland [Druckvorlage vom 10. August 2004] xiii Inhaltsverzeichnis 1 Programmieren

Mehr

Quiz und Übungen. C++ Übung am 19. Mai 2016

Quiz und Übungen. C++ Übung am 19. Mai 2016 Quiz und Übungen C++ Übung am 19. Mai 2016 Was ist der Unterschied zwischen kompilierenden und interpretierenden Programmiersprachen? Was ist der Unterschied zwischen kompilierenden und interpretierenden

Mehr

1. Übung zu "Numerik partieller Differentialgleichungen"

1. Übung zu Numerik partieller Differentialgleichungen 1. Übung zu "Numerik partieller Differentialgleichungen" Simon Gawlok, Eva Treiber Engineering Mathematics and Computing Lab 22. Oktober 2014 1 / 15 1 Organisatorisches 2 3 4 2 / 15 Organisatorisches Ort:

Mehr

Informatik für Elektrotechnik und Informationstechnik

Informatik für Elektrotechnik und Informationstechnik Informatik für Elektrotechnik und Informationstechnik Praktikum 1 Wintersemester 2013/14 1 Kennenlernen der Entwicklungsumgebung Netbeans Netbeans ist eine moderne Entwicklungsumgebung für mehrere Programmiersprachen,

Mehr

Programmierkurs C++ Kapitel 9, Überladen Seite 1

Programmierkurs C++ Kapitel 9, Überladen Seite 1 Programmierkurs C++ Kapitel 9, Überladen Seite 1 Funktionen überladen int datum (int jahr); int datum (char person[]); sind in C++ zwei verschiedene Funktionen, die beide denselben Funktionsnamen haben.

Mehr

Anleitung für zwei C++ - Openmp - Beispiele auf der NWZSuperdome

Anleitung für zwei C++ - Openmp - Beispiele auf der NWZSuperdome Anleitung für zwei C++ - Openmp - Beispiele auf der NWZSuperdome (Timo Heinrich, t_hein03@uni-muenster.de) Inhaltsverzeichnis: 0.Einleitung 1.Teil: Helloworldprogramm 1.1 Quellcode: Helloworld.cpp 1.2

Mehr

Kurze Einführung in die Programmiersprache C++ und in Root

Kurze Einführung in die Programmiersprache C++ und in Root Kurze Einführung in die Programmiersprache C++ und in Root Statistik, Datenanalyse und Simulation; 31.10.2006 Inhalt 1 Einführung in die Programmiersprache C++ Allgemeines Variablen Funktionen 2 1 Einführung

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

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet C++ Grundlagen ++ bedeutet Erweiterung zum Ansi C Standard Hier wird eine Funktion eingeleitet Aufbau: In dieser Datei stehen die Befehle, die gestartet werden, wenn das Programm gestartet wird Int main()

Mehr

Übungsaufgaben: 1. Objektorientierte Programmierung - Teil 1

Übungsaufgaben: 1. Objektorientierte Programmierung - Teil 1 Übungsaufgaben: 1. Objektorientierte Programmierung - Teil 1 1. Das Objekt Bruch mit einem Standardkonstruktor (initialisieren mit 0), einem allgemeinen Konstruktor (Zähler und Nenner können beliebig vorgegeben

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

Überschreiben von Methoden

Überschreiben von Methoden Vergleich der DoME Realisierungen: Methode ausgeben Version 1 (ohne Vererbung): Anzeigen aller Informationen CD: A Swingin Affair (64 Min)* Frank Sinatra Titelanzahl: 16 Mein Lieblingsalbum von Sinatra

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

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

Praktikum im Bereich Praktische Informatik Echtzeitgraphik in C++ und DirectX10. computer graphics & visualization Praktikum im Bereich Praktische Informatik Echtzeitgraphik in C++ und DirectX10 Übersicht In den ersten Wochen: Einführung in objektorientierte Programmierung mit C++ Anschließend: Einführung in die programmierbare

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

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

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

Praktikum Ingenieurinformatik. Termin 2. Verzweigungen (if-else), printf und scanf, while-schleife

Praktikum Ingenieurinformatik. Termin 2. Verzweigungen (if-else), printf und scanf, while-schleife Praktikum Ingenieurinformatik Termin 2 Verzweigungen (if-else), printf und scanf, while-schleife 1 1. Import/Export von Eclipse-Projekten 2. Verzweigungen (if-else-anweisung) 3. printf und scanf 4. Übungsaufgaben

Mehr

Grundlagen C und C++ Einheit 03: Grundlagen in C++ Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme

Grundlagen C und C++ Einheit 03: Grundlagen in C++ Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Grundlagen C und C++ Einheit 03: Grundlagen in C++ Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Teil 1: Wiederholung C Heutige Agenda Nutzereingaben verarbeiten Teil 2: Grundlagen in C++ Erstes

Mehr

Aktivitäten in C# /.NET umsetzen

Aktivitäten in C# /.NET umsetzen Aktivitäten in C# /.NET umsetzen Grundlagen von C# Dr. Beatrice Amrhein Überblick Grundlagen der C# Syntax Visual C# Express Einfache Abläufe umsetzen 2 Grundlagen von C# 3 Merkmale von C# C# besteht aus

Mehr

1 Einführung... 13. 2 Erste Schritte... 19. 3 Programmierkurs... 33. 4 Datentypen... 81. 5 Weiterführende Programmierung... 139

1 Einführung... 13. 2 Erste Schritte... 19. 3 Programmierkurs... 33. 4 Datentypen... 81. 5 Weiterführende Programmierung... 139 Auf einen Blick 1 Einführung... 13 2 Erste Schritte... 19 3 Programmierkurs... 33 4 Datentypen... 81 5 Weiterführende Programmierung... 139 6 Objektorientierte Programmierung... 191 7 Verschiedene Module...

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

09.10.2015. 02.10.2015 + 07.10.2015 Seite 1. 02.10.2015 + 07.10.2015 Seite 2

09.10.2015. 02.10.2015 + 07.10.2015 Seite 1. 02.10.2015 + 07.10.2015 Seite 2 02.10.2015 + 07.10.2015 Seite 1 02.10.2015 + 07.10.2015 Seite 2 1 Anzahl der Klassenarbeiten: Mindestens zwei Klassenarbeiten pro Halbjahr (= 4 KA pro Jahr) Im ersten Ausbildungsjahr gibt es jedoch kein

Mehr

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung Ludwig-Maximilians-Universität München WS 2013/14 Institut für Informatik Übungsblatt 10 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung

Mehr

Ziel, Inhalt. Programmieren in C++ Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind

Ziel, Inhalt. Programmieren in C++ Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind Templates und Containerklassen Ziel, Inhalt Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind Templates und Containerklassen 1 Ziel, Inhalt

Mehr

C Überlebenstraining

C Überlebenstraining C Überlebenstraining Dies ist nur ein Schnellkurs in C, der genug Einstiegswissen vermitteln soll, daß weiterführende Literatur schnell benutzt werden kann. Dies ist kein vollständiger Programmier oder

Mehr

Java Einführung Programmcode

Java Einführung Programmcode Java Einführung Programmcode Inhalt dieser Einheit Programmelemente Der erste Programmcode Die Entwicklungsumgebung: Sun's Java Software Development Kit (SDK) Vom Code zum Ausführen des Programms 2 Wiederholung:

Mehr

C++ für Spieleprogrammierer

C++ für Spieleprogrammierer C++ für Spieleprogrammierer Heiko Kalista 2., erweiterte Auflage ISBN 3-446-40332-9 Inhaltsverzeichnis Weitere Informationen oder Bestellungen unter http://www.hanser.de/3-446-40332-9 sowie im Buchhandel

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

Übung 9. Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9

Übung 9. Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9 Informatik I 2 Übung 9 Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9 Quellcode Strukturieren Wenn alle Funktionen in einer Datei zusammengefasst sind wird es schnell unübersichtlich Mehrere

Mehr

GetName(), GetName(), GetGeschlecht() und AelterWerden().

GetName(), GetName(), GetGeschlecht() und AelterWerden(). 11. Vererbung Vererbung ist eine der mächtigsten Funktionalitäten der objektorientierten Programmiersprachen. Man versteht unter Vererbung die Tatsache, dass eine Klasse alle Methoden und Variablen einer

Mehr

C++ - Operatoren. Eigene Klassen mit neuen Funktionen

C++ - Operatoren. Eigene Klassen mit neuen Funktionen C++ - Operatoren Eigene Klassen mit neuen Funktionen Übersicht Klassen bisher Eigene Operatoren definieren 2 Bisher Durch Kapselung, Vererbung und Polymorphy können nun eigene Klassen definiert werden,

Mehr

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

Kapitel 3. Mein erstes C-Programm

Kapitel 3. Mein erstes C-Programm Kapitel 3 Mein erstes C-Programm 1 Gliederung Kapitel 3 Mein erstes C-Programm 3.1 Einleitung 3.2 Mein erstes C-Programm 3.3 Zusammenfassung 2 Problem Algorithmus Mittelwert für Messwerte berechnen DGL

Mehr

C++ Programmierkurs. 5. Klassen. Wintersemester 04 / 05. Christian Hagemeier Lehrstuhl Prof. Dr. Schrader

C++ Programmierkurs. 5. Klassen. Wintersemester 04 / 05. Christian Hagemeier Lehrstuhl Prof. Dr. Schrader C++ Programmierkurs Wintersemester 04 / 05 Christian Hagemeier Lehrstuhl Prof. Dr. Schrader Institut für Informatik Universität zu Köln mittwochs 17 18:30 Uhr Hörsaal II der Physikalischen Institute http://www.zaik.de/afs/teachings/

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

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, 1-1 Vorlesung Vorlesung drei-stündig, mit Übungen Vorlesung Di, 10:30-12:45 (mit 15 Minuten Pause)

Mehr

3 ORDNER UND DATEIEN. 3.1 Ordner Ordner anlegen

3 ORDNER UND DATEIEN. 3.1 Ordner Ordner anlegen PC EINSTEIGER Ordner und Dateien 3 ORDNER UND DATEIEN Themen in diesem Kapitel: Erstellung von Ordnern bzw Dateien Umbenennen von Datei- und Ordnernamen Speicherung von Daten 3.1 Ordner Ordner sind wie

Mehr

Definition: Algorithmus

Definition: Algorithmus Definition: Algorithmus Ein Algorithmus ist eine allgemeine Rechenvorschrift, die aus mehreren elementaren Instruktionen (Anweisungen bei Programmiersprachen, Befehlen bei Maschinensprachen) besteht, die

Mehr

Erste Schritte mit HG 2

Erste Schritte mit HG 2 Erste Schritte mit HG 2 Malte Ried FH-Gießen Version: 1.0 21. November 2003 Inhaltsverzeichnis 1 Einführung 2 2 Allgemeines 2 2.1 Koordinaten...................................... 2 2.2 Farben.........................................

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

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

Zusammengesetzte Datentypen -- Arrays und Strukturen

Zusammengesetzte Datentypen -- Arrays und Strukturen Zusammengesetzte Datentypen -- und Strukturen Informatik für Elektrotechnik und Informationstechnik Benedict Reuschling benedict.reuschling@h-da.de Hochschule Darmstadt Fachbereich Informatik WS 2013/14

Mehr

Informatik I (D-MAVT)

Informatik I (D-MAVT) Informatik I (D-MAVT) Übungsstunde 1 simon.mayer@inf.ethz.ch Distributed Systems Group, ETH Zürich kurze Stunden mit Stoffueberblick -> mehr Zeit fuer Fragen This semester s menu... Imperative Programmierung

Mehr

Automatisierung ( Fernsteuerung ) von Excel unter Microsoft Windows Tilman Küpper (tilman.kuepper@hm.edu)

Automatisierung ( Fernsteuerung ) von Excel unter Microsoft Windows Tilman Küpper (tilman.kuepper@hm.edu) HMExcel Automatisierung ( Fernsteuerung ) von Excel unter Microsoft Windows Tilman Küpper (tilman.kuepper@hm.edu) Inhalt 1. Einleitung...1 2. Beispiele...2 2.1. Daten in ein Tabellenblatt schreiben...2

Mehr