C++ Standard Template Library Ausgewählte Kapitel aus Softwaretechnologie

Größe: px
Ab Seite anzeigen:

Download "C++ Standard Template Library Ausgewählte Kapitel aus Softwaretechnologie"

Transkript

1 C++ Standard Template Library Ausgewählte Kapitel aus Softwaretechnologie Robert Fritz C++ Standard Template Library (STL) p.1/41

2 Inhalt Einführung Generisches Programmieren Aufbau der C++ Standard Template Library Container (Template Klassen) Sequenzen (vector, list,...) Adaptierte Sequenzen (stack, queue,...) Assoziative Container (set, map,...) Iteratoren Algorithmen (Template Funktionen) C++ Standard Template Library (STL) p.2/41

3 Einführung Schöpfer der STL: Alex Stepanov und Meng Lee (Forschungsprojekt über generische Algorithmen. Vorschläge wurden weitesgehend vom ANSI-Komitee übernommen wurden) Verallgemeinerung von Datenstrukturen und Algorithmen C++ Templates: allgemeines Template<T>, T ist ein verallgemeinerter Parameter Typ Bei der Instantiierung wird der allgemeine Typ durch speziellen Typ ersetzt - Objekte, Pointer, Standardtypen (int, char,...) Änderungen leicht möglich Algorithmen sind globale Funktionen (OOP?) C++ stellt zwei Arten von Templates zur Verfügung: Template Klassen - Container (Listen, Sets, Vektoren,...) Template Funktionen - Algorithmen (Sortier -und Suchfunktionen,...) C++ Standard Template Library (STL) p.3/41

4 Generisches Programmieren Algorithmen werden mit minimalem Wissen über die Datenabstraktion geschrieben und vice versa. Verallgemeinerung von Algorithmen ohne die Effizient zu verlieren. Gleiche Effizienz von spezialisiertem Algorithmus und originalem Algorithmus. Verschiedene Verallgemeinerungsstufen (automatische Auswahl des effizientesten Algorithmus) Mehrere Algorithmen für den selben Zweck auf dem selben Abstraktionslevel. C++ Standard Template Library (STL) p.4/41

