23
Universität zu Köln. Historisch-Kulturwissenschaftliche Informationsverarbeitung Jan G. Wieners // [email protected] Softwaretechnologie I Wintersemester 2014 / 2015 18. November 2014 Funktionen, Strukturen und Bibliotheken

WiSe 2014 | Softwaretechnologie I _ Funktionen, Zeiger, Strukturen, Bibliotheken

Embed Size (px)

DESCRIPTION

WiSe 2014 | Softwaretechnologie I _ Funktionen, Zeiger, Strukturen, Bibliotheken

Citation preview

Page 1: WiSe 2014 | Softwaretechnologie I _ Funktionen, Zeiger, Strukturen, Bibliotheken

Universität zu Köln. Historisch-Kulturwissenschaftliche Informationsverarbeitung

Jan G. Wieners // [email protected]

Softwaretechnologie IWintersemester 2014 / 2015

18. November 2014 – Funktionen, Strukturen und Bibliotheken

Page 2: WiSe 2014 | Softwaretechnologie I _ Funktionen, Zeiger, Strukturen, Bibliotheken

Kurzwiederholung

Page 3: WiSe 2014 | Softwaretechnologie I _ Funktionen, Zeiger, Strukturen, Bibliotheken

[…]

int addiereArabisch(int a, int b);

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

}

int addiereArabisch(int a, int b) {int resultat;resultat=a+b;a=0;b=0;return resultat;

}

Page 4: WiSe 2014 | Softwaretechnologie I _ Funktionen, Zeiger, Strukturen, Bibliotheken

[…]

int addiereArabisch(int a, int b);

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

}

int addiereArabisch(int a, int b) {int resultat;resultat=a+b;a=0;b=0;return resultat;

}

Deklaration: „In meiner

Anwendung existiert eine

Funktion, die ich zu einem

späteren Zeitpunkt definiere“

Deklaration Funktionskopf,

der mit einem Semikolon

abgeschlossen wird.

Definition: „Auf

diese bestimmte Art

und Weise verfährt

meine Funktion“

Page 5: WiSe 2014 | Softwaretechnologie I _ Funktionen, Zeiger, Strukturen, Bibliotheken

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:

Zeiger

Page 6: WiSe 2014 | Softwaretechnologie I _ Funktionen, Zeiger, Strukturen, Bibliotheken

*

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!

Zeiger

Page 7: WiSe 2014 | Softwaretechnologie I _ Funktionen, Zeiger, Strukturen, Bibliotheken

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;

}

Funktionen: Call by value

Ausgabe?

Page 8: WiSe 2014 | Softwaretechnologie I _ Funktionen, Zeiger, Strukturen, Bibliotheken

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;

}

Funktionen: Call by reference

Ausgabe (und Unterschied)?

Page 9: WiSe 2014 | Softwaretechnologie I _ Funktionen, Zeiger, Strukturen, Bibliotheken

Schreiben Sie eine Funktion (und das

Hauptprogramm dazu), die:

zwei Zahlen vom Datentyp int einliest,

die Zahlen vertauscht

und an das Programm zurückgibt

Übung

Page 10: WiSe 2014 | Softwaretechnologie I _ Funktionen, Zeiger, Strukturen, Bibliotheken

char *zeigeBegruessung(char *name1) {

cout << "Bitte geben Sie Ihren Namen ein:" << endl;

cin >> name1;

return name1;}

Page 11: WiSe 2014 | Softwaretechnologie I _ Funktionen, Zeiger, Strukturen, Bibliotheken

Strukturen

Page 12: WiSe 2014 | Softwaretechnologie I _ Funktionen, Zeiger, Strukturen, Bibliotheken

Kapselung / Information Hiding / Objektorientierung

Page 13: WiSe 2014 | Softwaretechnologie I _ Funktionen, Zeiger, Strukturen, Bibliotheken

struct nameDerStruktur

{

// Elemente der Struktur

};

Strukturen – so funktioniert‘s

struct

Page 14: WiSe 2014 | Softwaretechnologie I _ Funktionen, Zeiger, Strukturen, Bibliotheken

struct nameDerStruktur

{

// Elemente der Struktur

};

Beispiel:

struct person

{

char vorname[100];

char nachname[100]

} ;

Strukturen

struct

Page 15: WiSe 2014 | Softwaretechnologie I _ Funktionen, Zeiger, Strukturen, Bibliotheken

struct personenDB {

char vorname[100];char nachname[100];

};

Deklaration:personenDB meineDatenbank;

Mit mehren Elementen / Instanzen der Struktur arbeiten:personenDB zehnDatenbanken[10];

Dynamisch:personenDB *dynamischeDB = new personenDB;

Zugriff auf Elemente der Struktur: struct.vorname (Punkt-Operator) struct->vorname (-> Operator)

Strukturen

Page 16: WiSe 2014 | Softwaretechnologie I _ Funktionen, Zeiger, Strukturen, Bibliotheken

#include <iostream>using namespace std;

struct EineStruktur{

int Zahl;};

int main(){

EineStruktur Werte[5];

for(int i=0; i<5; i++){

Werte[i].Zahl=i;cout << Werte[i].Zahl << endl;

}return 0;}

struct - Arrays

Page 17: WiSe 2014 | Softwaretechnologie I _ Funktionen, Zeiger, Strukturen, Bibliotheken

#include <iostream>using namespace std;struct EineStruktur{

int Zahl;int Funktion(int a, int b) // gehoert zu EineStruktur (inline definiert){

Zahl = a + b;return Zahl;

}};

int main(){

EineStruktur Wert;cout << "Returnwert: " << Wert.Funktion(1,2) << endl;return 0;

}

struct - Methoden

Page 18: WiSe 2014 | Softwaretechnologie I _ Funktionen, Zeiger, Strukturen, Bibliotheken

Übungsaufgabe

Eine Filmdatenbank

Page 19: WiSe 2014 | Softwaretechnologie I _ Funktionen, Zeiger, Strukturen, Bibliotheken
Page 20: WiSe 2014 | Softwaretechnologie I _ Funktionen, Zeiger, Strukturen, Bibliotheken

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: 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.

Filmdatenbank

Page 21: WiSe 2014 | Softwaretechnologie I _ Funktionen, Zeiger, Strukturen, Bibliotheken

Eigene Bibliotheken /

Headerdateien

Page 22: WiSe 2014 | Softwaretechnologie I _ Funktionen, Zeiger, Strukturen, Bibliotheken

Vom System bereitgestellte Headerdateien:

#include <dateiname>

Analog: Definition eigener Bibliotheken

(*.cpp + *.h)

Einbinden von Headerdateien:

#include “meineHeaderdatei.h"

Funktionalität auslagern: Headerdateien

Page 23: WiSe 2014 | Softwaretechnologie I _ Funktionen, Zeiger, Strukturen, Bibliotheken

/