{"id":3144,"date":"2017-08-20T07:18:23","date_gmt":"2017-08-20T06:18:23","guid":{"rendered":"http:\/\/roboblog.fatal-fury.de\/?p=3144"},"modified":"2017-08-21T19:09:18","modified_gmt":"2017-08-21T18:09:18","slug":"c-fur-anfangerprofis-grundsatzliches","status":"publish","type":"post","link":"http:\/\/roboblog.fatal-fury.de\/?p=3144","title":{"rendered":"C++ f\u00fcr Anf\u00e4nger&#038;Profis - Grunds\u00e4tzliches"},"content":{"rendered":"<p>Ein paar grunds\u00e4tzliche Worte \u00fcber die Sprache C++. Anders als z.B. Python oder PHP ist C++ eine statisch, stark typisierte Sprache.<br \/>\nDas hei\u00dft, dass zum Zeitpunkt, wenn der Compiler den Code compiliert, jede Variable einen Type haben muss. Damit ist es m\u00f6glich Fehler schon w\u00e4hrend der Entwicklung zu entdecken, bevor das lauff\u00e4hige Programm existiert. Und nicht erst Jahre sp\u00e4ter, oder sogar beim Endanwender. Weiterhin er\u00f6ffnet diese Typisierung viele Optimierungsm\u00f6glichkeiten um den beachtlichen Geschwindigkeitsvorteil von C++ nutzen zu k\u00f6nnen.<br \/>\nSo ist es z.B. nicht m\u00f6glich, einer Variablen, welche eine ganze Zahl darstellen soll, einen Text zuzuweisen. Daf\u00fcr ist es auf der anderen Seite aber auch nicht direkt m\u00f6glich, einer Variablen, welche ein Text darstellen soll, eine ganze Zahl zuzuweisen. Diese Absicht muss im Code durch eine zus\u00e4tzliche Funktion dargestellt werden.<br \/>\nDadurch entstehen bei der Typ Pr\u00fcfung w\u00e4hrend des Compiliervorgangs keine Fehler. Die Intention des Programmierers wird deutlich und der Code bleibt sauber.<\/p>\n<p>So gut wie jede Zeile in C++ wird mit einem Semikolon abgeschlossen. Das bereitet den meisten Anf\u00e4nger Probleme, was ich aber gar nicht nachvollziehen kann. So wird in der deutschen Sprache jeder Satz mit einem Satzzeichen beendet PUNKT. Analog dazu wird in C++ eine Zeile Code mit einem Semikolon beendet;<\/p>\n<p>Der Compiler an sich ist neben der Entwicklungsumgebung das wichtigste Programm. Es muss nicht nur der komplette Code analysiert und in ein lauff\u00e4higes Programm umgewandelt werden, es m\u00fcssen auch Programmierfehler behandelt werden. Leider ist die Compilerausgabe in dieser Hinsicht sehr kryptisch. Aus diesem Grund gibt es im Anhang eine Liste aller g\u00e4ngigen Fehlermeldungen des GNU C++ Compilers, ihre Bedeutung, Code Beispiele wie sie entstanden sind und wie man sie korrigiert.<br \/>\nDies sollte man nicht als Schw\u00e4che, sondern als St\u00e4rke sehen. Jede Fehlermeldung gibt, einmal entschl\u00fcsselt, klare Angaben dazu was, wo schief lief. Und oft sogar Hilfestellung, wie es richtig w\u00e4re. <\/p>\n<p>Weiterhin kommen viele mit den eingesetzten Klammern nicht zurecht. Es werden die drei unterschiedlichen Klammern () [] {} und die spitzen Pfeile < > \u00fcberall im Code verwendet. Jede hat ihre klar definierte Bedeutung. So er\u00f6ffnen die geschweiften Klammern {} einen neuen Codeabschnitt. Die runden Klammern () werden f\u00fcr den Aufruf einer Funktion benutzt, mit denen es m\u00f6glich ist weitere Laufzeit Variablen zu \u00fcbergeben. Mit einem Paar der spitzen Pfeile < > ist es m\u00f6glich Compilezeit Variablen zu \u00fcbergeben. Wohingegen die eckigen [] Klammern den Zugriff auf einem Datencontainer erlauben.<\/p>\n<p>C++ z\u00e4hlt von 0 ab. Das erste Element in einer Liste liegt nicht an Position 1, sondern an Position 0. F\u00fcr die meisten wird das die unangenehmste Umgew\u00f6hnung sein. Der Grund steckt tief in dem Hardware Aufbau eines Computers. Und auch \u00e4ltere Sprachen wie Assembler haben diese Eigenschaft. Kurz gesagt speichern alle Datencontainer die Adresse ihres ersten Elements ab. Und da das erste Element schon an dieser Adresse liegt, w\u00fcrde das addieren einer 1 auf diese Adresse auf das zweite Element zeigen. Das addieren einer 0 hingegen \u00e4ndert die Adresse nicht. Daher f\u00e4ngt C++ bei 0 an zu z\u00e4hlen.<\/p>\n<p>Es gibt im Prinzip drei fundamentale Datentypen. Einen f\u00fcr ganze Zahlen <em>int<\/em>, einen f\u00fcr Gleitkommazahlen <em>double<\/em>, und einen f\u00fcr Text <em>string<\/em>. Alle andere Datentypen k\u00f6nnen aus diesem zusammengestellt werden.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ein paar grunds\u00e4tzliche Worte \u00fcber die Sprache C++. Anders als z.B. Python oder PHP ist C++ eine statisch, stark typisierte Sprache. Das hei\u00dft, dass zum Zeitpunkt, wenn der Compiler den Code compiliert, jede Variable einen Type haben muss. Damit ist es m\u00f6glich Fehler schon w\u00e4hrend der Entwicklung zu entdecken, bevor das lauff\u00e4hige Programm existiert. Und [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[17],"class_list":["post-3144","post","type-post","status-publish","format-standard","hentry","category-allgemein","tag-cpp"],"_links":{"self":[{"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=\/wp\/v2\/posts\/3144","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3144"}],"version-history":[{"count":4,"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=\/wp\/v2\/posts\/3144\/revisions"}],"predecessor-version":[{"id":3166,"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=\/wp\/v2\/posts\/3144\/revisions\/3166"}],"wp:attachment":[{"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3144"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3144"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3144"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}