5 Verwendung von Template Klassen 1/2 Deklaration und Definition der Template Klassen müssen in einer Header Datei erfolgen. template <class T> class Stack { public: Stack(int = 10) ; ~Stack() { delete [] stackptr ; } int push(const T&); int pop(t&) ; int isempty()const { return top == -1 ; } int isfull() const { return top == size - 1 ; } private: int size ; // number of elements on Stack. int top ; T* stackptr ; }; C++ Standard Template Library (STL) p.5/41

6 Verwendung von Template Klassen 2/2 #include <iostream> #include "stack.h" using namespace std ; void main() { typedef Stack<float> FloatStack ; typedef Stack<int> IntStack ; FloatStack fs(5) ; float f = 1.1 ; cout << "Pushing elements onto fs" << endl ; while (fs.push(f)) { cout << f << ; f += 1.1 ; } cout << endl << "Stack Full." << endl } //... C++ Standard Template Library (STL) p.6/41

7 Verwendung von Template Funktionen template <class T> T max(t a, T b) { return a > b? a : b ; } void main() { } cout << "max(10, 15) = " << max(10, 15) << endl ; cout << "max( k, s ) = " << max( k, s ) << endl ; cout << "max(10.1, 15.2) = " << max(10.1, 15.2) << endl ; C++ Standard Template Library (STL) p.7/41

8 C++ Standard Template Library Grundproblem: n verschiedene Datentypen (int, double, void *,...) m verschiedene Container (vector<>, list<>,...) k Algorithmen (sort, unique,...) Herkömmliche Programmierung: n*m*k verschiedene Implementierungen Templates erlauben, die Algorithmen für beliebige Typen zu implementieren. Voraussetzung ist, dass alle Container eine gewisse Minimalschnittstelle unterstützen. Diese Minimalanforderungen an die Container sind in verschiedene Gruppen gegliedert. Nicht alle Algorithmen arbeiten mit allen Container zusammen. C++ Standard Template Library (STL) p.8/41

9 C++ Standard Template Library Die Standard Template Library ist Bestandteil der C++ Standardbibliothek. Alle Container und Algorithmen sind im Standard Namespace definiert. using namspace std; oder std::vector<int> vec; C++ Standard Template Library (STL) p.9/41

10 Allgemeine Ziele der STL Generisch Keine Festlegung auf konkrete Typen Effizient Nicht langsamer als handgeschriebener Code Vollständig Behandelte Aspekte werden vollständig abgedeckt Primitiv Keine Bündelung unterschiedlicher Aspekte Typsicher Erhalt der statischen Typisierung Erweiterbar Applikationsspezifische Spezialisierung mit vertretbarem Aufwand C++ Standard Template Library (STL) p.10/41

11 STL: Beziehungen zwischen den Konzepten C++ Standard Template Library (STL) p.11/41

12 STL Iteratoren Iteratoren sind fundamental, um Container und Algorithmen verwenden zu können Traversierung von Containern nur mit Iteratoren möglich Jeder Container stellt je nach Datenstruktur die geeigneten Iteratoren bereit Vorwärtsiteratoren, Bidirektionale Iteratoren,... Iterator: Verallgemeinerung eines Pointers *iter;... Iteratoren halten bestimmte Werte Ein Paar von Iteratoren kann einen Bereich von Werten abdecken begin(); end(); Pointerarithmetik ist übertragbar auf Iteratoren iter++, iter += 5 v.end kann nicht dereferenziert werden, enthält kein Element C++ Standard Template Library (STL) p.12/41

13 Pointer: STL Iteratoren: Verallgemeinerung int* find(int* array, int n, int x) { int* p = array; for (int i = 0; i < n; i++) { if (*p == x) return p; // gefunden p++; } return 0; // nicht gefunden } Iterator: template<typename T, typename P> P find(p first, P past_end, T x) { while (first!= past_end && *first!= x) first++; return first; // Ergebnis } C++ Standard Template Library (STL) p.13/41

14 STL Iteratoren: Input Iterator Nur lesender Zugriff: x = *iter; Nächstes Element: iter++; ++iter; Vergleichen: iter1 == iter2; iter1!= iter2 Erzeugen: Copy-Konstruktor, Assignment-Operator Beispiel: template <class InputIterator, class T> InputIterator find (InputIterator first, InputIterator last, const T& value) { while (first!= last && *first!= value) ++first; return first; } C++ Standard Template Library (STL) p.14/41

15 STL Iteratoren: Output Iterator Nur schreibender Zurgriff: *iter = x Vergleichsoperator ist nicht implementiert Lesender Zugriff ist nicht möglich Beispiel: template <class InputIterator, class OutputIterator> OutputIterator copy (InputIterator first, InputIterator last, OutputIterator result) { while (first!= last) *result++ = *first++; return result; } C++ Standard Template Library (STL) p.15/41

16 STL Iteratoren: Kategorien Vorwärts Iterator: Verschmelzung von Input und Output Iterator Lesender Zugriff: x = *iter; Schreibender Zugriff: *iter = x; Bidirektionaler Iterator: Wie Vorwärts Iterator Nächstes Element vorwärts: iter++; ++iter; Nächstes Element rückwärts: iter ; iter; C++ Standard Template Library (STL) p.16/41

17 STL Iteratoren: Kategorien Random Access Iterator (vector, deque): Wie bidirektionaler Iterator Wahlfreier Zugriff: iter[]; Nächstes Element: iter += n; iter -= n; Vergleiche: iter1 < iter2,... C++ Standard Template Library (STL) p.17/41

18 STL Iteratoren: Beispielimplementierung template <class Container> class back_insert_iterator { protected: Container* container; public: typedef Container typedef void container_type; value_type; explicit back_insert_iterator(container& x) : container(&x) {} }; back_insert_iterator<container>& operator=(const typename Container::value_type& value) { container->push_back(value); return *this; } back_insert_iterator<container>& operator*() { return *this; } back_insert_iterator<container>& operator++(); //... C++ Standard Template Library (STL) p.18/41

19 STL Funktionen Bestimmte Algorithmen akzeptieren Funktionen als Argumente. Beispiel std::for_each(): void printelement(int value) { std::cout << "The list contains " << value << std::endl; } int main() { std::list<int> alist;... std::for_each(alist.begin(), alist.end(), printelement); } C++ Standard Template Library (STL) p.19/41

20 STL Function Objects operator()() ist als Member Funktion implementiert Wird ein Function Object benutzt wird der function call operator aufgerufen Beispiel std::find_if(): class biggerthan { public: const int testvalue; biggerthan(int x) : testvalue(x) { } }; bool operator()(int val) const { return val > testvalue; } list<int>::iterator firstbig = find_if(alist.begin(), alist.end(), biggerthan(12)); C++ Standard Template Library (STL) p.20/41

21 STL Container STL bietet Container-Datenstrukturen an Container können verschiedener Typen halten: fundamentale Typen (int, char,...) Pointer benutzerdefinierte Datentypen Container können keine Referenzen halten Schnittstellen weitestgehend vereinheitlicht Es werden folgende Datenstrukturen angeboten Sequenzen (vector, deque, list, slist, bit vector) Adaptierte Sequenzen (stack, queue, priority queue) Assoziative Container (set, map, multiset, multimap) C++ Standard Template Library (STL) p.21/41

22 Sequence Container Elemente sind strikt linear angeordnet Unterstützten Einfügen und Löschen von Elementen Typen: Front Insertion Sequence Back Insertion Sequence Front und Back Insertion Sequence C++ Standard Template Library (STL) p.22/41

23 Assoziative Container Unterstützten effizientes Auffinden von Elementen über Keys Unterstützten Einfügen und Löschen von Elementen Elemente können nicht an einer bestimmten Position eingefügt werden Key ist entweder das Element selbst (set) oder ein ein spezieller Wert des eingefügten Elements Keys dürfen nicht verändert werden Typen: Simple Associative Container Pair Associative Container Sorted Associative Container Unique Associative Container Multiple Associative Container... C++ Standard Template Library (STL) p.23/41

24 STL Container: vector Sequentieller Container Verallgemeinerung eines gewöhnlichen C Arrays Indizierte Datenstruktur, Zugriff mittels operator[] möglich Unterschiede zu normalen Arrays: Größe des Vektors ändert sich dynamisch Neue Elemente können überall eingefügt werden (effektiv jedoch nur am Ende, im schlimmsten Fall müssen alle Elemente verschoben werden - vergleiche deque) Ein Vektor weiß mehr über sich als ein normales Array: Größe potentielle Größe Wieviele Elemente er aufnehmen kann ohne neuen Speicher allokieren zu müssen Einfügen in einen Vektor ist C++ Standard Template Library (STL) p.24/41

25 STL Container: vector Operationen Copy Konstruktor muss definiert sein Generische Algorithmen verwenden Operatoren: operator==(), operator<(), operator=() Initialisierung vector<int> vec_one(10,0); Initialisierung durch Zuweisung: vector<int> vec_two(vec_two); Initialisierung durch Elemente aus anderen Containern vector<int> vec(alist.begin(), alist.end()); Zuweisung durch assign() vec.assign(alist.begin(), alist.end()); vec.assign(3, 7);... C++ Standard Template Library (STL) p.25/41

26 STL Container: vector Typen Type value type const iterator reverse iterator const reverse iterator reference const reference pointer const pointer size type difference type allocator type Definition The type of the elements maintained by the vector. An iterator that does not allow modification of the underlying sequence. An iterator that moves in a backward direction. A combination constant and reverse iterator. A reference to an underlying element. A reference to an underlying element that will not permit the element to be modified. A pointer to an underlying element. A constant pointer to an underlying element. An unsigned integer type, used to refer to the size of containers. A signed integer type, used to describe distances between iterators. The type of allocator used to manage memory for the vector. C++ Standard Template Library (STL) p.26/41

27 STL Container: vector Member Funktionen 1/2 Indizieren eines Vektors vec[1] = 17; cout << vec[1] << endl; Größenabfragen size() - Anzahl der Elemente capacity() - reservierter Speicher max_size() - maximale Größe empty() - effizienter als size() zu 0 zu vergleichen Größenänderungen vec.reserve(20); vec.resize(12, 0); C++ Standard Template Library (STL) p.27/41

28 STL Container: vector Member Funktionen 2/2 Einfügen und Löschen von Elementen: Einfügen kann in schlechtesten Fall O(n) Zeit benötigen vec.push_back(21) - sehr effizient, wenn genügend Speicher reserviert ist vec.pop_back() insert: vector<int>::iterator pos = find(v.begin(), v.end(), 7); // then insert the 12 before the 7 v.insert(pos, 12); v.insert(pos, 6, 14); // insert six copies of 14 erase: v.erase(where); v.erase(where, v.end()); C++ Standard Template Library (STL) p.28/41

29 list: Bidirektionale Iteratoren Doppelt verlinkt Liste ist nicht unbedingt geordnet Weitere Sequenzen Auf Elemente kann nicht über einen Index zugegriffen werden Einfügen und Löschen verursacht konstante Kosten slist: Nur vorwärts Iteratoren Einfach verlinkte Liste Kosten wie list deque (Doppelschlange): Ähnlich wie vector Auf Elemente kann über Index zugegriffen werden operator[] Einfügen am Anfang und am Ende in konstanter Zeit, ansonsten in lineare Zeit C++ Standard Template Library (STL) p.29/41

30 Verfügen über keine Iteratoren. stack: LIFO Adaptierte Sequenzen Memeber Funktionen: empty(), size(), top(), push(newelement), pop() vector kann auch als Stack verwendet werden queue: FIFO Member Funktionen: empty(), size(),front(),back(), push(newelement), pop() priority queue: Oberstes Element ist immmer das größte Element C++ Standard Template Library (STL) p.30/41

31 STL Container: set Sammlung von Objekten (jedes Objekt kommt nur einmal vor) set ist immer geordnet (Objekte müssen operator<() implementiert haben) Optimiert für Einfüge- und Löschoperationen und Suchoperationen Instantiierung: std::set<int> set_one; std::set<int, std::greater<int> > set_two; Einfügen nur mit insert: std::set<int> set_one; std::set<int, std::greater<int> > set_two; C++ Standard Template Library (STL) p.31/41

32 STL Container: Mengenoperationen auf set Subset Test: includes(a.begin(), a.end(), b.begin(), b.end()) set_union() set_intersection() set_difference() set_symmetric_difference() C++ Standard Template Library (STL) p.32/41

33 Weitere Assoziative Container set map multiset multimap hash set hash map hash multiset hash multimap hash (Funktion) C++ Standard Template Library (STL) p.33/41

34 Non-mutating algorithms Mutating algorithms Algorithmen for each: Wendet eine Funktion auf alle Elemente an: template <class Arg> class out_times_x : private unary_function<arg,void> { private: Arg multiplier; public: out_times_x(const Arg& x) : multiplier(x) { } void operator()(arg& x) { cout << x * multiplier << " " << endl; } }; for_each(v.begin(), v.end(), f2); C++ Standard Template Library (STL) p.34/41

35 Non-mutuating: find, find if find: list<int>::iterator result = find(l.begin(), L.end(), 7); find if: struct isleapyear { bool operator()(unsigned int year) const { if (0 == year % 400) return true; if (0 == year % 100) return false; if (0 == year % 4) return true; return false; } }; list<int>::iterator firstleap = find_if(alist.begin(), alist.end(), isleapyear()); C++ Standard Template Library (STL) p.35/41

36 Non-mutuating: adjacent find, find first of adjacent if: findet nebeneinander liegende Elemente: int A[] = {1, 2, 3, 3, 4, 6, 5, 7, 8}; const int N = sizeof(a) / sizeof(int); const int* p = adjacent_find(a, A + N, greater<int>()); const int* q = adjacent_find(a, A + N); find first of: const char* WS = "\t\n "; const int n_ws = strlen(ws); char* s = "This sentence contains five words."; char* end = find_first_of(s, s + strlen(s), WS, WS + n_ws); WS, WS + n_ws); printf("first word of s: %.*s\n", end - s, s); C++ Standard Template Library (STL) p.36/41

37 Weiter Non-mutating Algorithmen count count_if mismatch equal search: findet die erste Subsequenzen: search(a.begin(), a.end(), b.begin(), b.end()); search_n: int* result = search_n(first, last, count, val); find_end: findet die letzte Subsequenzen C++ Standard Template Library (STL) p.37/41

38 copy: Mutating Algorithmen copy(v.begin(), v.end(), ostream_iterator<int>(cout, )); copy n: copy(v.begin(), 3, l.begin()) copy backward: copy_backward(x.begin(), X.begin() + 3, X.end()); swap, iter swap, swap ranges: swap(x, y); swap_ranges(v1.begin(), V1.end(), V2.begin()); transform: transform(v1.begin(), V1.end(), V2.begin(), V3.begin(), plus<int>()); V1: V2: V3: C++ Standard Template Library (STL) p.38/41

39 Weitere: Mutating Algorithmen fill, fill n generate, generate n remove, remove if, remove copy, remove copy if unique, unique copy reverse, reverse copy rotate, rotate copy random shuffle, random sample, random sample n C++ Standard Template Library (STL) p.39/41

40 Sortieren: Weitere Algorithmen sort, stable sort, partial sort, partial sort copy is sorted nth element Binary search (sortierte Container): lower bound, upper bound, equal range, binary search Mergen: merge: zwei sortierte Container zu einem sortierten inplace merge Mengen Operationen: includes, set union, set intersection, set difference, set symmetric difference C++ Standard Template Library (STL) p.40/41

41 Referenzen leif/foundation/html/stdlibug/booktoc.html C++ Standard Template Library (STL) p.41/41

Einführung in die STL anhand eines ausgewählten Beispiels

Einführung in die STL anhand eines ausgewählten Beispiels Einführung in die STL anhand eines ausgewählten Beispiels Frank M. Thiesing http://home.t-online.de/home/ frank.thiesing/stl/stl-folien.pdf Inhalt Überblick über die C++ STL Container Iteratoren Algorithmen

Mehr

Programmierkurs. SoSe 2013. Markus Geveler Inst. f. Applied Mathematics, TU Dortmund. markus.geveler@math.tu-dortmund.de

Programmierkurs. SoSe 2013. Markus Geveler Inst. f. Applied Mathematics, TU Dortmund. markus.geveler@math.tu-dortmund.de Programmierkurs SoSe 2013 Markus Geveler Inst. f. Applied Mathematics, TU Dortmund markus.geveler@math.tu-dortmund.de Lesson 8 Was machen wir heute hier? mehr zu pointern und Speicher mehr zu pointern

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

Programmierung in C/C++

Programmierung in C/C++ Programmierung in C/C++ Philipp Lucas phlucas@cs.uni-sb.de 26. 01. 2009 Philipp Lucas, CDL, UdS 1 Heute Templates STL Philipp Lucas, CDL, UdS 2 Grundlagen In der Übung: IntArray für sicheren Zugriff auf

Mehr

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

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

Mehr

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

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.

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

Objektorientierte Programmierung mit C++ SS 2007

Objektorientierte Programmierung mit C++ SS 2007 Objektorientierte Programmierung mit C++ SS 2007 Andreas F. Borchert Universität Ulm 10. Juli 2007 Fortgeschrittene Template-Techniken C++ bietet eine Vielfalt weiterer Techniken für Templates: Templates

Mehr

Programmieren in C++ Arrays, Strings und Zeigerarithmetik

Programmieren in C++ Arrays, Strings und Zeigerarithmetik Programmieren in C++ Arrays, Strings und Zeigerarithmetik Inhalt Eindimensionale C-Arrays C-Strings und Strings (Mehrdimensionale C-Arrays) Arrays und Vektoren (C++) Unique Pointers (C++11) Zeigerarithmetik

Mehr

Java Einführung Collections

Java Einführung Collections Java Einführung Collections Inhalt dieser Einheit Behälterklassen, die in der Java API bereitgestellt werden Wiederholung Array Collections (Vector, List, Set) Map 2 Wiederholung Array a[0] a[1] a[2] a[3]...

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

Java Generics & Collections

Java Generics & Collections Java Praktikum Effizientes Programmieren (Sommersemester 2015) Dennis Reuling Agenda 1 2 3 1 / 30 Praktikum Effizientes Programmieren (Sommersemester 2015) Java Subtyping Teil 1 2 / 30 Praktikum Effizientes

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

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

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

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

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

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

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

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

Mehr

Einführung in C++ Operatoren überladen (Klassen)

Einführung in C++ Operatoren überladen (Klassen) Einführung in C++ Operatoren überladen (Klassen) Operatoren überladen Die Überladung von Operatoren ermöglicht es, vorhandene Operatoren (+,-,...) auch auf Objekte von Klassen anzuwenden. Die meisten der

Mehr

Angewandte Mathematik und Programmierung

Angewandte Mathematik und Programmierung Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens WS2013/14 Inhalt Übung(Aufklärung) Vererbung(wdh.) Initilisierung bei Vererbung

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

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

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

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

Mehr

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

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

Modul 122 VBA Scribt.docx

Modul 122 VBA Scribt.docx Modul 122 VBA-Scribt 1/5 1 Entwicklungsumgebung - ALT + F11 VBA-Entwicklungsumgebung öffnen 2 Prozeduren (Sub-Prozeduren) Eine Prozedur besteht aus folgenden Bestandteilen: [Private Public] Sub subname([byval

Mehr

C allgemein. C wurde unter und für Unix entwickelt. Vorläufer sind BCPL und B.

C allgemein. C wurde unter und für Unix entwickelt. Vorläufer sind BCPL und B. C-Crash-Kurs Eine kurze, keinesfalls erschöpfende Einführung in die Sprache C für Studierende, die eine strukturierte imperative Programmiersprache beherrschen. Die Vorstellung erfolgt am Beispiel von

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

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

AlDaBi Prak+kum WS 14/15 René Rahn

AlDaBi Prak+kum WS 14/15 René Rahn AlDaBi Prak+kum WS 14/15 René Rahn Basierend auf Ausarbeitung von David Weese 2010/11 Prak;kum h"p://www.mi.fu- berlin.de/w/abi/aldabiws14prak>kum Abgabe der Lösungen Abgabe per Subversion: Heute kurze

Mehr

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

Meeting C++ C++11 R-Value Referenzen Meeting C++ Detlef Wilkening http://www.wilkening-online.de 09.11.2012 Inhalt Motivation L-Values und R-Values R-Value Referenzen Move Semantik std::move Funktionen mit R-Value-Referenz Parametern Fazit

Mehr

Einführung in die C++ STL anhand eines ausgewählten Beispiels

Einführung in die C++ STL anhand eines ausgewählten Beispiels Einführung in die C++ STL anhand eines ausgewählten Beispiels Frank M. Thiesing 15.10.2001 http://home.t-online.de/home/frank.thiesing/stl/stl.html Foliensatz: http://home.t-online.de/home/frank.thiesing/stl/stl-folien.pdf

Mehr

Übung zur Vorlesung Programmieren in C

Übung zur Vorlesung Programmieren in C Übung zur Vorlesung Programmieren in C 6 Pointers Marvin Gülker Ruhruniversität Bochum Wintersemester 2015/2016 Marvin Gülker (Ruhruniversität Bochum) 6 Pointers Wintersemester 2015/2016 1 / 29 Gliederung

Mehr

Objektorientierte Programmierung

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

Mehr

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

Type Erasure in Java 5. Helmi Jouini Institut für Theoretische Informatik Universität Karlsruhe

Type Erasure in Java 5. Helmi Jouini Institut für Theoretische Informatik Universität Karlsruhe Type Erasure in Java 5 Helmi Jouini Institut für Theoretische Informatik Universität Karlsruhe Warum Generics? Containerklassen in Java 1.4 sind generisch nutzbar aber typunsicher. Public class LinkedList

Mehr

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik Informatik I WS 2012/13 Tutorium zur Vorlesung 1. Alexander Zietlow zietlow@informatik.uni-tuebingen.de Wilhelm-Schickard-Institut für Informatik Eberhard Karls Universität Tübingen 11.02.2013 1. 2. 1.

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

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

Objektorientierte Programmierung mit C++ SS 2007

Objektorientierte Programmierung mit C++ SS 2007 Objektorientierte Programmierung mit C++ SS 2007 Andreas F. Borchert Universität Ulm 3. Juli 2007 Ausnahmenbehandlungen #include #include OutOfMemory.C using namespace std; int main()

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

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

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

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

Mehr

Javakurs 2013 Objektorientierung

Javakurs 2013 Objektorientierung Javakurs 2013 Objektorientierung Objektorientierte Programmierung I Armelle Vérité 7 März 2013 Technische Universität Berlin This work is licensed under the Creative Commons Attribution-ShareAlike 3.0

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

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

Grundlagen der Informatik Generische Klassen

Grundlagen der Informatik Generische Klassen Grundlagen der Informatik Generische Klassen Generische Klassen, das Java-Collection-Framework und mehr Generische Programmierung Beobachtung: In vielen Problemstellungen hängt der grundsätzliche Aufbau

Mehr

Schnelles Prototyping (Rapid Application Development, RAD)

Schnelles Prototyping (Rapid Application Development, RAD) Schnelles Prototyping (Rapid Application Development, RAD) Prof. Dr. rer. nat. habil. Uwe Aßmann Lehrstuhl Softwaretechnologie Fakultät für Informatik TU Dresden Softwaretechnologie, Prof. Uwe Aßmann 2

Mehr

Generische Datenstrukturen

Generische Datenstrukturen Generische Datenstrukturen Prof. Dr. rer. nat. habil. Uwe Aßmann Lehrstuhl Softwaretechnologie Fakultät für Informatik TU Dresden Softwaretechnologie, Prof. Uwe Aßmann 1 2 Trends in der Softwareentwicklung

Mehr

Algorithmen und Datenstrukturen

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

Mehr

Selbststudium OOP5 21.10.2011 Programmieren 1 - H1103 Felix Rohrer

Selbststudium OOP5 21.10.2011 Programmieren 1 - H1103 Felix Rohrer Kapitel 4.1 bis 4.3 1. zu bearbeitende Aufgaben: 4.1 4.1: done 2. Was verstehen Sie unter einem "Java-Package"? Erweiterungen verschiedener Klassen welche in Java benutzt werden können. 3. Sie möchten

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

Einführung in die Programmierung mit C++

Einführung in die Programmierung mit C++ Seite 1 Einführung in die Programmierung mit C Teil IV - Weiterführende Themen 16. SIMD Programmierung Was bedeutet SIMD Seite SIMD Single-Instruction, Multiple-Data, also eine Instruktion, mehrere Daten

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

Technische Infor matik 2 C/C++-Kurs. Datenabstraktion (Klassen) 2005 AG Rechner netze 4.1

Technische Infor matik 2 C/C++-Kurs. Datenabstraktion (Klassen) 2005 AG Rechner netze 4.1 Technische Infor matik 2 C/C++-Kurs Datenabstraktion (Klassen) 2005 AG Rechner netze 4.1 Overloading Überladene Funktionen Auswahl einer Funktion anhand ihrer Signatur Signatur : Name + Parameter Rückgabe-Wer

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

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

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008 PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 1 PIWIN I Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I Vorlesung 3 SWS WS 2007/2008 FB Informatik

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

AlDaBi Praktikum WS 15/16 Hannes Hauswedell, Johannes Röhr, Jongkyu Kim

AlDaBi Praktikum WS 15/16 Hannes Hauswedell, Johannes Röhr, Jongkyu Kim AlDaBi Praktikum WS 15/16 Hannes Hauswedell, Johannes Röhr, Jongkyu Kim Basierend auf Ausarbeitung von Rene Rahn & David Weese 2010/11 Praktikum http://www.mi.fu-berlin.de/w/abi/aldabiws15praktikum Literatur

Mehr

Fortgeschrittene C++-Programmierung

Fortgeschrittene C++-Programmierung Vorlesung: "Fortgeschrittene C++-Programmierung" 16.04.2009 Fortgeschrittene C++-Programmierung SS 2009 Teil 1 Sandro Andreotti - andreott@inf.fu-berlin.de 1 Vorlesung: "Fortgeschrittene C++-Programmierung"

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

HEUTE. Datenstrukturen im Computer. Datenstrukturen. Rekursion. Feedback Evaluation. abstrakte Datenstrukturen

HEUTE. Datenstrukturen im Computer. Datenstrukturen. Rekursion. Feedback Evaluation. abstrakte Datenstrukturen 9.2.5 HUT 9.2.5 3 atenstrukturen im omputer atenstrukturen ie beiden fundamentalen atenstrukturen in der Praxis sind rray und Liste Rekursion Feedback valuation rray Zugriff: schnell Umordnung: langsam

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

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

12) Generische Datenstrukturen

12) Generische Datenstrukturen 12) Generische Datenstrukturen Prof. Dr. rer. nat. habil. Uwe Aßmann Lehrstuhl Softwaretechnologie Fakultät für Informatik TU Dresden Version 09-0.2, 24.11.08 Softwaretechnologie, Prof. Uwe Aßmann 1 mpfohlene

Mehr

1 Polymorphie (Vielgestaltigkeit)

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

Mehr

Grundlagen. Die Komponenten eines C Programms. Das erste Programm

Grundlagen. Die Komponenten eines C Programms. Das erste Programm Grundlagen 1. Die Komponenten eines C Programms 2. Ein Programm erzeugen und übersetzen 3. Variablen Deklarieren und Werte zuweisen 4. Zahlen eingeben mit der Tastatur 5. Arithmetische Ausdrücke und Berechnungen

Mehr

Einführung in die Programmierung (EPR)

Einführung in die Programmierung (EPR) Goethe-Center for Scientific Computing (G-CSC) Goethe-Universität Frankfurt am Main Einführung in die Programmierung (EPR) (Übung, Wintersemester 2014/2015) Dr. S. Reiter, M. Rupp, Dr. A. Vogel, Dr. K.

Mehr

Distributed Computing Group

Distributed Computing Group JAVA TUTORIAL Distributed Computing Group Vernetzte Systeme - SS 06 Übersicht Warum Java? Interoperabilität grosse und gut dokumentierte Library weit verbreitet Syntax sehr nahe an C Erfahrung: Java wird

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

equals und hashcode SortedSet NavigableSet Assoziative Container Programmieren II Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2010 1 / 32

equals und hashcode SortedSet NavigableSet Assoziative Container Programmieren II Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2010 1 / 32 Programmieren II Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2010 1 / 32 equals und hashcode SortedSet NavigableSet Assoziative Container 2 / 32 HashSet mit eigener Klasse Wie kann man einen

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

C++, STL und Qt. C++, STL und Qt. Dipl.Ing. Christoph Stockmayer, Schwaig, sto@stockmayer.de

C++, STL und Qt. C++, STL und Qt. Dipl.Ing. Christoph Stockmayer, Schwaig, sto@stockmayer.de C++, STL und Qt Objektorientiertes Programmieren mit C++, Benutzen der STL-Standard-Bibliothek und graphisches User-Interface Qt Dipl.Ing. Christoph Stockmayer, Schwaig, sto@stockmayer.de 1. Einleitung

Mehr

Robotersteuerung. VL Mikrorechentechnik 2. SS 2013 Professur für Prozessleittechnik

Robotersteuerung. VL Mikrorechentechnik 2. SS 2013 Professur für Prozessleittechnik Robotersteuerung VL Mikrorechentechnik 2 SS 2013 Professur für Prozessleittechnik Übersicht Design eines endlichen Zustandsautomaten für die Steuerung eines Roboters C++ Konzepte: shared memory boost::interprocess

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

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

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

Mehr

Name: Klausur Programmierkonzepte SS 2011

Name: Klausur Programmierkonzepte SS 2011 Prof. Dr.-Ing. Hartmut Helmke Ostfalia Hochschule für angewandte Wissenschaften Fakultät für Informatik Matrikelnummer: Punktzahl: Ergebnis: Freiversuch F1 F2 F3 Klausur im SS 2011: Programmierkonzepte

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

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) Wintersemester 2007/08 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät für Informatik Lehrstuhl

