Programmierung und Angewandte Mathematik

C++ /Scilab Programmierung und Einführung in das Konzept der objektorientierten Anwendungen zu wissenschaftlichen Rechnens

SS 2012 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: Mo, Di und Do (10:00-11:30 und 13:00-15:00) 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++, Scilab und OOP Programmierung haben

Fomuso Ekellem

Programmierung und Angewandte Mathematik

2

C++ Vorlesungen 

Immer ab 11:00 Uhr 21.03.2012– 28.03.2012– 8 04.04.2012– 18.04.2012– 02.05.2012– 09.05.2012– 16.05.2012– 30.05.2012– 06 06 2012– 06.06.2012 13.06.2012–

Fomuso Ekellem

Einführung G dl Grundlage d der C C++ Grundlage der C++ Funktionen OOP-Klassen & Strukturen OOP-Zugriffsrechte OOP-Konstruktoren OOP-Vererbung OOP-Polymorphismus OOP Polymorphismus OOP- Besonderheiten

Programmierung und Angewandte Mathematik

3

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

4

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

5

Kompilierung

Quelldateien Entfernen von Kommentaren und Interpretation alle Header-Dateien gekennzeichnet durch #. z.B. #include, #define

Präprozessor

Compiler p Assembly Code

Assembler

Libraries

Objekt j Code

Link Editor

Ausführbare Code Fomuso Ekellem

Programmierung und Angewandte Mathematik

6

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

Programmierung und Angewandte Mathematik

7

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

Programmierung und Angewandte Mathematik

8

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

Programmierung und Angewandte Mathematik

9

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

Programmierung und Angewandte Mathematik

10

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

Programmierung und Angewandte Mathematik

11

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

Programmierung und Angewandte Mathematik

12

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

Programmierung und Angewandte Mathematik

13

Datentypen  

Variablen werden verwendet, um Daten zu speichern. Eine Variable hat einen Namen und den Datentyp. Global gibt zwei Arten von Datentypen Primitive (vorgegeben) und





Nicht-Primitive (Benutzerdefiniert).

Benutzerdefinierte Datentypen: Wenn Sie eine Klasse definieren, definieren Sie im Prinzip einen i eigenen i D Datentyp. Dieser Di D Datentyp kann k jjedoch d h nicht i h nur über b Ei Eigenschaften, h f sondern auch über eigene Methoden verfügen. Beispiel primitive Datentypen in C++ (Wichtig: die werden klein geschrieben):      

bool //Wahrheitswerte: true und false char // Einzelnes Zeichen: 'a', '!', '\n‚ int //Ganzzahlen im Bereich von -32768 bis 32767 long g //Ganzzahlen im Bereiche von -2147483648 bis 2147483627 float //Beliebige Zahlen im Bereich von -3.40e+38 bis 3.40e+38 double // Beliebige Zahlen im Bereich von -1.79e+308 bis 1.79e+308

Fomuso Ekellem

Programmierung und Angewandte Mathematik

14

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