SlideShare ist ein Scribd-Unternehmen logo
Programmierpraktikum C++
Wintersemester 2013 / 2014
18. November 2013 – Strukturierung von Anwendungen

Universität zu Köln. Historisch-Kulturwissenschaftliche Informationsverarbeitung
Jan G. Wieners // jan.wieners@uni-koeln.de
Kurzüberblick


Strukturierung von Anwendungen I
 Funktionen
 Call by Value
 Call by Reference

 Auslagerung von Funktionalität in Headerdateien



Zeiger, Adressoperator
Strukturierung von Anwendungen II
 Strukturen
 Objektorientierung: Klassen

Wiederholung 02.11.2010
[…]

int addiereArabisch(int a, int b);
int main() {
[…]
ergebnis = addiereArabisch(zahl1, zahl2);
[…]

}

int addiereArabisch(int a, int b) {
return a + b;

}
[…]

Deklaration: „In meiner
Anwendung existiert eine
Funktion, die ich zu einem
späteren Zeitpunkt definiere“

int addiereArabisch(int a, int b);
int main() {

Deklaration 
Funktionskopf, der mit einem
Semikolon abgeschlossen
wird.

[…]
ergebnis = addiereArabisch(zahl1, zahl2);
[…]

}

int addiereArabisch(int a, int b) {
return a + b;

}

Definition: „Auf
diese bestimmte Art
und Weise verfährt
meine Funktion“
Generieren beide Anwendungen dasselbe Ergebnis?
#include <iostream>
using namespace std;

#include <iostream>
using namespace std;

int addition(int operandA, int
operandB) {
return operandA+operandB;
}

int addition(int,int);

int main() {
int zahl1=1;
cout<<addition(zahl1,4)<<endl;
}

==?

int main() {
int zahl1=1;

cout<<addition(zahl1,4)<<endl;
}
int addition(int zahl1, int zahl2) {
return zahl1+zahl2;
}
Funktionen: Call by value
Call by value  Der Compiler fertigt eine Kopie des
Variableninhalts an:
#include <iostream>
using namespace std;
int function(int wert) {
wert += 5;
return wert;
}
int main() {
int zahl = 10;
cout << zahl;
func(zahl);
cout << endl << zahl;
return 0;

}

 Ausgabe?
Funktionen: Call by reference
Call by reference  Compiler fertigt keine Kopie des Variableninhalts
an; wir arbeiten unmittelbar mit der Variablen:
#include <iostream>
using namespace std;
void func(int *wert) {
*wert += 5;

}
int main() {
int zahl = 23;
cout << zahl;
func(&zahl);
cout << zahl;
return 0;

 Ausgabe?

}

&  Adressoperator
*  Zeigeroperator (auch: Inhalts-/Dereferenzierungsoperator)
Zeiger
Bis dato: Variablen





int ganzzahligerWert = 13;
char einzelnesZeichen = ‘A‘;
int[50] eindimensionalesArray;
int[5][5] zweidimensionalesArray;

Beispiel:
 unsigned int i;
 i=1;

Interne Repräsentation der Variable i:
Beispiel:
int wert = 23;
int *zeigerAufWert = NULL;
zeigerAufWert = &wert;
cout << "Vorher: " << endl << wert << endl << zeigerAufWert;
*zeigerAufWert = 42;
cout << "nNachher: " << endl << wert << endl << zeigerAufWert;
 Zeiger dürfen nur auf Variablen verweisen, die denselben
Datentyp haben!
...Funktonalität auslagern...?
Zusammenfassen von Variablen
char roemischeZiffern[8] = "ivxlcdm";
int ziffernWert[7] = {1, 5, 10, 50, 100, 500, 1000};
Verbindung der Werte aufgrund der Arrayposition

0

1

2

3

4

5

6

I

V

X

L

C

D

M

1

5

10

50

100

500

1000
Zusammenfassen von Variablen
Struct roemisch
{
char roemischeZiffer;
int arabischerWert;
};
struct roemisch werte[7];

0

1

2

3

I, 1

V, 5

X, 10

L, 50

4

5

C, 100 D, 500

6
M, 1000
Übungsaufgabe: Filmdatenbank
Die ultimative Konkurrenz zur Internet Movie Database (IMDb): Erstellen
Sie Ihre eigene Filmdatenbank. Ihre Datenbank soll maximal 100 Einträge
speichern und folgende Elemente aufnehmen können:
 Deutscher Name des Films
 Originaltitel
 Veröffentlichungsjahr
 Regie
