SlideShare uma empresa Scribd logo
1 de 23
Universität zu Köln. Historisch-Kulturwissenschaftliche Informationsverarbeitung
Jan G. Wieners // jan.wieners@uni-koeln.de
Softwaretechnologie I
Wintersemester 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
/

Mais conteúdo relacionado

Destaque

2006. René Siegl. Kooperation im Kampf um ausländische Investoren in Mittel- ...
2006. René Siegl. Kooperation im Kampf um ausländische Investoren in Mittel- ...2006. René Siegl. Kooperation im Kampf um ausländische Investoren in Mittel- ...
2006. René Siegl. Kooperation im Kampf um ausländische Investoren in Mittel- ...Forum Velden
 
Tema 2. las revoluciones políticas. la revolucion francesa
Tema 2.  las revoluciones políticas. la revolucion francesaTema 2.  las revoluciones políticas. la revolucion francesa
Tema 2. las revoluciones políticas. la revolucion francesajesus ortiz
 
Memoria de las actividades del grupo Atlas VPM 2013
Memoria de las actividades del grupo Atlas VPM 2013Memoria de las actividades del grupo Atlas VPM 2013
Memoria de las actividades del grupo Atlas VPM 2013Atlas VPM
 
La Seguridad En Internet - Elisa
La Seguridad En Internet - ElisaLa Seguridad En Internet - Elisa
La Seguridad En Internet - Elisaeli_9317
 
La labor de documentación en un museo
La labor de documentación en un museoLa labor de documentación en un museo
La labor de documentación en un museoSilvia Arano Poggi
 
Kritische Masse als Erfolgsgarant
Kritische Masse als ErfolgsgarantKritische Masse als Erfolgsgarant
Kritische Masse als ErfolgsgarantBarbara Niedner
 
Tema 3. la revolución industrial. los inicios
Tema 3.  la revolución industrial. los iniciosTema 3.  la revolución industrial. los inicios
Tema 3. la revolución industrial. los iniciosjesus ortiz
 
Paula Montenegro MéNdez
Paula Montenegro MéNdezPaula Montenegro MéNdez
Paula Montenegro MéNdezecursocig
 
10.5. le evolución de la política exterior de españa durante el s. xviii
10.5.  le evolución de la política exterior de españa durante el s. xviii10.5.  le evolución de la política exterior de españa durante el s. xviii
10.5. le evolución de la política exterior de españa durante el s. xviiijesus ortiz
 
LucíA GarcíA
LucíA GarcíALucíA GarcíA
LucíA GarcíAecursocig
 

Destaque (20)

2006. René Siegl. Kooperation im Kampf um ausländische Investoren in Mittel- ...
2006. René Siegl. Kooperation im Kampf um ausländische Investoren in Mittel- ...2006. René Siegl. Kooperation im Kampf um ausländische Investoren in Mittel- ...
2006. René Siegl. Kooperation im Kampf um ausländische Investoren in Mittel- ...
 
Tema 2. las revoluciones políticas. la revolucion francesa
Tema 2.  las revoluciones políticas. la revolucion francesaTema 2.  las revoluciones políticas. la revolucion francesa
Tema 2. las revoluciones políticas. la revolucion francesa
 
Vegetales
VegetalesVegetales
Vegetales
 
Bit WiSe 2013 | Basisinformationstechnologie I - 02: Grundlagen II: Zeichenco...
Bit WiSe 2013 | Basisinformationstechnologie I - 02: Grundlagen II: Zeichenco...Bit WiSe 2013 | Basisinformationstechnologie I - 02: Grundlagen II: Zeichenco...
Bit WiSe 2013 | Basisinformationstechnologie I - 02: Grundlagen II: Zeichenco...
 
Memoria de las actividades del grupo Atlas VPM 2013
Memoria de las actividades del grupo Atlas VPM 2013Memoria de las actividades del grupo Atlas VPM 2013
Memoria de las actividades del grupo Atlas VPM 2013
 
Calendario2
Calendario2Calendario2
Calendario2
 
Metin2
Metin2Metin2
Metin2
 
La Seguridad En Internet - Elisa
La Seguridad En Internet - ElisaLa Seguridad En Internet - Elisa
La Seguridad En Internet - Elisa
 
La labor de documentación en un museo
La labor de documentación en un museoLa labor de documentación en un museo
La labor de documentación en un museo
 
Kritische Masse als Erfolgsgarant
Kritische Masse als ErfolgsgarantKritische Masse als Erfolgsgarant
Kritische Masse als Erfolgsgarant
 
Sinn Spielen
Sinn SpielenSinn Spielen
Sinn Spielen
 
Tema 3. la revolución industrial. los inicios
Tema 3.  la revolución industrial. los iniciosTema 3.  la revolución industrial. los inicios
Tema 3. la revolución industrial. los inicios
 
Paula Montenegro MéNdez
Paula Montenegro MéNdezPaula Montenegro MéNdez
Paula Montenegro MéNdez
 
