Upload
jan-wieners
View
314
Download
1
Embed Size (px)
DESCRIPTION
WiSe 2014 | Softwaretechnologie I _ Funktionen, Zeiger, Strukturen, Bibliotheken
Citation preview
Universität zu Köln. Historisch-Kulturwissenschaftliche Informationsverarbeitung
Jan G. Wieners // [email protected]
Softwaretechnologie IWintersemester 2014 / 2015
18. November 2014 – Funktionen, Strukturen und Bibliotheken
Kurzwiederholung
[…]
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;
}
[…]
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“
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
*
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
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?
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)?
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
char *zeigeBegruessung(char *name1) {
cout << "Bitte geben Sie Ihren Namen ein:" << endl;
cin >> name1;
return name1;}
Strukturen
Kapselung / Information Hiding / Objektorientierung
struct nameDerStruktur
{
// Elemente der Struktur
};
Strukturen – so funktioniert‘s
struct
struct nameDerStruktur
{
// Elemente der Struktur
};
Beispiel:
struct person
{
char vorname[100];
char nachname[100]
} ;
Strukturen
struct
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
#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
#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
Übungsaufgabe
Eine 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: 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
Eigene Bibliotheken /
Headerdateien
Vom System bereitgestellte Headerdateien:
#include <dateiname>
Analog: Definition eigener Bibliotheken
(*.cpp + *.h)
Einbinden von Headerdateien:
#include “meineHeaderdatei.h"
Funktionalität auslagern: Headerdateien
/