Aufgabe 1.1: Überlegen Sie, wie Sie die Datenbank
umsetzen können – welche Datenstruktur bietet
sich für die zu repräsentierenden Informationen an?
Aufgabe 1.2: Implementieren Sie folgenden
Programmablauf (vgl. den oben angeführten
Screenshot):

wird das Zeichen "j" eingegeben, so wird ein
neuer Datensatz angelegt.

wird das Zeichen "n" eingegeben, so wird die
Applikation mit einer Abschiedsmeldung
beendet.

wird das Zeichen "p" eingegeben, so werden
alle bislang in der Datenbank gespeicherten
Einträge angezeigt.
Aufgabe 1.3: Lagern Sie relevante Teile Ihrer
Filmdatenbank in eine eigene Headerdatei bzw.
Bibliothek aus.
/

Weitere ähnliche Inhalte

Andere mochten auch

Apotheke Atlas VPM Núm.4 Rue Csv Eb
Apotheke Atlas VPM Núm.4 Rue Csv EbApotheke Atlas VPM Núm.4 Rue Csv Eb
Apotheke Atlas VPM Núm.4 Rue Csv Eb
Atlas VPM
 
Gründernacht rhein main frankfurt 14.12.
Gründernacht rhein main frankfurt 14.12.Gründernacht rhein main frankfurt 14.12.
Gründernacht rhein main frankfurt 14.12.
Für-Gründer.de
 
Alimentación saludable y sostenible
Alimentación saludable y sostenibleAlimentación saludable y sostenible
Alimentación saludable y sostenible
javivela
 
14 10 23_haushalt_1516
14 10 23_haushalt_151614 10 23_haushalt_1516
14 10 23_haushalt_1516
SPD Konstanz
 
Auf in die Römerzeit
Auf in die RömerzeitAuf in die Römerzeit
Auf in die Römerzeit
hajoz
 
3. Buchgassenfest. Frankfurter Literaturfestival
3. Buchgassenfest. Frankfurter Literaturfestival3. Buchgassenfest. Frankfurter Literaturfestival
3. Buchgassenfest. Frankfurter Literaturfestival
Claus-Peter Leonhardt
 
Crossmedia ist Alltag
Crossmedia ist AlltagCrossmedia ist Alltag
Crossmedia ist Alltag
C H
 
Kongresshaus Klein Venedig Standorte
Kongresshaus Klein Venedig StandorteKongresshaus Klein Venedig Standorte
Kongresshaus Klein Venedig Standorte
SPD Konstanz
 
FileMaker 12 - Produktvorstellung
FileMaker 12 - ProduktvorstellungFileMaker 12 - Produktvorstellung
FileMaker 12 - Produktvorstellung
FileMaker GmbH
 
Tarea ud4 Valero Gallego
Tarea ud4 Valero GallegoTarea ud4 Valero Gallego
Tarea ud4 Valero Gallego
enkarny
 
Meine Vision von einer artgerechten Umgebung für uns Menschen
Meine Vision von einer artgerechten Umgebung für uns Menschen Meine Vision von einer artgerechten Umgebung für uns Menschen
Meine Vision von einer artgerechten Umgebung für uns Menschen
Martin Glogger
 
Taiwan Aktuell #551 15.08.2012
Taiwan Aktuell #551 15.08.2012Taiwan Aktuell #551 15.08.2012
Taiwan Aktuell #551 15.08.2012
Klaus Bardenhagen
 
Pocket
PocketPocket
Pocket
diegodg
 

Andere mochten auch (14)

Apotheke Atlas VPM Núm.4 Rue Csv Eb
Apotheke Atlas VPM Núm.4 Rue Csv EbApotheke Atlas VPM Núm.4 Rue Csv Eb
Apotheke Atlas VPM Núm.4 Rue Csv Eb
 
Gründernacht rhein main frankfurt 14.12.
Gründernacht rhein main frankfurt 14.12.Gründernacht rhein main frankfurt 14.12.
Gründernacht rhein main frankfurt 14.12.
 
Alimentación saludable y sostenible
Alimentación saludable y sostenibleAlimentación saludable y sostenible
Alimentación saludable y sostenible
 
Lanielene
LanieleneLanielene
Lanielene
 
14 10 23_haushalt_1516
14 10 23_haushalt_151614 10 23_haushalt_1516
14 10 23_haushalt_1516
 
Auf in die Römerzeit
Auf in die RömerzeitAuf in die Römerzeit
Auf in die Römerzeit
 
3. Buchgassenfest. Frankfurter Literaturfestival
3. Buchgassenfest. Frankfurter Literaturfestival3. Buchgassenfest. Frankfurter Literaturfestival
3. Buchgassenfest. Frankfurter Literaturfestival
 
