Angewandte Mathematik und C++ Programmierungafomusoe/WS2013_14/CPP/1__Organisatorisches... ·...

27
Angewandte Mathematik und C++ Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens WS 2013/14 Fomuso Ekellem

Transcript of Angewandte Mathematik und C++ Programmierungafomusoe/WS2013_14/CPP/1__Organisatorisches... ·...

Page 1: Angewandte Mathematik und C++ Programmierungafomusoe/WS2013_14/CPP/1__Organisatorisches... · Visual C++ 2010 Express Merken: Vermeiden Sie jede Art von Ablenkung. Verwenden Sie nur

Angewandte Mathematik und C++ Programmierung

Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens

WS 2013/14

Fomuso Ekellem

Page 2: Angewandte Mathematik und C++ Programmierungafomusoe/WS2013_14/CPP/1__Organisatorisches... · Visual C++ 2010 Express Merken: Vermeiden Sie jede Art von Ablenkung. Verwenden Sie nur

Organisatorisches(WS 2013/14) 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: Infinitesimalrechnung Vorlesungstermine: Montags 13 – 15:00 Raum 3106 (Mathe) und Mittwochs 13:00-15:00

Raum 3107(C++) Anwesenheitspflicht! 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), Mathematik für Ingenieure von Westermann, Statistik von Fahrmeir, Künstler, Pigeot und Tutz

Sprechstunden: Donnerstags und Freitags(09:30-11:30 und 13:00-14:30) Erwartungen: Mathe Teil müssen Sie bestehen um allgemein Mathe III zu bestehen!

Aktive Teilnahme an Vorlesung und Übung ( Punktsystem )Gemeinsam Spaß beim Studium von C++ und OOP Programmierung haben

Angewandte Mathematik und Programmierung2

Fomuso Ekellem

Page 3: Angewandte Mathematik und C++ Programmierungafomusoe/WS2013_14/CPP/1__Organisatorisches... · Visual C++ 2010 Express Merken: Vermeiden Sie jede Art von Ablenkung. Verwenden Sie nur

13 Vorlesungswochen

Softwaretechnik3

Fomuso Ekellem

Page 4: Angewandte Mathematik und C++ Programmierungafomusoe/WS2013_14/CPP/1__Organisatorisches... · Visual C++ 2010 Express Merken: Vermeiden Sie jede Art von Ablenkung. Verwenden Sie nur

Beispiel Mathe Fragen: In C++ lösen

Angewandte Mathematik und Programmierung4

Fomuso Ekellem

Page 5: Angewandte Mathematik und C++ Programmierungafomusoe/WS2013_14/CPP/1__Organisatorisches... · Visual C++ 2010 Express Merken: Vermeiden Sie jede Art von Ablenkung. Verwenden Sie nur

Klassifikation von Folgen

Geometrische Folgen Eine Folge heißt geometrisch, wenn der Quotient zweier aufeinander folgender Glieder konstant ist.

Anders ausgedrückt: Eine Folge heißt geometrisch, wenn jedes Glied aus dem vorhergehenden durch Multiplikation mit einer Konstanten, dem Quotienten, hervorgeht.

Ist a das Anfangsglied und q der konstante Quotient, so heißt die Folge

oder

Die Variablen a und q stehen für reelle Zahlen. Damit man immer einen Quotienten bilden kann, dürfen a und q nicht gleich Null sein.

Ist q=1, so sind alle Glieder gleich a. Dagegen ist nichts einzuwenden. Es ist aber zweckmäßig, q=1 trotzdem nicht zuzulassen, da im Reihen Berehnungen q-1 im Nenner steht.

Für q < 0 ist die geometrische Folge alternierend

Angewandte Mathematik und Programmierung5

Fomuso Ekellem

15432 ...,,,,,, naqaqaqaqaqaqani

aqa ii

,...,4,3,2,1

1

Page 6: Angewandte Mathematik und C++ Programmierungafomusoe/WS2013_14/CPP/1__Organisatorisches... · Visual C++ 2010 Express Merken: Vermeiden Sie jede Art von Ablenkung. Verwenden Sie nur

Klassifikation von FolgenArithmetische Folgen : Die arithmetischen Folgen und Reihen können wie die geometrischen beschrieben werden.

Man muss jedoch nicht von konstanten Quotienten, sondern von konstanten Differenzen aus gehen. Das macht den Sachverhalt einfacher.

Anders ausgedrückt: Eine Folge heißt arithmetisch, wenn jedes Glied aus dem vorhergehenden durch Addition einer Konstanten, der Differenz, hervorgeht.

Ist a das Anfangsglied und d die konstante Differenz, so ist die Folge a, a+d, a+2d, a+3d, ... , a+(n-1)d oder ai=a+(i-1)d, i = 1, 2, 3, ..., n.

Die Variablen a und d stehen für reelle Zahlen. Eine rekursive Darstellung der arithmetischen Folge ist a1=a und ai=ai-1+d, i = 2, 3, ... n.

Vielleicht ist der folgende Satz der Grund für den Namen arithmetische Folge. Satz: Jedes Glied einer arithmetischen Folge ist das arithmetische Mittel der beiden Nachbarglieder. Herleitung: ai-1+ ai+1 = [a+(n-2)d+a+nd) = a+nd-2d+a+nd =2[a+(n-1)d]=2ai oder ai =(1/2)(ai-1+ai+1), wzbw..Zu ergänzen ist noch 1<i<n+1.

Angewandte Mathematik und Programmierung6

Fomuso Ekellem

Page 7: Angewandte Mathematik und C++ Programmierungafomusoe/WS2013_14/CPP/1__Organisatorisches... · Visual C++ 2010 Express Merken: Vermeiden Sie jede Art von Ablenkung. Verwenden Sie nur

Frage nochmal!

Angewandte Mathematik und Programmierung7

Fomuso Ekellem

Page 8: Angewandte Mathematik und C++ Programmierungafomusoe/WS2013_14/CPP/1__Organisatorisches... · Visual C++ 2010 Express Merken: Vermeiden Sie jede Art von Ablenkung. Verwenden Sie nur

Mögliche Lösung

Beispiel Variablen: Mit Datentypen deklariert Header Dateien Namespace std Klasse

Angewandte Mathematik und Programmierung8

Fomuso Ekellem

Page 9: Angewandte Mathematik und C++ Programmierungafomusoe/WS2013_14/CPP/1__Organisatorisches... · Visual C++ 2010 Express Merken: Vermeiden Sie jede Art von Ablenkung. Verwenden Sie nur

Mögliche Lösung

Methode 1

Angewandte Mathematik und Programmierung9

Fomuso Ekellem

Page 10: Angewandte Mathematik und C++ Programmierungafomusoe/WS2013_14/CPP/1__Organisatorisches... · Visual C++ 2010 Express Merken: Vermeiden Sie jede Art von Ablenkung. Verwenden Sie nur

Mögliche Lösung

Methode 2

Angewandte Mathematik und Programmierung10

Fomuso Ekellem

Page 11: Angewandte Mathematik und C++ Programmierungafomusoe/WS2013_14/CPP/1__Organisatorisches... · Visual C++ 2010 Express Merken: Vermeiden Sie jede Art von Ablenkung. Verwenden Sie nur

Mögliche Lösung

Vollständige Programm nehmen Sie von der Webseite Main Methode: Schüssel zum alle Programm! Cases!

Angewandte Mathematik und Programmierung11

Fomuso Ekellem

Page 12: Angewandte Mathematik und C++ Programmierungafomusoe/WS2013_14/CPP/1__Organisatorisches... · Visual C++ 2010 Express Merken: Vermeiden Sie jede Art von Ablenkung. Verwenden Sie nur

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: Installationsanleitungen sind auf der Webseite!

Mingw GCC für C++ Hilfsprogram – Notepad++ (Hilfsprogramm zum Kodieren) Dev-C++ oder QT Visual C++ 2010 Express

Merken: Vermeiden Sie jede Art von Ablenkung. Verwenden Sie nur diese Tools für die ganze Vorlesung. Bitte für die Tests, reichen Sie nur die Quelldateien ein.

Programmierung und Angewandte Mathematik12

Fomuso Ekellem

Page 13: Angewandte Mathematik und C++ Programmierungafomusoe/WS2013_14/CPP/1__Organisatorisches... · Visual C++ 2010 Express Merken: Vermeiden Sie jede Art von Ablenkung. Verwenden Sie nur

Compiler

Die genaue Handhabung der Compiler variiert sehr stark von System zu System. Zum Beispiel in UNIX mit Kommandozeile oder Makefiles starten und MS-DOS/Windows meist mit integrierten grafischen Oberflächen.

Steht das Programm komplett in einer Datei progname.cpp, dann lässt es sich beispielsweise mit dem „Mingw G++“ Compiler auf „Windows Command prompt“übersetzen mit dem Aufruf "g++ progname.cpp -o progname" und starten mit "progname" -o in diesem Sinne bedeutet Output Ordner, und progname ist der Ordner. progname ist ein Executable Datei. Also progname.exe Der Compiler g++ kompiliert progname.cpp und erstellt die progname.exe

Programmierung und Angewandte Mathematik13

Fomuso Ekellem

Page 14: Angewandte Mathematik und C++ Programmierungafomusoe/WS2013_14/CPP/1__Organisatorisches... · Visual C++ 2010 Express Merken: Vermeiden Sie jede Art von Ablenkung. Verwenden Sie nur

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, char, do, extern, if, return, static, union, while, virtual.

Programmierung und Angewandte Mathematik14

Fomuso Ekellem

Page 15: Angewandte Mathematik und C++ Programmierungafomusoe/WS2013_14/CPP/1__Organisatorisches... · Visual C++ 2010 Express Merken: Vermeiden Sie jede Art von Ablenkung. Verwenden Sie nur

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 Nicht-

Primitive (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.

Programmierung und Angewandte Mathematik15

Fomuso Ekellem

Page 16: Angewandte Mathematik und C++ Programmierungafomusoe/WS2013_14/CPP/1__Organisatorisches... · Visual C++ 2010 Express Merken: Vermeiden Sie jede Art von Ablenkung. Verwenden Sie nur

Datentypen- Für später!

benutzerdefinierte Datentypen (user-defined types) Die Ableitungsvorschrift ist Bestandteil eines Programms. Der Datentyp wird vom Programmierer als Benutzer der Programmiersprache eingeführt.

In Main werden meistens die benutzerdefinierte Datentypen verwendet:

Programmierung und Angewandte Mathematik16

Fomuso Ekellem

Page 17: Angewandte Mathematik und C++ Programmierungafomusoe/WS2013_14/CPP/1__Organisatorisches... · Visual C++ 2010 Express Merken: Vermeiden Sie jede Art von Ablenkung. Verwenden Sie nur

Elementare Datentypen

Elementare Datentypen sind Integer (Teilbereich der ganze Zahlen) Real (Teilbereich der reellen Zahlen) Boolean (Wahrheitswerte) Float oder double (Gleitkomma Zahlen) Char (Zeichen aus einem bestimmten Zeichensatz) Diese Datentypen sind in den meisten Programmiersprachen - oft in verschiedenen

Varianten – vordefiniert (oder vorgegeben). Die sind auch typische reservierte Wörte. Alle anderen Datentypen lassen sich aus den elementaren Datentypen ableiten

(konstruieren). Die Werte der elementaren Datentypen sind skalar, unterscheiden sich syntaktisch eindeutig voneinander.

Programmierung und Angewandte Mathematik17

Fomuso Ekellem

Page 18: Angewandte Mathematik und C++ Programmierungafomusoe/WS2013_14/CPP/1__Organisatorisches... · Visual C++ 2010 Express Merken: Vermeiden Sie jede Art von Ablenkung. Verwenden Sie nur

Deklaration von elementare Datentypen

Die Deklaration führt einen Namen ein und ordnet ihm einen Typ zu. Siehe Beispiele:

Programmierung und Angewandte Mathematik18

Fomuso Ekellem

Page 19: Angewandte Mathematik und C++ Programmierungafomusoe/WS2013_14/CPP/1__Organisatorisches... · Visual C++ 2010 Express Merken: Vermeiden Sie jede Art von Ablenkung. Verwenden Sie nur

Datentypen

Abgeleitete Datentypen Mit Hilfe von Konstruktoren kann aus einem oder mehreren Basisdatentypen ein neuer Datentyp abgeleitet werden. Als Basisdatentyp kommen elementare oder zuvor abgeleitete Datentypen in Frage. 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.

Programmierung und Angewandte Mathematik19

Fomuso Ekellem

Page 20: Angewandte Mathematik und C++ Programmierungafomusoe/WS2013_14/CPP/1__Organisatorisches... · Visual C++ 2010 Express Merken: Vermeiden Sie jede Art von Ablenkung. Verwenden Sie nur

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.

void hallo(){ ::std::cout << "Hallo!\n"; } // Definition von "hallo"

***int main(){ hallo ();Return 0; } // Verwendung von "hallo„ in main

Angewandte Mathematik und Programmierung20

Fomuso Ekellem

Page 21: Angewandte Mathematik und C++ Programmierungafomusoe/WS2013_14/CPP/1__Organisatorisches... · Visual C++ 2010 Express Merken: Vermeiden Sie jede Art von Ablenkung. Verwenden Sie nur

Paradigmen

Der Schwerpunkt in dieser Vorlesung liegt auf der Vermittlung objektorientierter Programmiermethoden, in einfacher und anschaulicher Form, anhand zahlreicher konkreter Beispiele und Übungsaufgaben.

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.

Objektorientierte Programmierung ist ein Paradigma. Paradigma: Ein Beispiel, das als Muster oder Modell dient. Vier vorwiegend bekannte Haupttypen:

Prozedurale/Imperative Logische Funktionale Objektorientierte

Angewandte Mathematik und Programmierung21

Fomuso Ekellem

Page 22: Angewandte Mathematik und C++ Programmierungafomusoe/WS2013_14/CPP/1__Organisatorisches... · Visual C++ 2010 Express Merken: Vermeiden Sie jede Art von Ablenkung. Verwenden Sie nur

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 - auch Funktionen (C/C++) bzw. Prozeduren (Modula, PASCAL) genannt.

Angewandte Mathematik und Programmierung22

Fomuso Ekellem

Page 23: Angewandte Mathematik und C++ Programmierungafomusoe/WS2013_14/CPP/1__Organisatorisches... · Visual C++ 2010 Express Merken: Vermeiden Sie jede Art von Ablenkung. Verwenden Sie nur

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.

Unterschiede: Funktionale und logische Stille trennen sehr klar die WELCHE Aspekte eines Programms

(Programmierer Verantwortung) und die WIE Aspekte (Durchführungsbeschlüsse). Imperative/prozedurale und objektorientierte Programme enthalten im Gegensatz sowohl die

Spezifikation und die Details der Implementierung, sie sind untrennbar miteinander verbunden.

Angewandte Mathematik und Programmierung23

Fomuso Ekellem

Page 24: Angewandte Mathematik und C++ Programmierungafomusoe/WS2013_14/CPP/1__Organisatorisches... · Visual C++ 2010 Express Merken: Vermeiden Sie jede Art von Ablenkung. Verwenden Sie nur

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

Programme werden aus verschiedenen Objekten aufgebaut. Beispiel-Sprachen:

C Sprache wurde im Hinblick auf objektorientierte Programmierung zu C++ weiterentwickelt. C++ ist hybrid aus imperativem/Prozeduralem C und objektorientierten Erweiterungen aufgebaut.

Heute ist Java neben C++ „state of the Art“.

Angewandte Mathematik und Programmierung24

Fomuso Ekellem

Page 25: Angewandte Mathematik und C++ Programmierungafomusoe/WS2013_14/CPP/1__Organisatorisches... · Visual C++ 2010 Express Merken: Vermeiden Sie jede Art von Ablenkung. Verwenden Sie nur

C und C++ - was ist neu in C++?

Objektorientierte Konzepte : Unsere Vorlesung hat OOP zu tun! Klassen, Vererbung (auch Mehrfachvererbung), Kapselung, Polymorphismus, Function Overriding

und Overloading, Operator Overloading Viele Ähnlichkeiten mit Java, aber auch einige Unterschiede im Detail Klassen als benutzerdefinierte Typen

Verstecken von Daten 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 Programmierung25

Page 26: Angewandte Mathematik und C++ Programmierungafomusoe/WS2013_14/CPP/1__Organisatorisches... · Visual C++ 2010 Express Merken: Vermeiden Sie jede Art von Ablenkung. Verwenden Sie nur

C und C++ - was ist neu in C++?

Templates : Zur „Parametrisierung“ von Klassen oder Funktionen

Exceptions Zur standardisierten Fehlerbehandlung, ähnlich wie in Java mit „try“ und „catch“

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 Programmierung26

Page 27: Angewandte Mathematik und C++ Programmierungafomusoe/WS2013_14/CPP/1__Organisatorisches... · Visual C++ 2010 Express Merken: Vermeiden Sie jede Art von Ablenkung. Verwenden Sie nur

C und C++ - was ist neu in C++?

Syntaktische Details Datentyp bool, Kommentare mit //, Datentypkonversion mit Funktionsschreibweise type(...),

Deklaration von Variablen nicht nur am Anfang eines Blocks, Default-Werte für Argumente in Funktionen/Methoden

C++ Standard Library Komplette C Standard 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 Programmierung27