Programmieren von Gimp-Plugins mittels des Koblenzer Plugin-Frameworks

Größe: px
Ab Seite anzeigen:

Download "Programmieren von Gimp-Plugins mittels des Koblenzer Plugin-Frameworks"

Transkript

1 Programmieren von Gimp-Plugins mittels des Koblenzer Plugin-Frameworks Patrick Sturm, Frank Schmitt 9. November Einleitung Das Koblenzer Plugin-Framework stellt ein generelles Plugin-Konzept dar. Plugins sind kleine Programme, die in Grafikprogramme eingestöpselt werden können, und gemäß ihrem Programm Eingabedaten (Parameter und Eingabebilder) in Ausgabedaten umwandeln. Das Koblenzer Plugin-Framework lässt sich an beliebige Grafikprogramme, die selbst eine Pluginschnittstelle bereitstellen, anpassen. Bisher ist das Koblenzer Plugin-Framework nur an das freie Grafikprogramm GIMP angepasst worden. 2 Installationshinweise Um das Koblenzer Plugin-Framework zu installieren führen Sie folgende Schritte durch: Laden Sie die Datei herunter und entpacken Sie sie. Übersetzen Sie das Framework. Unter Linux: Stellen Sie sicher, das Gimp 2.x und die Gimp- Entwicklerpakete (gimp-devel) installiert sind. Gehen Sie in den Ordner plugin root/plugin-adapter-gimp und geben sie make ein. Wenn keine Fehler auftreten geben Sie dann make install ein. Unter Windows: Installieren Sie gtk von und dann Gimp 2 von Öffnen Sie dann die Datei plugin root/lecture plugin8.sln in Visual Studio 2005 (erhältlich im Rechenzentrum oder als Express Version bei Microsoft) und erstellen Sie das Projekt. Starten Sie Gimp und fügen Sie das Verzeichnis plugin root/plugin-adapter-gimp/release/ in Einstellungen, Verzeichnisse, Plugins hinzu. Abbildung 1 zeigt den Verzeichnisbaum wie er nach einer erfolgreichen Installation des Plugin-Frameworks aussieht. Das Unterverzeichnis win32libs2 ist dabei nur für die Plugin-Entwicklung unter Windows notwendig. Es enthält Portierungen von einigen Linux-Entwicklungsbibliotheken wie GTK und GLIB auf Windows. 3 Hinzufügen eigener Plugins Eigene Plugins müssen im Verzeichnis plugin root/plugin-pool/local plugins abgespeichert werden. 1

2 Abbildung 1: Verzeichnisbaum des Plugin-Frameworks Linuxnutzer müssen jetzt in das Verzeichnis plugin-root/plugin-adapter-gimp wechseln make und anschließend bei fehlerfreien Übersetzung make install aufrufen, um das neue Plugin in Gimp zu integrieren. Windowsnutzer müssen die Plugindatei zusätzlich im Projektbaum (Solution Explorer unter Visual C , siehe Abbildung 2) des Plugin-Frameworks unter lecture pluginpoollib/local plugins einfügen und das Gesamtprojekt neu übersetzen. 4 Programmieren von Plugins für GIMP mit dem Koblenzer Plugin-Framework Die Programmierung von Plugins im Koblenzer Plugin-Framework ist im Allgemeinen etwas umständlich. Um den Prozess der Plugin-Programmierung im Speziellen für die Bildverarbeitung zu vereinfachen, enthält das Koblenzer Plugin-Framework die vorgefertigte Klasse CPluginSimple. Diese stellt eine vereinfachte Programmierschnittstelle bereit. Jedes Plugin sollte von CPluginSimple abgeleitet werden. Im Folgenden wird die Plugin-Programmierung an einem Beispiel (Plugin ROI) erläutert. 4.1 Das Plugin ROI (Region-Of-Interest) Die Aufgabe des Plugins ROI besteht darin, aus einem Farbbild ein beliebiges rechteckiges Teilbild herauszuschneiden und auszugeben (siehe Abbildung 3). Das Teilbild, das aus dem Originalbild herausgeschnitten werden soll, wird durch ein Rechteck beschrieben. Das Rechteck ist dabei durch die Koordinate der linken oberen Ecke (minx, miny) und der rechten unteren Ecke (maxx, maxy) beschrieben. 2

3 Abbildung 2: Projektbaum des Plugin-Frameworks. Die Plugindatei plugin roi.cpp ist korrekt im Projektbaum eingetragen. Beide Koordinaten sollen vom Benutzer verändert werden dürfen. Basierend auf den Koordinaten bestimmt sich die Breite b bzw. die Höhe des Teilbildes durch b := maxx minx + 1 bzw. h := maxy miny Das Grundgerüst des Plugin ROI Jedes Plugin, das von der Klasse CPluginSimple erbt, hat einen einheitlichen Grundaufbau, welcher für das Plugin ROI im Folgenden dargestellt ist: #include <precompiled.h> // INSBESONDERE FÜR WINDOWS NUTZER EXTREM WICHTIG #include <plugin_simple.h> class CPluginROI: public CPluginSimple public: // Konstruktor mit einem Boolschen-Parameter CPluginROI(bool registration=false): CPluginSimple(...) CPlugin* Clone() return new CPluginROI(); protected: 3

4 Abbildung 3: ROI und Lenna void processimages() PluginROI(true); Der Name einer jeden Plugin-Klasse muss aus technischen Gründen mit CPlugin beginnen. Für jedes Plugin, so auch für das Plugin ROI, sind drei Funktionen zu implementieren: 1. Der Konstruktor dient der Initialisierung des Plugins. Hier wird u.a. festgelegt, unter welchem Namen das Plugin im GIMP-Menu erscheinen soll, über wie viele und welche Parameter das Plugin verfügt u.ä. 2. Die Funktion Clone erzeugt eine weitere Instanz des Plugins. 3. Die Funktion processimages enthält den Programmcode zur Verarbeitung der Eingabedaten (Bilder+Parameterwerte) zu Ausgabedaten Der Konstruktor Jeder Konstruktor hat einen Boolschen-Parameter mit dem Namen registration, dessen Standardparameter immer false sein muss. Als nächstes wird der Konstruktor der Basisklasse CPluginSimple aufgerufen. Diesem Konstruktor sind eine Reihe von wichtigen Informationen zu übergeben: CPluginROI(bool registration=false): CPluginSimple( registration, "ROI", // Plugin-Name "Das Plugin schneidet ein rechteckiges \ Teilbild aus einem Farbbild aus", // Hilfe "Patrick Sturm", // Autor 1, // Anzahl der Eingabebilder 1, // Anzahl der Ausgabebilder 4

5 pitrgb) // Nur RGB-Bilder werden verarbeitet. // Mögliche Werte sind: pitrgb, pitgray oder pitany Die meisten Plugins verfügen über eine Reihe von Eingabeparameter. Im Beispiel des Plugins ROI sind dies 4 Integerwerte minx, miny, maxx, maxy. (minx, miny) ist die linke obere Koordinaten und (maxx, maxy) ist die rechte untere Koordinate eine Rechtecks. Diese Parameter sind zunächst in der Klasse CPluginROI zu deklarieren: CPluginROI(bool registration=false): CPluginSimple(...)... private: int minx,miny,maxx,maxy; // Deklaration der beiden Koordinaten (minx,miny) // und (maxx,maxy)... Danach sind die Parameter GIMP mitzuteilen damit dieser sie automatisch im Dialog des Plugins anzeigen kann: CPluginROI(bool registration=false): CPluginSimple(...) addinteger("min-x", // Name des Parameters "X-Koordinate der linken oberen Ecke", // Beschreibung minx); // In welcher Variable soll der Wert gespeichert werden addinteger("min-y", // Name des Parameters "Y-Koordinate der linken oberen Ecke", // Beschreibung miny); // In welcher Variable soll der Wert gespeichert werden addinteger("max-x", // Name des Parameters "X-Koordinate der rechten unteren Ecke", // Beschreibung maxx); // In welcher Variable soll der Wert gespeichert werden addinteger("max-y", // Name des Parameters "Y-Koordinate der rechten unteren Ecke", // Beschreibung maxy); // In welcher Variable soll der Wert gespeichert werden Der vom Plugin-Framework automatisch generierte Dialog für das Plugin ROI sieht dann in GIMP wie folgt aus: 5