Crossmedia ist Alltag
Crossmedia ist AlltagCrossmedia ist Alltag
Crossmedia ist Alltag
 
Kongresshaus Klein Venedig Standorte
Kongresshaus Klein Venedig StandorteKongresshaus Klein Venedig Standorte
Kongresshaus Klein Venedig Standorte
 
FileMaker 12 - Produktvorstellung
FileMaker 12 - ProduktvorstellungFileMaker 12 - Produktvorstellung
FileMaker 12 - Produktvorstellung
 
Tarea ud4 Valero Gallego
Tarea ud4 Valero GallegoTarea ud4 Valero Gallego
Tarea ud4 Valero Gallego
 
Meine Vision von einer artgerechten Umgebung für uns Menschen
Meine Vision von einer artgerechten Umgebung für uns Menschen Meine Vision von einer artgerechten Umgebung für uns Menschen
Meine Vision von einer artgerechten Umgebung für uns Menschen
 
Taiwan Aktuell #551 15.08.2012
Taiwan Aktuell #551 15.08.2012Taiwan Aktuell #551 15.08.2012
Taiwan Aktuell #551 15.08.2012
 
Pocket
PocketPocket
Pocket
 

Ähnlich wie WiSe 2013 | Programmierpraktikum C++ - 05_Strukturierung von Anwendungen

BIT I WiSe 2014 | Basisinformationstechnologie I - 08: Programmiersprachen I
BIT I WiSe 2014 | Basisinformationstechnologie I - 08: Programmiersprachen IBIT I WiSe 2014 | Basisinformationstechnologie I - 08: Programmiersprachen I
BIT I WiSe 2014 | Basisinformationstechnologie I - 08: Programmiersprachen I
Institute for Digital Humanities, University of Cologne
 
Angular von 0 auf 100
Angular von 0 auf 100Angular von 0 auf 100
Angular von 0 auf 100
Yvette Teiken
 
Große Applikationen mit AngularJS
Große Applikationen mit AngularJSGroße Applikationen mit AngularJS
Große Applikationen mit AngularJS
Sebastian Springer
 
BASTA! 2017 Jubiläumskonferenz - Warum warten auf die IDE!?
BASTA! 2017 Jubiläumskonferenz - Warum warten auf die IDE!?BASTA! 2017 Jubiläumskonferenz - Warum warten auf die IDE!?
BASTA! 2017 Jubiläumskonferenz - Warum warten auf die IDE!?
Robin Sedlaczek
 
Angular2
Angular2Angular2
Typescript
TypescriptTypescript
Typescript
Sebastian Springer
 
Einführung in die funktionale Programmierung
Einführung in die funktionale ProgrammierungEinführung in die funktionale Programmierung
Einführung in die funktionale Programmierung
Digicomp Academy AG
 
2009 03 17 Spring101
2009 03 17 Spring1012009 03 17 Spring101
2009 03 17 Spring101gueste4be40
 
Übungsaufgaben SS2010
Übungsaufgaben SS2010Übungsaufgaben SS2010
Übungsaufgaben SS2010maikinger
 
Go - Googles Sprache für skalierbare Systeme
Go - Googles Sprache für skalierbare SystemeGo - Googles Sprache für skalierbare Systeme
Go - Googles Sprache für skalierbare Systeme
Frank Müller
 
Skalierbare Anwendungen mit Google Go
Skalierbare Anwendungen mit Google GoSkalierbare Anwendungen mit Google Go
Skalierbare Anwendungen mit Google Go
Frank Müller
 
Funktionales Programmieren mit Clojure
Funktionales Programmieren mit ClojureFunktionales Programmieren mit Clojure
Funktionales Programmieren mit Clojure
Dr. Christian Betz
 
ADC Core 2017 - Warum warten auf die IDE?
ADC Core 2017 - Warum warten auf die IDE?ADC Core 2017 - Warum warten auf die IDE?
ADC Core 2017 - Warum warten auf die IDE?
Robin Sedlaczek
 
#ADC 2016 - C# Script in Action
#ADC 2016 - C# Script in Action#ADC 2016 - C# Script in Action
#ADC 2016 - C# Script in Action
Robin Sedlaczek
 
Funktionale Programmierung und mehr mit Scala
Funktionale Programmierung und mehr mit ScalaFunktionale Programmierung und mehr mit Scala
Funktionale Programmierung und mehr mit Scala
thoherr
 
Einfuehrung in ExtJS 4
Einfuehrung in ExtJS 4Einfuehrung in ExtJS 4
Einfuehrung in ExtJS 4
Thorsten Suckow-Homberg
 
Do while
Do whileDo while
Do while
Fabian Hitziger
 
