• Save
WiSe 2013 | Programmierpraktikum C++ - 05_Strukturierung von Anwendungen
Upcoming SlideShare
Loading in...5
×
 

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

on

  • 259 views

 

Statistics

Views

Total Views
259
Views on SlideShare
187
Embed Views
72

Actions

Likes
0
Downloads
0
Comments
0

1 Embed 72

http://www.hki.uni-koeln.de 72

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

  • 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.
  • /