6 Änderungen an der Parametern im Dialog werden nach dem Betätigen des Set- Buttons an das Plugin weitergeleitet. 4.2 Weitere Initialisierungsfunktionen Es gibt neben der oben erwähnten addinteger-methode eine weitere Variante, die zudem die Angabe einer unteren und oberen Schranke erlaubt: void addinteger(const std::string& name, // Parametername int min, // untere Schranke des Parameters int max, // obere Schranke des Parameters int defaultval, // Defaultwert const std::string& description, // Beschreibungstext int& val // Referenz auf die eigentliche Parametervariable ) Analog zu addinteger existiert auch die Methoden adddouble jeweils mit und ohne Schranken. Die Funktion addboolean erlaubt die Verwendung eines Boolschen- Parameters: void addboolean(const std::string& name, // Parametername bool defaultval, // Defaultwert const std::string& description, // Beschreibungstext bool& val // Referenz auf die eigentliche Parametervariable ) In einigen Fällen möchte man eine Auswahl von Alternativen im Dialog in Form einer Combobox anzeigen. Dies wird durch die Funktion void addselection(const std::string& name, // Parametername const std::vector<std::string>& list, // Alternativen in einem Vektor const std::string& description, // Beschreibungstext int& val // Referenz auf die eigentliche Parametervariable ) realisiert. Die Variable list ist ein Vektor, der eine Reihe von Alternativen enthalten kann. Welche der Alternativen ausgewählt wird, wird in der Variablen val abgespeichert. Diese Variable ist ein Index und besagt, dass list[val] in der Combobox ausgewählt wurde. 4.3 Die Methode processimages des Plugins ROI In der Funktion processimages findet die eigentliche Arbeit des Plugins statt. Das Beispiel Plugin ROI muss zunächst das Eingabebild abfragen, ein Ausgabebild an- 6

7 legen und schließlich das angeforderte Teilbild aus dem Eingabebild in das Ausgabebild kopieren. Bevor die Implementation der Funktion erklärt wird, zunächst ein Exkurs zur Repräsentation von Bildern in C++: Repräsentation von Bildern in C++ Ein Farbbild I : [0, M 1] [0, N 1] [0, 255] 3 mit M Spalten und N Zeilen (M N) lässt sich in C++ durch das Array image repräsentieren: unsigned char image[m][n][3]; Dabei gibt image[x][y][0] die Rotkomponente, image[x][y][1] die Grünkomponente, und image[x][y][2] die Blaukomponente des Bildpunktes an der Stelle (x, y) im Bild an. Das Bild I wird also wie folgt im Array image kodiert: (image[x][y][0], image[x][y][1], image[x][y][2]) = I(x, y). Das Problem mit mehrdimensionalen Arrays in C++ ist, dass sie nur umständlich dynamisch erzeugt werden können. Normalerweise kennt man die Bildgröße eines Bildes erst zur Laufzeit des Programmes. Deshalb kann das Array nicht vorher schon statisch deklariert werden, sondern muss dynamisch erzeugt werden. Eine mögliche Realisation sieht wie folgt aus: unsigned char*** image; image=new unsigned char[m]; // Allokiere M Zeiger auf Spalten for (int spalte=0; spalte<m; spalte++) image[spalte]=new unsigned char[n]; // Allokiere N Zeiger auf // RGB-Werte für jede Spalte for (int zeile=0; zeile<n; zeile++) image[spalte][zeile]=new unsigned char[3]; // Erzeuge für jedes // Pixel einen RGB-Vektor Wie zu sehen ist diese Art der Bildrepräsentation in C++ recht kompliziert. Deshalb werden Bilder in der Regel in einem 1-dimensionales Array repräsentiert. Dabei geht man davon aus, dass jeder Pixel in einem Farbbild 3 Byte (1 Byte pro Farbkanal) benötigt. Es existieren M N verschiedene Pixel im Bild I. Daher muss ein 1-dimensionales Array, das das I enthalten kann über M N 3 Einträge verfügen: unsigned char* image = new unsigned char[m*n*3]; Sei folgendes Bild I : [0, M 1][ [0, N 1] [0, 255] 3 mit I(x, y) = (R x,y, G x,y, B x,y ) in graphischer Repräsentation gegeben: (R 0,0, G 0,0, B 0,0 ) (R 1,0, G 1,0, B 1,0 )... (R M 1,0, G M 1,0, B M 1,0 ) (R 0,1, G 0,1, B 0,1 ) (R 1,1, G 1,1, B 1,1 )... (R M 1,1, G M 1,1, B M 1,1 ) (R 0,N 1, G 0,N 1, B 0,N 1 ) (R 1,N 1, G 1,N 1, B 1,N 1 )... (R M 1,N 1, G M 1,N 1, B M 1,N 1 ) Die Farbwerte der Pixel des Bildes I werden nun Zeile für Zeile, von links oben nach rechts unten, in das Array image übertragen: R 0,0 G 0,0 B 0,0 R 1,0... R 0,1 G 0,1... R M 1,N 1 G M 1,N 1 B M 1,N 1 I: Dabei gilt folgender Zusammenhang zwischen dem Array image und dem Bild 1. image[0 + 3 (x + M y)] = R x,y 7

8 2. image[1 + 3 (x + M y)] = G x,y 3. image[2 + 3 (x + M y)] = B x,y 4.4 Die processimages des Plugins ROI Die erste Aufgabe des Plugins ROI besteht darin die Eingabeparameter auf Konsistenz zu überprüfen. In diese speziellen Beispiel muss gelten, dass minx maxx miny maxy gilt. Ist dies nicht der Fall, muss eine Fehlermeldung ausgegeben werden: void processimages() if (minx<=maxx && miny<=maxy)... else pluginoutput << "Parameter sind fasch gewählt..." << endl << "minx>maxx oder miny>maxy"; Zur Fehlerausgabe dient der in CPluginSimple definierter Stream pluginoutput. Nach der Kontrolle der Parameter, muss das Plugin sich Zugriff auf das Eingabebild bzw. auf die Eingabebilder beschaffen. Dies geschieht mittels der Funktion getinputimage: void processimages() if (minx<=maxx && miny<=maxy) unsigned int breite,hoehe; unsigned char* eingabe; if (getinputimage(0,&breite,&hoehe,&eingabe)==pitrgb)... else pluginoutput << "Falscher Bildtyp"; else pluginoutput << "Parameter sind fasch gewählt..." << endl << "minx>maxx oder miny>maxy"; Der erste Parameter der Funktion getinputimage gibt den Index des Eingabebildes an. 0 steht dabei für das erste Eingabebild, 1 für das zweite Eingabebild usw. Danach sind die Variablen (unsigned int), die die Breite und Höhe des Eingabebildes aufnehmen sollen, als Zeigerreferenz zu übergeben. Die eigentlichen Pixeldaten des Eingabebildes werden in einem 1-dimensionalen Array gespeichert. Da die dynamische Speicherverwaltung von der Funktion getinputimage selbst übernommen, wird ist hier nur eine Zeigerreferenz (eingabe) auf einen unsigned-char-zeiger zu übergeben. Nach dem Aufruf der Funktion zeigt eingabe auf die Pixeldaten des Eingabebildes. Die Funktion liefert als Rückgabewert, um welchen Bildtyp es sich beim Eingabebild handelt: pitrgb steht für RGB-Bild und pitgray für ein Grauwertbild. 8

9 Im nächsten Schritt ist das Ausgabebild zu erzeugen. Dies wird durch den Aufruf von createoutputimagergb erreicht. Die ersten beiden Parameter der Funktion geben die Breite und Höhe des Ausgabebildes an. Der dritte (optionale) Parameter ist ein Titel für das Ausgabefenster. Rückgabewert ist ein Zeiger auf ein 1-dimensionales Array, das die Ausgabebilddaten enthalten soll. void processimages() if (minx<=maxx && miny<=maxy) unsigned int breite,hoehe; unsigned char* eingabe; if (getinputimage(0,&breite,&hoehe,&eingabe)==pitrgb) unsigned int neuebreite = maxx-minx; unsigned int neuehoehe = maxy-miny; unsigned char* neuesbild = createoutputimagergb(neuebreite,neuehoehe,"roi");... else pluginoutput << "Falscher Bildtyp"; else pluginoutput << "Parameter sind fasch gewählt..." << endl << "minx>maxx oder miny>maxy"; Letztendlich sind nun die Pixel aus dem Eingabebild in das Ausgabebild zu kopieren: void processimages() if (minx<=maxx && miny<=maxy) unsigned int breite,hoehe; unsigned char* eingabe; if (getinputimage(0,&breite,&hoehe,&eingabe)==pitrgb) unsigned int neuebreite = maxx-minx+1; unsigned int neuehoehe = maxy-miny+1; unsigned char* neuesbild = createoutputimagergb(neuebreite,neuehoehe,"roi"); int x,y; for (y=miny; y<=maxy; ++y) for (x=minx; x<=maxx; ++x) int i = 3*(y*breite+x); int k = 3*((y-miny)*neueBreite+(x-minx)); neuesbild[k]=eingabe[i]; neuesbild[k+1]=eingabe[i+1]; neuesbild[k+2]=eingabe[i+2]; else pluginoutput << "Falscher Bildtyp"; 9

10 else pluginoutput << "Parameter sind fasch gewählt..." << endl << "minx>maxx oder miny>maxy"; 5 Das komplette Plugin ROI Der nachfolgende Quelltext ist in einer CPP-Datei im Verzeichnis plugin-pool abzuspeichern. Unter Visual C++ ist diese Datei, dann ins Projekt lecture pluginpoollib unter local plugins aufzunehmen und zu übersetzen. Unter Linux genügt es nach dem Speichern der Datei im Verzeichnis plugin-pool/local plugins den Befehl make oder gmake im Verzeichnis plugin-pool/plugin adpater gimp auszuführen. Nach dem Start von Gimp steht das Plugin dann unter MyBV im Menu zur Verfügung. #include <precompiled.h> // Diese Zeile muss am Anfang der Datei stehen!!! #include <plugin_simple.h> using namespace std; class CPluginExample: public CPluginSimple private: int minx,maxx,miny,maxy; public: CPluginExample(bool registration = false): CPluginSimple( registration, "ROI", // Plugin-Name "Das Plugin schneidet ein rechteckiges \ Teilbild aus einem Farbbild aus", // Hilfe "Patrick Sturm", // Autor 1, // Anzahl der Eingabebilder 1, // Anzahl der Ausgabebilder pitrgb) // Nur RGB-Bilder werden verarbeitet. // Mögliche Werte sind: pitrgb, pitgray oder pitany addinteger("min-x", // Name des Parameters "X-Koordinate der linken oberen Ecke", // Beschreibung minx); // In welcher Variable soll der Wert gespeichert werden addinteger("min-y", // Name des Parameters "Y-Koordinate der linken oberen Ecke", // Beschreibung miny); // In welcher Variable soll der Wert gespeichert werden addinteger("max-x", // Name des Parameters "X-Koordinate der rechten unteren Ecke", // Beschreibung maxx); // In welcher Variable soll der Wert gespeichert werden addinteger("max-y", // Name des Parameters "Y-Koordinate der rechten unteren Ecke", // Beschreibung 10

11 maxy); // In welcher Variable soll der Wert gespeichert werden CPlugin* Clone() return new CPluginExample(); protected: void processimages() if (minx<=maxx && miny<=maxy) unsigned int breite,hoehe; unsigned char* eingabe; if (getinputimage(0,&breite,&hoehe,&eingabe)==pitrgb) unsigned int neuebreite = maxx-minx+1; unsigned int neuehoehe = maxy-miny+1; unsigned char* neuesbild = createoutputimagergb(neuebreite,neuehoehe,"roi"); int x,y; for (y=miny; y<=maxy; ++y) for (x=minx; x<=maxx; ++x) int i = 3*(y*breite+x); int k = 3*((y-miny)*neueBreite+(x-minx)); neuesbild[k]=eingabe[i]; neuesbild[k+1]=eingabe[i+1]; neuesbild[k+2]=eingabe[i+2]; else pluginoutput << "Falscher Bildtyp"; else pluginoutput << "Parameter sind fasch gewaehlt..." << endl << "minx>maxx oder miny>maxy"; PluginExample(true); 11

