Von Java nach C++ Frank Weichert, Heinrich Müller Informatik VII Universität Dortmund

Save this PDF as:
 WORD  PNG  TXT  JPG

Größe: px
Ab Seite anzeigen:

Download "Von Java nach C++ Frank Weichert, Heinrich Müller Informatik VII Universität Dortmund http://ls7-www.cs.uni-dortmund.de"

Transkript

1 Von Java nach C++ Frank Weichert, Heinrich Müller Informatik VII Universität Dortmund Von Java nach C++, LS VII, Universität Dortmund, SS

2 Übersicht Einleitung Literatur Vergleich zwischen C++ und Java Klassen in C++ Übersetzungsprozess von C++-Programmen Programmieren in Visual Studio Ausgewählte C++-Konzepte Von Java nach C++, LS VII, Universität Dortmund, SS

3 Einleitung C makes it easy to shoot yourself in the foot, C++ makes it harder, but when you do, it blows away your whole leg. (Bjarne Stroustrup) Von Java nach C++, LS VII, Universität Dortmund, SS

4 Literatur Die C++-Programmiersprache, Bjarne Stroustrup, Addison-Wesley Visual C++, Frank Budszuhn, Addison-Wesley Von Java nach C++, LS VII, Universität Dortmund, SS

5 C++ vs. Java Von Java nach C++, LS VII, Universität Dortmund, SS

6 C++ vs. Java typisches Programm #include <iostreams.h> int main() { return 0; } import java.awt.*; class Test{ public static void main(string[] argv){ } } Dateinamen beliebig, Konvention *.cpp, *.h <Klassenname>.java generierter Code - Maschinencode - plattformabhängig -*.exe - Java-Byte-Code - plattformunabhängig -*.class Von Java nach C++, LS VII, Universität Dortmund, SS

7 C++ vs. Java bedingte Anweisungen, Schleifen, Verbundanweisungen, identisch Funktionen globale Funktionen möglich Felder int a[4]; int a[] = {1,2,3}; keine Überprüfung auf Array-Grenzen identisch Methoden müssen in einer Klasse stehen int a[] = new int[4]; int a[] = {1,2,3}; Felder sind Objekte, Überprüfung auf Array-Grenzen Konstanten const double pi=3.14; final double pi=3.14; Von Java nach C++, LS VII, Universität Dortmund, SS

8 C++ vs. Java (Variablen-) Deklaration keine Default-Werte int a[4]; Default-Werte int a[] = new a[4]; Speicherverwaltung durch den Programmierenden automatisch durch den Garbage Collector Eingabe- und Ausgabeanweisungen cin >> x; cout << x; x=iohelp.read(); System.out.println(x); Boolescher Datentyp bool boolean Von Java nach C++, LS VII, Universität Dortmund, SS

9 C++ vs. Java Type-Casting (explizite Konvertierung) a) (Typ) Ausdruck in C++ und Java erlaubt Beispiel: int a=3; double b=(double) a / 2; // b = 1.5 b) Typ (Ausdruck) nur in C++ erlaubt Beispiel: int a=3; double b= double(a) / 2; // b = 1.5 Von Java nach C++, LS VII, Universität Dortmund, SS

10 C++ vs. Java Zusätzliche Java-Funktionalität Automatische Speicherverwaltung Code ist (direkt) systemportabel Strings und Felder Applets Multitasking durch Thread-Modell Von Java nach C++, LS VII, Universität Dortmund, SS

11 C++ vs. Java Zusätzliche C++-Funktionalität (1) Zeiger (Pointer) Kontrolle des Memory Management Templates Operator-Overloading Mehrfachvererbung Präprozessor Von Java nach C++, LS VII, Universität Dortmund, SS

12 C++ vs. Java Zusätzliche C++-Funktionalität (2) Einschränkung des Wertebereichs in C++ per unsigned möglich z.b. int: bis unsigned int: 0 bis Symbolische Konstanten Präprozessorbefehl, erkennbar am # -Zeichen #define PI=3.14 (kein ; am Zeilenende) Typdeklaration Definiert neuen Namen für einen Datentyp typedef int Index; Index a=3; Von Java nach C++, LS VII, Universität Dortmund, SS

13 Ein einfaches Programm - Quellcodes Java: class BV{ } public static void main(string[] argv){ System.out.println "C++ in der Bildverarbeitung!"; } C++: #include <iostream> using namespace std; int main(int argc){ cout << "C++ in der Bildverarbeitung!"; return 0; } Von Java nach C++, LS VII, Universität Dortmund, SS

14 Ein einfaches Programm - Übersetzen Java: Dateiname: BV.java Übersetzen: javac BV.java Ausführen: java BV (Java Byte-Code) (Java Virtual Machine) C++: Dateiname: BV.cpp Übersetzen: cl /c BV.cpp Linken: link BV.obj cl BV.cpp Ausführen: BV Von Java nach C++, LS VII, Universität Dortmund, SS

15 Klassen in C++ Von Java nach C++, LS VII, Universität Dortmund, SS

16 Klassen in C++ Klassen in C++ = Deklaration + Implementierung Headerdatei (.h) Implementationsdatei (.cpp) Studierende.h: class Studierende{ }; Studierende.cpp: #include "Studierende.h" Von Java nach C++, LS VII, Universität Dortmund, SS

17 Klassen in C++: Aufbau der Headerdatei Studierende.h: class Studierende{ Konstruktor Destruktor Methoden Attribute public: Studierende(); ~Studierende(); void setzematrikelnummer(int nummer); int gibmatrikelnummer(); private: int matrikelnummer; }; Von Java nach C++, LS VII, Universität Dortmund, SS

