Programmieren von Gimp-Plugins mittels des Koblenzer Plugin-Frameworks
|
|
- Manfred Kaiser
- vor 6 Jahren
- Abrufe
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 Patrick Sturm, Frank Schmitt sturm,fschmitt@uni-koblenz.de 31. Oktober 2005 1 Einleitung Das Koblenzer Plugin-Framework stellt ein
MehrObjektorientierte 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
MehrPolymorphismus 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
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
MehrImplementieren 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
MehrC++ 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
Mehr7. Ü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
MehrKlausur: 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
MehrPraktikumstermin 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
MehrVorlesungsprü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,
MehrProgrammieren 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
MehrEinstieg 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
MehrInstallationsanleitung
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
MehrC++ 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
MehrFragen 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?...
Mehr2. Semester, 2. Prüfung, Lösung
2. Semester, 2. Prüfung, Lösung Name Die gesamte Prüfung bezieht sich auf die Programmierung in C++! Prüfungsdauer: 90 Minuten Mit Kugelschreiber oder Tinte schreiben Lösungen können direkt auf die Aufgabenblätter
Mehr8. 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
MehrFolienpaket 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
MehrMerkblatt 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
MehrDidaktik 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....................................
MehrDAP2 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
MehrKlausur: 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
MehrTeil 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
MehrVisuelle 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,
MehrKapitel 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
MehrVererbung 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.
MehrKlassen. 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
MehrDynamische 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
MehrKlausur: 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
MehrSchlussendlich 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 -
MehrProbeklausur: 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,
Mehr9. 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
MehrErste 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.........................................
MehrC++ - 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
MehrTobias 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
MehrKlassen 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
MehrKlausur 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
MehrGrundkurs 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
Mehr1. 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:
MehrC++ 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
MehrZAPP-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
MehrGrundkurs 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
MehrHochschule 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
MehrLö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,
MehrObjektorientierung: 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
MehrZeichendarstellung. 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
MehrVerschlü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
MehrThema 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:
MehrProgrammieren 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
MehrModul 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
MehrArrays,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
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
MehrEin 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
MehrProgrammierung mit C Zeiger
Programmierung mit C Zeiger Zeiger (Pointer)... ist eine Variable, die die Adresse eines Speicherbereichs enthält. Der Speicherbereich kann... kann den Wert einer Variablen enthalten oder... dynamisch
MehrEs 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
MehrInhaltsverzeichnis. 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
MehrObjektorientierte 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
MehrEinfü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
MehrGrundlagen 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
MehrC++-Zusammenfassung. H. Schaudt. August 18, 2005
C++-Zusammenfassung H. Schaudt August 18, 2005 1 Datentypen 1.1 Grunddatentypen int (-32xxx bis +32xxx, implementerungs-abhängig) char -128 bis +128 float double bool (C++) int und char sind austauschbar:
MehrEinstieg 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
MehrName: 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
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Dynamische Datenobjekte Pointer/Zeiger, Verkettete Liste Eigene Typdefinitionen 1 Zeigeroperatoren & und * Ein Zeiger ist die Speicheradresse irgendeines Objektes. Eine
MehrTutoraufgabe 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
MehrC++ - 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
MehrPseudo-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
MehrC-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
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
MehrVariablen 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,
MehrProgrammieren 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
MehrWas 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
MehrGrundlagen 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
MehrWintersemester 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
MehrDEPARTEMENT 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.
MehrBildverarbeitung 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
MehrRO-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
MehrArrays. 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................................
MehrEinstieg 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
MehrArbeitsblatt 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.
MehrComputergrundkenntnisse 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,
MehrObjektorientierte 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
MehrJava 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
MehrAusnahmen. 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
MehrKlausur 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
MehrKapitel 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
MehrObjektorientierte 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
Mehr5.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
MehrVorlesung 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
MehrEntwickeln 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:
MehrRO-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
MehrEinführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)
Wintersemester 2005/06 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich Informatik Lehrstuhl
MehrObjektorientierte Programmierung. 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
MehrInstitut 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
Mehr13 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
MehrGI 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
MehrInfo-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,
MehrTag 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
MehrProgrammieren 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
MehrProgrammieren: 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
MehrUnterlagen. 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