Programmieren von Gimp-Plugins mittels des Koblenzer Plugin-Frameworks

Programmieren von Gimp-Plugins mittels des Koblenzer Plugin-Frameworks Programmieren von Gimp-Plugins mittels des Koblenzer Plugin-Frameworks Patrick Sturm, Frank Schmitt sturm,fschmitt@uni-koblenz.de 31. Oktober 2005 1 Einleitung Das Koblenzer Plugin-Framework stellt ein

Mehr

Objektorientierte Programmierung mit C++ SS 2007

Objektorientierte Programmierung mit C++ SS 2007 Objektorientierte Programmierung mit C++ SS 2007 Andreas F. Borchert Universität Ulm 5. Juni 2007 Polymorphismus #include Function.h class Function { public: virtual ~Function() {}; virtual std::string

Mehr

Polymorphismus 179. Function.h. #include <string>

Polymorphismus 179. Function.h. #include <string> Polymorphismus 179 #include Function.h class Function { public: virtual ~Function() {}; virtual std::string get_name() const = 0; virtual double execute(double x) const = 0; }; // class Function

Mehr

Übungen zur Vorlesung EidP (WS 2015/16) Blatt 6

Ü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

Mehr

Implementieren von Klassen

Implementieren von Klassen Implementieren von Klassen Felder, Methoden, Konstanten Dr. Beatrice Amrhein Überblick Felder/Mitglieder (Field, Member, Member-Variable) o Modifizierer Konstanten Methoden o Modifizierer 2 Felder und

