C++ Kurs Teil 3. Standard Template Library (STL) Exceptions Kommunikation mit der shell. Übersicht vector<> algorithm: sort, for_each map<>
|
|
- Carl Abel
- vor 6 Jahren
- Abrufe
Transkript
1 C++ Kurs Teil 3 Standard Template Library (STL) Übersicht vector<> algorithm: sort, for_each map<> Exceptions Kommunikation mit der shell O. Ronneberger: C++ Kurs Teil 3 Seite 1
2 Standard Template Library (STL) Containers (vector, list, map,...) General Utilities (date, time,...) Algorithms (sort, for_each,...) Strings (string, wide-character stuff,...) Input/Output (streams, manipulators...) Language Support (numeric limits, dynamic memory,...) Numerics (sqrt, sin, cos, complex,...) O. Ronneberger: C++ Kurs Teil 3 Seite 2
3 Übersicht über die Standard Container vector<t> eindimensionales Array list<t> doppelt verketteteliste O. Ronneberger: C++ Kurs Teil 3 Seite 3
4 Übersicht über die Standard Container map<key,t> assoziatives Array (Binärbaum) string: Zeichenkette O. Ronneberger: C++ Kurs Teil 3 Seite 4
5 c-style-strings und std::string /* ein c-style string ist nur ein Pointer! das Ende des strings ist durch '\0' gekennzeichnet */ const char* name = "Olaf"; name: 0xdbca0 0xdbca0: 'O' 'l' 'a' 'f' '\0' /* std::string ist eine Klasse. Umwandlung von c-style in std::string z.b. durch Zuweisung */ std::string name2 = name; // std::strings können verkettet werden name2 += ".txt"; /* Umwandlung zurück mit c_str(), z.b. als File Name für einen ifstream */ std::ifstream file( name.c_str()); O. Ronneberger: C++ Kurs Teil 3 Seite 5
6 Übersicht über die Standard Container stack<t> "last in first out" Container queue<t> "first in first out" Container (fifo) priority_queue<t> teilsortierte Queue (top() liefert immer das größte Element) komplette Übersicht in Stroustrup Kapitel 17 O. Ronneberger: C++ Kurs Teil 3 Seite 6
7 STL vector (eindimensionales Array) #include <string> #include <vector> int main( int argc, char** argv) std::vector<std::string> people; people.push_back( "Chris"); people.push_back( "Bert"); people.push_back( "Detlef"); people.push_back( "Alfons"); people.push_back( "Gerhard"); std::cout << "Der 5. heißt: " << people[4] <<std::endl; people.resize( 7); people[5] = "Fred"; people[6] = "Ernie"; return 0; Leeres Array aus strings Einige strings anfügen (Array wächst automatisch) Zugriff auf das 5. Element Vergrößern O. Ronneberger: C++ Kurs Teil 3 Seite 7
8 Elemente ausgeben und sortieren #include <vector> #include <string> #include <algorithm>... // Alle Elemente ausgeben std::vector<std::string>::const_iterator p; for( p = people.begin(); p!= people.end(); ++p) std::cout << *p << std::endl; // Sortieren std::sort( people.begin(), people.end()); Quicksort aus 'algorithm' Iterator (verhält sich wie ein Pointer) Element, auf das der Iterator zeigt O. Ronneberger: C++ Kurs Teil 3 Seite 8
9 Sortieren mit eigener Vergleichs- Funktion // rückwärts sortieren std::sort( people.begin(), people.end(), mygreaterthan); Die Vergleichsfunktion muß extra definiert werden: bool mygreaterthan( const string &a, const string &b) return (a > b); O. Ronneberger: C++ Kurs Teil 3 Seite 9
10 Andere Methode zur Ausgabe aller Elemente (for_each) // Alle Elemente ausgeben std::for_each( people.begin(), people.end(), print_entry); Für jedes Element zwischen begin() und end() die Funktion print_entry() aufrufen print_entry() muß extra definiert werden und bekommt eine Referenz auf das jeweilige Element übergeben void print_entry( const std::string& name) std::cout << name << std::endl; O. Ronneberger: C++ Kurs Teil 3 Seite 10
11 std::map<std::string, int> histogram; std::ifstream documentfile( "GPL_V2"); std::string word; while( documentfile >> word) histogram[word] += 1; STL map (assoziatives Array) Array vom Typ int mit string als index (wird intern als balancierter Baum gespeichert) for( std::map<std::string, int>::const_iterator p = histogram.begin(); p!= histogram.end(); ++p) std::cout << p->first << ": " << p->second << std::endl; Datei GPL_V2 zum Lesen öfnen Element- Zugriff: Wenn noch kein Eintrag existiert, wird automatisch ein neuer erzeugt Ausgabe aller Histogramm-Einträge (automatisch alphabetisch sortiert) O. Ronneberger: C++ Kurs Teil 3 Seite 11
12 Übersicht über die Standard Container Beispiele: insert() push_front() push_back() O. Ronneberger: C++ Kurs Teil 3 Seite 12
13 Exceptions Im traditionellen C (und vielen anderen Sprachen) ist es nicht möglich, die Fehlerbehandlung sauber vom eigentlichen Code zu trennen. Fehlerbehandlung wird dort typischerweise über verschiedene Rückgabewerte realisiert. O. Ronneberger: C++ Kurs Teil 3 Seite 13
14 Traditionelle Fehlerbehandlung handle = dc1394_create_handle(0); if (handle==null) exit( 1); status = dc1394_setup_capture(handle,..., &camera); if( status!= DC1394_SUCCESS) raw1394_destroy_handle(handle); exit(1); status = dc1394_start_iso_transmission(handle,camera.node); if( status!= DC1394_SUCCESS) dc1394_release_camera(handle,&camera); raw1394_destroy_handle(handle); exit(1); status = dc1394_single_capture(handle,&camera); if( status!= DC1394_SUCCESS)... Das eigentliche Programm besteht nur aus 4 Zeilen Durch die Fehlerbehandlung ist die Struktur des Programmes kaum noch zu erkennen Schließen der Firewire- Verbindung erfolgt an etlichen verschiedenen Stellen O. Ronneberger: C++ Kurs Teil 3 Seite 14
15 Traditionelle Fehlerbehandlung meistgenutze Alternative: Fehler ignorieren... handle = dc1394_create_handle(0); dc1394_setup_capture(handle,..., &camera); dc1394_start_iso_transmission(handle,camera.node); dc1394_single_capture(handle,&camera); Da die trad. Fehlerbehandlung zu umständlich ist, wird vielfach der Rückgabewert gar nicht abgefragt. Daraus resultieren dann unerklärliche Abstürze des Programms durch Nutzung von kaputten Datenstrukturen. O. Ronneberger: C++ Kurs Teil 3 Seite 15
16 Exceptions Exceptions erlauben es, das eigentliche Programm und die Fehlerbehandlung sauber zu trennen. Wenn in einer Funktion eine exception "geworfen" wird, wird nicht von der Funktion zurückgesprungen, sondern stattdessen ein passendes catch() gesucht. try handle = dc1394_create_handle(0); dc1394_setup_capture(handle,..., &camera); dc1394_start_iso_transmission(handle,camera.node); dc1394_single_capture(handle,&camera); catch( int errornumber)... O. Ronneberger: C++ Kurs Teil 3 Seite 16
17 throw, try und catch void irgendeinefunktion()... if (a!= b) throw 42; if (x == y) throw 137; Um eine Exception zu werfen wird der 'throw' Befehl genutzt. Hier wird einfach ein 'int' geworfen Die geworfene Exception hangelt sich solange nach oben, bis es ein passendes 'catch' findet. Wenn es keines gibt, wird das Programm abgebrochen. O. Ronneberger: C++ Kurs Teil 3 Seite 17
18 Fehlerklassen throw( xyz) kann als Aufruf der Methode catch() mit dem Parameter xyz aufgefaßt werden, wobei nach Beendigung des catch-block natürlich nicht zum Punkt des throws zurückgekehrt wird. Einen 'int' als Exception zu werfen, ist nur bedingt brauchbar. Besser ist es, die Standard-Fehlerklassen zu benutzen, oder eine eine eigene FehlerKlasse dafür zu erzeugen, die dann auch noch weitere Information vom throw zum catch transportieren kann O. Ronneberger: C++ Kurs Teil 3 Seite 18
19 Fehlerklassen Einem try-block dürfen mehrere catch-blöcke folgen void myfunction()... if( file == 0) FileOpenError err( filename); throw err;... if( format == -1) throw WrongFormatError();... try... myfunction();... catch( FileOpenError& err) std::cerr << "Can't open file " << err.filename() << std::endl; catch( WrongFormatError& err) std::cerr << "File has wrong format\n"; catch(...) // hier stehen wirklich drei Punkte! std::cerr << "Unknown error occured\n"; O. Ronneberger: C++ Kurs Teil 3 Seite 19
20 Klassenhierarchien für exceptions // normal errors class SppError... ; class SppErrorDeviceBusy : public SppError...;... // internal errors class SppInternalError : public SppError...; class SppErrorSaneNotInitialized : public SppInternalError...;... catch( SppError& err) fängt alle Fehlerklassen (also auch die abgeleiteten) catch( SppInternalError& err) fängt alle "internen" Fehler. catch( SppErrorDeviceBusy& err) fängt nur den "device busy error" Bei Fehlerklassen-Hierarchien Immer "catch by reference", nie "catch bei value"! (siehe Thinking in C++ Vol 2: Programming with exceptions) O. Ronneberger: C++ Kurs Teil 3 Seite 20
21 "Resource allocation is initialization" try handle = dc1394_create_handle(0); dc1394_setup_capture(handle,..., &camera); dc1394_start_iso_transmission(handle,camera.node); dc1394_single_capture(handle,&camera); catch( int errornumber) /* Wir wissen nicht, ob raw1394_destroy_handle(handle); aufgerufen werden muß */ Damit geöffnete Resourcen automatisch wieder geschlossen werden, wenn eine exception auftritt, kann man die Methode "Resource allocation is initialization" anwenden: O. Ronneberger: C++ Kurs Teil 3 Seite 21
22 "Resource allocation is initialization" try... std::ifstream hurz( "abcdeg.txt");... // hier wird das File hurz durch den Destructor automatisch geschlossen catch( int errornumber) /* An dieser Stelle befinden sich die Resourcen wieder in einem "sauberen" Zustand */ O. Ronneberger: C++ Kurs Teil 3 Seite 22
23 Kommunikation mit der shell #include <iostream> int main( int argc, char** argv) std::cout << "Der Programmname ist: " << argv[0] << std::endl; std::cout << "Es wurden " << argc-1 << " Argumente übergeben\n"; std::cout << "Das 1. Argument ist: " << argv[1] << std::endl; std::cout << "Das 2. Argument ist: " << argv[2] << std::endl; std::cout << "Das 3. Argument ist: " << argv[3] << std::endl; return 0; > sample_code hallo du da Der Programmname ist: sample_code Es wurden 3 Argumente übergeben Das 1. Argument ist: hallo Das 2. Argument ist: du Das 3. Argument ist: da O. Ronneberger: C++ Kurs Teil 3 Seite 23
24 Neue Aufgabe: Erweiterung der GrayImage-Klasse, Region-Properties Ziel: Koordinaten der Lampen im Bild finden, und Kreuze dort einzeichnen O. Ronneberger: C++ Kurs Teil 3 Seite 24
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
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,
MehrEinfü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 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
MehrJava Fehlerbehandlung
Java Fehlerbehandlung 1 Fehlerbehandlung In jedem nicht-trivialen Programm kann es während der Laufzeit zu Fehlersituationen kommen. Dabei handelt es sich nicht unbedingt um Programmierfehler: z. B.: Programm
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
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
MehrPraxisorientierte Einführung in C++ Lektion: "Exceptions"
Praxisorientierte Einführung in C++ Lektion: "Exceptions" Christof Elbrechter Neuroinformatics Group, CITEC June 18, 2014 Christof Elbrechter Praxisorientierte Einführung in C++ June 18, 2014 1 / 41 Table
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
MehrKommunikation. Björn und Georg
Kommunikation Björn und Georg CORBA CORBA (Common Object Request Broker Architecture) Entwicklung der OMG ( Object Management Group) Zusammenschluss von 800 Firmen Hardware- und Progammiersprachen-unabhängiges
Mehr4 Schleifen und Dateien
4 Schleifen und Dateien 4.1 Übungsaufgabe 4.1.1 Aufgabe 1 Schreiben Sie drei C++ Programme: pword_for.cxx, pword_while.cxx, pword_do.cxx. Die Programme sollen den Benutzer höchstens 5 Mal nach einem Passwort
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
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
MehrBeispiel: Methode mit einem Fehler. Diese Methode wird problematisch, wenn von außen eine Dauer von 0 Sekunden angegeben wird, etwa im Aufruf
16 Exceptions Zur Behandlung unerwarteter Situationen bietet Java Unterstützung in Form von Exceptions oder Ausnahmen. Den Sinn von Exceptions können wir Ihnen an einem kleinen Beispiel klarmachen. Nehmen
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
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
MehrExceptions. Prof. Dr. Margarita Esponda SS 2012. M. Esponda-Argüero
Exceptions Prof. Dr. Margarita Esponda SS 2012 1 Ausnahmen Eine Ausnahme (Exception) ist ein Fehler oder ein nicht geplantes Ereignis, das während der Ausführung eines Programms vorkommt und dessen normalen
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
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
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
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
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
MehrÜbungen zur Vorlesung EidP (WS 2015/16) Blatt 6
Andre Droschinsky Ingo Schulz Dortmund, den 0. Dezember 2015 Übungen zur Vorlesung EidP (WS 2015/16) Blatt 6 Block rot Es können 4 + 1 Punkte erreicht werden. Abgabedatum: 10. Dezember 2015 2:59 Uhr Hinweise
MehrAlgorithmen zur Datenanalyse in C++
Algorithmen zur Datenanalyse in C++ Hartmut Stadie 23.04.2012 Algorithmen zur Datenanalyse in C++ Hartmut Stadie 1/ 16 Einführung Algorithmen zur Datenanalyse in C++ Hartmut Stadie 2/ 16 Übersicht Einführung
MehrZählen von Objekten einer bestimmten Klasse
Zählen von Objekten einer bestimmten Klasse Ziel, Inhalt Zur Übung versuchen wir eine Klasse zu schreiben, mit der es möglich ist Objekte einer bestimmten Klasse zu zählen. Wir werden den ++ und den --
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.
MehrUNIVERSITÄT ULM Fakultät für Ingenieurswissenschaften und Informatik Institut für Datenbanken und Informationssysteme
UNIVERSITÄT ULM Fakultät für Ingenieurswissenschaften und Informatik Institut für Datenbanken und Informationssysteme 8. Übung zur Vorlesung Datenbanksysteme WS 08/09 Musterlösung Aufgabe 8-1: SQLJ //
MehrFunktionen 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
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
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
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
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
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
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:
MehrInteraktive Simulationen Lektion 1/3: Event-Driven Design und Signals
MÜNSTER Interaktive Simulationen Lektion 1/3: Event-Driven Design und Signals Prof. Dr. Christian Engwer & Andreas Buhr 16. April 2014 MÜNSTER Interaktive Simulationen 2 /22 Normales C++ Programm Programmstruktur
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
MehrDistributed 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
Mehr17. Oktober Ubucon 2010, Universität Göttingen. Eine Einführung in Tcl. Dominik Wagenführ. Einleitung. Grundlagen. Strings.
Ubucon 2010, Universität Göttingen 17. Oktober 2010 Seite 1/40 Übersicht 1 2 3 4 5 6 7 Seite 2/40 Tcl: Tool Command Language [1] in den 1980er von John K. Ousterhout entwickelt Interpretersprache für verschiede
MehrPraktikum 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
MehrProgrammiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny
Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 7. Funktionen Einleitung Nach dem Prinzip Divide and Conquer bietet es sich an, größere Aufgaben in kleinere Teile zu unterteilen. Anweisungsblöcke,
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
MehrGroße Übung Praktische Informatik 1
Große Übung Praktische Informatik 1 2005-12-08 fuessler@informatik.uni-mannheim.de http://www.informatik.uni-mannheim.de/pi4/people/fuessler 1: Announcements / Orga Weihnachtsklausur zählt als Übungsblatt,
MehrEinführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1
Kapitel 11 Fehler und Ausnahmen Fehler und Ausnahmen 1 Ziele Fehlerquellen in Programmen und bei der Programmausführung verstehen Das Java-Konzept der Ausnahmen als Objekte kennenlernen Ausnahmen auslösen
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)
MehrPraktikum 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
MehrInhalt Streams Eingabe / Ausgbe in C Dateizugriff in C Eingabe / Ausgabe in C++ Dateizugriff in C++ Error Handling
Input / Output in C, C++ Inhalt Streams Eingabe / Ausgbe in C Dateizugriff in C Eingabe / Ausgabe in C++ Dateizugriff in C++ Error Handling Page 1 Ausgaben in C,C++ - generell Fuer C basierte Ausgaben:
Mehr1. Sei der String s = new String( xyzzy ) gegeben. Welcher Aufruf verändert s?
Prof. Dr. Detlef Krömker Ashraf Abu Baker Robert-Mayer-Str. 10 60054 Frankfurt am Main Tel.: +49 (0)69798-24600 Fax: +49 (0)69798-24603 EMail: baker@gdv.cs.uni-frankfurt.de 1. Sei der String s = new String(
MehrEinführung in die Programmierung Blockkurs Java
Michael Bader 8. 12. April 2002 Freitag Inhaltsübersicht Exceptions und Errors Ausnahmebehandlung: try/catch/finally Threads Zugriffskontrolle bei gemeinsamen Variablen: synchronized, wait(), notify()
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
MehrAlgorithmen und Programmierung II
Algorithmen und Programmierung II Vererbung Prof. Dr. Margarita Esponda SS 2012 1 Imperative Grundbestandteile Parameterübergabe String-Klasse Array-Klasse Konzepte objektorientierter Programmierung Vererbung
MehrProgrammiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm
Programmiersprachen Einführung in C Teil 2: Prof. Dr. int main (int argc, char *argv[]) int sum = 0; for (i = 0; i
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
MehrJava 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]...
MehrVon der UML nach C++
22 Von der UML nach C++ Dieses Kapitel behandelt die folgenden Themen: Vererbung Interfaces Assoziationen Multiplizität Aggregation Komposition Die Unified Modeling Language (UML) ist eine weit verbreitete
MehrJava I Vorlesung Exceptions
Java I Vorlesung 8 Exceptions 14.6.2004 Exceptions (Ausnahmen) Klassen für Ein- und Ausgabe Ausnahmen Ausnahmen (Exceptions) sind ein Mechanismus zum kontrollierten Melden und Reagieren auf Fehler. Man
MehrProbeklausur: BTI2 / Programmieren I Prof. Dr. H. Herold Erlaubte Hilfsmittel: Vorlesungsmitschrift; C-Bücher
Probeklausur: BTI2 / Programmieren I Prüfer Prof. Dr. H. Herold Erlaubte Hilfsmittel: Vorlesungsmitschrift; C-Bücher 1. Aufgabe Was gibt das im folgenden angegebene Programm bei seiner Ausführung auf den
MehrGebundene Typparameter
Gebundene Typparameter interface StringHashable { String hashcode(); class StringHashMap { public void put (Key k, Value v) { String hash = k.hashcode();...... Objektorientierte
MehrC 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
MehrEinstieg in die Informatik mit Java
Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form
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
MehrDie LogTrace-Bibliothek
Die LogTrace-Bibliothek Debugging-Hilfsmittel Weiteres Beispiel Motivation void Func() { FunktionLog var( Func );... Func2();... Ausgabe sollte hier sein: >Func > Func2 < Func2 < Func void Func2() { FunktionLog
MehrProgrammdokumentation
Programmdokumentation Der 1. Abgabe am 29.10.1998 über das 1. und 2. Programm INHALTSVERZEICHNIS: 1 ERSTES PROGRAMM: RECHNUNGSERSTELLUNG... 2 1.1 MODULARISIERUNG UND DATENSTRUKTUR... 2 1.1.1 Grundidee:
MehrProgrammieren I + II Regeln der Code-Formatierung
Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme WS 2016/2017, SS 2017 Programmieren I + II Regeln der Code-Formatierung In diesem Dokument finden
MehrGliederung Grundlagen Schlüsselworte try-catch Fehlerobjekte Fehlerklassen Schlüsselwort finally Schlüsselwort throws selbst erstellte Exceptions
try-catch Schlüsselworte try-catch e Schlüsselwort Schlüsselwort selbst erstellte ermöglichen die Behandlung von Fehlern, die zur Laufzeit entstehen. try-catch in C: Fehler führt immer zum Abbruch des
MehrProgrammieren - C++ Funktions-Templates
Programmieren - C++ Funktions-Templates Reiner Nitsch 8471 r.nitsch@fbi.h-da.de Was sind Templates? C++ Templates ermöglichen generische Programmierung. Das ist Programmierung unabhängig vom speziellen
Mehrboost::asio-bibliothek 238
boost::asio-bibliothek 238 Die von Christopher M. Kohlhoff seit 2003 entwickelte Bibliothek bietet eine für C++ geeignete Schnittstelle auf Basis der BSD-Sockets. Das bedeutet, dass prinzipiell auch alle
MehrPraxisorientierte Einführung in C++ Lektion: "Kontrollstrukturen"
Praxisorientierte Einführung in C++ Lektion: "Kontrollstrukturen" Christof Elbrechter Neuroinformatics Group, CITEC April 24, 2014 Christof Elbrechter Praxisorientierte Einführung in C++ April 24, 2014
MehrDie Programmiersprache C99: Zusammenfassung
Die Programmiersprache C99: Zusammenfassung Jörn Loviscach Versionsstand: 7. Dezember 2010, 19:30 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen in der Vorlesung. Videos dazu: http://www.youtube.com/joernloviscach
MehrEinfü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
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:
MehrComputernutzung für Experimentalphysiker Frei progammierbare Rechner als Werkzeuge in der Experimentalphysik Teil 2
Computernutzung für Experimentalphysiker Frei progammierbare Rechner als Werkzeuge in der Experimentalphysik Teil 2 Was bisher geschah: Die freie Programmierbarkeit macht Rechner zum echten Multitool Computer
Mehr2.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?
MehrReferenz. Bluetooth with NXT. Referenz zur Kommunikation mit Bluetooth zwischen mehreren NXT Prozessoren basierend auf NXC. Zelglistrasse 42 8122 Binz
Referenz Bluetooth with NXT Referenz zur Kommunikation mit Bluetooth zwischen mehreren NXT Prozessoren basierend auf NXC Veröffentlicht von: Martin Stypinski Zelglistrasse 42 8122
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
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
MehrAllgemeine Informatik II SS :30-13:30 Uhr
TU Darmstadt FB Informatik Prof. J. Fürnkranz Vordiplomsklausur - Lösungsvorschlag Allgemeine Informatik II SS 2005 15.09.2005 11:30-13:30 Uhr Hinweise: Als Hilfsmittel ist nur ein schwarzer oder blauer
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
MehrProgrammentwicklung ohne BlueJ
Objektorientierte Programmierung in - Eine praxisnahe Einführung mit Bluej Programmentwicklung BlueJ 1.0 Ein BlueJ-Projekt Ein BlueJ-Projekt ist der Inhalt eines Verzeichnisses. das Projektname heißt wie
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
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
Mehr5.13 Umgang mit Fehlern
5.13 Umgang mit Fehlern Klassifikation von Fehlern: Syntaxfehler: Lexikalische Fehler: Falsche oder unbekannte Worte String s neu String("Max"); Falsche Anordnung von Anweisungen: Falscher Typ: import
MehrJavakurs zu Informatik I. Henning Heitkötter
Javakurs zu Informatik I Arrays vergleichen Implementieren Sie folgende Methode, die prüft, ob die Elemente der beiden Arrays an jeder Position übereinstimmen: public static boolean identisch(int[] a,
MehrPIWIN 1 Übung Blatt 5
Fakultät für Informatik Wintersemester 2008 André Gronemeier, LS 2, OH 14 Raum 307, andre.gronemeier@cs.uni-dortmund.de PIWIN 1 Übung Blatt 5 Ausgabedatum: 19.12.2008 Übungen: 12.1.2009-22.1.2009 Abgabe:
MehrBei for-schleifen muss man nur immer bedenken, dass die letzte Anweisung immer erst nach der Ausführung der restlichen Anweisungen der Schleife
303 Bei for-schleifen muss man nur immer bedenken, dass die letzte Anweisung immer erst nach der Ausführung der restlichen Anweisungen der Schleife durchgeführt wird. 304 305 for-schleifen sind in Aktivitätsdiagrammen
MehrLösungsvorschläge. zu den Aufgaben im Kapitel 4
Lösungsvorschläge zu den Aufgaben im Kapitel 4 Aufgabe 4.1: Der KNP-Algorithmus kann verbessert werden, wenn in der Funktion nexttabelle die Zuweisung next[tabindex] = ruecksprung; auf die etwas differenziertere
MehrProgrammieren in Java
Programmieren in Java Dateien lesen und schreiben 2 Übersicht der heutigen Inhalte File Streams try-with-resources Properties csv-dateien 3 Klasse File Die Klasse java.io.file bietet Unterstützung im Umgang
MehrEinfü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
MehrHochschule Ravensburg-Weingarten Schriftliche Prüfung Programmieren Prof. Dr. M. Zeller
Hochschule Ravensburg-Weingarten Schriftliche Prüfung Programmieren Prof. Dr. M. Zeller Datum, Zeit, 08:00 09:30 Uhr (90 min) Aufgabenblätter 14 Seiten (einschl. Deckblatt) erreichbare Punktzahl 54 zugelassene
MehrBesonderheiten von C#
Besonderheiten von C# Wert- und Referenztypen int a, b; a = 3; b = a; a++; Debug.Assert( a==4 && b==3 &&!a.equals(b), "int ist doch kein Werttyp" ); RTyp ra, rb; ra = new RTyp(3); rb = ra; ra.inc(); Debug.Assert(
MehrJDBC. Es kann z.b. eine ODBC-Treiberverbindung eingerichtet werden, damit das JAVA-Programm auf eine ACCESS-DB zugreifen kann.
JDBC in 5 Schritten JDBC (Java Database Connectivity) ist eine Sammlung von Klassen und Schnittstellen, mit deren Hilfe man Verbindungen zwischen Javaprogrammen und Datenbanken herstellen kann. 1 Einrichten
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
MehrModellierung und Programmierung
Modellierung und Programmierung Dr. Martin Riplinger 19.12.2012 IAM Institut für Angewandte Mathematik Funktionszeiger: Vorüberlegungen Funktionsaufrufe sind bis jetzt im Code mit Name explizit angegeben
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
MehrEinfü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).
MehrMusterlösung Übungsblatt 2 Netzprogrammierung WS 05/06
Musterlösung Übungsblatt 2 Netzprogrammierung WS 05/06 Aufgabe 1 Bitte schreiben Sie ein RMI Objekt, das eine Person repräsentiert. Es soll die folgende Schnittstelle implementieren: public interface Person
MehrBinäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen
Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders
MehrBeispiel: DB-Mock (1/7)
Beispiel: DB-Mock (1/7) Aufgabe: DB, auf die vereinfachend nur lesend zugeriffen wird mocken warum: benötigte keine DB-Lizenz, garantiert gleiche Werte ohne aufwändiges reset, kein Zeitverlust durch Verbindungsaufbau
MehrDeklarationen 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.
MehrEinführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel.
Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 7, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)
Mehr