Teil IV Die Programmiersprache C++ 33
Lernziele Entstehung von C++ kennen Aufbau eines Programms in C++ kennen Einfache Programme mit Ein- und Ausgabe über <iostream> ohne Kontrollstrukturen schreiben können Variablen vom Typ double anlegen und verwenden können Einfache mathematische Operatoren (+ - * /) sowie den Zuweisungsoperator = in eigenen Programmen anwenden können
Geschichtlicher Hintergrund: C++ entstand ca. 1980 als C with classes 10 von Bjarne Stroustrup Erste ISO Standardisierung 1998 (Insternational Standards Organisation) Nationale Standards (ANSI und DIN) haben sich dem angeschlossen Ursprüngliche Version war nahe an C, mit allen Vor- und Nachteilen Kontinuierliche Verbesserungen, sodass es 2003, 2011 (C++11), 2014 (C++14), und aktuell mit (C++TR) neue Standards gab http://boost.org stellt einen Pool an Code, der zur Aufnahme in neue Standards diskutiert wird Wir orientieren uns an C++11, da diese mittlerweile einheitlich verfügbar ist und viele neue Konzepte einführt. 10 classes (engl.) = Klassen, i.d.r. Objekte 35
Obwohl C++ standardisiert ist, ist C++ ist eine Sprache mit wenigen Vorgaben Es ist einfach, schlechten Code zu schreiben! Es besteht jedoch immer mehr der Konsens, was schöner C++ Code ist September 2015: Vorstellung von Guidelines zu schönem C++-Code, inklusive von Hinweisen, wie der Code verbessert werden kann (Ziel: Integration in die Compiler) 36
Weiterführende Literatur Ergänzende Literatur zur Vorlesung: http://cppreference.com C++ Die Programmiersprache (Bjarne Stroustroup) http://www.cprogramming.com/tutorial/c++-tutorial.html http://www.tutorialspoint.com/cplusplus/cpp_if_else_ statement.htm Bücher: Der C++ Programmierer, 4. Auflage(!) Hanser-Verlag Nachschlagewerk: Die C++ Programmiersprache, Bjarne Stroustrup, z.b.: Hanser Verlag 37
C++-Entwicklungsumgebungen I Visual C++ (Windows) http://www.microsoft.com/germany/express/default.aspx Code::Blocks (Windows, Linux, Mac) codeblocks-10.05-setup.exe von http://www.codeblocks.org Dev-C++ (Windows) devcpp-4.9.9.2_setup.exe von http://www.bloodshed.net Eclipse-Plattform (Windows, Linux, Mac) Enwicklungsumgebung von http://www.eclipse.org Android: CppDroid siehe: Play Store. Compiler: g++-compiler Windows gcc-compiler von http://www.mingw.org Installation ist mit Aufwand verbunden! 38
C++-Entwicklungsumgebungen II Mac: über homebrew oder macports verfügbar (jedoch nicht empfohlen) Linux: In der Regel vorinstalliert, über Paket installierbar clang++-compiler http://clang.llvm.org Mac: Teil der Command line tools von XCode (Apple LLVM version 7.0.0 (clang-700.0.72)) Linux: In der Regel als Paket installierbar Windows: (?) Microsoft Visual C++: Windows: als Teil von Visual Studio 39
Das einfachste C++ Programm 1 i n t main ( ) { } // Das minimale C++ Programm Programme sind Textdateien, die kompiliert (übersetzt) und gelinkt (gebunden, zusammengefügt) werden müssen. Quelldatei 1 kompilieren Objektdatei 1.. Quelldatei N kompilieren Objektdatei N. binden ausführbare Datei Aufgabe1.cpp Aufgabe1.o Aufgabe1.exe 40
Compiler GNU C++ Compiler 1 g++ c programm. cpp # erzeugt programm. o 2 g++ o programm. exe programm. o # erzeugt programm. exe aus der angegebenen Objektdatei 3 4 # Fuer e i n f a c h e Programme r e i c h t auch d e r e i n e S c h r i t t f ü r K o m p i l i e r e n und Binden 5 g++ o programm. exe programm. cpp 41
Das Programm Hello World 1 #i n c l u d e <i o s t r e a m> 2 3 i n t main ( ) 4 { 5 std : : cout << H e l l o World!\ n ; 6 r e t u r n 0 ; // b e s t ä t i g t dem a u f r u f e n d e n Programm den e r f o l g r e i c h e n A b s c h l u s s 7 } 42
Compiler habe verschiedene Optionen, mit denen der Kompiliervorgang beeinflusst werden kann. Eine Option ist hierbei zusätzliche Warnungen einzuschalten. Verwendung des Compilers 1 # GNU C++ C o m p i l e r ( g++) 2 pedantic Wall Wextra Weffc++ Wcast align Wcast qual Wctor dtor privacy 3 Wdisabled optimization Wformat=2 Winit self Wlogical op Wmissing declarations 4 Wmissing include d i r s Wnoexcept Wold style cast Woverloaded virtual 5 Wredundant decls Wshadow Wsign conversion Wsign promo Wstrict null sentinel 6 Wstrict overflow=5 Wswitch default Wundef Werror Wno unused 7 8 # c l a n g++ 9 Weverything Warnungen sind häufig sinnvoll, um Programmierfehler im Vorfeld ausschließen zu können. 43
Die (meisten) Compiler bieten zudem die Möglichkeit, verschiedene C++-Standards einzustellen. In dieser Vorlesung verwenden wir ausschließlich C++11, was beim Kompilieren angegeben werden muss: Verwendung des Compilers 1 # GNU C++ Compiler ( g++) ( z.b. Pool Z429 ) 2 g++ std=c++11 <Eingabedatei> o <Ausgabedatei> 3 # clang++ ( z.b. Pool Z430 ) 4 clang++ std=c++11 <Eingabedatei> o <Ausgabedatei> 44
Quadrieren einer Fließkommazahl (quadrat.cpp) 1 #i n c l u d e <i o s t r e a m> 2 3 i n t main ( ) 4 { 5 std : : cout << Geben Sie eine Zahl ein : ; 6 7 double zahl ; 8 std : : cin >> zahl ; 9 10 double quadrat ; 11 quadrat = zahl zahl ; 12 13 std : : cout << Das Quadrat d e r Zahl i s t : << quadrat << \n ; 14 } Kompilieren 1 # Üb e r s e t z e n mit : 2 g++ Wall quadrat. cpp o quadrat 3 # Ausfü hren mit : 4. / quadrat 45