18 Klassen in C++: Aufbau der Headerdatei Spezifizierung einer Klasse mit class Klassen sind immer public Konstruktoren und Destruktoren Konstruktoren: Instanziierung von Objekten Destruktoren: Löschen von instanziierten Objekten (~ vorangestellt) Deklaration von Methoden und Variablen (Instanz-) Variablen dürfen bei der Deklaration nicht initialisiert werden Modifier werden nicht separat spezifiziert Klassendefinition wird mit Semikolon beendet Von Java nach C++, LS VII, Universität Dortmund, SS

19 Klassen in C++: Aufbau der Implementationsdatei Einbinden der Headerdatei mit include Durch den Klassennamen und dem Bereichsoperator :: wird die Zugehörigkeit zur Klasse gekennzeichnet Studierende.cpp: #include "Studierende.h" Studierende::Studierende(){} Studierende::~Studierende(){} void Studierende::setzeMatrikelnummer(int nummer){ matrikelnummer = nummer; } int Studierende::gibMatrikelnummer(){ return matrikelnummer; } Von Java nach C++, LS VII, Universität Dortmund, SS

20 Klassen in C++: Aufbau der Implementationsdatei Präprozessoranweisung #include "Studierende.h bindet Headerdatei ein. Nennung von Fully Qualified Names z.b.: Studierende::Studierende() :: wird als Bereichsoperator (Scope Operator) bezeichnet inline-spezifikation möglich z.b.: inline int Studierende::gibMatrikelnummer(){ return matrikelnummer; } Von Java nach C++, LS VII, Universität Dortmund, SS

21 Übersetzungsprozess von C++-Programmen Von Java nach C++, LS VII, Universität Dortmund, SS

22 Übersetzen von C++-Programmen Übersetzungsprozess besteht aus drei Komponenten 1. Präprozessor: Vorverarbeitung des Quellcodes 2. Compiler: Überführt Quellcode in Objektcode 3. Linker: Fasst alle Objektdateien zu einem ausführbaren Programm zusammen Von Java nach C++, LS VII, Universität Dortmund, SS

23 Übersetzen von C++-Programmen Von Java nach C++, LS VII, Universität Dortmund, SS

24 Übersetzen von C++-Programmen Präprozessor Präprozessorbefehle beginnen mit dem #-Zeichen Sucht im Quellcode nach speziellen Befehlen, z.b. - #include einbinden von Headerdateien a) <name> Standard Libraries aus Systemverzeichnis z.b.: #include <iostream> b) name eigene Dateien aus Projektverzeichnis z.b.: #include "Studierende.h" -> Problem: mehrfache Deklarationen - #define führt textuelle Ersetzungen (Konstanten) aus. z.b.: #define pi #ifdef, #ifndef, Konditionales Kompilieren z.b.: #ifdef DEBUG #endif Von Java nach C++, LS VII, Universität Dortmund, SS

25 Übersetzen von C++-Programmen Präprozessor -> Problem: mehrfache Deklarationen Lösung: Headerdatei um konditionalen Kopf erweitern z.b.: Studierende.h: #ifndef STUDIERENDE_H #define STUDIERENDE_H class Studierende{ }; #endif Von Java nach C++, LS VII, Universität Dortmund, SS

26 Übersetzen von C++-Programmen Compiler Generiert aus dem vom Präprozessor vorverarbeiteten Quellcode den Objektcode. Maschinennahe Objektcodedatei kann noch offene Aufrufe enthalten und nicht ausgeführt werden. Überprüfung auf syntaktische Korrektheit - Fehlermeldungen z.b.: error C2065: 'h': nichtdeklarierter Bezeichner - Warnungen z.b.: warning C4244: 'Initialisierung': Konvertierung von 'double' in 'int', möglicher Datenverlust Objektcode wird nur erzeugt, sofern keine Fehler aufgetreten sind. Von Java nach C++, LS VII, Universität Dortmund, SS

27 Übersetzen von C++-Programmen Linker Generiert (vollständig) ausführbares Programm Fasst die - Objektdateien des Projektes, - Code aus Standard Libraries und - zusätzliche Libraries zusammen Zwei mögliche Link-Modi -statisch - dynamisch Von Java nach C++, LS VII, Universität Dortmund, SS

28 Programmieren in Visual Studio Von Java nach C++, LS VII, Universität Dortmund, SS

29 C++-Programm mit Visual Studio Neues Projekt anlegen: Datei -> Neu -> Projekt Projekttyp festlegen Projektnamen und Verzeichnis auswählen Von Java nach C++, LS VII, Universität Dortmund, SS

30 C++-Programm mit Visual Studio Initiales Arbeitsfenster der Entwicklungsumgebung Von Java nach C++, LS VII, Universität Dortmund, SS

31 C++-Programm mit Visual Studio Klasse hinzufügen (Header- und Implementationsdatei) Von Java nach C++, LS VII, Universität Dortmund, SS

32 C++-Programm mit Visual Studio Typ der Klasse auswählen, die hinzugefügt werden soll Von Java nach C++, LS VII, Universität Dortmund, SS

33 C++-Programm mit Visual Studio Klassennamen festlegen Modifikator und Basisklasse (optional) bestimmen Von Java nach C++, LS VII, Universität Dortmund, SS

34 C++-Programm mit Visual Studio Von Java nach C++, LS VII, Universität Dortmund, SS

35 C++-Programm mit Visual Studio Ausführbares Programm erstellen - Kompilieren (Strg+F7) - Programm ausführen (Strg+F5) - Programm unter Debugger ausführen (F5) Von Java nach C++, LS VII, Universität Dortmund, SS