SEROM 2018 - 11/14/17/20 - C++ gestern heute und morgen
SEROM 2018 - 11/14/17/20 - C++ gestern heute und morgenSEROM 2018 - 11/14/17/20 - C++ gestern heute und morgen
SEROM 2018 - 11/14/17/20 - C++ gestern heute und morgen
Dr. Herwig Henseler
 

Ähnlich wie WiSe 2013 | Programmierpraktikum C++ - 05_Strukturierung von Anwendungen (18)

BIT I WiSe 2014 | Basisinformationstechnologie I - 08: Programmiersprachen I
BIT I WiSe 2014 | Basisinformationstechnologie I - 08: Programmiersprachen IBIT I WiSe 2014 | Basisinformationstechnologie I - 08: Programmiersprachen I
BIT I WiSe 2014 | Basisinformationstechnologie I - 08: Programmiersprachen I
 
Angular von 0 auf 100
Angular von 0 auf 100Angular von 0 auf 100
Angular von 0 auf 100
 
Große Applikationen mit AngularJS
Große Applikationen mit AngularJSGroße Applikationen mit AngularJS
Große Applikationen mit AngularJS
 
BASTA! 2017 Jubiläumskonferenz - Warum warten auf die IDE!?
BASTA! 2017 Jubiläumskonferenz - Warum warten auf die IDE!?BASTA! 2017 Jubiläumskonferenz - Warum warten auf die IDE!?
BASTA! 2017 Jubiläumskonferenz - Warum warten auf die IDE!?
 
Angular2
Angular2Angular2
Angular2
 
Typescript
TypescriptTypescript
Typescript
 
Einführung in die funktionale Programmierung
Einführung in die funktionale ProgrammierungEinführung in die funktionale Programmierung
Einführung in die funktionale Programmierung
 
2009 03 17 Spring101
2009 03 17 Spring1012009 03 17 Spring101
2009 03 17 Spring101
 
Übungsaufgaben SS2010
Übungsaufgaben SS2010Übungsaufgaben SS2010
Übungsaufgaben SS2010
 
Go - Googles Sprache für skalierbare Systeme
Go - Googles Sprache für skalierbare SystemeGo - Googles Sprache für skalierbare Systeme
Go - Googles Sprache für skalierbare Systeme
 
Skalierbare Anwendungen mit Google Go
Skalierbare Anwendungen mit Google GoSkalierbare Anwendungen mit Google Go
Skalierbare Anwendungen mit Google Go
 
Funktionales Programmieren mit Clojure
Funktionales Programmieren mit ClojureFunktionales Programmieren mit Clojure
Funktionales Programmieren mit Clojure
 
ADC Core 2017 - Warum warten auf die IDE?
ADC Core 2017 - Warum warten auf die IDE?ADC Core 2017 - Warum warten auf die IDE?
ADC Core 2017 - Warum warten auf die IDE?
 
#ADC 2016 - C# Script in Action
#ADC 2016 - C# Script in Action#ADC 2016 - C# Script in Action
#ADC 2016 - C# Script in Action
 
Funktionale Programmierung und mehr mit Scala
Funktionale Programmierung und mehr mit ScalaFunktionale Programmierung und mehr mit Scala
Funktionale Programmierung und mehr mit Scala
 
Einfuehrung in ExtJS 4
Einfuehrung in ExtJS 4Einfuehrung in ExtJS 4
Einfuehrung in ExtJS 4
 
Do while
Do whileDo while
Do while
 
SEROM 2018 - 11/14/17/20 - C++ gestern heute und morgen
SEROM 2018 - 11/14/17/20 - C++ gestern heute und morgenSEROM 2018 - 11/14/17/20 - C++ gestern heute und morgen
SEROM 2018 - 11/14/17/20 - C++ gestern heute und morgen
 

Mehr von Institute for Digital Humanities, University of Cologne

Künstliche Intelligenz und visuelle Erzählungen: Comicanalyse | 17.04.2019 | ...
Künstliche Intelligenz und visuelle Erzählungen: Comicanalyse | 17.04.2019 | ...Künstliche Intelligenz und visuelle Erzählungen: Comicanalyse | 17.04.2019 | ...
Künstliche Intelligenz und visuelle Erzählungen: Comicanalyse | 17.04.2019 | ...
Institute for Digital Humanities, University of Cologne
 
Augmented City –Street Art, Embodiment, Cultural Heritage & AR | 03.04.2019 |...
Augmented City –Street Art, Embodiment, Cultural Heritage & AR | 03.04.2019 |...Augmented City –Street Art, Embodiment, Cultural Heritage & AR | 03.04.2019 |...
Augmented City –Street Art, Embodiment, Cultural Heritage & AR | 03.04.2019 |...
Institute for Digital Humanities, University of Cologne
 