Mehr

2.0. Jens Weller (jensweller@gmx.de) Joel de Guzman (joel@boost-consulting.com) Hartmut Kaiser (hartmut.kaiser@gmail.com)

2.0. Jens Weller (jensweller@gmx.de) Joel de Guzman (joel@boost-consulting.com) Hartmut Kaiser (hartmut.kaiser@gmail.com) 2.0 Jens Weller (jensweller@gmx.de) Joel de Guzman (joel@boost-consulting.com) Hartmut Kaiser (hartmut.kaiser@gmail.com) 2.0 - Agenda Was ist Spirit? Aufbau & Überblick Lex, Qi & Karma 2.0 Was ist das?

Mehr

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

Klausur C++ #1 Jahr: 2001; Dozent: Dipl.Ing. Sorber Klausur C++ #1 Jahr: 2001; Dozent: Dipl.Ing. Sorber 1) Welche Antworten zur Operatorüberladung sind richtig? (1) a) C++ - Operatoren können zusammen mit Objekten funktionieren b) C++ - Operatoren wird

Mehr

Programmierung I Einführung in Python, Beyond the Basics

Programmierung I Einführung in Python, Beyond the Basics Höhere Datenstrukturen Programmierung I Einführung in Python, Beyond the Basics G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de Eines der Features, das Python so mächtig macht (VHLL)