Mehr

C++ Notnagel. Ziel, Inhalt. Programmieren in C++

C++ Notnagel. Ziel, Inhalt. Programmieren in C++ C++ Notnagel Ziel, Inhalt Ich versuche in diesem Dokument noch einmal die Dinge zu erwähnen, die mir als absolut notwendig für den C++ Unterricht und die Prüfungen erscheinen. C++ Notnagel 1 Ziel, Inhalt

Mehr

7. Übung Informatik II - Objektorientierte Programmierung

7. Übung Informatik II - Objektorientierte Programmierung 7. Übung Informatik II - Objektorientierte Programmierung 29. Mai 2015 Inhalt 1 2 3 Übersicht 1 2 3 Idee Menschen nehmen die Welt in Form von Objekten wahr manche Objekte haben gleiche Eigenschaften, hierüber

Mehr

Klausur: Grundlagen der Informatik I, am 06. Februar 2009 Gruppe: A Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Klausur: Grundlagen der Informatik I, am 06. Februar 2009 Gruppe: A Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr. Seite 1 von 9 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 12 Pkt.) Was liefert

Mehr

Praktikumstermin B-07: make & Makefiles

Praktikumstermin B-07: make & Makefiles Praktikumstermin B-07: make & Makefiles Version 2014-11-26: Problem mit dem Löschbefehl gelöst. Ursache: Auf den Terminalrechnern funkt ein Softwarepaket aus einer anderen Lehrveranstaltung dazwischen

Mehr

Vorlesungsprüfung Programmiersprache 1

Vorlesungsprüfung Programmiersprache 1 Vorlesungsprüfung Programmiersprache 1 Termin der Prüfung: 1) Di 20.03.2018 16:15 17:00 HSB 3 2) Di 15.05.2018 16:15 17:00 HSB 3 3) Di 12.06.2018 16:15 17:00 HSB 3 Stoffgebiete: 1) Ganzzahltypen: char,

Mehr

Programmieren II Abstrakte Klassen / Virtuelle Methoden. Programmieren II Abstrakte Klassen / Virtuelle Methoden

Programmieren II Abstrakte Klassen / Virtuelle Methoden. Programmieren II Abstrakte Klassen / Virtuelle Methoden Einleitende Bemerkungen Einleitende Bemerkungen Aspekte Aufbau von sinnvollen Klassenhierarchien Verwaltung von Objekten unterschiedlichen Typs Mitarbeiter Besonderheiten der Anwendung jeder Angehörige

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 27 Einstieg in die Informatik mit Java Klassen als Datenstrukturen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 27 1 Überblick: Klassen als Datenstruktur 2 Vereinbarung

Mehr

Installationsanleitung

Installationsanleitung 1. C Installationsanleitung C-Programmierung mit Hilfe von Eclipse unter Windows XP mit dem GNU C-Compiler (GCC) 2. Inhaltsverzeichnis 1. Einleitung... 3 2. Cygwin... 3 2.1 Cygwin-Installation... 3 2.2

Mehr

C++ Teil 12. Sven Groß. 18. Jan Sven Groß (IGPM, RWTH Aachen) C++ Teil Jan / 11

C++ Teil 12. Sven Groß. 18. Jan Sven Groß (IGPM, RWTH Aachen) C++ Teil Jan / 11 C++ Teil 12 Sven Groß 18. Jan 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 12 18. Jan 2016 1 / 11 Themen der letzten Vorlesung Wiederholung aller bisherigen Themen: Datentypen und Variablen Operatoren Kontrollstrukturen

Mehr

Fragen zur OOP in Java

Fragen zur OOP in Java - 1 - Inhalt Was bedeutet OOP?... 2 Was versteht man unter einer Klasse?... 2 Wie nennt man die Mitglieder einer Klasse?... 2 Wie erzeugt man Objekte?... 2 Wie greife ich auf Member einer Klasse zu?...

Mehr

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

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

Mehr

8. Referenzen und Zeiger

8. Referenzen und Zeiger 8. Referenzen und Zeiger Motivation Variable werden in C++ an speziellen Positionen im Speicher abgelegt. An jeder Position befindet sich 1 Byte. Sie sind durchnummeriert beginnend bei 0. Diese Positionen

Mehr

Folienpaket 7 Themenschwerpunkte: Methoden in OOP /2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Folienpaket 7 Themenschwerpunkte: Methoden in OOP /2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4 Folienpaket 7 Themenschwerpunkte: Methoden in OOP 284 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4 Eine Klasse entwerfen Eine Klasse enthält folgende Information: Name der Klasse (ist auch der

Mehr

Merkblatt System-C Installation Linux

Merkblatt System-C Installation Linux 1. Herunterladen: SystemC unter www.accellera.org Downloads Accellerra Standards 2. Kommandozeile öffnen SystemC (Core Language including Examples & TLM, AMS, ) Core SystemC Language and Examples akzeptieren

Mehr

Didaktik der Informatik. Dokumentation zur BlueJ-Erweiterung. Klassenkarte. Michael Steinhuber

Didaktik der Informatik. Dokumentation zur BlueJ-Erweiterung. Klassenkarte. Michael Steinhuber Didaktik der Informatik Dokumentation zur BlueJ-Erweiterung Klassenkarte Michael Steinhuber 28. April 2008 Inhaltsverzeichnis 1 Einleitung 3 2 Bedienungsanleitung 4 2.1 Anzeigen der Klassenkarte....................................

Mehr

DAP2 Praktikum Blatt 1

DAP2 Praktikum Blatt 1 Fakultät für Informatik Lehrstuhl 11 / Algorithm Engineering Prof. Dr. Petra Mutzel, Carsten Gutwenger Sommersemester 2009 DAP2 Praktikum Blatt 1 Ausgabe: 21. April Abgabe: 22. 24. April Kurzaufgabe 1.1

Mehr

Klausur: Informatik, am 11. Juli 2013 Gruppe: B Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Klausur: Informatik, am 11. Juli 2013 Gruppe: B Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte: Seite 1 von 10 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 6 Pkt.) a) Geben