36 C++-Programm mit Visual Studio Dateitypen von Visual-Studio Extension *.cpp *.h *.exe *.dsp *.dsw *.obj *.rc *.res C++-Quelldatei C++-Headerdatei Ausführbares Programm Informationen zum Projekt. Projekt kann über dsp- Datei geöffnet werden Informationen zum Arbeitsbereich. Dieser sollte auch über diese Datei geöffnet werden. Nicht eingebundene Kompilate (Objekt-Dateien) Ressourcen-Skriptdatei Bedeutung Binäre Ressourcendatei des Linkers Von Java nach C++, LS VII, Universität Dortmund, SS

37 Ausgewählte C++-Konzepte Komplexe Datentypen Zeiger und Referenzen Vererbung STL Von Java nach C++, LS VII, Universität Dortmund, SS

38 Komplexe Datentypen Benutzerdefinierter Datentyp mit eindeutigem Namen typedef struct{ double x, y, z; } vector3d; int main() { vector3d veca = {0.4, 4, 6.2}; vector3d vecb; vecb = veca; // vecb = {0.4, 4, 6.2} double a = veca.z; // a = 6.2 Zugriff auf Elemente mit. -Operator Bei Zuweisungen werden komplette Strukturen kopiert Von Java nach C++, LS VII, Universität Dortmund, SS

39 Ausgewählte C++-Konzepte Komplexe Datentypen Zeiger und Referenzen Vererbung STL Von Java nach C++, LS VII, Universität Dortmund, SS

40 Objekte instanziieren und löschen ProgrammStudierende.cpp: #include "Studierende.h" int main(int argc, char* argv[]){ Studierende* einstudent = new Studierende(); delete einstudent; } return 0; Instanziierung eines Objektes vom Typ Studierende Studierende*: Variablendeklaration einstudent: Zeiger auf Studierende new: Ruft Konstruktor auf und legt Objekt vom angegebenen Typ im Speicher an delete ruft Destruktor der Klasse auf und gibt den zuvor belegten Speicher wieder frei (kein Garbage Collector wie in Java) Von Java nach C++, LS VII, Universität Dortmund, SS

41 Zeiger und Referenzen Anweisung: Studierende* einstudent = new Studierende(); Repräsentierung: 0x0000 0x1200 Studierende int matrikelnummer Speicher Studierende* einstudent = 0x1200 0xffff Klasseninstanz Zeiger Von Java nach C++, LS VII, Universität Dortmund, SS

42 Zeiger und Referenzen Zeiger (Pointer): Variable, dessen Wert auf die Position (Speicheradresse) eines anderen Objektes zeigt. eigener Datentyp typisiert durch Zeichen * gekennzeichnet Beispiel: a) kein Zeiger: int a; b) mit Zeiger: int* a; Von Java nach C++, LS VII, Universität Dortmund, SS

43 Zeiger und Referenzen Adresse Speicherstelle, die für ein Objekt zur Verfügung gestellt wird. Die Adresse wird bei der Objekt- Instanziierung und der damit verbundenen Bereitstellung des benötigten Speichers vergeben. Inhalt Wert (Daten), der für ein Objekt unter einer Adresse gespeichert wird. Initiale Belegung erfolgt durch den Konstruktor. Von Java nach C++, LS VII, Universität Dortmund, SS

44 Zeiger und Referenzen Pointer: Pointer (Pointervariable) ist eine Variable in der eine Adresse gespeichert wird. Die Variable hat den identischen Typ wie die Variable, deren Adresse gespeichert wird. Dereferenzierungsoperator * : Zugriff auf den Wert, der in der Pointervariablen gespeicherten Adresse steht ( Wert, auf den der Pointer verweist ) Referenzoperator & : Liefert für eine Variable die zugehörige Speicheradresse Von Java nach C++, LS VII, Universität Dortmund, SS

45 Zeiger und Referenzen Pointer-Deklaration Adresse Name int *iptr;??? iptr Pointer-Deklaration und Initialisierung Adresse Name int *iptr=0; NULL iptr Von Java nach C++, LS VII, Universität Dortmund, SS

46 Zeiger und Referenzen Deklaration eines primitiven Datentyps Adresse Name int i=423; i Pointer-Initialisierung und Adressoperator Adresse Name int *iptr=0; iptr = &i; NULL iptr Von Java nach C++, LS VII, Universität Dortmund, SS

47 Zeiger und Referenzen Vereinfachte grafische Repräsentierung Adresse Name i i 423 Adresse Name iptr iptr Von Java nach C++, LS VII, Universität Dortmund, SS

48 Zeiger und Referenzen Initialisierung von Pointern int a = 423; a 423 int b = 78; b 78 int *ptr_1 = &b; ptr_1 int *ptr_2 = ptr_1; ptr_2 int *ptr_3 = &a; ptr_3 Von Java nach C++, LS VII, Universität Dortmund, SS

49 Zeiger und Referenzen Pointer Aliasing: Zwei Pointer enthalten dieselbe Adresse a 423 *ptr_1 = *ptr_3; ptr_2 = ptr_3; b ptr_1 ptr_ ptr_3 Von Java nach C++, LS VII, Universität Dortmund, SS

50 Zeiger und Referenzen Zeigervariablen können auch auf einen weiteren Zeiger verweisen Auch iteriete Pointer-Anwendungen sind möglich Jeder * -Operator im Ausdruck entspricht einer Dereferenzierung int a = 423; a 423 int *ptr = &a; ptr int **ptrptr = 0; ptrptr = &ptr; ptrptr NULL Von Java nach C++, LS VII, Universität Dortmund, SS

