{"id":3143,"date":"2017-08-20T07:33:15","date_gmt":"2017-08-20T06:33:15","guid":{"rendered":"http:\/\/roboblog.fatal-fury.de\/?p=3143"},"modified":"2017-08-21T07:52:09","modified_gmt":"2017-08-21T06:52:09","slug":"c-fur-anfangerprofis-hello-world","status":"publish","type":"post","link":"http:\/\/roboblog.fatal-fury.de\/?p=3143","title":{"rendered":"C++ f\u00fcr Anf\u00e4nger&#038;Profis -  Hello World!"},"content":{"rendered":"<p>Das traditionell erstes Programm in einer neuen Programmiersprache gibt den Satz \"Hello World!\" am Bildschirm aus. Daran wollen wir uns halten. Ohne Umschweife hier der Code. Eintippen, compilieren, starten und freuen.<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\n#include &lt;iostream&gt;\r\n#include &lt;vector&gt;\r\n\r\nusing namespace std;\r\n\r\nint main() {\r\n    cout &lt;&lt; &quot;Hello World!&quot; &lt;&lt; endl;\r\n}\r\n<\/pre>\n<p>Da es das erste Beispiel ist, werde ich hier jede Zeile Code und jedes kryptische Zeichen erkl\u00e4ren.<br \/>\nIn den ersten beiden Zeilen stehen <em>#include<\/em> Anweisungen. Diesen binden die Dateien <em>iostream<\/em> und <em>vector<\/em> von C++ ein. Die Datei <em>iostream<\/em> bietet Funktionen f\u00fcr die Textausgabe an, w\u00e4hrend <em>vector<\/em> einen Datencontainer anbietet. Dieser wird im n\u00e4chsten Beispiel ben\u00f6tigt.<\/p>\n<p>Zeile 4 sagt aus, dass nun der Namensraum <em>std<\/em> genutzt werden soll. Alle C++ Funktionen liegen in diesem Namensraum. Das dient zur Vermeidung von Namenskonflikten, wenn sp\u00e4ter andere Frameworks genutzt werden sollen, die gleiche Funktionsnamen wie in C++ anbieten.<\/p>\n<p>In Zeile 6 geht nun das Hauptprogramm los, das immer eine Funktion namens <em>main<\/em> ist. Alle Codezeilen, die in dem Paar geschweifter Klammern zwischen Zeile 6 und 8  stehen, geh\u00f6ren zur <em>main<\/em> Funktion und werden ausgef\u00fchrt. Die Zeile 7 wird mit vier Leerzeichen einger\u00fcckt um dem Leser deutlich zu machen, dass sie im Hauptprogramm stehen. F\u00fcr den Compiler haben diese Leerzeichen keine Bedeutung.<\/p>\n<p>Zeile 7 ist das Kernst\u00fcck vom Programm, welche die eigentliche Textausgabe macht. Die Variable <em>cout<\/em> wird von C++ bereit gestellt und soll sozusagen den Bildschirm repr\u00e4sentieren, auf welcher der Text erscheinen soll. Die beiden nachfolgenden spitzen Klammern <em><<<\/em> sind Stream Operatoren. Mit ihnen schiebt man sozusagen den Text auf den Bildschirm. Gleich darauf folgt der eigentliche Text <em>\"Hello World!\"<\/em> in doppelten Hochkomma eingeschlossen. Jeder Text der im Programm so verarbeitet werden soll, muss mit doppelten Hochkomma eingeschlossen sein. Damit wird dieser Text zu einem string, der vom Computer verarbeitet werden kann.<\/p>\n<p>Das Ende vom Zeile 7 besteht aus einem zweiten Stream Operator und der Funktion <em>endl<\/em>, welche einfach ein Zeilenumbruch einf\u00fcgt.<\/p>\n<p>Beachte wann ein Semikolon gesetzt wird. Einmal bei der <em>using<\/em> Anweisung und einmal bei <em>cout<\/em>. Nicht ben\u00f6tigt wird das Semikolon bei der <em>#include<\/em> Anweisung und bei der \u00f6ffnenden und schlie\u00dfenden geschweiften Klammern der <em>main<\/em> Funktion.<\/p>\n<p>Gratulation, dein erstes C++ Programm!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Das traditionell erstes Programm in einer neuen Programmiersprache gibt den Satz \"Hello World!\" am Bildschirm aus. Daran wollen wir uns halten. Ohne Umschweife hier der Code. Eintippen, compilieren, starten und freuen. #include &lt;iostream&gt; #include &lt;vector&gt; using namespace std; int main() { cout &lt;&lt; &quot;Hello World!&quot; &lt;&lt; endl; } Da es das erste Beispiel ist, werde [&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-3143","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\/3143","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=3143"}],"version-history":[{"count":11,"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=\/wp\/v2\/posts\/3143\/revisions"}],"predecessor-version":[{"id":3155,"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=\/wp\/v2\/posts\/3143\/revisions\/3155"}],"wp:attachment":[{"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3143"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3143"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3143"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}