Baku - Statt der Winde
Baku - Statt der WindeBaku - Statt der Winde
Baku - Statt der Winde
 
10.5. le evolución de la política exterior de españa durante el s. xviii
10.5.  le evolución de la política exterior de españa durante el s. xviii10.5.  le evolución de la política exterior de españa durante el s. xviii
10.5. le evolución de la política exterior de españa durante el s. xviii
 
LucíA GarcíA
LucíA GarcíALucíA GarcíA
LucíA GarcíA
 
Chem2Market Präsentation
Chem2Market PräsentationChem2Market Präsentation
Chem2Market Präsentation
 
SoSe 2013 | IT-Zertifikat: DM - 00_Organisatorisches
 SoSe 2013 | IT-Zertifikat: DM - 00_Organisatorisches SoSe 2013 | IT-Zertifikat: DM - 00_Organisatorisches
SoSe 2013 | IT-Zertifikat: DM - 00_Organisatorisches
 
Surah baqara 271 to 280
Surah baqara  271 to 280Surah baqara  271 to 280
Surah baqara 271 to 280
 
SoSe 2013 | IT-Zertifikat: AMM - Semantic Web und das Resource Description F...
 SoSe 2013 | IT-Zertifikat: AMM - Semantic Web und das Resource Description F... SoSe 2013 | IT-Zertifikat: AMM - Semantic Web und das Resource Description F...
SoSe 2013 | IT-Zertifikat: AMM - Semantic Web und das Resource Description F...
 

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

Große Applikationen mit AngularJS
Große Applikationen mit AngularJSGroße Applikationen mit AngularJS
Große Applikationen mit AngularJSSebastian Springer
 
Funktionale Programmierung und mehr mit Scala
Funktionale Programmierung und mehr mit ScalaFunktionale Programmierung und mehr mit Scala
Funktionale Programmierung und mehr mit Scalathoherr
 
Scalaz introduction for Java programmers
Scalaz introduction for Java programmersScalaz introduction for Java programmers
Scalaz introduction for Java programmersBernhard Huemer
 
Einführung in die funktionale Programmierung
Einführung in die funktionale ProgrammierungEinführung in die funktionale Programmierung
Einführung in die funktionale ProgrammierungDigicomp Academy AG
 
Performance trotz Entity Framwork
Performance trotz Entity FramworkPerformance trotz Entity Framwork
Performance trotz Entity FramworkAndré Krämer
 
C# 8.0, vNow and vNext
C# 8.0, vNow and vNextC# 8.0, vNow and vNext
C# 8.0, vNow and vNextDavid Tielke
 
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 SystemeFrank Müller
 
Back to Basics German 2: Erstellen Sie Ihre erste Anwendung in MongoDB
Back to Basics German 2: Erstellen Sie Ihre erste Anwendung in MongoDBBack to Basics German 2: Erstellen Sie Ihre erste Anwendung in MongoDB
Back to Basics German 2: Erstellen Sie Ihre erste Anwendung in MongoDBMongoDB
 
Warum ECMAScript 6 die Welt ein Stückchen besser macht
Warum ECMAScript 6 die Welt ein Stückchen besser machtWarum ECMAScript 6 die Welt ein Stückchen besser macht
Warum ECMAScript 6 die Welt ein Stückchen besser machtSebastian Springer
 
Dokumentation durch automatisierte Akzeptanztests
Dokumentation durch automatisierte AkzeptanztestsDokumentation durch automatisierte Akzeptanztests
Dokumentation durch automatisierte AkzeptanztestsSebastian Sanitz
 
Open Data Vorlesung Termin 11: Skalen und Achsen, Programming Coaching
Open Data Vorlesung Termin 11: Skalen und Achsen, Programming CoachingOpen Data Vorlesung Termin 11: Skalen und Achsen, Programming Coaching
Open Data Vorlesung Termin 11: Skalen und Achsen, Programming CoachingMatthias Stürmer
 
Apache CouchDB at PHPUG Karlsruhe, Germany (Jan 27th 2009)
Apache CouchDB at PHPUG Karlsruhe, Germany (Jan 27th 2009)Apache CouchDB at PHPUG Karlsruhe, Germany (Jan 27th 2009)
Apache CouchDB at PHPUG Karlsruhe, Germany (Jan 27th 2009)Nils Adermann
 
Dependency Injection - A practical introduction
Dependency Injection - A practical introductionDependency Injection - A practical introduction
Dependency Injection - A practical introductionCarsten Hetzel
 

Semelhante a WiSe 2014 | Softwaretechnologie I _ Funktionen, Zeiger, Strukturen, Bibliotheken (20)

Große Applikationen mit AngularJS
Große Applikationen mit AngularJSGroße Applikationen mit AngularJS
Große Applikationen mit AngularJS
 