Künstliche Intelligenz und visuelle Erzählungen: Comicanalyse | 03.04.2019 | ...
Künstliche Intelligenz und visuelle Erzählungen: Comicanalyse | 03.04.2019 | ...Künstliche Intelligenz und visuelle Erzählungen: Comicanalyse | 03.04.2019 | ...
Künstliche Intelligenz und visuelle Erzählungen: Comicanalyse | 03.04.2019 | ...
Institute for Digital Humanities, University of Cologne
 
Transformation mittelhochdeutscher Erfahrungswelten – vom Text zum Computerga...
Transformation mittelhochdeutscher Erfahrungswelten – vom Text zum Computerga...Transformation mittelhochdeutscher Erfahrungswelten – vom Text zum Computerga...
Transformation mittelhochdeutscher Erfahrungswelten – vom Text zum Computerga...
Institute for Digital Humanities, University of Cologne
 
Transformation mittelhochdeutscher Erfahrungswelten – vom Text zum Computerga...
Transformation mittelhochdeutscher Erfahrungswelten – vom Text zum Computerga...Transformation mittelhochdeutscher Erfahrungswelten – vom Text zum Computerga...
Transformation mittelhochdeutscher Erfahrungswelten – vom Text zum Computerga...
Institute for Digital Humanities, University of Cologne
 
Bit sosem 2016-wieners-sitzung-13_ki-in-games
Bit sosem 2016-wieners-sitzung-13_ki-in-gamesBit sosem 2016-wieners-sitzung-13_ki-in-games
Bit sosem 2016-wieners-sitzung-13_ki-in-games
Institute for Digital Humanities, University of Cologne
 
Bit sosem 2016-wieners-sitzung-12_bild-iv-computer-vision
Bit sosem 2016-wieners-sitzung-12_bild-iv-computer-visionBit sosem 2016-wieners-sitzung-12_bild-iv-computer-vision
Bit sosem 2016-wieners-sitzung-12_bild-iv-computer-vision
Institute for Digital Humanities, University of Cologne
 
Bit sosem 2016-wieners-sitzung-11_bild-iii-filter
Bit sosem 2016-wieners-sitzung-11_bild-iii-filterBit sosem 2016-wieners-sitzung-11_bild-iii-filter
Bit sosem 2016-wieners-sitzung-11_bild-iii-filter
Institute for Digital Humanities, University of Cologne
 
Bit sosem 2016-wieners-sitzung-10_bild-ii-punktoperationen
Bit sosem 2016-wieners-sitzung-10_bild-ii-punktoperationenBit sosem 2016-wieners-sitzung-10_bild-ii-punktoperationen
Bit sosem 2016-wieners-sitzung-10_bild-ii-punktoperationen
Institute for Digital Humanities, University of Cologne
 
Bit sosem 2016-wieners-sitzung-09_bild-i-kompression
Bit sosem 2016-wieners-sitzung-09_bild-i-kompressionBit sosem 2016-wieners-sitzung-09_bild-i-kompression
Bit sosem 2016-wieners-sitzung-09_bild-i-kompression
Institute for Digital Humanities, University of Cologne
 
Bit sosem 2016-wieners-sitzung-08_semantic-web
Bit sosem 2016-wieners-sitzung-08_semantic-webBit sosem 2016-wieners-sitzung-08_semantic-web
Bit sosem 2016-wieners-sitzung-08_semantic-web
Institute for Digital Humanities, University of Cologne
 
Bit sosem 2016-wieners-sitzung-07_rechnerkommunikation-ii
Bit sosem 2016-wieners-sitzung-07_rechnerkommunikation-iiBit sosem 2016-wieners-sitzung-07_rechnerkommunikation-ii
Bit sosem 2016-wieners-sitzung-07_rechnerkommunikation-ii
Institute for Digital Humanities, University of Cologne
 
Bit sosem 2016-wieners-sitzung-06_rechnerkommunikation
Bit sosem 2016-wieners-sitzung-06_rechnerkommunikationBit sosem 2016-wieners-sitzung-06_rechnerkommunikation
Bit sosem 2016-wieners-sitzung-06_rechnerkommunikation
Institute for Digital Humanities, University of Cologne
 
Bit sosem 2016-wieners-sitzung-05_zellulaere-automaten-conway
Bit sosem 2016-wieners-sitzung-05_zellulaere-automaten-conwayBit sosem 2016-wieners-sitzung-05_zellulaere-automaten-conway
Bit sosem 2016-wieners-sitzung-05_zellulaere-automaten-conway
Institute for Digital Humanities, University of Cologne
 