Mehr

Teil 8: Dynamische Speicherverwaltung. Prof. Dr. Herbert Fischer Fachhochschule Deggendorf Prof. Dr. Manfred Beham Fachhochschule Amberg-Weiden

Teil 8: Dynamische Speicherverwaltung. Prof. Dr. Herbert Fischer Fachhochschule Deggendorf Prof. Dr. Manfred Beham Fachhochschule Amberg-Weiden Teil 8: Dynamische Speicherverwaltung Prof. Dr. Herbert Fischer Fachhochschule Deggendorf Prof. Dr. Manfred Beham Fachhochschule Amberg-Weiden Inhaltsverzeichnis 8 Dynamische Speicherverwaltung... 3 8.1

Mehr

Visuelle Kryptographie. Anwendung von Zufallszahlen

Visuelle Kryptographie. Anwendung von Zufallszahlen Visuelle Kryptographie Anwendung von Zufallszahlen Verschlüsseln eines Bildes Wir wollen ein Bild an Alice und Bob schicken, so dass Verschlüsseln eines Bildes Wir wollen ein Bild an Alice und Bob schicken,

Mehr

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden Kapitel 8 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Methoden Überladen von Methoden Der this-zeiger Konstruktoren Vererbung WS 07/08

Mehr

Vererbung I. Kfz Eigenschaften und Methoden der Klasse Kfz Lkw. Pkw. Eigenschaften und Methoden der Klasse Kfz

Vererbung I. Kfz Eigenschaften und Methoden der Klasse Kfz Lkw. Pkw. Eigenschaften und Methoden der Klasse Kfz Einführung in C++ Vererbung I Durch Vererbung können aus bereits bestehenden Klassen neue Klassen konstruiert werden. Die neue abgeleitete Klasse erbt dabei die Daten und Methoden der sog. Basisklasse.

Mehr

Klassen. C++ Übung am 02. Juni 2016

Klassen. C++ Übung am 02. Juni 2016 Klassen C++ Übung am 02. Juni 2016 Klassen - der Kern objektorientierter Programmierung - Festlegung der Daten und Funktionen einer Klasse - Deklaration als public oder private - Konstruktoren erzeugen

Mehr

Dynamische Datentypen. Destruktor, Copy-Konstruktor, Zuweisungsoperator, Dynamischer Datentyp, Vektoren

Dynamische Datentypen. Destruktor, Copy-Konstruktor, Zuweisungsoperator, Dynamischer Datentyp, Vektoren Dynamische Datentypen Destruktor, Copy-Konstruktor, Zuweisungsoperator, Dynamischer Datentyp, Vektoren Probleme mit Feldern (variabler Länge) man kann sie nicht direkt kopieren und zuweisen Probleme mit

Mehr

Klausur: Grundlagen der Informatik I, am 06. Februar 2009 Gruppe: B Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Klausur: Grundlagen der Informatik I, am 06. Februar 2009 Gruppe: B Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr. Seite 1 von 8 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 12 Pkt.) Was liefert

Mehr

Schlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe:

Schlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe: Musterlösung Übung 7 Aufgabe 1 Sehen wir uns zu allererst das gegebene Forth Programm an: 0 3 new - list constant list1 list1 5 new - list constant list2 list1 6 new - list constant list3 list2 2 new -

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

9. Vektoren. (auch Felder/array)

9. Vektoren. (auch Felder/array) 9. Vektoren (auch Felder/array) Motivation Hat man mehrere Objekte gleichen Datentyps, so kann man sie explizit deklarieren, wenn die Anzahl bekannt ist double x1,x2,x3,x4; Nachteile: versagt, -wenn die

Mehr

Erste Schritte mit HG 2

Erste Schritte mit HG 2 Erste Schritte mit HG 2 Malte Ried FH-Gießen Version: 1.0 21. November 2003 Inhaltsverzeichnis 1 Einführung 2 2 Allgemeines 2 2.1 Koordinaten...................................... 2 2.2 Farben.........................................

Mehr

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja Aue

Mehr

Tobias Wolf Seite 1 von 19

Tobias Wolf  Seite 1 von 19 Praktikumsanleitung Informatik (für Visual Studio 2017) Seite 1 von 19 Praktikum - Ablauf - Je 2 Studenten pro Rechner Jedes Zweier-Team erstellt ein Programm, welches dem Betreuer gemeinsam gezeigt und

Mehr

Klassen als Datenstrukturen

Klassen als Datenstrukturen Einstieg in die Informatik mit Java, Vorlesung vom 27.11.07 Übersicht 1 Klassen als Datenstruktur 2 Vereinbarung von Klassen 3 Erzeugen von Objekten - Instanzen einer Klasse 4 Zugriff auf Attribute 5 Initialisierung

Mehr

Klausur Programmieren 1 SS 2017

Klausur Programmieren 1 SS 2017 Klausur Programmieren 1 SS 2017 Name Gruppe 1 Vorname Dauer 90 min Matrikelnummer Hilfsmittel keine Die Klausur ist mit 50 Punkten sicher bestanden. Hinweies: Voraussetzung für die Teilnahme ist das Bestehen

Mehr

Grundkurs C++ IDE Klassenhierarchien

Grundkurs C++ IDE Klassenhierarchien Grundkurs C++ IDE Klassenhierarchien Martin Knopp & Johannes Feldmaier 20.04.2016 Folie 1/35 GK C++: IDE, Klassenhierarchien Martin Knopp & Johannes Feldmaier 20.04.2016 IDE Integrated Development Environment

Mehr

1. Aufgabe (6 Punkte)

1. Aufgabe (6 Punkte) Nachname:... Vorname:... MatrNr.:... Klausur PR2 HAW-Hamburg, Fakultät Technik und Informatik, Department Informations- und Elektrotechnik Dr. Robert Heß, 1.2.2008 Bearbeitungsdauer: 90 min Hilfsmittel:

Mehr

C++ Teil 5. Sven Groß. 13. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 18

C++ Teil 5. Sven Groß. 13. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 18 C++ Teil 5 Sven Groß 13. Mai 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 13. Mai 2016 1 / 18 Themen der letzten Vorlesung Funktionen Funktionsüberladung, Signatur Rekursion const-deklaration Referenzen

Mehr

ZAPP-Installation unter Windows-7. Lösung Smart Metering

ZAPP-Installation unter Windows-7. Lösung Smart Metering Lösung Smart Metering 2 Agenda Einleitung BDE installieren ZAPP installieren ZAPP starten 3 Einleitung benötigte Software Für das 32BitSystem bis Windows 7 installieren Sie bitte die: ZDUE_ZAPP_voll_v4_430.zip

Mehr

Grundkurs C++ IDE Klassenhierarchien