Mehr

Alltagsnotizen eines Softwareentwicklers

Alltagsnotizen eines Softwareentwicklers Alltagsnotizen eines Softwareentwicklers Entkoppeln von Objekten durch Callbacks mit c++-interfaces oder boost.function und boost.bind Tags: c++, entkoppeln, objekt, oop, callback, boost.bind, boost.function,

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen Was bisher geschah abstrakter Datentyp : Signatur Σ und Axiome Φ z.b. ADT Menge zur Verwaltung (Finden, Einfügen, Entfernen) mehrerer Elemente desselben Typs Spezifikation einer Schnittstelle Konkreter

Mehr

HTTP://WWW.WIKIPAINTINGS.ORG/EN/FRIEDENSREICH-HUNDERTWASSER/YOU-ARE-A-GUEST-OF-NATURE-BEHAVE Abstrakte Datentypen.

HTTP://WWW.WIKIPAINTINGS.ORG/EN/FRIEDENSREICH-HUNDERTWASSER/YOU-ARE-A-GUEST-OF-NATURE-BEHAVE Abstrakte Datentypen. HTTP://WWW.WIKIPAINTINGS.ORG/EN/FRIEDENSREICH-HUNDERTWASSER/YOU-ARE-A-GUEST-OF-NATURE-BEHAVE Abstrakte Datentypen OOPM, Ralf Lämmel (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 562 Motivation abstrakter

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

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