Bit sosem 2016-wieners-sitzung-04_theoretische-informatik
Bit sosem 2016-wieners-sitzung-04_theoretische-informatikBit sosem 2016-wieners-sitzung-04_theoretische-informatik
Bit sosem 2016-wieners-sitzung-04_theoretische-informatik
Institute for Digital Humanities, University of Cologne
 
Bit sosem 2016-wieners-sitzung-03_algorithmen
Bit sosem 2016-wieners-sitzung-03_algorithmenBit sosem 2016-wieners-sitzung-03_algorithmen
Bit sosem 2016-wieners-sitzung-03_algorithmen
Institute for Digital Humanities, University of Cologne
 
Bit sosem 2016-wieners-sitzung-02_datenstrukturen
Bit sosem 2016-wieners-sitzung-02_datenstrukturenBit sosem 2016-wieners-sitzung-02_datenstrukturen
Bit sosem 2016-wieners-sitzung-02_datenstrukturen
Institute for Digital Humanities, University of Cologne
 
Bit sosem 2016-wieners-sitzung-01_auffrischung
Bit sosem 2016-wieners-sitzung-01_auffrischungBit sosem 2016-wieners-sitzung-01_auffrischung
Bit sosem 2016-wieners-sitzung-01_auffrischung
Institute for Digital Humanities, University of Cologne
 
Bit sosem 2016-wieners-sitzung-00_themenueberblick
Bit sosem 2016-wieners-sitzung-00_themenueberblickBit sosem 2016-wieners-sitzung-00_themenueberblick
Bit sosem 2016-wieners-sitzung-00_themenueberblick
Institute for Digital Humanities, University of Cologne
 
Bit wisem 2015-wieners-sitzung-13_Zusammenfassung II
Bit wisem 2015-wieners-sitzung-13_Zusammenfassung IIBit wisem 2015-wieners-sitzung-13_Zusammenfassung II
Bit wisem 2015-wieners-sitzung-13_Zusammenfassung II
Institute for Digital Humanities, University of Cologne
 

Mehr von Institute for Digital Humanities, University of Cologne (20)

Künstliche Intelligenz und visuelle Erzählungen: Comicanalyse | 17.04.2019 | ...
Künstliche Intelligenz und visuelle Erzählungen: Comicanalyse | 17.04.2019 | ...Künstliche Intelligenz und visuelle Erzählungen: Comicanalyse | 17.04.2019 | ...
Künstliche Intelligenz und visuelle Erzählungen: Comicanalyse | 17.04.2019 | ...
 
Augmented City –Street Art, Embodiment, Cultural Heritage & AR | 03.04.2019 |...
Augmented City –Street Art, Embodiment, Cultural Heritage & AR | 03.04.2019 |...Augmented City –Street Art, Embodiment, Cultural Heritage & AR | 03.04.2019 |...
Augmented City –Street Art, Embodiment, Cultural Heritage & AR | 03.04.2019 |...
 
Künstliche Intelligenz und visuelle Erzählungen: Comicanalyse | 03.04.2019 | ...
Künstliche Intelligenz und visuelle Erzählungen: Comicanalyse | 03.04.2019 | ...Künstliche Intelligenz und visuelle Erzählungen: Comicanalyse | 03.04.2019 | ...
Künstliche Intelligenz und visuelle Erzählungen: Comicanalyse | 03.04.2019 | ...
 
Transformation mittelhochdeutscher Erfahrungswelten – vom Text zum Computerga...
Transformation mittelhochdeutscher Erfahrungswelten – vom Text zum Computerga...Transformation mittelhochdeutscher Erfahrungswelten – vom Text zum Computerga...
Transformation mittelhochdeutscher Erfahrungswelten – vom Text zum Computerga...
 
Transformation mittelhochdeutscher Erfahrungswelten – vom Text zum Computerga...
Transformation mittelhochdeutscher Erfahrungswelten – vom Text zum Computerga...Transformation mittelhochdeutscher Erfahrungswelten – vom Text zum Computerga...
Transformation mittelhochdeutscher Erfahrungswelten – vom Text zum Computerga...
 
Bit sosem 2016-wieners-sitzung-13_ki-in-games
Bit sosem 2016-wieners-sitzung-13_ki-in-gamesBit sosem 2016-wieners-sitzung-13_ki-in-games
Bit sosem 2016-wieners-sitzung-13_ki-in-games
 
Bit sosem 2016-wieners-sitzung-12_bild-iv-computer-vision
Bit sosem 2016-wieners-sitzung-12_bild-iv-computer-visionBit sosem 2016-wieners-sitzung-12_bild-iv-computer-vision
Bit sosem 2016-wieners-sitzung-12_bild-iv-computer-vision
 
