Fortgeschrittene C++-Programmierung
|
|
|
- Maja Engel
- vor 10 Jahren
- Abrufe
Transkript
1 Vorlesung: "Fortgeschrittene C++-Programmierung" Fortgeschrittene C++-Programmierung SS 2009 Teil 1 Sandro Andreotti - [email protected] 1
2 Vorlesung: "Fortgeschrittene C++-Programmierung" 2 Organisation Homepage: Vormittags: Seminar Raum 005 (Takustraße 9) Anwesenheitspflicht! Nachmittags: Übungen am Rechner Raum 017 (Arnimallee 2-6) Abteilung A: Uhr Abteilung B: Uhr Die Anwesenheitspflicht beim Seminar gilt für diejenigen Teilnehmer, die einen Schein erwerben wollen. Aufgrund der beschränkten Anzahl der verfügbaren Rechnerplätze bitten wir die Teilnehmer, bei den Übungen Gruppen von 2 oder 3 zu bilden und die Aufgaben gemeinsam zu bearbeiten. 2
3 Vorlesung: "Fortgeschrittene C++-Programmierung" 3 Scheinvergabe unbenoteter Schein: 2 SWS = 2 LP (ECTS) "Allgemeine Berufsvorbereitung" Voraussetzungen: 1. Teilnahme am Seminar (Unterschrift!) 2. Vorführen einer Prüfungsaufgabe am Freitag in der Übung. An jedem Tag von Montag bis Donnerstag erhalten Sie eine Prüfungsaufgabe, die Sie unbedingt bearbeiten sollten. Am Freitag müssen Sie eine davon am Rechner vorführen, welche entscheidet der Dozent. Die Vorführung kann in Gruppen von bis zu 3 Personen erfolgen; jeder, der einen Schein bekommen möchte, muss daran teilnehmen. Jeder Teilnehmer muss dazu befähigt sein, Fragen zum erstellten Programm zu beantworten. Besteht berechtigter Zweifel daran, dass einer der Teilnehmer nicht aktiv an der Programmierung der vorgeführten Aufgabe teilgenommen hat, kann der Teilnahmeschein verweigert werden. 3
4 Vorlesung: "Fortgeschrittene C++-Programmierung" 4 Vorläufiger Plan Dienstag: Einführung, Templates Mittwoch: Type Conversion, Overload Resolution Donnerstag: Speicherverwaltung, Virtual Freitag: Namespaces, STL, Trickkiste 4
5 Vorlesung: "Fortgeschrittene C++-Programmierung" 5 Literaturhinweise auf der Veranstaltungshomepage. ISO/IEC "Programming Languages C++" (1998) Der Standard ist die Bibel dieses Kurses. Literatur Programming Languages C++, ISO/IEC 14882, 1998 Stroustrup, "Die C++ Programmiersprache" (2000), ISBN X, 49,95 Lippman, Lajoie, "C++" (2002), ISBN , 25,00 Josuttis, "The C++ Standard Library - A Tutorial and Reference" (2002), ISBN , c.a. 55,00 Meyers, "Effektiv C++ programmieren" (1997), ISBN , 29,95 Meyers, "Mehr Effektiv C++ programmieren" (1997), ISBN , 29,95 - Eine Art "Tipps & Tricks"-Fundgrube Kernighan, Ritchie, "Programmieren in C" (1990), ISBN , 32,90 - Der Klassiker zu C - nicht zu C++ Links finden sich auf der Veranstaltungshomepage ( 5
6 Vorlesung: "Fortgeschrittene C++-Programmierung" 6 Zur Einstimmung: Quiz 1 Frage: Was gibt dieses Programm aus? int i = 10; for (i = 0; i < 4; ++i); switch (i) case 0: std::cout << 1; default: std::cout << i; } } Die Antwort: 4 Grund: Das ; am Ende der for-anweisung. Wäre das ; nicht dort, so würde das Programm folgendes ausgeben: Diese Quiz-Fragen dienen dazu, den Kenntnisstand der Hörer zu testen. Es ist nicht unbedingt notwendig, alle Fragen richtig beantworten zu können, um an der Vorlesung teilnehmen zu können. 6
7 Vorlesung: "Fortgeschrittene C++-Programmierung" 7 Quiz 2 Was ist folgende Variable und wieviel Speicher benötigt sie? char const * Arr [10]; Faustregel: Deklarationen liest man von innen nach außen : Lies: Arr ist ein Array von Pointern auf konstante chars Der Speicherbedarf von Arr beträgt sizeof(arr) == 40 kein Array konstanter Pointer auf chars, das wäre char * const Arr [10]; kein Pointer auf ein Array von konstanten chars, das wäre: char const (* Arr) [10]; 7
8 Vorlesung: "Fortgeschrittene C++-Programmierung" 8 Quiz 3 Die folgende Zeile wurde einem korrekten C++- Programm entnommen. Frage: Welche Typen haben X, Y und Z? int Z = X *** Y; (Es gibt alternative Antworten) Antwort: int X; int ** Y; Das erste * in X***Y ist die Multiplikation, die beiden anderen * sind jeweils ein indirection-operator (Dereferenzierungsoperator). Alternative Antwort: X oder Y (oder beide) können Klassen sein, bei denen die Operatoren auf geeignete Weise überladen wurden. Z ist auf jeden Fall int. 8
9 Vorlesung: "Fortgeschrittene C++-Programmierung" 9 Templates: Motivation Aufgabe: Schreibe eine Funktion max(a, b), die das Maximum zweier Zahlen a und b ausgibt: int max (int a, int b) if (a > b) return a; return b; } Problem: Funktion wird für alle Typen benötigt float x = max(1.4, y); Eine Alternative wäre die Verwendung von Preprocessor-Macros, doch dann müsste man auch alle bekannten Nachteile von Macros hinnehmen. 9
10 Vorlesung: "Fortgeschrittene C++-Programmierung" 10 Lösung: Templates Templates sind Schablonen, nach denen der Compiler Code herstellt. template <typename T> T max (T a, T b) if (a > b) return a; return b; }... float x = 1, y = 2; float z = max (x, y); Nach der template-definition kann die Funktion max mit beliebigen Typen verwendet werden. Wichtig dabei ist aber, dass die Argumente beide denselben Typ haben. T nennen wir einen Template-Parameter oder auch Template-Argumente. Statt typename T kann man auch class T schreiben eine irreführende Notation, da es sich bei T (wie man im Beispiel sieht) ja nicht notwendigerweise um eine Klasse handeln muss. 10
11 Vorlesung: "Fortgeschrittene C++-Programmierung" 11 Template-Argumente Es gibt zwei Möglichkeiten, die Template- Argumente zu bestimmen: 1. Explizit: template <typename T1, typename T2> void f (T1 a, T2 b)... } f<int,float>(0, 3.5); 2. Implizit: int x = 0; float y = 3.5; f(x, y); Implizite Argumentbestimmung funktioniert selbstverständlich nur bei Template- Funktionen, nicht bei Template-Klassen (siehe unten). 11
12 Vorlesung: "Fortgeschrittene C++-Programmierung" 12 Template-Argumente, gemischt Mischung von expliziten und impliziten Bestimmung von Template-Argumenten: template <typename T1, typename T2, typename T3> void f (T3 x, T2 y, T1 z)... } f<int>( (char) 0, 3.5F, 7 ); 1. Argument: char x 2. Argument: float y 3. Argument: int z Die Festlegung des Typs von x erfolgt über einen Cast nach char. Suffix F in 3.5F zeigt an, dass es sich bei der Konstante um ein float handelt. Der Typ von z wird durch explizite Bestimmung festgelegt. Da nur ein Typ explizit angegeben wurde, nimmt der Compiler dies als erstes Template-Argument (d.h. für T1) an. Wie man sieht muss die Reihenfolge der Template-Argumente nicht mit der Reihenfolge ihrer Benutzung in der Liste der Funktions-Argumente übereinstimmen. 12
13 Vorlesung: "Fortgeschrittene C++-Programmierung" 13 Implizit: Problem 1 Folgender Code verursacht ein Problem: template <typename T> T max (T a, T b) //... } double x = 1.0; double y = max(x, 0); error: template parameter 'T' is ambiguous Das Problem ist, dass die 0 im Aufruf von max keine Festlegung des Types erlaubt: 0 kann ein double sein, aber z.b. auch ein int oder ein char. Abhilfe könnte man z.b. so schaffen: double y = max(x, 0.0); Insgesamt gilt: Der Compiler ist recht pingelig, was die Übereinstimmung der Typen bei Template-Parametern anbelangt: Wenn deklariert wurde, dass zwei Parameter einer Funktion vom gleichen Typ T seien, dann müssen die Argumente beim Aufruf der Funktion auch tatsächlich vom selben Typ sein. 13
14 Vorlesung: "Fortgeschrittene C++-Programmierung" 14 Implizit: Problem 2 Bei folgendem Beispiel funktioniert eine implizite Bestimmung des Template-Arguments gar nicht: template <typename T> T zero () return 0; } int x = zero(); error: could not deduce template argument Das gleiche Problem gab es bei polymorphen Funktionen: Auch hier durften 2 Funktionen sich nicht nur durch ihre Rückgabetypen unterscheiden. Der Type einer Rückgabe kann vom Compiler generell nicht aus dem Aufruf der Funktion allein ermittelt werden. 14
15 Vorlesung: "Fortgeschrittene C++-Programmierung" 15 todo: funktionsargumente koennen gleichsam pattern sein, in denen template-argumente verwendet werden. Beispiel: basic_string<tchar, > 15
16 Vorlesung: "Fortgeschrittene C++-Programmierung" 16 Parameter-Deklarationen Statt eines Types kann auch eine Konstante als Template-Parameter spezifiziert werden: Bsp.: template <int I> void print () std::cout << I; } print<5>(); Ausgabe: 5 Die Konstante muss explizit übergeben werden. Der Wert muss eine zur Compile-Zeit bekannte Konstante sein. Es sind nur aufzählbare Typen für derartige Konstanten erlaubt (z.b. int, aber nicht double). 16
17 Vorlesung: "Fortgeschrittene C++-Programmierung" 17 Template-Klassen Wie Template-Funktionen lassen sich auch Template-Klassen definieren: template <typename T> struct Pair T element1; T element2; }; Pair <int> p; Bei Template-Klassen müssen die Argumente immer explizit angegeben werden. 17
18 Vorlesung: "Fortgeschrittene C++-Programmierung" 18 Defaults für Template Argumente Bsp.: template <typename T = int> struct Pair T element1; T element2; }; (nur für Template-Klassen) Pair < > p; Die Angabe von Defaults funktioniert nur bei Template-Klassen, nicht bei Template-Funktionen. Auf die leeren spitzen Klammern < > kann bei der Benutzung des Templates nicht verzichtet werden. Defaults können auch bei Parameter-Deklarationen spezifiziert werden: template <int I = 5> struct FixArray int array_member[i]; }; FixArray<> f; 18
19 Vorlesung: "Fortgeschrittene C++-Programmierung" 19 Template Beispiele Frage: Wozu kann man die Argumente von Template-Klassen verwenden? Beispiel 1: Typen für Member template <typename T> struct Pair typedef T MyType; T element1; T element2; T get_max(); void set_both(t elm1, T elm2); }; 19
20 Vorlesung: "Fortgeschrittene C++-Programmierung" 20 typename Hinweis für den Compiler: hier kommt ein Type! template <typename T> struct A typename T::Alphabet x; typedef int MyInteger; }; typename A::MyInteger y; typename steht vor Typen, die in Template-Klassen definiert sind 2. die von Template-Argumenten abhängen Siehe auch: ISO/IEC 14882, 14.6 Name resolution 20
21 Vorlesung: "Fortgeschrittene C++-Programmierung" 21 Template Spezialisierung Templates können für bestimmte Template- Argumente spezialisiert werden. template <typename T> struct MyClass int foo; }; template < > struct MyClass <int> int x; }; MyClass<int> obj; obj.x = 17; obj.foo = 18; //error! foo ist in MyClass<int> nicht bekannt. 21
22 Vorlesung: "Fortgeschrittene C++-Programmierung" 22 Quiz 4: Was wird ausgegeben? template <typename T> struct C static void f() std::cout << "allgemein"; } }; template < > struct C <char*> static void f() std::cout << "speziell"; } }; template <typename T> void call_f(t & t) C<T>::f(); } call_f("hallo"); Antwort: allgemein. Grund: das String-Literal "hallo" ist nicht vom Typ char * sondern vom Typ char const [6], und somit müsste C genau für diesen Typ spezialisiert werden. 22
23 Vorlesung: "Fortgeschrittene C++-Programmierung" 23 Quiz 4a: Und jetzt?... typedef char * cptr; cptr x; call_f(x); Antwort: speziell Durch typedef wird kein neuer Typ erzeugt, sondern nur eine Art alias für einen anderen Typ. 23
24 Vorlesung: "Fortgeschrittene C++-Programmierung" 24 Partielle Spezialisierung template <typename T, unsigned int I> class Array T arr [I]; }; template <typename T> class Array <T, 0> }; 24
25 Vorlesung: "Fortgeschrittene C++-Programmierung" 25 Metafunctions (Eine Anwendung für Template Spezialisierung.) Beispiel: Eine Funktion auf Strings template <typename TString> char fist_character(tstring & string) return string[0]; } Problem: Was machen wir, wenn der Alphabettyp von TString nicht char ist? 25
26 Vorlesung: "Fortgeschrittene C++-Programmierung" 26 Metafunctions Idee: Eine Art "Funktion", die Typen zurückliefert Pseudo-Code: template <typename TString> Value(TString) fist_character(tstring & string) return string[0]; } Vorsicht: Der angegebene Code ist natürlich kein gültiges C++. 26
27 Vorlesung: "Fortgeschrittene C++-Programmierung" 27 Metafunctions Lösung: Verwende Klassen-Templates template <typename T> struct Value typedef char Type; }; template <typename TString> typename Value<TString>::Type fist_character(tstring & string) return string[0]; } 27
28 Vorlesung: "Fortgeschrittene C++-Programmierung" 28 Metafunction Spezialisiere Template für verschiedene Typen: template <typename TChar, typename TTraits, typename TAlloc> struct Value < basic_string<tchar, TTraits, TAlloc> > typedef TChar Type; }; template <> struct Value <char *> typedef char Type; }; 28
29 Vorlesung: "Fortgeschrittene C++-Programmierung" 29 rekursive Templates Bsp.: template <int I> struct Tupel: Tupel <I-1> }; template < > struct Tupel<1> }; Die eben vorgestellten Techniken gehören zum sogenannten "Template Metaprogramming". Der Ausdruck "Metaprogramming" erklärt sich daher, dass man sich Templates als eine Art Programmiersprache vorstellen kann, die vom Compiler interpretiert wird, um C++-Code zu erzeugen. Aufgabe 4 auf der nächsten Seite gibt ein Beispiel für diese Art der Programmierung. 29
30 Aufgaben zum Dienstag: 1. Aufgabe: (PRÜFUNGSAUFGABE) a) Schreiben Sie Funktionen length(str) und charat(str, i), mit denen man die Länge bzw. das i-te Zeichen eines Strings str ermitteln kann, und zwar sowohl für Strings der Standard-Bibliothek (basic_string) als auch für 0-terminierte char arrays ("c-style Strings"). b) Schreiben Sie ein einzelnes Funktions-Template printrev(str), das unter Verwendung von length(str) und charat(str, i) einen String str rückwärts ausgibt. 2. Aufgabe: Schreiben Sie ein Klassen-Template Tuple, dass N Objekte des Typs T speichert. Dabei sollen N und T als Template-Argumente festgelegt sein. Definieren Sie Member-Funktionen, mit denen man auf die einzelnen Objekte innerhalb eines Tuple-Objekts zugreifen kann. Testen Sie ihre Klasse in einem Projekt mit mindestens zwei translation units (d.h. mit mindestens zwei cpp- Dateien). 3. Aufgabe: Untersuchen Sie folgende Fragen, indem Sie kurze Testprogramme schreiben: a) Können Konstruktoren von Klassen auch Funktions-Templates sein? Und wie ist es mit Konstruktoren von Klassen-Templates? b) Können Klassen-Templates auch statische Datenmember enthalten, und wie kann man diese initialisieren? 4. Aufgabe: (schwierig!) Schreiben Sie ein Klassen-Template template <int I> struct Fib, mit dessen Hilfe zur Compilezeit Fibonacci-Zahlen berechnet werden können, d.h. man bekommt z.b. mit Fib<6>::Value den Wert 8 geliefert. 30
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
Programmierkurs Java
Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen
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
1 Vom Problem zum Programm
Hintergrundinformationen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik WS 02/03 AG Betriebssysteme FB3 Kirsten Berkenkötter 1 Vom Problem zum Programm Aufgabenstellung analysieren
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
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
Übungsblatt 3: Algorithmen in Java & Grammatiken
Humboldt-Universität zu Berlin Grundlagen der Programmierung (Vorlesung von Prof. Bothe) Institut für Informatik WS 15/16 Übungsblatt 3: Algorithmen in Java & Grammatiken Abgabe: bis 9:00 Uhr am 30.11.2015
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
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
Professionelle Seminare im Bereich MS-Office
Der Name BEREICH.VERSCHIEBEN() ist etwas unglücklich gewählt. Man kann mit der Funktion Bereiche zwar verschieben, man kann Bereiche aber auch verkleinern oder vergrößern. Besser wäre es, die Funktion
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
Lineargleichungssysteme: Additions-/ Subtraktionsverfahren
Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als
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 --
Übungen 19.01.2012 Programmieren 1 Felix Rohrer. Übungen
Übungen if / else / else if... 2... 2 Aufgabe 2:... 2 Aufgabe 3:... 2 Aufgabe 4:... 2 Aufgabe 5:... 2 Aufgabe 6:... 2 Aufgabe 7:... 3 Aufgabe 8:... 3 Aufgabe 9:... 3 Aufgabe 10:... 3 switch... 4... 4 Aufgabe
Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster
Es gibt in Excel unter anderem die so genannten Suchfunktionen / Matrixfunktionen Damit können Sie Werte innerhalb eines bestimmten Bereichs suchen. Als Beispiel möchte ich die Funktion Sverweis zeigen.
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:
Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.
Aufgabe 1.30 : Schreibe ein Programm DM_in_Euro.java zur Umrechnung eines DM-Betrags in Euro unter Verwendung einer Konstanten für den Umrechnungsfaktor. Das Programm soll den DM-Betrag als Parameter verarbeiten.
II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:
Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen
Ü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:
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
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:
Objektorientierte Programmierung. Kapitel 12: Interfaces
12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/
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:
Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005
Einführung in die objektorientierte Programmierung mit Java Klausur am 19. Oktober 2005 Matrikelnummer: Nachname: Vorname: Semesteranzahl: Die Klausur besteht aus drei Frageblöcken zu den Inhalten der
Leichte-Sprache-Bilder
Leichte-Sprache-Bilder Reinhild Kassing Information - So geht es 1. Bilder gucken 2. anmelden für Probe-Bilder 3. Bilder bestellen 4. Rechnung bezahlen 5. Bilder runterladen 6. neue Bilder vorschlagen
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
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
Tutorium Rechnerorganisation
Woche 2 Tutorien 3 und 4 zur Vorlesung Rechnerorganisation 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu
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
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
Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter
Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter Aufgabe 3: Konto Um Geldbeträge korrekt zu verwalten, sind zwecks Vermeidung von Rundungsfehlern entweder alle Beträge in Cents umzuwandeln und
40-Tage-Wunder- Kurs. Umarme, was Du nicht ändern kannst.
40-Tage-Wunder- Kurs Umarme, was Du nicht ändern kannst. Das sagt Wikipedia: Als Wunder (griechisch thauma) gilt umgangssprachlich ein Ereignis, dessen Zustandekommen man sich nicht erklären kann, so dass
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
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 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).
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
Zeichen bei Zahlen entschlüsseln
Zeichen bei Zahlen entschlüsseln In diesem Kapitel... Verwendung des Zahlenstrahls Absolut richtige Bestimmung von absoluten Werten Operationen bei Zahlen mit Vorzeichen: Addieren, Subtrahieren, Multiplizieren
Wurzeln als Potenzen mit gebrochenen Exponenten. Vorkurs, Mathematik
Wurzeln als Potenzen mit gebrochenen Exponenten Zur Einstimmung Wir haben die Formel benutzt x m n = x m n nach der eine Exponentialzahl potenziert wird, indem man die Exponenten multipliziert. Dann sollte
Übungen zu C++ Kapitel 1
Übungen zu C++ Kapitel 1 Aufgabe 1 Ergänze den Text. a) Die sechs logischen Einheiten eines Computers sind Eingabe-Einheit, Ausgabe-Einheit, RAM, ALU, CPU, Plattenspeicher. b) Die Programme, welche Hochsprachenprogramme
Die 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
Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 18
Kapitel 3 Datentypen und Variablen Seite 1 von 18 Datentypen - Einführung - Für jede Variable muss ein Datentyp festgelegt werden. - Hierdurch werden die Wertemenge und die verwendbaren Operatoren festgelegt.
Was meinen die Leute eigentlich mit: Grexit?
Was meinen die Leute eigentlich mit: Grexit? Grexit sind eigentlich 2 Wörter. 1. Griechenland 2. Exit Exit ist ein englisches Wort. Es bedeutet: Ausgang. Aber was haben diese 2 Sachen mit-einander zu tun?
Grundlagen von Python
Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren
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
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
Kapitalerhöhung - Verbuchung
Kapitalerhöhung - Verbuchung Beschreibung Eine Kapitalerhöhung ist eine Erhöhung des Aktienkapitals einer Aktiengesellschaft durch Emission von en Aktien. Es gibt unterschiedliche Formen von Kapitalerhöhung.
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"
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
Erstellen von x-y-diagrammen in OpenOffice.calc
Erstellen von x-y-diagrammen in OpenOffice.calc In dieser kleinen Anleitung geht es nur darum, aus einer bestehenden Tabelle ein x-y-diagramm zu erzeugen. D.h. es müssen in der Tabelle mindestens zwei
Programmiersprachen 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
Java Kurs für Anfänger Einheit 4 Klassen und Objekte
Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse
Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22
Kapitel 19 Vererbung, UML Seite 1 von 22 Vererbung - Neben der Datenabstraktion und der Datenkapselung ist die Vererbung ein weiteres Merkmal der OOP. - Durch Vererbung werden die Methoden und die Eigenschaften
Ü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 5 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:
C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet
C++ Grundlagen ++ bedeutet Erweiterung zum Ansi C Standard Hier wird eine Funktion eingeleitet Aufbau: In dieser Datei stehen die Befehle, die gestartet werden, wenn das Programm gestartet wird Int main()
Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6
Gudrun Fischer Sascha Kriewel [email protected] Anmeldung zur Klausur! Übungsblatt Nr. 6 Um an der Klausur teilzunehmen, müssen sich Studierende der angewandten Informatik in
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)
Objektorientierte Programmierung mit C++ Zusammenfassung der wichtigsten Topics rund um die objektorientierte Programmierung mit C++11
Objektorientierte Programmierung mit C++ Zusammenfassung der wichtigsten Topics rund um die objektorientierte Programmierung mit C++11 Wozu objektorientiertes Programmieren? Die Welt besteht für den Menschen
Delegatesund Ereignisse
Delegatesund Ereignisse «Delegierter» Methoden Schablone Funktionszeiger Dr. Beatrice Amrhein Überblick Definition eines Delegat Einfache Delegate Beispiele von Delegat-Anwendungen Definition eines Ereignisses
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
Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus: Übungsbuch für den Grundkurs mit Tipps und Lösungen: Analysis
Unterrichtsmaterialien in digitaler und in gedruckter Form Auszug aus: Übungsbuch für den Grundkurs mit Tipps und Lösungen: Analysis Das komplette Material finden Sie hier: Download bei School-Scout.de
Kurzanleitung MAN E-Learning (WBT)
Kurzanleitung MAN E-Learning (WBT) Um Ihr gebuchtes E-Learning zu bearbeiten, starten Sie bitte das MAN Online- Buchungssystem (ICPM / Seminaris) unter dem Link www.man-academy.eu Klicken Sie dann auf
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
Die Beschreibung bezieht sich auf die Version Dreamweaver 4.0. In der Version MX ist die Sitedefinition leicht geändert worden.
In einer Website haben Seiten oft das gleiche Layout. Speziell beim Einsatz von Tabellen, in denen die Navigation auf der linken oder rechten Seite, oben oder unten eingesetzt wird. Diese Anteile der Website
Programmieren in Java
Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können
Ü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 13 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:
Handbuch zur Anlage von Turnieren auf der NÖEV-Homepage
Handbuch zur Anlage von Turnieren auf der NÖEV-Homepage Inhaltsverzeichnis 1. Anmeldung... 2 1.1 Startbildschirm... 3 2. Die PDF-Dateien hochladen... 4 2.1 Neue PDF-Datei erstellen... 5 3. Obelix-Datei
Wir arbeiten mit Zufallszahlen
Abb. 1: Bei Kartenspielen müssen zu Beginn die Karten zufällig ausgeteilt werden. Wir arbeiten mit Zufallszahlen Jedesmal wenn ein neues Patience-Spiel gestartet wird, muss das Computerprogramm die Karten
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; {
Arrays von Objekten. 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"
Excel Funktionen durch eigene Funktionen erweitern.
Excel Funktionen durch eigene Funktionen erweitern. Excel bietet eine große Anzahl an Funktionen für viele Anwendungsbereiche an. Doch es kommt hin und wieder vor, dass man die eine oder andere Funktion
Arrays Fortgeschrittene Verwendung
Arrays Fortgeschrittene Verwendung Gilbert Beyer und Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik http://www.pst.ifi.lmu.de/lehre/wise-11-12/infoeinf WS11/12 Arrays: Wiederholung
M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung
M. Graefenhan 2000-12-07 Aufgabe Lösungsweg Übungen zu C Blatt 3 Musterlösung Schreiben Sie ein Programm, das die Häufigkeit von Zeichen in einem eingelesenen String feststellt. Benutzen Sie dazu ein zweidimensionales
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
Erstellen der Barcode-Etiketten:
Erstellen der Barcode-Etiketten: 1.) Zuerst muss die Schriftart Code-39-Logitogo installiert werden! Das ist eine einmalige Sache und muss nicht zu jeder Börse gemacht werden! Dazu speichert man zunächst
In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können.
Tutorial: Wie erfasse ich einen Termin? In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können. Neben den allgemeinen Angaben zu einem
Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12
Grundlagen: Folge 19 - Bäume 19.1 Binärbäume - Allgemeines Unter Bäumen versteht man in der Informatik Datenstrukturen, bei denen jedes Element mindestens zwei Nachfolger hat. Bereits in der Folge 17 haben
Grundlagen. Kapitel 1
Grundlagen Dieses Kapitel umfasst grundlegende Fragen und Aufgaben zur Erstellung von C++-Programmen. Hierzu zählen auch das Inkludieren von Header-Dateien Eine Header-Datei beinhaltet Informationen, die
Übungskomplex Felder (1) Eindimensionale Felder Mehrdimensionale Felder
Übungskomplex Felder (1) Eindimensionale Felder Mehrdimensionale Felder Hinweise zur Übung Benötigter Vorlesungsstoff Ab diesem Übungskomplex wird die Kenntnis und praktische Beherrschung der Konzepte
5.2 Neue Projekte erstellen
5.2 Neue Projekte erstellen Das Bearbeiten von bestehenden Projekten und Objekten ist ja nicht schlecht wie aber können Sie neue Objekte hinzufügen oder gar völlig neue Projekte erstellen? Die Antwort
Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, 17.09.2012 Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.
Klausur Informatik Programmierung, 17.09.2012 Seite 1 von 8 Klausurteilnehmer Name: Matrikelnummer: Wichtige Hinweise Es sind keinerlei Hilfsmittel zugelassen auch keine Taschenrechner! Die Klausur dauert
Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse
Übung 03: Schleifen Abgabetermin: xx.xx.xxxx Name: Matrikelnummer: Gruppe: G1 (Prähofer) G2 (Prähofer) G3 (Wolfinger) Aufgabe Punkte gelöst abzugeben schriftlich abzugeben elektronisch Aufgabe 03.1 12
Wie der Shop funktioniert!
Wie der Shop funktioniert! 1. Einkaufen als Neukunde? Als erstes sollten Sie sich anmelden. Klicken Sie auf die Schrift "Neukunde? Jetzt registrieren" auf der rechten Seite. Dann geben Sie Ihre Daten ein
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
Einkaufen im Internet. Lektion 5 in Themen neu 3, nach Übung 10. Benutzen Sie die Homepage von: http://www.firstsurf.de/klietm9950_f.
Themen neu 3 Was lernen Sie hier? Sie formulieren Ihre Vermutungen und Meinungen. Was machen Sie? Sie erklären Wörter und Ausdrücke und beurteilen Aussagen. Einkaufen im Internet Lektion 5 in Themen neu
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
Was ich als Bürgermeister für Lübbecke tun möchte
Wahlprogramm in leichter Sprache Was ich als Bürgermeister für Lübbecke tun möchte Hallo, ich bin Dirk Raddy! Ich bin 47 Jahre alt. Ich wohne in Hüllhorst. Ich mache gerne Sport. Ich fahre gerne Ski. Ich
Typdeklarationen. Es gibt in Haskell bereits primitive Typen:
Typdeklarationen Es gibt in bereits primitive Typen: Integer: ganze Zahlen, z.b. 1289736781236 Int: ganze Zahlen mit Computerarithmetik, z.b. 123 Double: Fließkommazahlen, z.b. 3.14159 String: Zeichenketten,
mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank
mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank In den ersten beiden Abschnitten (rbanken1.pdf und rbanken2.pdf) haben wir uns mit am Ende mysql beschäftigt und kennengelernt, wie man
BERECHNUNG DER FRIST ZUR STELLUNGNAHME DES BETRIEBSRATES BEI KÜNDIGUNG
Frist berechnen BERECHNUNG DER FRIST ZUR STELLUNGNAHME DES BETRIEBSRATES BEI KÜNDIGUNG Sie erwägen die Kündigung eines Mitarbeiters und Ihr Unternehmen hat einen Betriebsrat? Dann müssen Sie die Kündigung
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
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
Übung 9 - Lösungsvorschlag
Universität Innsbruck - Institut für Informatik Datenbanken und Informationssysteme Prof. Günther Specht, Eva Zangerle Besprechung: 15.12.2008 Einführung in die Informatik Übung 9 - Lösungsvorschlag Aufgabe
4. AUSSAGENLOGIK: SYNTAX. Der Unterschied zwischen Objektsprache und Metasprache lässt sich folgendermaßen charakterisieren:
4. AUSSAGENLOGIK: SYNTAX 4.1 Objektsprache und Metasprache 4.2 Gebrauch und Erwähnung 4.3 Metavariablen: Verallgemeinerndes Sprechen über Ausdrücke von AL 4.4 Die Sprache der Aussagenlogik 4.5 Terminologie
TESTEN SIE IHR KÖNNEN UND GEWINNEN SIE!
9 TESTEN SIE IHR KÖNNEN UND GEWINNEN SIE! An den SeniorNETclub 50+ Währinger Str. 57/7 1090 Wien Und zwar gleich in doppelter Hinsicht:!"Beantworten Sie die folgenden Fragen und vertiefen Sie damit Ihr
L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016
L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016 Referentin: Dr. Kelly Neudorfer Universität Hohenheim Was wir jetzt besprechen werden ist eine Frage, mit denen viele
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
Software Engineering Klassendiagramme Assoziationen
Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen
