Angewandte Mathematik und Programmierung

Werbung
Angewandte Mathematik und
Programmierung
Einführung in das Konzept der objektorientierten Anwendungen zu
wissenschaftlichen Rechnens mit C++ und Matlab
SS2013
F
Fomuso
Ek
Ekellem
ll
Organisatorisches








Dozenten Gruppe: Ango Fomuso Ekellem(2.250), Ludger Buchmann(2.250)
Webseite: http://www.gm.fh-koeln.de/~afomusoe
Fachemail: [email protected]
Sprache: Deutsch und Englisch
Voraussetzung:
g keine
Unterlagen: Vorlesungsfolien, Skript, RRZN/Uni Hannover - C++ für
C-Programmierer(1998) und RRZN/Uni Hannover Grundlagen der Programmierung mit
Beispielen in C++ und Java(2000)
Sprechstunden: Mittwochs bis Freitags(09:30-11:30 und 13:00-14:30)
Erwartungen:
Aktive Teilnahme an Vorlesung und Übung ( Punktsystem )
Aktives eigenständiges Programmieren (mind. 1 Übungsaufgabe pro Rubrik!)
Auseinandersetzen mit den Übungsaufgaben, zumindest Fragen formulieren können!
Gemeinsam Spaß beim Studium von C++ und OOP Programmierung haben
Fomuso Ekellem
Angewandte Mathematik und Programmierung
2
C++ Tools





Zur Programmierung benötigen Sie einen Editor und einen Compiler:
Sie wissen schon: Programme werden als einfacher (ASCII-)Text in einem Editor
aufgesetzt.
Es gibt einfache bis komplexe Editoren mit sehr schönen Benutzeroberfläche.
Wir werden ein Paar Exemplare benutzen.
Alles was wir brauchen:
Mingw GCC für C++
 Hilfsprogram – Notepad++ (Hilfsprogramm zum Kodieren)
 Dev-C++
C
 Visual C++ 2010 Express

Merken: Vermeiden Sie jede Art von Ablenkung. Verwenden Sie nur diese Tools für die
ganze Vorlesung
Vorlesung. Bitte für die Tests,
Tests reichen Sie nur die Quelldateien ein.
ein
Fomuso Ekellem
Programmierung und Angewandte Mathematik
3
Compiler


Die genaue Handhabung der Compiler variiert sehr stark von System zu System. Zum
Beispiel in UNIX mit Kommandozeile oder Makefiles starten und MSDOS/Wi d
DOS/Windows
meist
i mit
i iintegrierten
i
grafischen
fi h Ob
Oberflächen.
fl h
Steht das Programm komplett in einer Datei progname.cpp, dann lässt es sich
beispielsweise mit dem „Mingw GCC“ Compiler auf jedem System übersetzen mit dem
Aufruf "g++
g++ progname
progname.cpp
cpp -o progname
progname" und starten mit "progname"
progname
-o in diesem Sinne bedeutet Output Ordner, und progname ist der Ordner.
 progname ist ein Executable Datei. Also progname.exe
 Der Compiler
p
g++ kompiliert
g
p
progname.cpp
p
g
pp und erstellt die pprogname.exe
g

Fomuso Ekellem
Programmierung und Angewandte Mathematik
4
Reservierte Schlüsselwörte in C/C++

Auto, const, double, float, int , short , struct, unsigned, break, continue, else, for,
long, signed, switch, void, case, default, enum, goto, register, sizeof, typedef,
volatile,
l il char,
h
d
do, extern, if,
if return, static,
i union,
i
while,
hil virtual.
i
l
Fomuso Ekellem
Programmierung und Angewandte Mathematik
5
Datentypen




Für die Verarbeitung von Informationen in einem Programm müssen im Speicher des
Rechners Plätze (Variablen) zur Aufnahme dieser Informationen reserviert werden.
Bevor diese Variablen benutzt werden können, müssen sie zuerst deklariert werden.
Dies geschieht am Anfang einer Funktion vor allen ausführbaren Anweisungen.
Prinzipiell gibt zwei Arten von Datentypen, die Primitive (vorgegeben) und NichtPrimitive (Benutzerdefiniert) aber Unter einem Datentyp versteht man eine
Zusammenfassung von Wertebereichen und Operationen zu einer Einheit.
Anstelle von Datentyp wird mitunter der Begriff Wertart verwendet.
Fomuso Ekellem
Programmierung und Angewandte Mathematik
6
Datentypen- Für später!

benutzerdefinierte Datentypen (user-defined types) Die Ableitungsvorschrift ist
Bestandteil eines Programms.
D D
Der
Datentyp wird
i d vom Programmierer
P
i
als
l Benutzer
B
der
d Programmiersprache
P
i
h
eingeführt.
Fomuso Ekellem
Programmierung und Angewandte Mathematik
7
Elementare Datentypen





Elementare Datentypen sind Integer (Teilbereich der ganze Zahlen)
Real (Teilbereich der reellen Zahlen)
Boolean (Wahrheitswerte)
Char (Zeichen aus einem bestimmten Zeichensatz)
Diese Datentypen
yp sind in den meisten Programmiersprachen
g
p
- oft in verschiedenen
Varianten – vordefiniert (oder vorgegeben)
Alle anderen Datentypen lassen sich aus den elementaren Datentypen ableiten
(konstruieren). Die Werte der elementaren Datentypen sind skalar, unterscheiden
sich syntaktisch eindeutig voneinander.
voneinander
Fomuso Ekellem
Programmierung und Angewandte Mathematik
8
Deklaration von elementare Datentypen


Die Deklaration führt einen Namen ein und ordnet ihm einen Typ zu.
Siehe Beispiele: Anhang!
Fomuso Ekellem
Programmierung und Angewandte Mathematik
9
Datentypen


Abgeleitete Datentypen Mit Hilfe von Konstruktoren kann aus einem oder mehreren
Basisdatentypen ein neuer Datentyp abgeleitet werden.
Al Basisdatentyp
Als
B i d
k
kommen elementare
l
oder
d zuvor abgeleitete
b l i
Datentypen
D
in
i Frage.
F
Vordefinierte abgeleitete Datentypen Diese Datentypen sind nicht in allen
Programmiersprachen vordefiniert,
Beispiele
sind String (Zeichenketten)
 Complex (komplexe Zahlen)

Sind derartige Datentypen vordefiniert, so kann mit ihnen wie mit elementaren
Datentypen gearbeitet werden.
In anderen Sprachen müssen diese Datentypen aus den elementaren Datentypen
abgeleitet werden, also z.B String aus Char und Complex aus Real.
Fomuso Ekellem
Programmierung und Angewandte Mathematik
10
Deklaration und Definition

Definition und Deklaration sind zwei verschiedene Dinge in C++ oder in der
Programmierung überhaupt.
Eine Deklaration informiert den Compiler über die Eigenschaften etwa von einem Typen oder einer
Funktion, definiert aber keinen Code, der im ausführbaren Programm verwendet wird. Also namens
Gebung von Variablen und Methoden.
 Wenn wir ein struct/Method/Klasse/Variable deklarieren,, deklarieren wir im Grunde nur ein
Muster.
Beispiel: void hallo(); // Deklaration von "hallo" (ohne Definition)
 Eine Definition andererseits, definiert etwas, das im ausführbaren Programm tatsächlich existiert,
etwa eine Variable oder Code-Zeilen.
Code Zeilen
void hallo(){ ::std::cout << "Hallo!\n"; } // Definition von "hallo"

***int main(){ hallo ();
Return 0; } // Verwendung von "hallo„ in main
Fomuso Ekellem
Angewandte Mathematik und Programmierung
11
Paradigmen





Der Schwerpunkt in dieser Vorlesung liegt auf der Vermittlung objektorientierter
Programmiermethoden, in einfacher und anschaulicher Form, anhand zahlreicher
k k
konkreter
B
Beispiele
i i l und
d Üb
Übungsaufgaben.
f b
Wichtig! Ob die Programmiersprache nun C++, Java, Visual Basic oder einen anderen
Namen trägt, ist sekundär; Wichtig ist das Verständnis der dahinter stehenden
Grundkonzepte.
Grundkonzepte
Objektorientierte Programmierung ist ein Paradigma.
Paradigma: Ein Beispiel, das als Muster oder Modell dient.
Vier vorwiegend bekannte Haupttypen:
Haupttypen
Prozedurale/Imperative
 Logische
 Funktionale
 Objektorientierte

Fomuso Ekellem
Angewandte Mathematik und Programmierung
12
Paradigmen



Viele von Ihnen haben bisher nur prozedurale programmiert.
Imperative /prozedurale Paradigma: Die Funktionen stehen im Vordergrund. Mit
bedingten Anweisungen und Sprung-Anweisungen können Programmteile übersprungen
oder wiederholt werden.
Bei prozeduralen Programmiersprachen werden zu lösende Probleme in Teilprobleme
aufgeteilt
f t ilt - auch
h Funktionen
F kti
(C/C++) bzw.
b
P
Prozeduren
d
(M d l PASCAL) genannt.
(Modula,
t
Fomuso Ekellem
Angewandte Mathematik und Programmierung
13
Paradigmen



Funktionale- Paradigmen: Menge von Funktionsdefinitionen und einem Ausdruck.
Typischer Vertreter ist die Sprache LISP.
Logische-Paradigmen: Hier werden nur Fakten und Regeln angegeben. Problemlösung
wird nicht genauer spezifiziert, sondern vom Interpreter-Programm erstellt. Man kann
Logische Paradigmen in Prolog und SQL sehen.
U t
Unterschiede:
hi d
Funktionale und logische Stille trennen sehr klar die WELCHE Aspekte eines Programms
(Programmierer Verantwortung) und die WIE Aspekte (Durchführungsbeschlüsse).
 Imperative/prozedurale
p
p
und objektorientierte
j
Programme
g
enthalten im Gegensatz
g
sowohl die
Spezifikation und die Details der Implementierung, sie sind untrennbar miteinander verbunden.

Fomuso Ekellem
Angewandte Mathematik und Programmierung
14
Paradigmen- objektorientiert






Hier stehen die Daten (Eigenschaften) und nicht die Funktionen oder Prozeduren des
Programms im Vordergrund .
Die Daten werden in Objekten gekapselt (Information hiding), die auch über
Funktionalitäten verfügen, um die Daten zu ändern.
In diesem Zusammenhang spricht man jedoch nicht von Funktionen, sondern von
M th d
Methoden.
Programme werden aus verschiedenen Objekten aufgebaut.
Beispiel-Sprachen:
C Sprache
S
h wurde
d im
i Hinblick
Hi bli k auff objektorientierte
bj k i i
P
Programmierung
i
zu C
C++
weiterentwickelt. C++ ist hybrid aus imperativem/Prozeduralem C und objektorientierten
Erweiterungen aufgebaut.
Heute ist Java neben C++ „state
state of the Art
Art“.
Fomuso Ekellem
Angewandte Mathematik und Programmierung
15
C und C++ - was ist neu in C++?

Objektorientierte Konzepte :
Klassen, Vererbung (auch Mehrfachvererbung), Kapselung, Polymorphismus, Function Overriding
und
d Overloading,
l di
Operator Overloading
l di
 Viele Ähnlichkeiten mit Java, aber auch einige Unterschiede im Detail
 Klassen als benutzerdefinierte Typen






Ve e e von Daten
Verstecken
e
Garantierte Initialisierung und Finalisierung
Steuerbare implizite Typumwandlung
Dynamische Typung (Bindung)
Referenzen :
Eine Referenz ist ein Alias für ein existierendes Objekt; wird intern typischerweise durch Pointer
realisiert
 Spielt bei der Parameterübergabe „by reference“ an eine Funktion und bei Operator Overloading
eine wichtige Rolle

Fomuso Ekellem
Angewandte Mathematik und Programmierung
16
C und C++ - was ist neu in C++?

Templates :


Exceptions


Zur „Parametrisierung“ von Klassen oder Funktionen
Zur standardisierten Fehlerbehandlung, ähnlich wie in Java
Namespaces

Ähnliches Konzept wie Packages in Java; vor allem um Namenskollisionen zu vermeiden (z.B. zwei
mal denselben Namen für eine Klasse), relativ neu in C++
Fomuso Ekellem
Angewandte Mathematik und Programmierung
17
C und C++ - was ist neu in C++?

Syntaktische Details


Datentyp bool, Kommentare mit //, Datentypkonversion mit Funktionsschreibweise type(...),
Deklaration
kl
i von Variablen
i bl nicht
i h nur am Anfang
f
eines
i
Blocks,
l k Default-Werte
f l
f Argumente iin
für
Funktionen/Methoden
C++ Standard Library
Komplette C Standard Library,
Library plus neue Funktionalität
 iostream Library: Als Eratz (oder besser als zweite Möglichkeit) der Input/Outpt Funktionen
(stdio.h) der C Standard Library
 Standard Template Library (STL): Klassen für vectors, queues, lists etc.

Fomuso Ekellem
Angewandte Mathematik und Programmierung
18
Herunterladen