Bit sosem 2016-wieners-sitzung-11_bild-iii-filter
Bit sosem 2016-wieners-sitzung-11_bild-iii-filterBit sosem 2016-wieners-sitzung-11_bild-iii-filter
Bit sosem 2016-wieners-sitzung-11_bild-iii-filter
 
Bit sosem 2016-wieners-sitzung-10_bild-ii-punktoperationen
Bit sosem 2016-wieners-sitzung-10_bild-ii-punktoperationenBit sosem 2016-wieners-sitzung-10_bild-ii-punktoperationen
Bit sosem 2016-wieners-sitzung-10_bild-ii-punktoperationen
 
Bit sosem 2016-wieners-sitzung-09_bild-i-kompression
Bit sosem 2016-wieners-sitzung-09_bild-i-kompressionBit sosem 2016-wieners-sitzung-09_bild-i-kompression
Bit sosem 2016-wieners-sitzung-09_bild-i-kompression
 
Bit sosem 2016-wieners-sitzung-08_semantic-web
Bit sosem 2016-wieners-sitzung-08_semantic-webBit sosem 2016-wieners-sitzung-08_semantic-web
Bit sosem 2016-wieners-sitzung-08_semantic-web
 
Bit sosem 2016-wieners-sitzung-07_rechnerkommunikation-ii
Bit sosem 2016-wieners-sitzung-07_rechnerkommunikation-iiBit sosem 2016-wieners-sitzung-07_rechnerkommunikation-ii
Bit sosem 2016-wieners-sitzung-07_rechnerkommunikation-ii
 
Bit sosem 2016-wieners-sitzung-06_rechnerkommunikation
Bit sosem 2016-wieners-sitzung-06_rechnerkommunikationBit sosem 2016-wieners-sitzung-06_rechnerkommunikation
Bit sosem 2016-wieners-sitzung-06_rechnerkommunikation
 
Bit sosem 2016-wieners-sitzung-05_zellulaere-automaten-conway
Bit sosem 2016-wieners-sitzung-05_zellulaere-automaten-conwayBit sosem 2016-wieners-sitzung-05_zellulaere-automaten-conway
Bit sosem 2016-wieners-sitzung-05_zellulaere-automaten-conway
 
Bit sosem 2016-wieners-sitzung-04_theoretische-informatik
Bit sosem 2016-wieners-sitzung-04_theoretische-informatikBit sosem 2016-wieners-sitzung-04_theoretische-informatik
Bit sosem 2016-wieners-sitzung-04_theoretische-informatik
 
Bit sosem 2016-wieners-sitzung-03_algorithmen
Bit sosem 2016-wieners-sitzung-03_algorithmenBit sosem 2016-wieners-sitzung-03_algorithmen
Bit sosem 2016-wieners-sitzung-03_algorithmen
 
Bit sosem 2016-wieners-sitzung-02_datenstrukturen
Bit sosem 2016-wieners-sitzung-02_datenstrukturenBit sosem 2016-wieners-sitzung-02_datenstrukturen
Bit sosem 2016-wieners-sitzung-02_datenstrukturen
 
Bit sosem 2016-wieners-sitzung-01_auffrischung
Bit sosem 2016-wieners-sitzung-01_auffrischungBit sosem 2016-wieners-sitzung-01_auffrischung
Bit sosem 2016-wieners-sitzung-01_auffrischung
 
Bit sosem 2016-wieners-sitzung-00_themenueberblick
Bit sosem 2016-wieners-sitzung-00_themenueberblickBit sosem 2016-wieners-sitzung-00_themenueberblick
Bit sosem 2016-wieners-sitzung-00_themenueberblick
 
Bit wisem 2015-wieners-sitzung-13_Zusammenfassung II
Bit wisem 2015-wieners-sitzung-13_Zusammenfassung IIBit wisem 2015-wieners-sitzung-13_Zusammenfassung II
Bit wisem 2015-wieners-sitzung-13_Zusammenfassung II
 

