Programmierpraktikum C++
Wintersemester 2013 / 2014
18. November 2013 – Strukturierung von Anwendungen

Universität zu Köl...
Kurzüberblick


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

 Auslagerung von Funk...
[…]

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

}

int addiereArab...
[…]

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

int addier...
Generieren beide Anwendungen dasselbe Ergebnis?
#include <iostream>
using namespace std;

#include <iostream>
using namesp...
Funktionen: Call by value
Call by value  Der Compiler fertigt eine Kopie des
Variableninhalts an:
#include <iostream>
usi...
Funktionen: Call by reference
Call by reference  Compiler fertigt keine Kopie des Variableninhalts
an; wir arbeiten unmit...
Zeiger
Bis dato: Variablen





int ganzzahligerWert = 13;
char einzelnesZeichen = ‘A‘;
int[50] eindimensionalesArray;...
Beispiel:
int wert = 23;
int *zeigerAufWert = NULL;
zeigerAufWert = &wert;
cout << "Vorher: " << endl << wert << endl << z...
...Funktonalität auslagern...?
Zusammenfassen von Variablen
char roemischeZiffern[8] = "ivxlcdm";
int ziffernWert[7] = {1, 5, 10, 50, 100, 500, 1000};
Ve...
Zusammenfassen von Variablen
Struct roemisch
{
char roemischeZiffer;
int arabischerWert;
};
struct roemisch werte[7];

0

...
Übungsaufgabe: Filmdatenbank
Die ultimative Konkurrenz zur Internet Movie Database (IMDb): Erstellen
Sie Ihre eigene Filmd...
/
WiSe 2013 | Programmierpraktikum C++ - 05_Strukturierung von Anwendungen
WiSe 2013 | Programmierpraktikum C++ - 05_Strukturierung von Anwendungen
WiSe 2013 | Programmierpraktikum C++ - 05_Strukturierung von Anwendungen
Nächste SlideShare
Wird geladen in …5
×

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

447 Aufrufe

Veröffentlicht am

0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
447
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
95
Aktionen
Geteilt
0
Downloads
0
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

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

  1. 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. 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. 3. […] int addiereArabisch(int a, int b); int main() { […] ergebnis = addiereArabisch(zahl1, zahl2); […] } int addiereArabisch(int a, int b) { return a + b; }
  4. 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. 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. 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. 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. 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. 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!
  10. 10. ...Funktonalität auslagern...?
  11. 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. 12. 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
  13. 13. Ü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.
  14. 14. /

×