Templatemetaprogrammierung in C++ FlorianJW
|
|
|
- Gudrun Schubert
- vor 10 Jahren
- Abrufe
Transkript
1 Templatemetaprogrammierung in C++ FlorianJW
2 Wiederholung Verwendung #i n c l u de <v e c t o r > #i n c l u de <a l g o r i t h m > #i n c l u de <s t r i n g > i n t main ( ) { s t d : : v e c t o r <int > vec { 1, 2, 3 ; using s t d : : s t r i n g ; auto s t r = s t d : : min ( s t r i n g { foo, s t r i n g { bar ) ;
3 Wiederholung allgemeine Funktionstemplates // yes, t h i s i s e x t r e m l y s i m p l i f i e d : template<typename T> T max(t arg1, T arg2 ) { return ( arg1 > arg2 )? arg1 : arg2 ;
4 Wiederholung spezialisierte Funktionstemplates #i n c l u de <c s t d l i b > template<> char max( char arg1, char arg2 ) { return strcmp ( arg1, arg2 ) < 0? arg2 : arg1 ;
5 Wiederholung Klassentemplates und integrale Templateargumente template<typename T, s t d : : s i z e t Tsize > c l a s s my array { T data [ T s i z e ] ; p u b l i c : my array ( ) = d e f a u l t ; T& operator [ ] ( s i z e t i n d e x ){ return data [ i n d e x ] ; //... ;
6 Wiederholung teilweise Spezialisierung von Klassentemplates template<s t d : : s i z e t Tsize > c l a s s my array <bool, Tsize >{ // e x p e r i e n c e with s t d : : v e c t o r <bool > // showed t h a t t h i s i s a s t u p i d i d e a : i n t data [ ( T s i z e +1) / ( s i z e o f ( i n t ) CHAR BIT ) ] ; //... ; Nur für Klassentemplates. Für Funktionstemplates lässt sich ähnliches mit Überladung erreichen.
7 Wiederholung constexpr #i n c l u de <a r r a y > c o n s t e x p r i n t exp ( i n t base, i n t n ){ return n > 0? base exp ( base, n 1) : base ; i n t main ( ) { s t d : : a r r a y <int, exp (1024,2) > a r r ;
8 Wiederholung constexpr Chandler Carruth: But we are not done yet. It that hard. It is harder then variadic templates, I believe it is actually harder then lambdas. It is one of the most challenging to implement correctly features in entire C++11. Bjarne Stroustrup: It is interesting to note, that it is one of these features, that was made more complicated over the dead bodies of its proposers and initial implementors during the standardization.
9 Wiederholung variadische Templates (1) template<typename... T> s t d : : s t r i n g t e x t (T&&... a r g s ) { s t d : : s t r i n g s t r e a m r e t u r n s t r e a m ; t e x t h e l p e r ( r e t u r n s t r e a m, s t d : : forward <T>( a r g s )... ) ; return r e t u r n s t r e a m. s t r ( ) ;
10 Wiederholung variadische Templates (2) template<typename T> void t e x t h e l p e r ( s t d : : s t r i n g s t r e a m& stream, T&& arg ) { stream << s t d : : forward <T>( arg ) ; template<typename T, typename... Targs> void t e x t h e l p e r ( s t d : : s t r i n g s t r e a m& stream, T&& arg, argt &&... a r g s ) { stream << s t d : : forward <T>( arg ) ; t e x t h e l p e r ( stream, s t d : : forward <Targs >( a r g s )... ) ;
11 Typerich Programming Ein einfaches Klassentemplate... template<typename T> c l a s s p o i n t { T x ; T y ; p u b l i c : p o i n t (T x, T y ) : x {x, y {y { T g e t x ( ) { return x ; T g e t y ( ) { return y ; ; i n t main ( ) { i n t x {1, y {2; point <int > p{y, x ; // e r r o r?
12 Typerich Programming Mehr Typsicherheit (1) template<typename T> c l a s s x c o o r d { T v a l u e ; p u b l i c : x c o o r d (T v a l u e ) : v a l u e { v a l u e { T g e t v a l u e ( ) { return v a l u e ; //... ;
13 Typerich Programming Mehr Typsicherheit (2) template<typename T> c l a s s p o i n t { x coord <T> x ; y coord <T> y ; p u b l i c : p o i n t ( xcoord<t> x, ycoord<t> y ) : x {x, y {y { x coord <T> g e t x ( ) { return x ; y coord <T> g e t y ( ) { return y ; ; i n t main ( ) { x coord <int > x {1; y coord <int > y {2; point <int > p{x, y ; // no e r r o r
14 Typerich Programming Übersicht Vorteile Nachteile Typen prüfen Korrektheit Verwendung nicht-trivialer Typen findet nicht-triviale Fehler Ermöglichen weitreichendere Funktionsüberladungen. erhöhte Semantik im Code Aufwand die Typen zu erstellen potentiell viel Codeduplikation Unter Umständen aufwendigere Einarbeitung in den Code
15 Templateprogrammierung Einführung Naheliegende Lösung: Automatische Typerzeugung Externe Lösungen sind hässlich... Lösung via Präprozessor noch hässlicher und unflexibel. Lösung mit Templates aufwendiger aber möglich, weniger hässlich, potentiell fast beliebig flexibel.
16 Templateprogrammierung Definition Templatemetaprogramming: Programmierung im Templatesystem/Typsystem einer Programmiersprache zur Berechnung von Typen, Konstanten und Codepfaden während des Kompiliervorgangs.
17 Templateprogrammierung Um zum Punkt zu kommen (1) #i n c l u de b a s i c n u m b e r. hpp s t r u c t x c o o r d i d { ; template<typename T> using x c o o r d = t y p e b u i l d e r : : basic number <T, x c o o r d i d >; s t r u c t y c o o r d i d { ; template<typename T> using y c o o r d = t y p e b u i l d e r : : basic number <T, y c o o r d i d >;
18 Templateprogrammierung Um zum Punkt zu kommen (2) template<typename T> c l a s s p o i n t { x coord <T> x ; y coord <T> y ; p u b l i c : p o i n t ( x coord <T> x, y coord <T> y ) : x {x, y {y { x coord <T> g e t x ( ) { return x ; y coord <T> g e t y ( ) { return y ; ; i n t main ( ) { x coord <int > x {1; y coord <int > y {2; point <int > p{x, y ; // no e r r o r ;
19 Templateprogrammierung Grundlagen der Templateprogrammierung Enums als Konstanten nutzbar rekursive Templates mit Spezialisierungen ermöglichen Rekursion Strikt funktionale Programmiersprache mit Memoisation Berechnungen am Ende des Kompiliervorgangs abgeschlossen Zahlenberechnung dank constexpr nur eingeschränkt sinnvoll
20 Templateprogrammierung Fibonacci (1) Laufzeit: Θ(n) template<unsigned i n t N> s t r u c t f i b { enum{ v a l u e = f i b <N 1>:: v a l u e + f i b <N 2>:: v a l u e ; ; template<> s t r u c t f i b <1>{ enum{ v a l u e = 1 ; ; template<> s t r u c t f i b <0>{ enum{ v a l u e = 0 ; ;
21 Templateprogrammierung Fibonacci (2) Laufzeit: Θ(n) template<i n t N> s t r u c t f i b : s t d : : i n t e g r a l c o n s t a n t <u i n t 6 4 t, f i b <N 1>() + f i b <N 2>()> { ; template<> s t r u c t f i b <1> : s t d : : i n t e g r a l c o n s t a n t <int,1> { ; template<> s t r u c t f i b <0> : s t d : : i n t e g r a l c o n s t a n t <int,0> { ;
22 Templateprogrammierung Fibonacci (3) Laufzeit: Θ(n) template<u i n t 6 4 t N> using Num = s t d : : i n t e g r a l c o n s t a n t <u i n t 6 4 t, N>; template<i n t N> s t r u c t f i b : Num<f i b <N 1>() + f i b <N 2>()> { ; template<> s t r u c t f i b <1> : Num<1> { ; template<> s t r u c t f i b <0> : Num<0> { ;
23 Templateprogrammierung Fibonacci (4) ( n ) Laufzeit: Θ(fib(n)) = Θ , potentiell zur Programlaufzeit. c o n s t e x p r u i n t 6 4 t f i b ( i n t n ){ return n <= 1? n : f i b ( n 1) + f i b ( n 2);
24 Templateprogrammierung grundlegende Templates namespace s t d { template<bool Tenable, typename T=void> s t r u c t e n a b l e i f { ; template<typename T=void> s t r u c t e n a b l e i f <true, T>{ typedef T type ; ; // namespace s t d
25 Templateprogrammierung grundlegende Templates namespace s t d { template<typename T1, typename T2> s t r u c t i s s a m e : s t d : : f a l s e t y p e { ; template<typename T> s t r u c t is same <T, T> : s t d : : t r u e t y p e { ; // namespace s t d
26 Templateprogrammierung grundlegende Templates namespace s t d { template<bool Cond, typename I f t r u e, typename I f f a l s e > s t r u c t c o n d i t i o n a l { typedef I f t r u e type ; ; template<typename I f t r u e, typename I f f a l s e > s t r u c t is same <f a l s e, I f t r u e, I f f a l s e >{ typedef I f f a l s e type ; ; // namespace s t d
27 Templateprogrammierung SFINAE - substitution failure is not an error (1) template <typename T1, typename T2> auto fun (T1 a, T2 b ) > typename s t d : : e n a b l e i f < s t d : : is same <T1, T2>{, int >:: type { return s t a t i c c a s t <int >(a+b ) ; template <typename T1, typename T2, typename = typename s t d : : e n a b l e i f <! s t d : : is same <T1, T2>{>:: type > double fun (T1 a, T2 b ) { return s t a t i c c a s t <double >(a+b ) ;
28 Templateprogrammierung SFINAE - substitution failure is not an error (2) i n t main ( ) { // f i r s t f u n c t i o n : auto f = fun ( 1, 1. 0 ) ; // d e c l t y p e ( f ) i s double // second f u n c t i o n : auto i = fun ( 1, 1 ) ; // d e c l t y p e ( i ) i s i n t
29 Templateprogrammierung static assert static assert ist ein compile-time assert. Da Templates erst bei Verwendung instanziiert werden auch bisweilen nützlich. template<i n t Targ> void fun ( ) { s t a t i c a s s e r t ( ( Targ!=0)&&(Targ==0), This must not be c a l l e d ) ; i n t main (){
30 Templateprogrammierung Template-Templateargumente Auch Templates können Templateargumente sein. So ist etwa folgendes möglich: #i n c l u de <v e c t o r > template<typename T> using vec = s t d : : v e c t o r <T, s t d : : a l l o c a t o r <T>>; template<typename T, template<typename> c l a s s Tc = vec> c l a s s s a f e c o n t a i n e r : p u b l i c Tc<T> { p u b l i c : s a f e c o n t a i n e r ( ) : Tc<T>(){ T& operator [ ] ( i n t i n d e x ) { return t h i s >at ( i n d e x ) ; ;
31 Templateprogrammierung Policy-based Design Wie im letzten Beispiel schon zu sehen ist, kann Vererbung auch zum injecten von Methoden und Attributen genutzt werden. Policy-based design Private Vererbung kann hier sehr nützlich sein. Mit öffentlicher Vererbung können Mixins realisiert werden; dies verletzt allerdings schnell das is-a -Kriterium.
32 Templateprogrammierung Policy-based Design Öffentliche Vererbung zur Runtime zu benutzen, kann aber bei falscher Anwendung zu undefiniertem Verhalten führen: i n t main ( ) { // u n d e f i n e d b e h a v i o u r : // ( and u g l y : i f you r e a l l y need // a p o i n t e r, use a smart one ) s t d : : v e c t o r <int > p t r = new s a f e c o n t a i n e r <int >{; delete p t r ;
33 Typebuilder Bibliothek zur einfachen Erzeugung von Typen. Primärer Fokus sind Zahlen. reines C++, keine Spracherweiterungen, keine Libs außer der STL; dadurch hochportabel. keine Unterstützung alter Compiler vorgesehen. wo möglich kein Overhead gegenüber nativen Typen. basic number ermöglicht die Erstellung einer Bibliothek für physikalische Einheiten (SI-System) in 160 Zeilen.
34 Ausblick automatischer Returntype // i n f e r r e d r e t u r n t y p e : const auto f = [ ] ( s t d : : s t r i n g arg ){ return arg += f ; ; // u n t i l C++11: e x p l i c i t r e t u r n t y p e r e q u i r e d : s t d : : s t r i n g g ( s t d : : s t r i n g arg ){ return arg += g ; // the f u t u r e (C++14): auto h ( s t d : : s t r i n g arg ){ return arg += h ;
35 Ausblick Template-Constraints template<s o r t a b l e Cont> void s o r t ( Cont& c o n t a i n e r ) ; template<typename Cont> r e q u i r e s S o r t a b l e <Cont >() void s o r t ( Cont& cont ) // p o s s i b l e E x t e n s i o n : using C o n t a i n e r { Cont ; // ////////////////// void s o r t ( Cont& c ) ;
36 Ausblick Liberaleres constexpr Aufhebung der meisten Restriktionen. wichtige Ausnahmen: kein static/thread local, kein goto, keine uninitialisierten Variablen, keine Änderungen an nichtlokalen Variablen.
37 Sonstiges gefundene Compiler-Bugs: Clang Segfault in clang (Neuentdeckung, mittlerweile gefixt): i n t main ( ) { (1? throw 1 : true )? 1 : throw 2 ;
38 Sonstiges gefundene Compiler-Bugs: GCC gcc 4.7: falsche Zugriffsrechte (war im trunk bereits gefixt): c l a s s c { i n t f ; p u b l i c : template <typename A> d e c l t y p e ( f ) m(a) const ; ; d e c l t y p e ( c {.m( 0 ) ) i ;
39 Sonstiges Standard-Issues cwg active.html#1635: #i n c l u de <t y p e t r a i t s > template<bool bar> s t r u c t foo { template<typename T, typename = typename s t d : : e n a b l e i f <bar >:: type> void fun (T){ ; i n t main ( ) { foo<f a l s e > v a r { ;
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.
Einführung in die Programmierung
: Inhalt Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund - mit / ohne Parameter - mit / ohne Rückgabewerte
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
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)
Gebundene Typparameter
Gebundene Typparameter interface StringHashable { String hashcode(); class StringHashMap { public void put (Key k, Value v) { String hash = k.hashcode();...... Objektorientierte
Einführung in die Programmierung
Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In
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
Zä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 --
Modellierung und Programmierung 1
Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 19. November 2015 Gültigkeitsbereich (Scope) von Variablen { int m; {
Objektbasierte Entwicklung
Embedded Software Objektbasierte Entwicklung Objektorientierung in C? Prof. Dr. Nikolaus Wulff Objektbasiert entwickeln Ohne C++ wird meist C im alten Stil programmiert. => Ein endlose while-schleife mit
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
Informatik I (D-MAVT)
Informatik I (D-MAVT) Übungsstunde 1 [email protected] Distributed Systems Group, ETH Zürich kurze Stunden mit Stoffueberblick -> mehr Zeit fuer Fragen This semester s menu... Imperative Programmierung
Test-Driven Design: Ein einfaches Beispiel
Test-Driven Design: Ein einfaches Beispiel Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer SS 06 2 Ziele Veranschaulichung der Technik des Test-Driven Design am Beispiel eines Programms
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
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
Prinzipien Objektorientierter Programmierung
Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................
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
Scala kann auch faul sein
Scala kann auch faul sein Kapitel 19 des Buches 1 Faulheit Faulheit ( lazy evaluation ) ist auch in C oder Java nicht unbekannt int x=0; if(x!=0 && 10/x>3){ System.out.println("In if"); } Nutzen der Faulheit?
Pass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl
Funktionen Zusammenfassung von Befehlssequenzen als aufrufbare/wiederverwendbare Funktionen in einem Programmblock mit festgelegter Schnittstelle (Signatur) Derartige prozedurale Programmierung erlaubt
Felder, Rückblick Mehrdimensionale Felder. Programmieren in C
Übersicht Felder, Rückblick Mehrdimensionale Felder Rückblick Vereinbarung von Feldern: typ name [anzahl]; typ name = {e1, e2, e3,..., en} Die Adressierung von Feldelementen beginnt bei 0 Die korrekte
Informatik Grundlagen, WS04, Seminar 13
Informatik Grundlagen, WS04, Seminar 13 Informatik Informatik Grundlagen, Seminar 13 WS04 1 Was wir heute besprechen Nachbesprechen von Übungsblatt 11 Rekursion Grundprinzipien Übung Besprechung Übungsblatt
Unterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur
Unterprogramme Unterprogramme sind abgekapselte Programmfragmente, welche es erlauben, bestimmte Aufgaben in wiederverwendbarer Art umzusetzen. Man unterscheidet zwischen Unterprogrammen mit Rückgabewert
Übung 1 mit C# 6.0 MATTHIAS RONCORONI
Übung 1 mit C# 6.0 MATTHIAS RONCORONI Inhalt 2 1. Überblick über C# 2. Lösung der Übung 1 3. Code 4. Demo C# allgemein 3 aktuell: C# 6.0 mit.net-framework 4.6: Multiparadigmatisch (Strukturiert, Objektorientiert,
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
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:
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:
Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag
Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 9 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:
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).
4. Lernen von Entscheidungsbäumen. Klassifikation mit Entscheidungsbäumen. Entscheidungsbaum
4. Lernen von Entscheidungsbäumen Klassifikation mit Entscheidungsbäumen Gegeben sei eine Menge von Objekten, die durch /Wert- Paare beschrieben sind. Jedes Objekt kann einer Klasse zugeordnet werden.
WPF Steuerelemente Listbox, ComboBox, ListView,
WPF Steuerelemente Listbox, ComboBox, ListView, Dr. Beatrice Amrhein Überblick Einführung Listen ComboBox Tabellen 2 Einführung 3 Listen- und Tabellen-Elemente Listen und Tabellen-Elemente sind Steuerelemente,
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.
Einführung in die Java- Programmierung
Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger [email protected] WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113
In vergleichsbasierten Suchbäumen wird nicht in Schlüssel hineingeschaut.
Binäre Suchbäume Tries (Folie 182, Seite 58 im Skript) In vergleichsbasierten Suchbäumen wird nicht in Schlüssel hineingeschaut. In Tries entspricht die ite Verzweigung dem iten Zeichen des Schlüssels.
Nun kommt etwas wirklich Abgefahrenes. Wenn Sie zu den Leuten gehören, denen Logikrätsel keinen
B1 Template-Metaprogrammierung Template-Metaprogrammierung In diesem Kapitel Verfeinern Sie Ihre Kenntnisse über Template-Parameter Erfahren Sie, dass man auch nicht-generische Argumente in Templates einsetzen
Projektverwaltung Problem Lösung: Modulare Programmierung
Projektverwaltung Problem Der Sourcecode ür ein Programm wird immer länger und unübersichtlicher Eine Funktion, die in einem alten Projekt verwendet wurde, soll auch in einem neuen Projekt verwendet werden
Operationalisierbare Qualitätskriterien für die Programmierung mit Erfahrungen aus PRÜ1 und PRÜ2
Operationalisierbare Qualitätskriterien für die Programmierung mit Erfahrungen aus PRÜ1 und PRÜ2 von Christoph Knabe http://public.beuth-hochschule.de/~knabe/ Ch. Knabe: Operationalisierbare Qualitätskriterien
Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...
PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:
Klausur in Programmieren
Studiengang Sensorik/Sensorsystemtechnik Note / normierte Punkte Klausur in Programmieren Sommer 2009, 16. Juli 2009 Dauer: 1,5h Hilfsmittel: Keine (Wörterbücher sind auf Nachfrage erlaubt) Name: Matrikelnr.:
Propädeutikum. Dipl.-Inf. Frank Güttler
Propädeutikum 2015 Vorbereitungskurs Informatikstudium Erfolgreich Studieren Programmieren (C-Kurs) [email protected] Universität Leipzig Institut für Informatik Technische Informatik
Binä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
Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala
Das Typsystem von Scala 1 Eigenschaften Das Typsystem von Scala ist statisch, implizit und sicher 2 Nichts Primitives Alles ist ein Objekt, es gibt keine primitiven Datentypen scala> 42.hashCode() res0:
Ein Blick voraus. des Autors von C++: Bjarne Stroustrup. 04.06.2005 Conrad Kobsch
Ein Blick voraus des Autors von C++: Bjarne Stroustrup 04.06.2005 Conrad Kobsch Inhalt Einleitung Rückblick Nur eine Übergangslösung? Was würde C++ effektiver machen? Quelle 2 Einleitung Wo steht C++,
Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff
Programmieren in C Macros, Funktionen und modulare Programmstruktur Prof. Dr. Nikolaus Wulff Der C Präprozessor Vor einem Compile Lauf werden alle Präprozessor Kommandos/Makros ausgewertet. Diese sind
Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck
Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle
Hochschule München, FK 03 FA SS 2012. Ingenieurinformatik
Hochschule München, FK 03 FA SS 2012 Ingenieurinformatik Zulassung geprüft vom Aufgabensteller: Teil 1/Aufgabe 1: 30 Minuten ohne Unterlagen, Teil 2/Aufgaben 2-4: 60 Minuten, beliebige eigene Unterlagen
Java: Vererbung. Teil 3: super() www.informatikzentrale.de
Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und
Wiederholung und Vertiefung. Programmieren in C. Pointer und so... thoto. /dev/tal e.v. 6. April 2013 (Version vom 11. April 2013) Programmieren in C
Pointer und so... 6. April 2013 (Version vom 11. April 2013) Agenda für Heute 1 Wiederholung und Vertiefung Wiederholung 2 Was sind? Felder und Vektoren? Zeichenketten Wiederholung Wiederholung Funktion
5. Tutorium zu Programmieren
5. Tutorium zu Programmieren Dennis Ewert Gruppe 6 Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2008 by IPD Snelting
Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3.
Hello World Javakurs 2014, 1. Vorlesung Sebastian Schuck basierend auf der Vorlage von Arne Kappen wiki.freitagsrunde.org 3. März 2014 This work is licensed under the Creative Commons Attribution-ShareAlike
Einführung in die Java- Programmierung
Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger [email protected] WiSe 2012/13 1 Wichtig... Mittags Pommes... Praktikum A 230 C 207 (Madeleine) F 112 F 113 (Kevin) E
Datentypen: Enum, Array, Struct, Union
Datentypen: Enum, Array, Struct, Union C-Kurs 2013, 2. Tutorium Freitagsrunde http://wiki.freitagsrunde.org 10. September 2013 This work is licensed under the Creative Commons Attribution-ShareAlike 3.0
How To: Wie entwickle ich mit SharpDevelop Anwendungen für die PocketPC-Platform
How To: Wie entwickle ich mit SharpDevelop Anwendungen für die PocketPC-Platform 0. Benötigt werden folgende Softwarepakete:.NET Framework Software Development Kit (http://www.microsoft.com/downloads/details.aspx?familyid=4fe5bdb5-c7a7-4505-9927-2213868a325b&displaylang=en)
Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss
Systeme 1 Kapitel 6 Nebenläufigkeit und wechselseitiger Ausschluss Threads Die Adressräume verschiedener Prozesse sind getrennt und geschützt gegen den Zugriff anderer Prozesse. Threads sind leichtgewichtige
C-Probeklausur (Informatik 1; Umfang: C, Teil 1; SS07)
C-Probeklausur (Informatik 1; Umfang: C, Teil 1; SS07) 1. Aufgabe 6 Punkte Geben Sie Definitionen an für: float var; 1 a) eine float-variable var: b) einen Zeiger pvar, der float *pvar = &var; 1 auf die
Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung
Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative student"
Angewandte 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
188.154 Einführung in die Programmierung für Wirtschaftsinformatik
Beispiel 1 Vererbung (Liste) Gegeben sind die beiden Klassen ListNode und PersonNode. 188.154 Einführung in die Programmierung für Wirtschaftsinformatik Wiederholung, Prüfungsvorbereitung Monika Lanzenberger
Allgemeines. Verschiedene Sprachkonzepte C-Sprachfamilie C-ähnliche Programmiersprachen Allgemeines zu C. #include <stdio.h>
Allgemeines Verschiedene Sprachkonzepte C-Sprachfamilie C-ähnliche Programmiersprachen Allgemeines zu C #include main() { printf( hello world\n ); } Peter Sobe 1 Die Großfamilie der C-Sprachen
Delegatesund Ereignisse
Delegatesund Ereignisse «Delegierter» Methoden Schablone Funktionszeiger Dr. Beatrice Amrhein Überblick Definition eines Delegat Einfache Delegate Beispiele von Delegat-Anwendungen Definition eines Ereignisses
Benutzung der LS-Miniscanner
Benutzung der LS-Miniscanner Seit Januar 2010 ist es möglich für bestimmte Vorgänge (Umlagerungen, Retouren, Inventur) die von LS lieferbaren Miniscanner im Format Autoschlüsselgröße zu benutzen. Diese
C++11 ist da. Und jetzt?
C++11 ist da. Und jetzt? Embedded Event 2012 Raphael Meyer Was ist C++11? JTC1 SC22 WG21 Was ist C++11? Joint ISO/IEC Technical Committee 1: Information Technology Subcommittee 22: Programming Languages
Zur drittletzten Zeile scrollen
1 Fragen und Antworten zur Computerbedienung Thema : Zur drittletzten Zeile scrollen Thema Stichwort Programm Letzte Anpassung Zur drittletzten Zeile scrollen Scrollen VBA Excel 1.02.2014 Kurzbeschreibung:
Informatik Repetitorium SS 2009. Volker Jaedicke [email protected] 0179 1322692
Informatik Repetitorium SS 2009 Volker Jaedicke [email protected] 0179 1322692 Operatoren und Datentypen Beispiel: Anweisungen Variable int a float b int c a= a % (int) (++b-1/4) Vorher 36 3.5 c=b
Einführung in die Programmierung
Name, Vorname Matrikelnummer Probeklausur zur Vorlesung Einführung in die Programmierung WS 2008/09 Dauer: 2 Stunden Hinweise: Schreiben Sie Ihren Namen und Ihre Matrikelnummer auf dieses Deckblatt und
C/C++-Programmierung
1 C/C++-Programmierung new/delete, virtual, Typumwandlungen Sebastian Hack Christoph Mallon (hack mallon)@cs.uni-sb.de Fachbereich Informatik Universität des Saarlandes Wintersemester 2009/2010 2 new/delete
Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:
VBA Programmierung mit Excel Schleifen 1/6 Erweiterung der Aufgabe Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: Es müssen also 11 (B L) x 35 = 385 Zellen berücksichtigt
Programmieren in Haskell Einführung
Programmieren in Haskell Einführung Peter Steffen Universität Bielefeld Technische Fakultät 16.10.2009 1 Programmieren in Haskell Veranstalter Dr. Peter Steffen Raum: M3-124 Tel.: 0521/106-2906 Email:
Melde- und Veröffentlichungsplattform Portal (MVP Portal) Hochladen einer XML-Datei
Seite 1 Melde- und Veröffentlichungsplattform Portal (MVP Portal) Hochladen einer XML-Datei Seite 2 1 Inhalt Melde- und Veröffentlichungsplattform Portal... 1 (MVP Portal)... 1 Hochladen einer XML-Datei...
Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung
Grundlagen der Programmierung Prof. H. Mössenböck 14. Schrittweise Verfeinerung Entwurfsmethode für Algorithmen Wie kommt man von der Aufgabenstellung zum Programm? Beispiel geg.: Text aus Wörtern ges.:
Erwin Grüner 09.02.2006
FB Psychologie Uni Marburg 09.02.2006 Themenübersicht Folgende Befehle stehen in R zur Verfügung: {}: Anweisungsblock if: Bedingte Anweisung switch: Fallunterscheidung repeat-schleife while-schleife for-schleife
C++ Tutorial: Timer 1
C++ Tutorial: Timer 1 Timer v1.0 Einleitung Raum und Zeit sind spätestens seit der kopernikanischen Wende wichtige Gegenstände des Denkens geworden. In einem Programm bestimmt die Zeit die Abläufe und
Kontrollstrukturen und Funktionen in C
Kontrollstrukturen und Funktionen in C Lernziele: Vertiefen der Kenntnisse über Operatoren, Kontrollstrukturen und die Verwendung von Funktionen. Aufgabe 1: Quickies: Datentypen in C a) Was sind die elementaren
Einführung in. Logische Schaltungen
Einführung in Logische Schaltungen 1/7 Inhaltsverzeichnis 1. Einführung 1. Was sind logische Schaltungen 2. Grundlegende Elemente 3. Weitere Elemente 4. Beispiel einer logischen Schaltung 2. Notation von
Zusammengesetzte Datentypen -- Arrays und Strukturen
Zusammengesetzte Datentypen -- und Strukturen Informatik für Elektrotechnik und Informationstechnik Benedict Reuschling [email protected] Hochschule Darmstadt Fachbereich Informatik WS 2013/14
Programmiervorkurs SS 2011 Technische Universität Darmstadt Jan Hendrik Burdinski, Felix Kerger http://www.d120.de/vorkurs.
Programmiervorkurs SS 2011 Technische Universität Darmstadt Jan Hendrik Burdinski, Felix Kerger http:www.d120.de/vorkurs Aufgabenblatt 3 Du findest zur Bearbeitung dieses Aufgabenblatts zu einigen Aufgaben
Sichere E-Mail Anleitung Zertifikate / Schlüssel für Kunden der Sparkasse Germersheim-Kandel. Sichere E-Mail. der
Sichere E-Mail der Nutzung von Zertifikaten / Schlüsseln zur sicheren Kommunikation per E-Mail mit der Sparkasse Germersheim-Kandel Inhalt: 1. Voraussetzungen... 2 2. Registrierungsprozess... 2 3. Empfang
Objektorientierte Programmierung für Anfänger am Beispiel PHP
Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten
Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben
Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16 Fakultät für Informatik Lehrstuhl 14 Lars Hildebrand, Marcel Preuß, Iman Kamehkhosh, Marc Bury, Diana Howey Übungsblatt
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.:
Einführung in wxwidgets & wxdev-c++
Einführung in wxwidgets & wxdev-c++ Vortrag im Rahmen der Vorlesung Computational Physics im Sommersemester 2009 Folie 1/13 Gliederung wxwidgets: Übersicht wxdev-c++: Übersicht Installation wxwidgets Syntax
Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 16
Kapitel 5 Arithmetische Operatoren Seite 1 von 16 Arithmetische Operatoren - Man unterscheidet unäre und binäre Operatoren. - Je nachdem, ob sie auf einen Operanden wirken, oder eine Verknüpfung zweier
Teaser-Bilder erstellen mit GIMP. Bildbearbeitung mit GIMP 1
Teaser-Bilder erstellen mit GIMP 08.08.2014 Bildbearbeitung mit GIMP 1 Auf den folgenden Seiten werden die wichtigsten Funktionen von GIMP gezeigt, welche zur Erstellung von Bildern für die Verwendung
5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu
Daten Makro + VBA effektiv 5 DATEN 5.1. Variablen Variablen können beliebige Werte zugewiesen und im Gegensatz zu Konstanten jederzeit im Programm verändert werden. Als Variablen können beliebige Zeichenketten
Programmierung in C. Grundlagen. Stefan Kallerhoff
Programmierung in C Grundlagen Stefan Kallerhoff Vorstellungsrunde Name Hobby/Beruf Schon mal was programmiert? Erwartungen an den Kurs Lieblingstier Für zu Hause C-Buch online: http://openbook.rheinwerk-verlag.de/c_von_a_bis_z/
Daniel Warneke [email protected] 08.05.2006. Ein Vortrag im Rahmen des Proseminars Software Pioneers
Design Patterns Daniel Warneke [email protected] 08.05.2006 Ein Vortrag im Rahmen des Proseminars Software Pioneers Design Patterns 1/23 Übersicht Einleitung / Motivation Design Patterns Beispiele Rolle des
Um das Versenden von Anhängen an emails zu ermöglichen, wurde der Assistent für die Kommunikation leicht überarbeitet und wo nötig verbessert.
Release glit.app Release 1.2.0.2485 Über diesen Release Nebst vielen kleinen Fehlerkorrekturen, wurde hauptsächlich an der Erstellung von Offerten, Bestellungen und Rechnungen als PDF, sowie das direkte
Computeranwendung und Programmierung (CuP)
Computeranwendung und Programmierung (CuP) VO: Peter Auer (Informationstechnologie) UE: Norbert Seifter (Angewandet Mathematik) Organisatorisches (Vorlesung) Vorlesungszeiten Montag 11:15 12:45 Freitag
Arbeiten mit UMLed und Delphi
Arbeiten mit UMLed und Delphi Diese Anleitung soll zeigen, wie man Klassen mit dem UML ( Unified Modeling Language ) Editor UMLed erstellt, in Delphi exportiert und dort so einbindet, dass diese (bis auf
10 Erweiterung und Portierung
10.1 Überblick In vielen Fällen werden Compiler nicht vollständig neu geschrieben, sondern von einem Rechnersystem auf ein anderes portiert. Das spart viel Arbeit, ist aber immer noch eine sehr anspruchsvolle
C/C++ Programmierung
1 C/C++ Programmierung Grundlagen: Anweisungen Sebastian Hack Christoph Mallon (hack mallon)@cs.uni-sb.de Fachbereich Informatik Universität des Saarlandes Wintersemester 2009/2010 2 Anweisungen (Statements)
Pragmatik von Programmiersprachen
Pragmatik von Programmiersprachen Im Kontext der Notation von Quelltexten Mike Becker, 11. Dezember 2014 Szenario: IT Dienstleister Unternehmen: Produkte: Kunden: IT Dienstleistung Beratung und Software
FH-SY Chapter 2.4 - Version 3 - FH-SY.NET - FAQ -
FH-SY Chapter 2.4 - Version 3 - FH-SY.NET - FAQ - Version vom 02.02.2010 Inhaltsverzeichnis 1. KANN ICH BEI EINER EIGENEN LEKTION NACHTRÄGLICH NOCH NEUE LERNINHALTE ( WAS WURDE BEHANDELT? ) EINFÜGEN?...
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!
Objektorientierte Programmierung
Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Zusatzaufgaben Lösungsvorschlag Objektorientierte Programmierung Lösung 22 (Java und UML-Klassendiagramm)
Wie Sie mit Mastern arbeiten
Wie Sie mit Mastern arbeiten Was ist ein Master? Einer der großen Vorteile von EDV besteht darin, dass Ihnen der Rechner Arbeit abnimmt. Diesen Vorteil sollten sie nutzen, wo immer es geht. In PowerPoint
Programmierkurs Java
Programmierkurs Java Konstruktor, Statische Methoden Packages Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Initialisierung von Datenstrukturen
Java Kurs für Anfänger Einheit 5 Methoden
Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden
Java-Schulung Grundlagen
Java-Schulung Grundlagen Java 2 Standard Edition JDK 5 / 6 31.05.2008 Marcel Wieczorek 1 Themenübersicht Basiswissen Objektorientierung Datentypen Fehlerbehandlung Sonstiges Einführung Klassen, Strings
Diplomarbeit Antrittsvortrag
Diplomarbeit Antrittsvortrag Christian Müller Run-time byte code compilation, interpretation and optimization for Alice Betreuer: Guido Tack Verantwortlicher Prof.: Gert Smolka Die nächsten 15 Minuten...