WiSe 2013 | Programmierpraktikum C++ - 05_Strukturierung von Anwendungen

  • 1. Programmierpraktikum C++ Wintersemester 2013 / 2014 18. November 2013 – Strukturierung von Anwendungen Universität zu Köln. Historisch-Kulturwissenschaftliche Informationsverarbeitung Jan G. Wieners // jan.wieners@uni-koeln.de
  • 2. Kurzüberblick  Strukturierung von Anwendungen I  Funktionen  Call by Value  Call by Reference  Auslagerung von Funktionalität in Headerdateien   Zeiger, Adressoperator Strukturierung von Anwendungen II  Strukturen  Objektorientierung: Klassen Wiederholung 02.11.2010
  • 3. […] int addiereArabisch(int a, int b); int main() { […] ergebnis = addiereArabisch(zahl1, zahl2); […] } int addiereArabisch(int a, int b) { return a + b; }
  • 4. […] Deklaration: „In meiner Anwendung existiert eine Funktion, die ich zu einem späteren Zeitpunkt definiere“ int addiereArabisch(int a, int b); int main() { Deklaration  Funktionskopf, der mit einem Semikolon abgeschlossen wird. […] ergebnis = addiereArabisch(zahl1, zahl2); […] } int addiereArabisch(int a, int b) { return a + b; } Definition: „Auf diese bestimmte Art und Weise verfährt meine Funktion“
  • 5. Generieren beide Anwendungen dasselbe Ergebnis? #include <iostream> using namespace std; #include <iostream> using namespace std; int addition(int operandA, int operandB) { return operandA+operandB; } int addition(int,int); int main() { int zahl1=1; cout<<addition(zahl1,4)<<endl; } ==? int main() { int zahl1=1; cout<<addition(zahl1,4)<<endl; } int addition(int zahl1, int zahl2) { return zahl1+zahl2; }
  • 6. Funktionen: Call by value Call by value  Der Compiler fertigt eine Kopie des Variableninhalts an: #include <iostream> using namespace std; int function(int wert) { wert += 5; return wert; } int main() { int zahl = 10; cout << zahl; func(zahl); cout << endl << zahl; return 0; }  Ausgabe?
  • 7. Funktionen: Call by reference Call by reference  Compiler fertigt keine Kopie des Variableninhalts an; wir arbeiten unmittelbar mit der Variablen: #include <iostream> using namespace std; void func(int *wert) { *wert += 5; } int main() { int zahl = 23; cout << zahl; func(&zahl); cout << zahl; return 0;  Ausgabe? } &  Adressoperator *  Zeigeroperator (auch: Inhalts-/Dereferenzierungsoperator)
  • 8. Zeiger Bis dato: Variablen     int ganzzahligerWert = 13; char einzelnesZeichen = ‘A‘; int[50] eindimensionalesArray; int[5][5] zweidimensionalesArray; Beispiel:  unsigned int i;  i=1; Interne Repräsentation der Variable i:
  • 9. Beispiel: int wert = 23; int *zeigerAufWert = NULL; zeigerAufWert = &wert; cout << "Vorher: " << endl << wert << endl << zeigerAufWert; *zeigerAufWert = 42; cout << "nNachher: " << endl << wert << endl << zeigerAufWert;  Zeiger dürfen nur auf Variablen verweisen, die denselben Datentyp haben!
  • 11. Zusammenfassen von Variablen char roemischeZiffern[8] = "ivxlcdm"; int ziffernWert[7] = {1, 5, 10, 50, 100, 500, 1000}; Verbindung der Werte aufgrund der Arrayposition 0 1 2 3 4 5 6 I V X L C D M 1 5 10 50 100 500 1000
  • 12.
  • 13. Zusammenfassen von Variablen Struct roemisch { char roemischeZiffer; int arabischerWert; }; struct roemisch werte[7]; 0 1 2 3 I, 1 V, 5 X, 10 L, 50 4 5 C, 100 D, 500 6 M, 1000
  • 14.
  • 15. Übungsaufgabe: Filmdatenbank Die ultimative Konkurrenz zur Internet Movie Database (IMDb): Erstellen Sie Ihre eigene Filmdatenbank. Ihre Datenbank soll maximal 100 Einträge speichern und folgende Elemente aufnehmen können:  Deutscher Name des Films  Originaltitel  Veröffentlichungsjahr  Regie Aufgabe 1.1: Überlegen Sie, wie Sie die Datenbank umsetzen können – welche Datenstruktur bietet sich für die zu repräsentierenden Informationen an? Aufgabe 1.2: Implementieren Sie folgenden Programmablauf (vgl. den oben angeführten Screenshot):  wird das Zeichen "j" eingegeben, so wird ein neuer Datensatz angelegt.  wird das Zeichen "n" eingegeben, so wird die Applikation mit einer Abschiedsmeldung beendet.  wird das Zeichen "p" eingegeben, so werden alle bislang in der Datenbank gespeicherten Einträge angezeigt. Aufgabe 1.3: Lagern Sie relevante Teile Ihrer Filmdatenbank in eine eigene Headerdatei bzw. Bibliothek aus.
  • 16.
  • 17. /