Einfuehrung in ExtJS 4
Einfuehrung in ExtJS 4Einfuehrung in ExtJS 4
Einfuehrung in ExtJS 4
 
Funktionale Programmierung und mehr mit Scala
Funktionale Programmierung und mehr mit ScalaFunktionale Programmierung und mehr mit Scala
Funktionale Programmierung und mehr mit Scala
 
Scalaz introduction for Java programmers
Scalaz introduction for Java programmersScalaz introduction for Java programmers
Scalaz introduction for Java programmers
 
Typescript
TypescriptTypescript
Typescript
 
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
 
Einführung in die funktionale Programmierung
Einführung in die funktionale ProgrammierungEinführung in die funktionale Programmierung
Einführung in die funktionale Programmierung
 
Performance trotz Entity Framwork
Performance trotz Entity FramworkPerformance trotz Entity Framwork
Performance trotz Entity Framwork
 
Angular2
Angular2Angular2
Angular2
 
C# 8.0, vNow and vNext
C# 8.0, vNow and vNextC# 8.0, vNow and vNext
C# 8.0, vNow and vNext
 
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
 
Back to Basics German 2: Erstellen Sie Ihre erste Anwendung in MongoDB
Back to Basics German 2: Erstellen Sie Ihre erste Anwendung in MongoDBBack to Basics German 2: Erstellen Sie Ihre erste Anwendung in MongoDB
Back to Basics German 2: Erstellen Sie Ihre erste Anwendung in MongoDB
 
Warum ECMAScript 6 die Welt ein Stückchen besser macht
Warum ECMAScript 6 die Welt ein Stückchen besser machtWarum ECMAScript 6 die Welt ein Stückchen besser macht
Warum ECMAScript 6 die Welt ein Stückchen besser macht
 
Dokumentation durch automatisierte Akzeptanztests
Dokumentation durch automatisierte AkzeptanztestsDokumentation durch automatisierte Akzeptanztests
Dokumentation durch automatisierte Akzeptanztests
 
Open Data Vorlesung Termin 11: Skalen und Achsen, Programming Coaching
Open Data Vorlesung Termin 11: Skalen und Achsen, Programming CoachingOpen Data Vorlesung Termin 11: Skalen und Achsen, Programming Coaching
Open Data Vorlesung Termin 11: Skalen und Achsen, Programming Coaching
 
Apache CouchDB at PHPUG Karlsruhe, Germany (Jan 27th 2009)
Apache CouchDB at PHPUG Karlsruhe, Germany (Jan 27th 2009)Apache CouchDB at PHPUG Karlsruhe, Germany (Jan 27th 2009)
Apache CouchDB at PHPUG Karlsruhe, Germany (Jan 27th 2009)
 
Webapplikationen mit Node.js
Webapplikationen mit Node.jsWebapplikationen mit Node.js
Webapplikationen mit Node.js
 
TypeScript
TypeScriptTypeScript
TypeScript
 
Dependency Injection - A practical introduction
Dependency Injection - A practical introductionDependency Injection - A practical introduction
Dependency Injection - A practical introduction
 
jQuery & CouchDB - Die zukünftige Webentwicklung?
jQuery & CouchDB - Die zukünftige Webentwicklung?jQuery & CouchDB - Die zukünftige Webentwicklung?
jQuery & CouchDB - Die zukünftige Webentwicklung?
 

Mais de Institute for Digital Humanities, University of Cologne

Mais de 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 2014 | Softwaretechnologie I _ Funktionen, Zeiger, Strukturen, Bibliotheken

  • 1. Universität zu Köln. Historisch-Kulturwissenschaftliche Informationsverarbeitung Jan G. Wieners // jan.wieners@uni-koeln.de Softwaretechnologie I Wintersemester 2014 / 2015 18. November 2014 – Funktionen, Strukturen und Bibliotheken
  • 3. […] 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; }
  • 4. […] 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“
  • 5. 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
  • 6. * 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
  • 7. 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?
  • 8. 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)?
  • 9. 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
  • 10. char *zeigeBegruessung(char *name1) { cout << "Bitte geben Sie Ihren Namen ein:" << endl; cin >> name1; return name1; }
  • 12. Kapselung / Information Hiding / Objektorientierung
  • 13. struct nameDerStruktur { // Elemente der Struktur }; Strukturen – so funktioniert‘s struct
  • 14. struct nameDerStruktur { // Elemente der Struktur }; Beispiel: struct person { char vorname[100]; char nachname[100] } ; Strukturen struct
  • 15. 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
  • 16. #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
  • 17. #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
  • 19.
  • 20. 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
  • 22.  Vom System bereitgestellte Headerdateien: #include <dateiname>  Analog: Definition eigener Bibliotheken (*.cpp + *.h)  Einbinden von Headerdateien: #include “meineHeaderdatei.h" Funktionalität auslagern: Headerdateien
  • 23. /

Notas do Editor

  1. ...etwas ist hier überflüssig