Selber Programmieren

Selber Programmieren Selber Programmieren Wenn es für ein Problem keine fertige Lösung gibt, oder wenn man keine fertige Lösung finden kann, dann muss man sich das benötigte Werkzeug selbst herstellen: Ein eigenes Programm

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Funktionale Programmierung mit C++

Funktionale Programmierung mit C++ Funktionale Programmierung mit C++ Überblick Programmierung in funktionaler Art Warum funktionale Programmierung? Was ist funktionale Programmierung? Charakteristiken funktionaler Programmierung Was fehlt

Mehr

Einführung in Boost Spirit Qi

Einführung in Boost Spirit Qi Einführung in Boost Spirit Qi Das C++ Parser Framework Warum noch ein Parser? - Komplexität der Grammatik + Lex/Yacc, AntLR Boost Spirit istringstream, lexical_cast + Grammatik im Quellcode + kein externes

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

Institut für Informatik

Institut für Informatik Technische Universität München Institut für Informatik Lehrstuhl für Computer Graphik & Visualisierung WS 2010 Praktikum: Grundlagen der Programmierung Lösungsblatt 7 Prof. R. Westermann, A. Lehmann, R.

Mehr

Sebastian Houben Intensivkurs C++ 1. Intensivkurs C++ 21. September 2015

Sebastian Houben Intensivkurs C++ 1. Intensivkurs C++ 21. September 2015 Sebastian Houben Intensivkurs C++ 1 Intensivkurs C++ 21. September 2015 Themen Sebastian Houben Intensivkurs C++ 2 Warum C++? Ziel dieses Kurses Voraussetzungen Verwandschaft zu C, Java und anderen Sprachen

Mehr