Grundkurs C++ IDE Klassenhierarchien Grundkurs C++ IDE Klassenhierarchien Martin Knopp 03.05.2017 Folie 1/34 GK C++: IDE, Klassenhierarchien Martin Knopp 03.05.2017 IDE Integrated Development Environment Wir empfehlen: Qt Creator (Bestandteil

Mehr

Hochschule Darmstadt Informatik-Praktikum SS 2017 EIT Bachelor 5. Aufgabenblatt Datenstruktur, Dateieingabe und -ausgabe

Hochschule Darmstadt Informatik-Praktikum SS 2017 EIT Bachelor 5. Aufgabenblatt Datenstruktur, Dateieingabe und -ausgabe Aufgabe 5: Bücher verwalten Für das Literaturverzeichnis einer Abschlussarbeit soll ein Programm zur Verwaltung von Bücherlisten geschrieben werden. Das Programm soll in der Lage sein, zu einem Buch die

Mehr

Lösungen Übung 5. Programmieren in C++ 1. Aufgabe. #include <iostream.h> #include <stdarg.h>

Lösungen Übung 5. Programmieren in C++ 1. Aufgabe. #include <iostream.h> #include <stdarg.h> Lösungen Übung 5 1. Aufgabe #include int max(int anzarg, int a, int b,...) // Hilfsvariable für variable Parameter va_list argumente; va_start(argumente,b); // "b" letzter Parameter der Funktion,

Mehr

Objektorientierung: Klassen und Objekte

Objektorientierung: Klassen und Objekte Objektorientierung: Klassen und Objekte Klasse: Beschreibung für eine Menge von Objekten Schablone, Bauplan abstrakte Form Objekt: Instanz einer Klasse konkreter Inhalt (Werte) Klassen bestehen aus Attributen

Mehr

Zeichendarstellung. Zeichen sind Zahlen (in C) Zeichen und switch

Zeichendarstellung. Zeichen sind Zahlen (in C) Zeichen und switch darstellung Arbeiten mit darstellung werden im Computer durch (kleine) Zahlen dargestellt in C können im Datentyp char gespeichert werden, dieser umfasst ein Byte und gilt als Ganzzahltyp darstellung Arbeiten

Mehr

Verschlüsseln eines Bildes. Visuelle Kryptographie. Verschlüsseln eines Bildes. Verschlüsseln eines Bildes

Verschlüsseln eines Bildes. Visuelle Kryptographie. Verschlüsseln eines Bildes. Verschlüsseln eines Bildes Verschlüsseln eines Bildes Visuelle Kryptographie Anwendung von Zufallszahlen Wir wollen ein Bild an Alice und Bob schicken, so dass Alice allein keine Information über das Bild bekommt Bob allein keine

Mehr

Thema heute: Vererbung und Klassenhierarchien. Abgeleitete Klassen. Vererbung von Daten und Funktionen. Virtuelle Funktionen

Thema heute: Vererbung und Klassenhierarchien. Abgeleitete Klassen. Vererbung von Daten und Funktionen. Virtuelle Funktionen 1 Thema heute: Vererbung und Klassenhierarchien Abgeleitete Klassen Vererbung von Daten und Funktionen Virtuelle Funktionen 2 Vererbung oft besitzen verschiedene Datentypen einen gemeinsamen Kern Beispiel:

Mehr

Programmieren in C/C++ und MATLAB

Programmieren in C/C++ und MATLAB Programmieren in C/C++ und MATLAB Sven Willert Sabine Schmidt Christian-Albrechts-Universität zu Kiel CAU 5-1 Übung Schreiben Sie ein Programm, das die Zahl π durch π = 4 4 4 4 4 4 + + +... 3 5 7 9 11

Mehr

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 1

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 1 Fakultät Verkehrswissenschaften Friedrich List, Professur für Verkehrsbetriebslehre und Logistik Modul Entscheidungsunterstützung in der Logistik Einführung in die Programmierung mit C++ Übung 1 SS 2016

Mehr

Arrays,Strings&Pointer in C/C++

Arrays,Strings&Pointer in C/C++ Arrays,Strings&Pointer in C/C++ Vortrag Mathias Reich Am 21.5.2002 Pointer Da zur Zeit der Compelierung des Programms nicht immer der Umfang der zu bearbeitenden Daten feststeht muss man sich - in manchen

Mehr

Überschreiben von Methoden

Überschreiben von Methoden Vergleich der DoME Realisierungen: Methode ausgeben Version 1 (ohne Vererbung): Anzeigen aller Informationen CD: A Swingin Affair (64 Min)* Frank Sinatra Titelanzahl: 16 Mein Lieblingsalbum von Sinatra

Mehr

Ein kleiner Blick auf die generische Programmierung

Ein kleiner Blick auf die generische Programmierung TgZero Technik.Blosbasis.net June 3, 2013 1 Inhaltsverzeichnis 1 Vorwort 3 2 Ein kleines Beispiel 3 3 Templates 3 4 Verschiedene Datentypen 4 5 Variadic Templates 5 6 Unterschied zwischen den Programmiersprachen

Mehr

Programmierung mit C Zeiger

Programmierung mit C Zeiger Programmierung mit C Zeiger Zeiger (Pointer)... ist eine Variable, die die Adresse eines Speicherbereichs enthält. Der Speicherbereich kann... kann den Wert einer Variablen enthalten oder... dynamisch

Mehr

Es ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen.

Es ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen. Ziele sind das Arbeiten mit Funktionen und dem Aufzählungstyp (enum), sowie - einfache Verzweigung (if else) - Alternativen switch case - einfache Schleifen (while oder do while) Aufgabe 3: Diese Aufgabe

Mehr

Inhaltsverzeichnis. Kapitel i: Schnelleinstieg 13. Kapitel 2: Was sind Programme? 17. Kapitel 3: Wie erstellt man eigene Programme?

Inhaltsverzeichnis. Kapitel i: Schnelleinstieg 13. Kapitel 2: Was sind Programme? 17. Kapitel 3: Wie erstellt man eigene Programme? Liebe Leserin, lieber Leser 10 Kapitel i: Schnelleinstieg 13 Kapitel 2: Was sind Programme? 17 Was ist ein Programm? 18 Sprechen Sie Computer? 18 Von der Idee zum Programm 19 Von Windows, Fenstern und

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung C++ Objektorientierte Programmierung Erweiterung von selbstdefinierten Datentypen (struct) zu Klasse. Eine Klasse besteht dann aus - Attributen (Untertypen wie struct) und zusätzlich - aus Methoden (Funktionen

Mehr

Einführung in die Programmierung für NF MI. Übung 07

Einführung in die Programmierung für NF MI. Übung 07 Einführung in die Programmierung für NF MI Übung 07 Inhalt Wiederholung Kommentare Wiederholung Arrays Einführung in Objekte Einführung in die Programmierung für NF Übung 07 2 Wiederholung Kommentare Kommentare

Mehr

Grundlagen von C# - 1

Grundlagen von C# - 1 Grundlagen von C# - 1 Marc Satkowski 20. November 2016 C# Kurs Gliederung 1. Über diesen Kurs 2. Benötigte Software 3. Exkurs: Architektur von.net und C# 4. Erstes Programm: Hello World Grundlegende Eigenschaften

Mehr

C++-Zusammenfassung. H. Schaudt. August 18, 2005

C++-Zusammenfassung. H. Schaudt. August 18, 2005 C++-Zusammenfassung H. Schaudt August 18, 2005 1 Datentypen 1.1 Grunddatentypen int (-32xxx bis +32xxx, implementerungs-abhängig) char -128 bis +128 float double bool (C++) int und char sind austauschbar:

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 26 Einstieg in die Informatik mit Java Felder Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 26 1 Was sind Felder? 2 Vereinbarung von Feldern 3 Erzeugen von Feldern

Mehr

Name: Klausur Informatik III WS 2003/04

Name: Klausur Informatik III WS 2003/04 1 : Methodenimplementierung ca. 42 Punkte Gegeben ist die Klasse Mitarbeiter. Listing 1: (./Code1/Mitarbeiter.h) using namespace std; // globale Variable fuer Ausgabedatei // kann entsprechend

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dynamische Datenobjekte Pointer/Zeiger, Verkettete Liste Eigene Typdefinitionen 1 Zeigeroperatoren & und * Ein Zeiger ist die Speicheradresse irgendeines Objektes. Eine

Mehr

Tutoraufgabe 1 (Seiteneekte):

Tutoraufgabe 1 (Seiteneekte): Prof. aa Dr. J. Giesl Programmierung WS14/15 C. Aschermann, F. Frohn, J. Hensel, T. Ströder Allgemeine Hinweise: Die Hausaufgaben sollen in Gruppen von je 2 Studierenden aus der gleichen Kleingruppenübung

Mehr

C++ - Objektorientierte Programmierung Konstante und statische Elemente

C++ - Objektorientierte Programmierung Konstante und statische Elemente C++ - Objektorientierte Programmierung Konstante und statische Elemente hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja

Mehr

Pseudo-Programmiersprache

Pseudo-Programmiersprache 1 Erste Schritte in C++ 4 Beschreibungsmöglichkeiten für Algorithmen Struktogramm Das gezeigte Struktogramm enthält die elementaren Grundstrukturen Folge, Auswahl und Schleife. Diese werden in einem der

Mehr

C-Programme kompilieren mit Visual Studio Express

C-Programme kompilieren mit Visual Studio Express C-Programme kompilieren mit Visual Studio Express Die Beispiele, Aufgaben und Lösungen zum Buch C als erste Programmiersprache können mit Visual Studio Express von Microsoft bearbeitet, kompiliert und

Mehr

Übungen zur Vorlesung EINI (WS 2010) Blatt 11

Übungen zur Vorlesung EINI (WS 2010) Blatt 11 Martin Apel Informatik VI, GB5/R 431; Tel.: 4775 Nicola Beume Informatik XI, OH14/R 233; Tel.: 7704 Jürgen Mäter Informatik IV, GB5/R 402; Tel.: 2411 Dortmund, den 14. Januar 2011 Übungen zur Vorlesung

Mehr

Variablen in C++ Einfache Variablen Strukturen Arrays und Zeichenketten Zeiger und Referenzen Parameter Dynamische Speicherverwaltung

Variablen in C++ Einfache Variablen Strukturen Arrays und Zeichenketten Zeiger und Referenzen Parameter Dynamische Speicherverwaltung Variablen in C++ Einfache Variablen Strukturen Arrays und Zeichenketten Zeiger und Referenzen Parameter Dynamische Speicherverwaltung Einfache Variablen Typen int, long, short, unsigned bool char float,

Mehr

Programmieren in C++

Programmieren in C++ Programmieren in C++ SS 2012 Vorlesung 5, Dienstag 5. Juni 2012 (Klassen, Objekte, Methoden, new & delete) Prof. Dr. Hannah Bast Lehrstuhl für Algorithmen und Datenstrukturen Institut für Informatik Universität

Mehr

Was Mathematiker schon vor Jahrhunderten erfunden haben, gibt es jetzt endlich in ihrer Programmiersprache:

Was Mathematiker schon vor Jahrhunderten erfunden haben, gibt es jetzt endlich in ihrer Programmiersprache: Kapitel 8 Operatoren Was Mathematiker schon vor Jahrhunderten erfunden haben, gibt es jetzt endlich in ihrer Programmiersprache: Operatoren definieren Es ist in C++ möglich, Operatoren wie +, oder für

Mehr

Grundlagen der Informatik 11. Zeiger

Grundlagen der Informatik 11. Zeiger 11. Zeiger Motivation Zeiger und Adressen Zeiger und Funktionen Zeiger und Arrays Dynamische Objekte Grundlagen der Informatik (Alex Rempel) 1 Motivation Dynamische Speicherverwaltung Oft müssen große

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 29

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf  Seite 1 von 29 Kapitel 2 Einführung in C++ Seite 1 von 29 C++ Zeichensatz - Buchstaben: a bis z und A bis Z. - Ziffern: 0 bis 9 - Sonderzeichen: ; :,. # + - * / % _ \! < > & ^ ~ ( ) { } [ ]? Seite 2 von 29 Höhere Elemente

Mehr

DEPARTEMENT FINANZEN UND RESSOURCEN. 13. Mai 2015 STATISTISCHE DATENBANK AARGAU (VERSION 3) 1. Einleitung

DEPARTEMENT FINANZEN UND RESSOURCEN. 13. Mai 2015 STATISTISCHE DATENBANK AARGAU (VERSION 3) 1. Einleitung DEPARTEMENT FINANZEN UND RESSOURCEN Statistik Aargau Bleichemattstrasse 4, 5000 Aarau Telefon direkt 062 835 13 00 Telefon zentral 062 835 13 00 Fax 062 835 13 10 statistik@ag.ch www.ag.ch/statistik 13.

Mehr

Bildverarbeitung mit ImageJ

Bildverarbeitung mit ImageJ U berblick Bildverarbeitung mit Dr. Birgit Mo ller Institut fu r Informatik Martin-Luther-Universita t Halle-Wittenberg Einfu hrung in die Bildverarbeitung, SS 2008 1 U berblick U berblick 1 Die Entwicklungsumgebung

Mehr

RO-Tutorien 15 und 16

RO-Tutorien 15 und 16 Tutorien zur Vorlesung Rechnerorganisation Tutorienwoche 2 am 04.05.2011 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft

Mehr

Arrays. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 3. 1 Modulübersicht 3

Arrays. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 3. 1 Modulübersicht 3 Programmieren mit Java Modul 3 Arrays Theorieteil Inhaltsverzeichnis 1 Modulübersicht 3 2 Eindimensionale Arrays 3 2.1 Arrays deklarieren.............................. 3 2.2 Arrays erzeugen................................

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 24 Einstieg in die Informatik mit Java Klassen als Datenstrukturen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 24 1 Klassen als Datenstruktur 2 Vereinbarung von

Mehr

Arbeitsblatt 5 EAD II NetBeans

Arbeitsblatt 5 EAD II NetBeans Arbeitsblatt 5 EAD II NetBeans Graphische Oberfläche für Uhrenanzeige mit NetBeans Für die Einführung in die Verwendung von NetBeans erstellen wir die graphische Oberfläche für die Uhr nun mit NetBeans.

Mehr

Computergrundkenntnisse und Programmieren, WS 07/08, Übung 11: Klassen der Standardbibliothek 2

Computergrundkenntnisse und Programmieren, WS 07/08, Übung 11: Klassen der Standardbibliothek 2 Computergrundkenntnisse und Programmieren, WS 07/08, Übung 11: Klassen der Standardbibliothek 2 Neben vector ist list die zweite wichtige Containerklasse. Um unsere Kenntnisse von Containerklassen zu erweitern,

Mehr

Objektorientierte Programmierung

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

Mehr

Java Einführung Methoden. Kapitel 6

Java Einführung Methoden. Kapitel 6 Java Einführung Methoden Kapitel 6 Inhalt Deklaration und Aufruf von Methoden Lokale und globale Namen (Bezeichner) Sichtbarkeit und Lebensdauer von Variablen in Methoden Überladen von Methoden 2 Methoden

Mehr

Ausnahmen. Exceptions. Definition Ausnahmen erzeugen Ausnahmen abfangen Ausnahmen weiterleiten. Dr. Beatrice Amrhein

Ausnahmen. Exceptions. Definition Ausnahmen erzeugen Ausnahmen abfangen Ausnahmen weiterleiten. Dr. Beatrice Amrhein Ausnahmen Exceptions Definition Ausnahmen erzeugen Ausnahmen abfangen Ausnahmen weiterleiten Dr. Beatrice Amrhein Definition 2 Definition: Ausnahme (Exception) In C# werden Fehler, die zur Laufzeit im

Mehr

Klausur Programmieren 2 SS 2016

Klausur Programmieren 2 SS 2016 Klausur Programmieren 2 SS 2016 Name Gruppe 1 Vorname Dauer 90 min Matrikelnummer Hilfsmittel keine Die Klausur ist mit 50 Punkten sicher bestanden. Hinweise: Formulieren Sie Ihre Lösungen auf dem Aufgabenblatt

Mehr

Kapitel 13. Abstrakte Methoden und Interfaces. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

Kapitel 13. Abstrakte Methoden und Interfaces. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz Kapitel 13 Abstrakte Methoden und Interfaces 13. Abstrakte Klassen und Interfaces 1. Abstrakte Klassen 2. Interfaces und Mehrfachvererbung Folie 12.2 Abstrakte Methoden und Klassen Manchmal macht es überhaupt

Mehr

Objektorientierte Programmierung und Modellierung

Objektorientierte Programmierung und Modellierung Objektorientierte Programmierung und Modellierung Einführung, Teil 2 24.10.17 - WS17/18 Hakan Aksu 1 Raumänderung beachten Dienstag 14:15-15:45 Uhr in M001 (anstatt K101) 2 Ausfalltermine 31.10 Vorlesung

Mehr

5.4 Arrays. Oft müssen viele Werte gleichen Typs gespeichert werden. Idee: Lege sie konsekutiv ab! Greife auf einzelne Werte über ihren Index zu!

5.4 Arrays. Oft müssen viele Werte gleichen Typs gespeichert werden. Idee: Lege sie konsekutiv ab! Greife auf einzelne Werte über ihren Index zu! 5.4 Arrays Oft müssen viele Werte gleichen Typs gespeichert werden. Idee: Lege sie konsekutiv ab! Greife auf einzelne Werte über ihren Index zu! Feld: Index: 17 3-2 9 0 1 0 1 2 3 4 5 Harald Räcke 114/656

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren Speicherverwaltung und Parameterübergabe Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Gültigkeitsbereich von

Mehr

Entwickeln Sie ein C/C++-Programm für die Verwaltung einer Artikeldatei gemäß folgender Vorgaben!

Entwickeln Sie ein C/C++-Programm für die Verwaltung einer Artikeldatei gemäß folgender Vorgaben! Projekt: Artikelverwaltung Seite 1 von 5 Entwickeln Sie ein C/C++-Programm für die Verwaltung einer Artikeldatei gemäß folgender Vorgaben! Legen Sie global einen benutzerdefinierten Datentyp artikel an:

Mehr

RO-Tutorien 17 und 18

RO-Tutorien 17 und 18 RO-Tutorien 17 und 18 Tutorien zur Vorlesung Rechnerorganisation Christian A. Mandery TUTORIENWOCHE 2 AM 10.05.2012 KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der

Mehr

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

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) Wintersemester 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

Mehr

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass: OOP (Java), 22. Aufzählungstypen 1/20 Objektorientierte Programmierung Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester

Mehr

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke Institut für Programmierung und Reaktive Systeme Java 6 Markus Reschke 13.10.2014 OOP Objekte = Verhalten (durch Methoden) + Daten (durch Attribute) Klassen = Baupläne für Objekte Kapselung von Programmteilen

Mehr

13 Reguläre Ausdrücke

13 Reguläre Ausdrücke 13 Reguläre Ausdrücke 13.1 Übungsaufgabe 13.1.1 Aufgabe 1 Schreiben Sie ein C++ Programm, das eine txt-datei (UTF8 kodiert) öffnet und mit wcin alle Wörter einliest, Punktuationszeichen am Anfang und Ende

Mehr

GI Vektoren

GI Vektoren Vektoren Problem: Beispiel: viele Variablen vom gleichen Typ abspeichern Text ( = viele char-variablen), Ergebnisse einer Meßreihe ( = viele int-variablen) hierfür: Vektoren ( = Arrays = Feld ) = Ansammlung

Mehr

Info-2, Klausurvorbereitung, SS 2016

Info-2, Klausurvorbereitung, SS 2016 Info-2, Klausurvorbereitung, SS 2016 Die folgenden Fragen dienen der Vorbereitung auf die Klausur. Die hier gestellten Aufgaben sind umfangreicher als in der Klausur. In der Klausur sind die Fragen schriftlich,

Mehr

Tag 7 Repetitorium Informatik (Java)

Tag 7 Repetitorium Informatik (Java) Tag 7 Repetitorium Informatik (Java) Dozent: Patrick Kreutzer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Informatik-Repetitorium

Mehr

Programmieren in Java

Programmieren in Java Einführung in die Objektorientierung Teil 4 Interfaces, innere Klassen und Polymorphie 2 Vererbung im Klassendiagram (Wiederholung) Vererbung repräsentiert eine ist ein Beziehung zwischen Klassen Ware

Mehr

Programmieren: Bildbearbeitung

Programmieren: Bildbearbeitung Programmieren: Bildbearbeitung Das Thema der folgenden Aufgaben ist Bildbearbeitung. Sie erhalten dazu ein Rahmenprogramm, das bereits Bilder lesen und darstellen kann. Dieses Rahmenprogramm basiert auf

Mehr

Unterlagen. CPP-Uebungen-08/

Unterlagen.  CPP-Uebungen-08/ Unterlagen http://projects.eml.org/bcb/people/ralph/ CPP-Uebungen-08/ http://www.katjawegner.de/lectures.html Kommentare in C++ #include /* Dies ist ein langer Kommentar, der über zwei Zeilen

Mehr