51 Zeiger und Referenzen Anwendungsbeispiel #include <iostream> #include "Studierende.h" using namespace std; int main(int argc, char* argv[]){ Studierende* einstudent = new Studierende(); einstudent->setzematrikelnummer(88456); Studierende zweiterstudent; zweiterstudent.setzematrikelnummer(87393); Studierende* ptr_zweiterstudent = &zweiterstudent; cout << ptr_zweiterstudent << endl; Studierende* dritterstudent = NULL; dritterstudent->setzematrikelnummer(89263); delete einstudent; delete dritterstudent; return 0; } Von Java nach C++, LS VII, Universität Dortmund, SS

52 Zeiger und Referenzen Zeiger einstudent, der auf Objekt vom Typ Studierende zeigt Über Operator -> (Dereferenzieren) Methode aufrufen ( es wird einem Zeiger gefolgt ) Studierende* einstudent = new Studierende(); einstudent->setzematrikelnummer(88456); zweiterstudent als (statische) Instanz Methodenaufruf für statische Instanzen über Punktoperator Studierende zweiterstudent; zweiterstudent.setzematrikelnummer(87393); Von Java nach C++, LS VII, Universität Dortmund, SS

53 Zeiger und Referenzen Pointer auf statische Instanz über Referenzoperator & Studierende* ptr_zweiterstudent = &zweiterstudent; cout << ptr_zweiterstudent << endl; Zeiger für ein Objekt, der mit NULL initialisiert wird Methodenaufruf führt zu einem Laufzeitfehler (Exception) Studierende* dritterstudent = NULL; dritterstudent->setzematrikelnummer(89263); Von Java nach C++, LS VII, Universität Dortmund, SS

54 Ausgewählte C++-Konzepte Komplexe Datentypen Zeiger und Referenzen Vererbung STL Von Java nach C++, LS VII, Universität Dortmund, SS

55 Vererbung einfache Vererbung: Klasse Bachelor erbt von Klasse Studierende Vererbungsoperator : (entspricht extends in Java) Studierende Bachelor Studierende.h: class Studierende{ }; Bachelor.h: #include "studierende.h" class Bachelor : public Studierende{ public: Bachelor(); ~Bachelor(); }; Von Java nach C++, LS VII, Universität Dortmund, SS

56 Vererbung Mehrfachvererbung: Klasse Bachelor erbt von Klassen Studierende und HiWi Studierende HiWi Bachelor Bachelor.h: #include "studierende.h" #include "HiWi.h" class Bachelor : public Studierende, public HiWi{ public: Bachelor(); ~Bachelor(); }; Von Java nach C++, LS VII, Universität Dortmund, SS

57 Ausgewählte C++-Konzepte Komplexe Datentypen Zeiger und Referenzen Vererbung STL Von Java nach C++, LS VII, Universität Dortmund, SS

58 STL Standard-Template-Library (kurz STL) Vordefinierte Templates für viele Anwendungsbereiche STL gliedert sich in drei Teilbereiche auf: 1.) Container: Speicherstrukturen, z.b. Bäume, Listen, 2.) Algorithmen: Operatoren für Container-Klassen, z.b. Sortieren einer Liste 3.) Iteratoren: Traversierungsoperatoren für Container-Klassen Einbinden der Headerdateien per include ohne Endung.h Beispiel: #include<list> Notwendigkeit des korrekten Namespace, geschieht durch die Anweisung using namespace std; Infos zur STL: Silicon Graphics Inc., Von Java nach C++, LS VII, Universität Dortmund, SS

59 STL Anwendungsbeispiel: #include <list> #include "Studierende.h" using namespace std; int main(int argc, char* argv[]){ Studierende* student1 = new Studierende(); Studierende* student2 = new Studierende(); } list<studierende*> listestudierende; listestudierende.push_back(student1); listestudierende.push_back(student1); Einbinden der Headerdatei für die Container-Klasse list. Instanziierung einer Liste listestudierende, die Zeiger auf Objekte vom Typ Studierende speichern kann. Methode push_back fügt Zeiger auf Typ Studierende der Liste an. Von Java nach C++, LS VII, Universität Dortmund, SS

Von Java nach C++ Dr. Frank Weichert Lehrstuhl Informatik VII Technische Universität Dortmund http://ls7-www.cs.uni-dortmund.de

Von Java nach C++ Dr. Frank Weichert Lehrstuhl Informatik VII Technische Universität Dortmund http://ls7-www.cs.uni-dortmund.de Von Java nach C++ Dr. Frank Weichert Lehrstuhl Informatik VII Technische Universität Dortmund http://ls7-www.cs.uni-.de Von Java nach C++, Lehrstuhl Informatik VII, TU Dortmund 1 Übersicht Einleitung Literatur

Mehr

Von Java nach C++ Frank Weichert Lehrstuhl Informatik VII Technische Universität Dortmund

Von Java nach C++ Frank Weichert Lehrstuhl Informatik VII Technische Universität Dortmund Von Java nach C++ Frank Weichert Lehrstuhl Informatik VII Technische Universität Dortmund http://ls7-www.cs.uni-.de Vorkurs Informatik, Von Java nach C++, LS VII, TU Dortmund, WS 2009/2010 1 Übersicht

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

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

C++ Teil 5. Sven Groß. 13. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 18

C++ Teil 5. Sven Groß. 13. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 18 C++ Teil 5 Sven Groß 13. Mai 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 13. Mai 2016 1 / 18 Themen der letzten Vorlesung Funktionen Funktionsüberladung, Signatur Rekursion const-deklaration Referenzen

Mehr

