Objektorientierte Programmierung mit C++
|
|
- Erich Kneller
- vor 6 Jahren
- Abrufe
Transkript
1 #include <iostream> #include <string> #include <map> using namespace std ; int main ( ) { string buf ; map < string, int > m ; while ( cin >> buf ) m [ buf ] ++ ; multimap < int, string > n ; $ wc < wc.cpp 1 "\t" 1 <iostream>.. 6 string 10 ( 10 ) 10 p 11 ; for ( map < string, int > :: iterator p = m. begin ( ) ; p!= m. end ( ) ; ++ p ) n. insert ( multimap < int, string > :: value_type ( p -> second, p -> first ) ) ; for ( multimap < int, string > :: iterator p = n. begin ( ) ; p!= n. end ( ) ; ++ p ) cout << p -> first << "\t" << p -> second << endl ; 334
2 Input - & Output Iteratoren #include <string> #include <iterator> #include <algorithm> #include <vector> #include <iostream> #include <sstream> I need your help! int main() { std::istringstream s("i need your help!"); std::vector<std::string> v((std::istream_iterator<std::string>(s)), std::istream_iterator<std::string>()); std::copy(v.begin(), v.end(), std::ostream_iterator<std::string>(std::cout, "\n")); Scott Meyers Effective STL (Item 6:) Be alert for C++ s most vexing parse 335
3 vector deque list set multiset map multimap interne Datenstruktur dynamisches Menge von doppelt Binärbaum Binärbaum Binärbaum Binärbaum Array Arrays verkettete Liste Elemente-Art Wert Wert Wert Wert Wert Wertepaar Wertepaar Duplikate erlaubt ja ja ja nein ja nein ja (Schlüssel) (Schlüssel) wahlfreier Zugriff ja ja nein nein nein über Schlüssel nein Iterator-Kategorie Suchen/Finden von Elementen Random- Random- Bidirectional Bidirectional Access Access (Wert konstant) Bidirectional (Wert konstant) Bidirectional (Schlüssel konstant) langsam langsam sehr langsam sehr schnell sehr schnell sehr schnell für Schlüssel Bidirectional (Schlüssel konstant) sehr schnell für Schlüssel Einfügen/Löschen am Ende am Anfang überall überall überall überall überall schnell und am konstant logarithmisch logarithmisch logarithmisch logarithmisch Ende Verweise werden ungültig bei Reallokierung potenziell immer nein nein nein nein nein Speicher wird freigegeben Speicherreservierung möglich nie manchmal immer immer immer immer immer ja nein
4 Container-Adaptoren neben den (primären) Containern gibt es einige sog. Container- Adaptoren, es handelt sich dabei um Anpassungen der Container für spezielle Anwendungen Queues (#include <queue>) FIFO-Warteschlangen (auch mittels list instantiierbar) namespace std { template < class T, class Container = deque<t> > class queue; 337
5 Priority Queues(#include <queue>) Warteschlangen mit Prioritäten (auch mittels deque instantiierbar) namespace std { template < class T, class Container = vector<t>, class Compare = less<typename Container::value_type> > class priority_queue; Stacks (#include <stack>) Kellerspeicher (auch mittels list und vector instantiierbar) namespace std { template < class T, class Container = deque<t> > class stack; 338
6 Strings (#include <string>) (vgl. z.b. Josuttis, Kapitel 10, S.357 ff.) namespace std { template < class chart, class traits = char_traits<chart> class allocator = allocator <chart> > class basic_string; string; // noch nicht auf Zeichentyp festgelegt typedef basic_string<char> string; // ASCII typedef basic_string<wchar_t> string<wchar t> wstring; // Unicode mit Einführung von string wurde auch die iostream-bibliothek erheblich überarbeitet, um mit strings zusammenarbeiten zu können, ohne dass sich die Nutzerschnittstelle wesentlich verändert hat, ggf. ist wichtig typedef basic_ostream<char, char_traits<char> > ostream; 339
7 Numerische Klassen Komplexe Zahlen (#include <complex>) namespace std { template<class T> class complex; template<> class complex<float>; template<> class complex<double>; template<> class complex<long double>; komplexe Zahlen mit allem "drum und dran" (Arithmetik und transzendente Funktionen) für float, double, long double bereits vordefiniert! 340
8 Valarrays (#include <valarray>) namespace std { template<class T> class valarray; Vektoren und Matrizen für numerische Operationen mit gutem Zeitverhalten (keine temporären Zwischenergebnisse) i und kompakter kt Notation ti (z.b. Ausführung von Operationen auf allen Elementen, Bildung von sog. Slices,...) Bitsets (#include <bitset>) t>) namespace std { template< size_t bits > class bitset; Bitvektoren (konstanter Länge) 341
9 vector<bool> - kein Container von bool s std::vector<bool> v; bool *pb = & v[0]; // nicht übersetzbar Scott Meyers Effective STL (Item 18:) Avoid using vector<bool>. 342
10 Allokatoren (#include <memory>) Separation der Speicherverwaltung für dynamische Objekte (Listen- und Baum-Knoten etc.) von den abstrakten Containern: Container enthalten als Typparameter eine Klasse, die die Speicherverwaltung komplett übernimmt Standardmäßig d stellt jede Implementation ti einen default allocator in der Klasse std::allocator bereit, dieser verwaltet geeigntet Memory-Pools alternative Allokatoren (z.b. mit garbage collection, oder auf verschiedenen Speichermodellen...) sind möglich und beeinflussen die eigentliche Funktionalität der Container in keiner Weise!! 343
11 auto_ptr (#include <memory>) namespace std { template<class X> class auto_ptr { template <class Y> struct auto_ptr_ref {; public: typedef X element_type; explicit auto_ptr(x* p =0) throw(); auto_p ptr(auto _p ptr&) throw(); template<class Y> auto_ptr(auto_ptr<y>&) throw(); auto_ptr& operator=(auto_ptr&) throw(); template<class Y> auto_ptr& operator=(auto_ptr<y>&) throw(); ~auto_ptr() throw(); 344
12 auto_ptr (#include <memory>) //... X& operator*() const throw(); X* operator->() const throw(); X* get() const throw(); X* release() throw(); void reset(x* p =0) throw(); auto_ptr(auto_ptr_ref<x>) throw(); template<class Y> operator auto_ptr_ref<y>() throw(); template<class Y> operator auto_ptr<y>() throw(); ; 345
13 auto_pt ptr (#include <memory>) owning pointers - ein auto_ptr -Objekt kapselt einen Zeiger, bei Zuweisungen (Initialisierungen) von auto_ptr -Objekten wird die Zuständigkeit weitergereicht, im Quellobjekt wird 0 hinterlegt, auto_ptr ist daher NICHT in Containern benutzbar! std::tr1::shared_ptr/weak_ptr z.b. hier auto_ptr -Objekte verhalten sich selbst wie Zeiger (operator->) damit lassen sich auch dynamisch erzeugte Objekte exception safe verwalten: void foo() { void foo() { X* p = new X; auto_ptr<x> p (new X); p->bar(); p->bar(); // leak??? // never leaks: delete p; // ~auto_ptr<x>()!!! 346
14 Erweiterungen (über den derzeit standardisierten Umfang hinaus) in konkreten Implementationen meist nicht als solche ausgewiesen, sondern unterschiedslos mit den standardisierten Klassen/Funktionen realisiert! maßgeblicher Vertreter (und guter Kandidiat für 2nd revision des C++ - Standards) ist die SGI - STL, die folgende wichtige Zusätze implementiert (z.b. ab libg ): neue Algorithmen: "Kleinigkeiten", die sich aber nicht allgemein und effizient mit den vorhandenen generischen Algorithmen realisieren lassen: iota (Bereich mit aufsteigenden Zahlen initialisieren), random_sample (eine zufällige Stichprobe ohne Änderung des Originalcontainers [statt random_shuffle] ),etc. ein verbesserter sort-algorithmus (aka introsort) der sich auch bei nahezu vorsortierten Containern optimal [ O(n log n) ] verhält 347
15 Erweiterungen (über den derzeit standardisierten Umfang hinaus) neue Container: die assoziativen Container [multi]set, [multi]map sind immer sortiert, dies ist nicht immer nötig (kostet aber overhead) bzw. manchmal sogar unerwünscht ---> TR1 unordered_set, unordered_map, hash_multiset, hash_multimap in der Benutzung wie zugehörige Container, aber effizienter nicht immer braucht man doppelt verkettete Listen ---> TR1 slist eine spezielle Stringklasse rope (Ropes are a scalable string implementation: they are designed for efficient operation that involve the string as a whole. Operations such as assignment, concatenation, and substring take time that is nearly independent of the length of the string. Unlike C strings, ropes are a reasonable representation for very long strings such as edit buffers or mail messages) ) nicht ihtin TR1 thread safety - derzeitige Container sind nicht notwendig thread safe!!! 348
16 Modernes C++ 0. Einführung Der Einsatz des Konzeptes der generischen Typen (Templates) verändert heute die Art und Weise der Programmierung in C++ weit mehr, als dies ursprünglich von den Erfindern der Sprache vorauszuahnen war. Die STL war erst der Anfang. Es ist vor allem das Verdienst von Andrei Alexandrescu mit der radikalen Anwendung dieser Technik völlig neue, bislang ungeahnte Perspektiven für den Entwurf flexibler und hochgradig wiederverwendbarer Bibliotheken in C++ eröffnet zu haben. Die Vorlesung befasst sich mit einigen dieser Techniken in Theorie und Praxis. Voraussetzung sind fundierte und komplette Kenntnisse der Sprache C++. Vertrautheit mit klassischen Entwurfsmustern ist nützlich, aber nicht zwingend. 1
17 Modernes C++ 1. Quellen sourceforge.net/projects/loki-lib/ ISBN ISBN
18 Modernes C++ 1. Quellen Bücher von Herb Sutter ISBN ISBN X 3
19 Modernes C++ 1. Quellen Boost.org ISBN
20 Modernes C++ 1. Quellen C++ Users Journal Usenet news comp.lang.c++ comp.lang.c++.moderated d comp.std.c++ Artikelsammlung von Bjarne Stroustrup 5
21 Modernes C++ 2. Compile-Time-Polymorphism l H. Sutter: More Exceptional C++ Item1: Switching Streams (Difficulty: 2 [of 10]) What is the best way to dynamically use different stream sources and targets, including the standard console stream and files? 1. What are the types of std::cin and std::cout? 2. Write an ECHO program that simply py echoes ist input and that can be invoked equivalently in the two following ways: ECHO <infile >outfile ECHO infile >outfile ECHO infile outfile 6
22 Modernes C++ 2. Compile-Time-Polymorphism l ad 1. namespace std { // <iostream> extern istream cin; //? istream? extern ostream cout; //? ostream? //... namespace std { // <istream> template<class Elem, class Tr = char_traits<elem> > class basic_istream; typedef basic_istream<char, char_traits<char> > istream; 7
23 Modernes C++ 2. Compile-Time-Polymorphism l namespace std { // <ostream> template<class Elem, class Tr = char_traits<elem> > class basic_ostream; typedef basic_ ostream<char, char_ traits<char> > ostream; //... char_traits? trait [trei] s (pl ~s [~z]) Zug, Merkmal [ ISO/IEC 14882:1998(E) ] 8
24 Modernes C++ 2. Compile-Time-Polymorphism l H. Sutter: The idea is that traits classes are instances of templates, and are used to carry extra information esp. information that other templates can use about the types on which the traits template is instantiated. The nice thing is that the traits class T<C> lets us record such extra information about a class C, without requiring any change at all to C. ( and even if C isn t a class at all!) 9
25 Modernes C++ 2. Compile-Time-Polymorphism l ad 2. // The tersest solution: A one-statement wonder #include <fstream> #include <iostream> int main( int argc, char* argv[] ) { using namespace std; (argc > 2? ofstream(argv[2], ios::out ios::binary) : cout) << (argc > 1? ifstream(argv[1], ios::in ios::binary) : cin).rdbuf(); 10
26 Modernes C++ 2. Compile-Time-Polymorphism l Aber: Prefer readability! Avoid writing terse code (brief, but difficult to understand and maintain)! Eschew obfuscation! Prefer extensibility! Prefer encapsulation! Separate concerns! 11
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
MehrEinführung in die Programmierung mit C++
1 Seite 1 Einführung in die Programmierung mit C++ Teil IV - Weiterführende Themen 13. Klassenbibliotheken Klassenbibliotheken Seite 2 Sammlung von Algorithmen und Klassen in Klassenbibliotheken: Konzept:
MehrEinfü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Übung 13: Priority Queues (Vorrangwarteschlangen 1 )
Übung 13: Priority Queues (Vorrangwarteschlangen 1 ) Definition Eine Priority Queue ist eine Datenstruktur zur Speicherung einer Menge von Elementen, für die eine Halbordnung (Prioritätssteuerung) definiert
MehrEinführung in die Nutzung der C++ - Standard - Bibliothek
Einführung in die Nutzung der C++ - Standard - Bibliothek Literatur: (Amme) - Ammeraal, L.: STL for C++-Programmers; Chichester: Wiley, 1997 (Brey) - Breymann, U.: Die C++ Standard Template Library; München:
MehrDeques "decks" [double ended queue] ( #include <deque> )
Deques "decks" [double ended queue] ( #include ) nach zwei Seiten dynamisches Array eines beliebigen Typs mit wahlfreiem Zugriff, unsortiert alle Algorithmen sind anwendbar (RandomAccessIterator)
MehrProgrammieren 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
MehrProgrammier-Befehle - Woche 10
Funktionen Rekursion Selbstaufruf einer Funktion Jeder rekursive Funktionsaufruf hat seine eigenen, unabhängigen Variablen und Argumente. Dies kann man sich sehr gut anhand des in der Vorlesung gezeigten
MehrAssoziative Container in C++ Christian Poulter
Assoziative Container in C++ Christian Poulter Seminar: Die Sprache C++ Mat-Nr.: 53 03 129 EMail: inf@poulter.de Christian Poulter Assoziative Container in C++ Seite 1/10 Inhalt 1. Einleitung: Container...
MehrAdvanced Programming in C
Advanced Programming in C Pointer und Listen Institut für Numerische Simulation Rheinische Friedrich-Wilhelms-Universität Bonn Oktober 2013 Überblick 1 Variablen vs. Pointer - Statischer und dynamischer
Mehr(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
MehrZiel, 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
MehrHochschule 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
MehrEinführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)
Wintersemester 2005/06 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich Informatik Lehrstuhl
MehrObjektorientierte 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
MehrC++ - 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
MehrRelationen-Algebra und Persistenz Teil I
Relationen-Algebra und Persistenz Teil I Implementierungskonzepte und Anforderungen an Attributdatentypen LG Datenbanksysteme für neue Anwendungen Inhalt FLOBs DBArrays Attributsdatentypen Folie 2 Bisher:
MehrKapitel 8: Abstrakte Datentypen. Inhalt. Definition ADT Keller ADT Schlange
Wintersemester 005/06 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich Informatik Lehrstuhl
Mehr3. Semester : 1. Prüfung
3. Semester : 1. Prüfung Name : Die gesamte Prüfung bezieht sich auf die!! Prüfungsdauer: 90 Minuten mit Kugelschreiber oder Tinte schreiben Lösungen können direkt auf die Aufgabenblätter geschrieben werden
Mehr1. Ü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:
Mehr0. 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
MehrProgrammierkurs. 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
MehrProgrammierung 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
MehrKlausur 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
MehrPraxisorientierte Einführung in C++ Lektion: "Smart-Pointer"
Praxisorientierte Einführung in C++ Lektion: "Smart-Pointer" Christof Elbrechter Neuroinformatics Group, CITEC June 26, 2014 Christof Elbrechter Praxisorientierte Einführung in C++ June 26, 2014 1 / 17
MehrProgrammierung 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
MehrEinführung in die Programmierung
: Inhalt Einführung in die Programmierung Wintersemester 2010/11 arithmetik für dynamischen Speicher Anwendungen Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU
MehrEinfü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
MehrElementare Datentypen in C++
Elementare Datentypen in C++ bool signed/unsigned char signed/unsigned short int signed/unsigned int signed/unsigned long int (signed/unsigned long long int) float double long double void enum char Der
MehrObjektorientierte 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
MehrC++-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:
MehrIn 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
MehrInformatik 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Überladen von Operatoren
- Überladen des Indexoperators [] - Überladen des Ausgabeoperators > Programmieren in C++ Informatik FH Trier C++12-1 ähnlich dem Überladen von Funktionen Überladen
MehrEinleitung. 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
MehrCodingstandard. 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
MehrC 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
MehrInformatik I. Übung 2 : Programmieren in Eclipse. 5. März Daniel Hentzen
Informatik I Übung 2 : Programmieren in Eclipse 5. März 2014 Daniel Hentzen dhentzen@student.ethz.ch Downloads : http://n.ethz.ch/~dhentzen/download/ Heute 1. Nachbesprechung Übung 1 2. Theorie 3. Vorbesprechung
MehrDAP2-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
MehrGrundlagen 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
MehrProgrammieren 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
MehrObjektorientierung Grundlagen
Prof. Dr.-Ing. Andreas Simon Telefon +49 (0)5331 939 42630 Telefax +49 (0)5331 939 43634 E-Mail a.simon@ostfalia.de Objektorientierung Grundlagen Probeklausur 18. Mai 2015 Name: Mat.-Nr.: Vorname: Login:
MehrKurze Einführung in die Programmiersprache C++ und in Root
Kurze Einführung in die Programmiersprache C++ und in Root Statistik, Datenanalyse und Simulation; 31.10.2006 Inhalt 1 Einführung in die Programmiersprache C++ Allgemeines Variablen Funktionen 2 1 Einführung
MehrAlgorithms for graph visualization
Algorithms for graph visualization Project - Orthogonal Grid Layout with Small Area W INTER SEMESTER 2013/2014 Martin No llenburg KIT Universita t des Landes Baden-Wu rttemberg und nationales Forschungszentrum
MehrGrundlagen 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.
MehrQuiz und Übungen. C++ Übung am 19. Mai 2016
Quiz und Übungen C++ Übung am 19. Mai 2016 Was ist der Unterschied zwischen kompilierenden und interpretierenden Programmiersprachen? Was ist der Unterschied zwischen kompilierenden und interpretierenden
MehrEinführung in die Programmierung
: Inhalt Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund - mit / ohne Parameter - mit / ohne Rückgabewerte
MehrZeiger, 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
MehrBeispiel 2a Die eigenen ersten Schritte mit dem Gnu-Debugger GDB für Remote-Debugging
Beispiel 2a Die eigenen ersten Schritte mit dem Gnu-Debugger GDB für Remote-Debugging Das Beispiel orientiert sich am selben Code, der im Teil 1 der Serie verwendet wurde. Text Styles: Shell Prompt mit
MehrTemplatemetaprogrammierung in C++ FlorianJW
Templatemetaprogrammierung in C++ FlorianJW Wiederholung Verwendung #i n c l u de #i n c l u de #i n c l u de i n t main ( ) { s t d : : v e c t o r
MehrC++ 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
MehrHochschule 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
MehrAlgorithmen 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
MehrC++ Einführung. und Datenanalyse mit ROOT. Jörg Marks, Physikalisches Institut, INF 226
Sommer Semester 2016 C++ Einführung 10.4-14.4.2016 14:00 17:00 CIP Pool INF 226 und Datenanalyse mit ROOT Jörg Marks, Physikalisches Institut, INF 226 marks@physi.uni-heidelberg.de Inhalt Programmierwerkzeuge
MehrBäume, Suchbäume und Hash-Tabellen
Im folgenden Fokus auf Datenstrukturen, welche den assoziativen Zugriff (über einen bestimmten Wert als Suchkriterium) optimieren Bäume: Abbildung bzw. Vorberechnung von Entscheidungen während der Suche
MehrDer 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
MehrThere are 10 weeks this summer vacation the weeks beginning: June 23, June 30, July 7, July 14, July 21, Jul 28, Aug 4, Aug 11, Aug 18, Aug 25
Name: AP Deutsch Sommerpaket 2014 The AP German exam is designed to test your language proficiency your ability to use the German language to speak, listen, read and write. All the grammar concepts and
MehrVorlesung Datenstrukturen
Vorlesung Datenstrukturen Binärbaum Suchbaum Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 356 Datenstruktur Binärbaum Strukturrepräsentation des mathematischen Konzepts Binärbaum
MehrProgrammierkurs C++ Grundlagen. Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.
Programmierkurs C++ Grundlagen Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Algorithmen, Maschinen- und Programmiersprachen Algorithmen
MehrProgrammiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny
Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 9. Zeiger Arbeitsspeicher / Adressen Der Arbeitsspeicher des Computers (RAM) besteht aus einem Feld von Speicherzellen, beginnend bei Adresse
MehrEscape-Sequenzen. Dr. Norbert Spangler
Escape-Sequenzen Einzelzeichen Bedeutung ASCII- ASCII-Code \a alert BEL 07 \b backspace BS 08 \t horizontal tab HT 09 \n line feed LF 0A \v vertical tab VT 0B \f form feed FF 0C \r carriage return CR 0D
MehrC++ Templates - eine kleine Einführung. Allgemein. Funktionstemplates. Allgemein. Funktionstemplates. Klassentemplates
Überblick C++ Templates - eine kleine Einführung Fabian Scheler, Peter Ulbrich, Niko Böhm Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl Informatik 4 (Verteilte Systeme und Betriebssysteme)
MehrEinführung in die Programmierung
: Inhalt Einführung in die Programmierung Wintersemester 2009/0 : Technik vs. Iteration Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund 2 Definition (einfache,
MehrC++ 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,
MehrJava Schulung. Objektorientierte Programmierung in Java Teil V: Die Java Collection Klassen. Prof. Dr. Nikolaus Wulff
Java Schulung Objektorientierte Programmierung in Java Teil V: Die Java Collection Klassen Prof. Dr. Nikolaus Wulff Collections in Java 2 Java 2 Collections: http://java.sun.com/products/jdk/1.2/docs/guide/collections/index.html
MehrC für Java-Programmierer
Carsten Vogt C für Java-Programmierer ISBN-10: 3-446-40797-9 ISBN-13: 978-3-446-40797-8 Inhaltsverzeichnis Weitere Informationen oder Bestellungen unter http://www.hanser.de/978-3-446-40797-8 sowie im
Mehr10. 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
MehrEinführung in das Programmieren für Technische Mathematiker
Einführung in das Programmieren für Technische Mathematiker Einführung in C++ C++ Marcus Page, MSc. Prof. Dr. Dirk Praetorius I Was ist C++ I Programmierparadigmen I C++ im Vergleich mit C Fr. :15-11:5,
MehrSebastian 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
Mehrp^db=`oj===pìééçêíáåñçêã~íáçå=
p^db=`oj===pìééçêíáåñçêã~íáçå= Error: "Could not connect to the SQL Server Instance" or "Failed to open a connection to the database." When you attempt to launch ACT! by Sage or ACT by Sage Premium for
MehrC++ - 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Übung HP Beispielaufgaben 3
Beispielaufgaben 3 Aufgabe 1: Implementieren Sie die Klassendeklaration und drei Funktionen der Klasse Lexikon, die Elemente vom Typ wstring speichert. Die Methode rm_punct soll an Anfang und Ende des
MehrEinführung in den Einsatz von Objekt-Orientierung mit C++ I
Einführung in den Einsatz von Objekt-Orientierung mit C++ I ADV-Seminar Leiter: Mag. Michael Hahsler Syntax von C++ Grundlagen Übersetzung Formale Syntaxüberprüfung Ausgabe/Eingabe Funktion main() Variablen
Mehr1.4. Funktionen. Objektorientierte Programmierung mit C++
mehrfache Deklarationen sind erlaubt für jede Funktion muss es (GENAU) eine Definition geben, ansonsten linker error [the one definition rule ODR] Deklarationen in *.h - Files, Definitionen in *.cpp -
MehrÜ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
MehrKlausur 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)
MehrInteger Integer Integer (Voreinstellung) Integer Gleitkomma Gleitkomma leer/unbestimmt Integer ohne Vorzeichen Integer (explizit) mit Vorzeichen
1 C-Schlüsselwörter Schlüsselwörter sind in allen Programmiersprachen reservierte Wörter. In C sind auch alle Namen _[A-Z]... und... reserviert, auch _... bereichsweise. Weiterhin durch die Standard-
MehrWas ist Reference Counting Implementierung. Ende. Reference Counting. Kevin Köster. Uni Hamburg. 31. März Kevin Köster Reference Counting 1/58
Reference Counting Kevin Köster Uni Hamburg 31. März 2013 Kevin Köster Reference Counting 1/58 Kevin Köster Reference Counting 2/58 Beschreibung Dateisystem Praxis Frage Wann wissen wir, ob ein Objekt
MehrObjektorientiertes Programmieren mit C++ für Fortgeschrittene
FG TECHNISCHE INFORMATIK I CQ A00 00 TH 03 Objektorientiertes Programmieren mit C++ für Fortgeschrittene Kapitel 10 10. Ausgewählte Komponenten der Standardbibliothek 10.1. Überblick über die Standardbibliothek
MehrCNC ZUR STEUERUNG VON WERKZEUGMASCHINEN (GERMAN EDITION) BY TIM ROHR
(GERMAN EDITION) BY TIM ROHR READ ONLINE AND DOWNLOAD EBOOK : CNC ZUR STEUERUNG VON WERKZEUGMASCHINEN (GERMAN EDITION) BY TIM ROHR PDF Click button to download this ebook READ ONLINE AND DOWNLOAD CNC ZUR
MehrMitglied der Leibniz-Gemeinschaft
Methods of research into dictionary use: online questionnaires Annette Klosa (Institut für Deutsche Sprache, Mannheim) 5. Arbeitstreffen Netzwerk Internetlexikografie, Leiden, 25./26. März 2013 Content
MehrFunktionen 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
MehrBinärbäume. Prof. Dr. E. Ehses, 2014 1
Binärbäume Grundbegriffe der Graphentheorie Bäume und Ihre Anwendungen Unterschiedliche Darstellungen von Bäumen und Binärbäumen Binärbäume in Java Rekursive Traversierung von Binärbäumen Ebenenweise Traversierung
MehrDynamische Speicherverwaltung
Dynamische Speicherverwaltung Tim Dobert 17.05.2013 Inhaltsverzeichnis 1 Allgemeines zur Speichernutzung 2 2 Ziel und Nutzen 2 3 Anwendung in C 2 3.1 malloc............................... 3 3.2 calloc...............................
MehrSeit meinem letzten Buch über Visual C++ 2008 hat sich viel verändert:
Vorläufiges Vorwort Dieses Buch entstand aus zahlreichen Vorlesungen und Industrieseminaren, die im Laufe der Jahre immer weiterentwickelt und an die C++11/C++14-Erweiterungen von Visual Studio angepasst
MehrWelche Informatik-Kenntnisse bringen Sie mit?
Welche Informatik-Kenntnisse bringen Sie mit? So gehen Sie vor! Lösen Sie die Aufgaben der Reihe nach von 1 bis 20, ohne das Lösungsblatt zur Hilfe zu nehmen. Der Schwierigkeitsgrad der Aufgaben nimmt
MehrGliederung. 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.
MehrAngewandte Mathematik und Programmierung
Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens SS2013 Inhalt Projekt Vorlesung: praktische Implementierung üben Ein und
Mehr8. Generics Grundlagen der Programmierung 1 (Java)
8. Generics Grundlagen der Programmierung 1 (Java) Fachhochschule Darmstadt Haardtring 100 D-64295 Darmstadt Prof. Dr. Bernhard Humm FH Darmstadt, 6. Dezember 2005 Einordnung im Kontext der Vorlesung 1.
MehrAlgorithmen zur Datenanalyse in C++
Algorithmen zur Datenanalyse in C++ Hartmut Stadie 25.06.2012 Algorithmen zur Datenanalyse in C++ Hartmut Stadie 1/ 15 Einführung Zeiger, Felder und Strukturen Zufallszahlen für andere Verteilungen Algorithmen
MehrJAVA KURS COLLECTION
JAVA KURS COLLECTION COLLECTIONS Christa Schneider 2 COLLECTION Enthält als Basis-Interface grundlegende Methoden zur Arbeit mit Collections Methode int size() boolean isempty() boolean contains (Object)
Mehr2. 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
MehrEinführung in die Programmierung Wintersemester 2011/12
Einführung in die Programmierung Wintersemester 2011/12 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund : Kontrollstrukturen Inhalt Wiederholungen - while
MehrKlausurvorbereitung Lösung
Ausgabe 1 a) unsigned char erzeuge_bitmuster() static int z=0; int rest; unsigned char bm; rest = z % 4; z=z+1; switch (rest) case 0: bm = 0x00; break; case 1: bm = 0x11; break; case 2: bm = 0x33; break;
MehrBereits behandelt: Einfache Datentypen / Variablen. Schleifen und Verzweigungen. Funktionen. Heute: Felder, Zeiger, Referenzen. Freispeicherverwaltung
Kompaktkurs C++ Themen C 1 Bereits behandelt: Einfache Datentypen / Variablen Schleifen und Verzweigungen Funktionen Heute: Felder, Zeiger, Referenzen Freispeicherverwaltung Zeichenketten Kommandozeilenargumente
MehrDie elementare Ausgabe von Daten auf externe Medien, wie Dateien und das Einlesen davon wird demonstriert.
Ein- und Ausgabe Die elementare Ausgabe von Daten auf externe Medien, wie Dateien und das Einlesen davon wird demonstriert. Komplexe E/A-Operationen werden erst diskutiert, nachdem das Klassenkonzept erarbeitet
Mehr6 Speicherorganisation
Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen Speicherbereich für
MehrAufbau von Klassen. class punkt {...
Einführung in C++ Aufbau von Klassen Eine wird mit dem Schlüsselwort class eingeleitet, und endet mit einem Semikolon. Der Inhalt wird zwischen geschweiften Klammern geschrieben. class punkt {... ; Im
MehrEinführung in I/O und File-Handling in C ++
1/34 Einführung in I/O und File-Handling in C ++ Florian Adamsky, B. Sc. (PhD cand.) florian.adamsky@iem.thm.de http://florian.adamsky.it/ cbd Softwareentwicklung im WS 2014/15 2/34 Outline 1 Grundlagen
MehrKlausur 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