Objektorientierung: Klassen und Objekte

Objektorientierung: Klassen und Objekte Objektorientierung: Klassen und Objekte Klasse: Beschreibung für eine Menge von Objekten Schablone, Bauplan abstrakte Form Objekt: Instanz einer Klasse konkreter Inhalt (Werte) Klassen bestehen aus Attributen

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dynamische Datenobjekte Pointer/Zeiger, Verkettete Liste Eigene Typdefinitionen 1 Zeigeroperatoren & und * Ein Zeiger ist die Speicheradresse irgendeines Objektes. Eine

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

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja Aue

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

C++ Teil 6. Sven Groß. 27. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 14

C++ Teil 6. Sven Groß. 27. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 14 C++ Teil 6 Sven Groß 27. Mai 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 6 27. Mai 2016 1 / 14 Themen der letzten Vorlesung Musterlösung A2 Wdh.: Zeiger und Felder Kopieren von Feldern Dynamische Speicherverwaltung

Mehr

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

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf  Seite 1 von 29 Kapitel 2 Einführung in C++ Seite 1 von 29 C++ Zeichensatz - Buchstaben: a bis z und A bis Z. - Ziffern: 0 bis 9 - Sonderzeichen: ; :,. # + - * / % _ \! < > & ^ ~ ( ) { } [ ]? Seite 2 von 29 Höhere Elemente

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

C++ - Einführung in die Programmiersprache Header-Dateien und Funktionen. Leibniz Universität IT Services Anja Aue

C++ - Einführung in die Programmiersprache Header-Dateien und Funktionen. Leibniz Universität IT Services Anja Aue C++ - Einführung in die Programmiersprache Header-Dateien und Funktionen Leibniz Universität IT Services Anja Aue Modularisierung Logische Gliederung von Programmteilen mit Hilfe von Namensräumen. Aufteilung

Mehr

Betriebssystembau: Übungen. Betriebssystembau: Übungen. Betriebssystembau: Einführung C++ Literatur

Betriebssystembau: Übungen. Betriebssystembau: Übungen. Betriebssystembau: Einführung C++ Literatur Betriebssystembau: Übungen 2 SWS Tafel übung (hier :-)) und 2 SWS Rechnerübung Die Tafelübung vermittelt Grundlagen der PC-Hardware-Architektur Grundwissen zur Bearbeitung der Rechnerübungen C++-Programmierkenntnisse

Mehr

4. Objektorientierte Programmierung mit C++

4. Objektorientierte Programmierung mit C++ 4. Objektorientierte Programmierung mit C++ Einführung C++ / Entwicklung/ Sprachfamilie Nicht objektorientierte Erweiterungen von C Grundlagen des Typkonzepts von C++ Ziele der Objektorientierung Objekt

Mehr

C++ Teil 5. Sven Groß. 8. Mai IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 8. Mai / 16

C++ Teil 5. Sven Groß. 8. Mai IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 8. Mai / 16 C++ Teil 5 Sven Groß IGPM, RWTH Aachen 8. Mai 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 8. Mai 2015 1 / 16 Themen der letzten Vorlesung Live Programming zu A2 Gleitkommazahlen Rundungsfehler Auswirkung

Mehr

Zeiger, Arrays und Strings in C und C++

Zeiger, Arrays und Strings in C und C++ Zeiger, Arrays und Strings in C und C++ 1 Zeiger in Java und C/C++ Zeigervariable (kurz: Zeiger, engl.: pointer): eine Variable, die als Wert eine Speicheradresse enthält Java: Zeiger werden implizit für

Mehr

C++ Programmierung. Uwe Naumann. LuFG Informatik 12, RWTH Aachen University, Germany

C++ Programmierung. Uwe Naumann. LuFG Informatik 12, RWTH Aachen University, Germany C++ Programmierung Uwe Naumann LuFG Informatik 12, RWTH Aachen University, Germany Leave me alone world... Hauptprogramm int main(); return 0; Ausgabe auf Bildschrim #include std :: cout

Mehr

C++ Notnagel. Ziel, Inhalt. Programmieren in C++

C++ Notnagel. Ziel, Inhalt. Programmieren in C++ C++ Notnagel Ziel, Inhalt Ich versuche in diesem Dokument noch einmal die Dinge zu erwähnen, die mir als absolut notwendig für den C++ Unterricht und die Prüfungen erscheinen. C++ Notnagel 1 Ziel, Inhalt

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

(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

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

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen 5 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Referenzen Beispiel an der einfachen Klasse Walze: public class Walze { int id; public Walze(int id) { this.id = id; Verwenden

Mehr

C++ vs. Java. Hello world! Java C++ class HelloWorld { static public void main(string args) { System.out.println("Hello World!

C++ vs. Java. Hello world! Java C++ class HelloWorld { static public void main(string args) { System.out.println(Hello World! Hello world! Java class HelloWorld { static public void main(string args) { System.out.println("Hello World!"); } } C #include main() { printf("hello World!\n"); } C++ #include using

Mehr

II.1.1. Erste Schritte - 1 -

II.1.1. Erste Schritte - 1 - ! 1. Grundelemente der Programmierung! 2. Objekte, Klassen und Methoden! 3. Rekursion und dynamische Datenstrukturen! 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.1.1. Erste Schritte - 1

Mehr

7. Übung Informatik II - Objektorientierte Programmierung

7. Übung Informatik II - Objektorientierte Programmierung 7. Übung Informatik II - Objektorientierte Programmierung 29. Mai 2015 Inhalt 1 2 3 Übersicht 1 2 3 Idee Menschen nehmen die Welt in Form von Objekten wahr manche Objekte haben gleiche Eigenschaften, hierüber

Mehr

Programmieren in C++ Einführung

Programmieren in C++ Einführung Programmieren in C++ Einführung Inhalt Übersicht über das Modul Einführung in C++ Struktur eines C++-Programms Präprozessor Globale und Modulvariablen Einfache Datentypen Automatische Typinferenz Konstanten

Mehr

Einführung in C ++ und die Objektorientierte Programierung

Einführung in C ++ und die Objektorientierte Programierung 1/38 Einführung in C ++ und die Objektorientierte Programierung Florian Adamsky, B. Sc. (PhD cand.) florian.adamsky@iem.thm.de http://florian.adamsky.it/ cbd Softwareentwicklung im WS 2014/15 2/38 Outline

Mehr

C++ - Objektorientierte Programmierung Konstante und statische Elemente

C++ - Objektorientierte Programmierung Konstante und statische Elemente C++ - Objektorientierte Programmierung Konstante und statische Elemente hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja

Mehr

Einleitung. Informationsquellen: - Webseite zur Vorlesung, Abschnitt Informationen zu C und C++ Kurzeinführung in C/C++

Einleitung. Informationsquellen: - Webseite zur Vorlesung, Abschnitt Informationen zu C und C++ Kurzeinführung in C/C++ Informationsquellen: - Webseite zur Vorlesung, Abschnitt Informationen zu C und C++ 1 Einleitung Vorteile von Java: gut strukturiert mit hohem Funktionsumfang (mächtige Standardbibliothek) weitestgehend

Mehr

Programmentwicklung mit C++ (unter Unix/Linux)

Programmentwicklung mit C++ (unter Unix/Linux) Programmentwicklung mit C++ (unter Unix/Linux) Erste Schritte Der gcc - Compiler & Linker Organisation des Source-Codes & Libraries Automatische Programmgenerierung: Make Birgit Möller & Denis Williams

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

Thema heute: Vererbung und Klassenhierarchien. Abgeleitete Klassen. Vererbung von Daten und Funktionen. Virtuelle Funktionen

Thema heute: Vererbung und Klassenhierarchien. Abgeleitete Klassen. Vererbung von Daten und Funktionen. Virtuelle Funktionen 1 Thema heute: Vererbung und Klassenhierarchien Abgeleitete Klassen Vererbung von Daten und Funktionen Virtuelle Funktionen 2 Vererbung oft besitzen verschiedene Datentypen einen gemeinsamen Kern Beispiel:

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

Pass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl

Pass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl Funktionen Zusammenfassung von Befehlssequenzen als aufrufbare/wiederverwendbare Funktionen in einem Programmblock mit festgelegter Schnittstelle (Signatur) Derartige prozedurale Programmierung erlaubt

Mehr

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

Programmieren II Abstrakte Klassen / Virtuelle Methoden. Programmieren II Abstrakte Klassen / Virtuelle Methoden

Programmieren II Abstrakte Klassen / Virtuelle Methoden. Programmieren II Abstrakte Klassen / Virtuelle Methoden Einleitende Bemerkungen Einleitende Bemerkungen Aspekte Aufbau von sinnvollen Klassenhierarchien Verwaltung von Objekten unterschiedlichen Typs Mitarbeiter Besonderheiten der Anwendung jeder Angehörige

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

Praktikum Betriebssysteme 1. Aufgabe (1)

Praktikum Betriebssysteme 1. Aufgabe (1) FG TECHNISCHE INFORMATIK U BS 041 01 TH 09 Praktikum Betriebssysteme 1. Aufgabe (1) Es wird ein unter LINUX lauffähiges C++-Programm ptab, mit dem Informationen über die Partitionierung von Festplatten

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

C++ - Einführung in die Programmiersprache Zeiger, Referenzen und Strukturen. Leibniz Universität IT Services Anja Aue

C++ - Einführung in die Programmiersprache Zeiger, Referenzen und Strukturen. Leibniz Universität IT Services Anja Aue C++ - Einführung in die Programmiersprache Zeiger, Referenzen und Strukturen Leibniz Universität IT Services Anja Aue Zeiger (Pointer) Verweis auf eine Speicherstelle. Speicherung einer Speicheradresse.

Mehr

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Martin Unold INFORMATIK. Geoinformatik und Vermessung Zusammenfassung Was ist eine Programmiersprache? Eine Sprache, die Formal eindeutig in Maschinenbefehle übersetzbar ist Für Menschen einfacher verständlich ist als Bytecode Zur Formulierung von Datenstrukturen

Mehr

Crashkurs C++ - Teil 1

Crashkurs C++ - Teil 1 Crashkurs C++ - Teil 1 Intro Speicherverwaltung Variablen, Pointer, Referenzen Felder statische & dynamische Allozierung Birgit Möller & Denis Williams AG Bioinformatik & Mustererkennung Institut für Informatik

Mehr

Einführung in C++ mit Microsoft VS

Einführung in C++ mit Microsoft VS Einführung in C++ mit Microsoft VS Gliederung Allgemeines zu C++ und Unterschiede zu Java Header-Files Zeiger/Strukturen Namespaces Programmierstil Einführung in Microsoft VS Projekte und Solutions Debugger

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

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

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

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

Zum Abschluss wird gezeigt, wie aus einem C++ Quell-Programm ein ausführbares Programm erzeugt wird. 1. Installation von NetBeans...

Zum Abschluss wird gezeigt, wie aus einem C++ Quell-Programm ein ausführbares Programm erzeugt wird. 1. Installation von NetBeans... Erste Schritte Dieser Teil der Veranstaltung gibt einen ersten Eindruck der Programmierung mit C++. Es wird ein erstes Gefühl von Programmiersprachen vermittelt, ohne auf die gezeigten Bestandteile genau

Mehr

Software ubiquitärer Systeme 1. Übung

Software ubiquitärer Systeme 1. Übung Software ubiquitärer Systeme 1. Übung http://ess.cs.uni-.de/de/teaching/ss2015/sus Horst Schirmeier http://ess.cs.tu-.de/~hsc AG Eingebettete System Informatik 12, TU Dortmund Überblick Organisatorisches

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

Grundlagen von Python

Grundlagen von Python Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren

Mehr

II.1.1. Erste Schritte - 1 -

II.1.1. Erste Schritte - 1 - 1. Grundelemente der Programmierung 2. Objekte, Klassen und Methoden 3. Rekursion und dynamische Datenstrukturen 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.1.1. Erste Schritte - 1 - 1.

Mehr

Objektorientierte Programmierung mit C++ SS 2007

Objektorientierte Programmierung mit C++ SS 2007 Objektorientierte Programmierung mit C++ SS 2007 Andreas F. Borchert Universität Ulm 5. Juni 2007 Polymorphismus #include Function.h class Function { public: virtual ~Function() {}; virtual std::string

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

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

Kurzeinführung in C/C++ Informationsquellen: - Webseite zur Vorlesung, Abschnitt Informationen zu C und C++ Einleitung

Kurzeinführung in C/C++ Informationsquellen: - Webseite zur Vorlesung, Abschnitt Informationen zu C und C++ Einleitung Informationsquellen: - Webseite zur Vorlesung, Abschnitt Informationen zu C und C++ 1 Einleitung Vorteile von Java: gut strukturiert mit hohem Funktionsumfang (mächtige Standardbibliothek) weitestgehend

Mehr

Polymorphismus 179. Function.h. #include <string>

Polymorphismus 179. Function.h. #include <string> Polymorphismus 179 #include Function.h class Function { public: virtual ~Function() {}; virtual std::string get_name() const = 0; virtual double execute(double x) const = 0; }; // class Function

Mehr

Software ubiquitärer Systeme 1. Übung

Software ubiquitärer Systeme 1. Übung Software ubiquitärer Systeme 1. Übung http://ess.cs.unidortmund.de/de/teaching/ss2013/sus/index.html Christoph Borchert http://ess.cs.tu-dortmund.de/~chb AG Eingebettete Systemsoftware Informatik 12, TU

Mehr

Überblick. Peter Sobe 1

Überblick. Peter Sobe 1 Überblick 1. Einführung C++ / Entwicklung/ Sprachfamilie 2. Nicht objektorientierte Erweiterungen von C 3. Grundlagen des Typkonzepts von C++ 4. Ziele der Objektorientierung 5. Objekt und Klasse, Elementfunktionen

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

Codingstandard. Softwareentwicklung Praktikum Stand: 27.02.2008

Codingstandard. Softwareentwicklung Praktikum Stand: 27.02.2008 I. Einleitung II. Codingstandard Softwareentwicklung Praktikum Stand: 27.02.2008 Wie in der Vorlesung schon ausgeführt wurde, ist die Lesbarkeit und Wartbarkeit des Sourcecodes ein sehr wichtiges Kriterium

Mehr

Funktionen und Parameter

Funktionen und Parameter Funktionen in C++ Funktionen und Parameter Wie in Java: Parameter sind lokale Variablen Argumente werden bei Aufruf zugewiesen Extras: Zeiger-Parameter für alle Typen: als Rückgabewerte um große Kopien

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 02: Klassen & Objekte Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Klassen Grundstruktur einer Java-Klasse Eigenschaften (Attribute) Variablen

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

8. Referenzen und Zeiger

8. Referenzen und Zeiger 8. Referenzen und Zeiger Motivation Variable werden in C++ an speziellen Positionen im Speicher abgelegt. An jeder Position befindet sich 1 Byte. Sie sind durchnummeriert beginnend bei 0. Diese Positionen

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

Datenbankanwendungsprogrammierung Crashkurs Java

Datenbankanwendungsprogrammierung Crashkurs Java Datenbankanwendungsprogrammierung Crashkurs Java Denny Priebe Datenbankanwendungsprogrammierung p. Unterschiede zu C, C++ typedefs, Präprozessor Strukturen, Unions globale Funktionen Mehrfachvererbung

Mehr

Programmierkurs C++ Kapitel 6 Module Seite 1

Programmierkurs C++ Kapitel 6 Module Seite 1 Programmierkurs C++ Kapitel 6 Module Seite 1 (Quell-)Module Unter einem Modul versteht man einen Teil des Programms, der eigenständig übersetzt werden kann. In der Syntax der Programmiersprachen werden

Mehr

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

Praxisorientierte Einführung in C++ Lektion: Die Compiler-Chain (Vom Quellcode zum ausführbaren Programm) Praxisorientierte Einführung in C++ Lektion: "Die Compiler-Chain (Vom Quellcode zum ausführbaren Programm)" Christof Elbrechter Neuroinformatics Group, CITEC April 24, 2014 Christof Elbrechter Praxisorientierte

Mehr

Der C++ Crashkurs v1.0

Der C++ Crashkurs v1.0 Der C++ Crashkurs v1.0 Daniel Stöckel, M. Sc. October 14, 2013 1 Grundlegendes 1.1 Das erste Programm Wir beginnen mit einem einfachen Hello world Programm. Listing 1: hello world.cpp // Einbinden der

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

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 5-1 Übung Schreiben Sie ein Programm, das die Zahl π durch π = 4 4 4 4 4 4 + + +... 3 5 7 9 11

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

Einführung in C++ Martin Holzer. April/Mai 2005. Lehrstuhl für Algorithmik I. Universität Karlsruhe (TH) Institut für Theoretische Informatik

Einführung in C++ Martin Holzer. April/Mai 2005. Lehrstuhl für Algorithmik I. Universität Karlsruhe (TH) Institut für Theoretische Informatik Einführung in C++ Martin Holzer April/Mai 2005 Einleitung Überblick Zielstellung Vermittlung grundlegender Kenntnisse in C++ Gegenüberstellung von Java und C++ Voraussetzung: Kenntnis allgemeiner Programmierkonzepte:

Mehr

C++ Klassen, Vererbung. Philipp Lucas. Sebastian Hack. Wintersemester 2008/09. saarland.

C++ Klassen, Vererbung. Philipp Lucas. Sebastian Hack. Wintersemester 2008/09. saarland. C++ Klassen, Vererbung Philipp Lucas phlucas@cs.uni-sb.de Sebastian Hack hack@cs.uni-sb.de Wintersemester 2008/09 saarland university computer science 1 Inhalt Klassen in C++ Sichtbarkeit Erzeugen von

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

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

Klausur: Grundlagen der Informatik I, am 06. Februar 2009 Gruppe: A Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Klausur: Grundlagen der Informatik I, am 06. Februar 2009 Gruppe: A Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr. Seite 1 von 9 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 12 Pkt.) Was liefert

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

Primitive Datentypen

Primitive Datentypen Primitive Datentypen 2 Arten von Datentypen: primitive Datentypen (heute) Objekte (später) Java ist streng typisiert, d.h. für jede Variable muß angegeben werden was für eine Art von Wert sie aufnimmt.

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

Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften

Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften Programmiertechnik Teil 4 C++ Funktionen: Prototypen Overloading Parameter C++ Funktionen: Eigenschaften Funktionen (Unterprogramme, Prozeduren) fassen Folgen von Anweisungen zusammen, die immer wieder

Mehr

Praxis der Programmierung

Praxis der Programmierung Template-Funktionen und -Klassen Einführung in Java Institut für Informatik und Computational Science Universität Potsdam Henning Bordihn 1 Template-Funktionen 2 Minimumfunktion und offene Typen Aufruf

Mehr

Programmieren 3 C++ Prof. Peter Sommerlad Fredy Ulmer

Programmieren 3 C++ Prof. Peter Sommerlad Fredy Ulmer Programmieren 3 C++ Prof. Peter Sommerlad Fredy Ulmer Was Sie erwartet: Modernes C++ anwenden o ISO 14882 ist Norm für C++! o kein schlechteres Java, sondern mächtiger Moderne Standardbibliotheken anwenden

Mehr

Objekt-Orientierte Programmierung

Objekt-Orientierte Programmierung Objekt-Orientierte Programmierung Ein OO-Programm modelliert eine Anwendung als eine Welt von Objekten, die miteinander in Beziehung stehen ( später). Ein Objekt kann andere Objekte erzeugen. Ein Objekt

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

SimpleStat mit Methoden

SimpleStat mit Methoden SimpleStat mit Methoden Als Ausgangspunkt nehmen wir folgende Definition (Version 1) von SimpleStat: double sum2; -Quadrate Dieser Objekttyp verfügt über keine Methoden und alle Datenattribute sind public.

Mehr

Klausur: Informatik, am 11. Juli 2013 Gruppe: B Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Klausur: Informatik, am 11. Juli 2013 Gruppe: B Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte: Seite 1 von 10 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 6 Pkt.) a) Geben

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

Unterlagen. CPP-Uebungen-08/

Unterlagen.  CPP-Uebungen-08/ Unterlagen http://projects.eml.org/bcb/people/ralph/ CPP-Uebungen-08/ http://www.katjawegner.de/lectures.html Kommentare in C++ #include /* Dies ist ein langer Kommentar, der über zwei Zeilen

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

Klausur: Grundlagen der Informatik I, am 05. Februar 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Klausur: Grundlagen der Informatik I, am 05. Februar 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte: Seite 1 von 8 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 10 Pkt.) a) Geben

Mehr

Berner Fachhochschule Hochschule für Technik und Informatik HTI. Kapitel 1. Einstieg in Java. Dr. Elham Firouzi 06.09.10 1

Berner Fachhochschule Hochschule für Technik und Informatik HTI. Kapitel 1. Einstieg in Java. Dr. Elham Firouzi 06.09.10 1 Kapitel 1 Einstieg in Java Dr. Elham Firouzi 06.09.10 1 1 : Einstieg in Java Einleitung Ein erstes Beispiel Berner Fachhochschule Entwicklung von Java-Programmen Applikationen Applets Vor und Nachteile

Mehr

Funktionales C++ zum Ersten

Funktionales C++ zum Ersten Funktionales C++ zum Ersten WiMa-Praktikum 1, Teil C++, Tag 1 Christoph Ott, Büro: Helmholtzstr.18, E22 Tel.: 50-23575, Mail: christoph.ott@uni-ulm.de Institut für Angewandte Informationsverarbeitung 26.08.08

Mehr

Einführung in die STL

Einführung in die STL 1/29 in die STL Florian Adamsky, B. Sc. (PhD cand.) florian.adamsky@iem.thm.de http://florian.adamsky.it/ cbd Softwareentwicklung im WS 2014/15 2/29 Outline 1 3/29 Inhaltsverzeichnis 1 4/29 Typisierung

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren Speicherverwaltung und Parameterübergabe Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Gültigkeitsbereich von

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

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