Inhalt.
Das erste C++ Programm
Escape – Sequenzen
Kommentare in C++
Formatierung des Codes
Weitere Spielereien mit cout
Übungsaufgaben
Es ist schon fast zu einer Tradition geworden, dass das erste Programm „Hallo Welt“ heißt. Es macht nichts anderes als den Benutzer mit den Worten „Hallo Welt“ zu begrüßen. Hier ist der Quelltext:
#include <iostream> using namespace std; int main(void) { cout << "Hallo Welt \n"; cin.get(); return 0; }
C++ ist case-sensitive d.h., dass C++ zwischen Klein- und Großschreibung unterscheidet. Wenn Sie ‚Cout‘ oder ‚cOUT‘ anstatt ‚cout‘ schreiben, wird der Compiler einen Fehler melden.
Nicht viel oder? Es macht aber auch nicht viel.
Und nun zum eigentlichem Code.
In der ersten Zeile wird eine weitere Datei in den Code einbezogen. Der Name dieser Datei steht in den <.....>
-Klammern. Solche Dateien werden in C++ Bibliotheken oder auch Header genannt. In unserem Falle heißt die Bibliothek „iostream“(Input-Output-Stream) und erlaubt uns eine Textausgabe auf den Bildschirm durchzuführen.
Als nächstes kommt eine Zeile mit using namespace std. Diese ist an dieser Stelle unwichtig und es würde nur für Verwirrung sorgen, wenn ich das jetzt erklären würde. Also einfach so hinnehmen wie es ist. Ich werde in einem späteren Teil des Tutorials, wenn Sie schon ein wenig Grundwissen über C++ besitzen, darauf zurückkehren und alles richtig erläutern.
Nun kommen wir zum int main(void) Teil. Das ist der Hauptteil jedes Programms – in jedem C/C++ Programm werden Sie es in dieser oder anderer Form wieder finden. Das int vor main(void) bedeutet, dass die Funktion main(void) beim beenden, eine Zahl an das Betriebsystem zurückgibt, 0 beim Erfolg und andere Zahlen beim Misserfolg. Das ist bei dieser Anwendung nicht wichtig und da es für Anfänger nur schwer zu verstehen ist, wird es ebenfalls in einem der späteren Tutorial genauer erklärt, wenn Sie schon grundlegende Dinge verstehen werden.
Gleich nach der int main(void) -Funktion wird eine geschweifte Klammer ‚ { ‚ geöffnet und am Ende des Programms wieder geschlossen ‚ } ‚. Das eigentliche Programm läuft zwischen diesen beiden Klammern ab und führt Zeile für Zeile die Befehle aus, also alles was ein Programm tun soll muss zwischen diesen beiden Klammern stehen. So ist es auch in unseren Fall so. Wir haben unserem Programm zwei Anweisungen gegeben:
1. gib „Hallo Welt“ auf den Bildschirm aus, mit Hilfe des cout Befehls
2. warte bis der Benutzer ein beliebiges Zeichen eingibt, mit Hilfe von cin.get()
Das Vergessen von Semikolon gehört zu den größten Fehlerquellen in der C++ Programmierung. Wenn der Compiler sich weigert ihren Code zu kompilieren, sollen Sie als erstes schauen ob Sie nicht ein Semikolon vergessen haben.
Alles was zwischen den Anführungszeichen („“) steht, ist eine Zeichenkette (String) und genau diese Zeichenketten kann man per cout – Befehl auf den Bildschirm zaubern. Das << nach cout ist ein Einfügeoperator und er deutet an, dass alles was rechts davon steht, zur Ausgabe cout gesendet wird. Abgeschlossen wird die Zeile mit einem Semikolon. In C++ gehört immer ein Semikolon am Ende eines Befehls der nicht mit # beginnt.
Manchmal kommt es vor, dass cin.get() nicht ausreicht und das Fenster trotzdem schnell geschlossen wird. Versuchen Sie es mit zwei cin.get() hintereinander.
Durch die Anweisung cin.get() wartet das Programm auf die Betätigung von Enter-Taste. Ohne diese Anweisung wird das Programm auch funktionieren, aber es startet und schließt das Fenster so schnell, dass man es kaum sehen kann. Zum besseren Verständnis sollten Sie es selbst ausprobieren, indem Sie die Zeile mit cin.get() aus dem Quelletext entfernen und das Programm neu ausführen.
An dieser Stelle fragt sich sicherlich der eine oder andere was das \n in dem String bedeuten soll, denn es wird auf dem Bildschirm nicht angezeigt. Dabei handelt es sich um einen so genannten Escape-Zeichen oder auch Escape-Sequenzen, die noch in C Zeiten eingeführt wurden. Eine Escape-Sequenz besteht aus einem \ (Backslash), gefolgt von einem Buchstaben. Um eine bestimmte Wirkung zu erzielen (in unserem Falle: Zeilenumbruch) fügt man einfach die benötigte Sequenz in die Zeichenkette, die auf den Bildschirm ausgegeben soll, ein. Probieren Sie doch einfach ein paar verschiedene Sequenzen aus. Zum Beispiel den Text rechtsseitig und vertikal zentriert anzeigen zu lassen.
Sequenz | Bedeutung | Sequenz | Bedeutung |
---|---|---|---|
\a | Piepen des internen Lautsprechers | \b | Linkes Zeichen löschen (Backspace) |
\f | Seitenvorschub (Formfeed) | \n | Zeilenvorschub (New line) |
\r | Wagenrücklauf (Return) | \t | Tabulator horizontal |
\v | Tabulator vertikal | \“ | Doppeltes Anführungszeichen ( “ ) |
\‘ | Einfaches Anführungszeichen ( ‚ ) | \\ | Backslash ( \ ) |
\? | Fragezeichen | \0 | String – Ende – Marke |
In C++ gibt es eine Erweiterung gegenüber alten C Escape – Sequenzen, so sollte man an Stelle von ‚\n‘ einen ‚endl‘ Befehl benutzen.
cout << "Hallo Welt"<< endl;
Warum sollte man es gegenüber ‚\n‘ vorziehen, wenn es das gleiche bewirkt? Nicht ganz. Bevor der Text auf den Bildschirm kommt, wird er intern in einem Puffer (ein Speicherbereich) zwischengespeichert und am Ende des Vorgangs aus dem Puffer wieder entfernt. Nun kommt es manchmal vor, dass dieser Vorgang nicht immer korrekt abläuft und im Puffer was vom alten Text übrig bleibt. An dieser Stelle kommt endl ins Spiel, es bewirkt nicht nur einen Zeilenumbruch sondern sorgt auch dafür dass der Zwischenspeicher geleert wird.
In C++, wie auch in jeder anderer Programmiersprache, besteht die Möglichkeit den Quelltext mit Kommentaren zu versehen.
// Bibliothek einbinden #include <iostream> using namespace std; // Namensbereich std benutzen // Hier beginnt das eigentliche Programm int main(void) { /* Hier wird ein Text auf den Bildschirm, mit Hilfe des cout Befehles, ausgegeben */ cout << "Hallo Welt" << endl; // Warten auf eine Zeichen-Eingabe cin.get(); // Rückgabewert an das Betriebssystem return 0; } // Hier endet das Programm
Die zwei Schrägstriche (//) bedeuten, dass alles was danach in der Zeile steht, ein Kommentar ist. Es besteht auch die Möglichkeit ein Kommentar über mehrere Zeilen zu führen. Dazu verwendet man /* und */ um das Kommentaranfang bzw. Kommentarende zu kennzeichnen.
Die Kommentare werden von Compiler bei der Kompilierung nicht berücksichtigt und dienen nur für eigene Notizen in Code, damit Sie auch nach einem Jahr wissen was an der entsprechenden Stelle gemacht wird.
In größeren Projekten an denen mehrere Programmierer arbeiten, sind die Kommentare unverzichtbar. Also, nicht mit Kommentaren sparen. Lieber zu viel als zu wenig! Obwohl ich an dieser Stelle mir selbst widersprechen muss. Ich meine, solche Sachen wie #include oder using namespace std; brauchen Sie nicht zu kommentieren, weil das Grundwissen ist und jeder halbwegs gebackener C++ Programmierer diese Befehle kennt.
Nichtsdestotrotz werde ich weiterhin jede Zeile mindestens einmal kommentieren. Also wenn irgendwo Kommentar fehlt, dann habe ich die Zeile schon oben erläutert.
Whitespace-Zeichen sind Zeichen die nicht sichtbar sind. Dazu gehören Leerzeichen, Tabulator und Zeilenumbruch.
Unter der Formatierung versteht man das Erscheinungsbild des Quelltextes. Die Formatierung wird mit Hilfe der Whitespace-Zeichen durchgeführt.
Nach dem Kommentareinleiten (// oder /*) am besten ein Leerzeichen setzen. Das erhöht Lesbarkeit des Codes.
C++ ist eine formatfreie Sprache d.h. solange ein Befehl nicht gebrochen wird, kann man das Aussehen des Codes so gestallten wie man will, z.B. ist es nicht notwendig jede Anweisung in eine eigene Zeile zu schreiben.
Das obere Beispielprogramm könnte demnach auch so aussehen:
#include <iostream> using namespace std;int main(void ){cout<<"Hallo Welt"<<endl;cin.get();return 0;}
oder auch so:
#include <iostream> using namespace std; int main( void ){ cout<<"Hallo Welt" << endl ; cin.get(); return 0; }
Für Compiler macht es kein Unterschied wie der Quelltext aussieht, denn für ihn zählt nur die Syntax (die „grammatische Richtigkeit“ des Codes). Welche Formatierung Sie bevorzugen bleibt ihnen überlassen. Wenn Sie die Formatierung im vierten und fünften Beispielen angenehm finden – kein Problem, doch bitte sagen Sie keinem wo Sie C++ gelernt haben, falls Sie jemand danach fragt ;)
Nur weil C++ diese Freiheit der freien Formatierung gibt, sollte man sie nicht missbrauchen. Jeder andere Programmierer sollte möglichst ohne Probleme von ihnen geschrieben Programmtext gut lesen können.
Es ist kein guter Stil, allen zu zeigen, wie toll man Programmzeilen zusammenpacken und verschachteln kann. Ein guter Programmierer zeichnet sich durch ein sauber strukturiertes und dokumentiertes Programm aus.
An dieser Stelle möchte ich zeigen wie man mit cout praktischer arbeiten kann.
Bei größeren Zeichenketten kann man den Text auf mehrere Zeilen verteilen. Dadurch wirkt der Code übersichtlicher.
#include <iostream> using namespace std; int main(void) { cout << "Das ist ein laengerer Text, " "der auf dem Bildschirm in " "einer Zeile erscheint." << endl; cin.get(); return 0; }
Der Einfügeoperator kann mehrfach verwendet werden, auch über mehrere Zeilen.
#include <iostream> using namespace std; int main(void) { cout << "Das " << "ist " << "ein " << "laengerer " << "Text," << endl <<" der auf dem Bildschirm in " << "zwei Zeilen erscheint." << endl; cin.get(); return 0; }
- Was bedeutet case-sensitive in Bezug auf C++?
- Durch welche Escape-Sequenz wird doppeltes Anführungszeichen erzeugt?
- Wie viele Möglichkeiten gibt es um Kommentare einzuleiten?
- Schreiben Sie ein Programm, welches den Code vom ersten Beispiel auf den Bildschirm zaubert.
- Erweitern Sie das Programm aus der Aufgabe 4 so, dass es folgenden Ablauf haben soll:
- Benutzer begrüßen.
- Mit der Enter-Taste geht’s weiter.
- Den Code vom ersten Beispiel auf den Bildschirm zaubert (aus der Aufgabe 4).
- Mit der Enter-Taste geht’s weiter.
- Meldung ausgeben, dass das Programm durch Enter-Taste zu beenden ist.
- Mit der Enter-Taste wird das Programm beendet
Ich weiß, dass diese Aufgaben für C++ – Einsteiger nicht leicht sind, doch mit ein wenig Einsatz, sollten Sie keine Probleme damit haben.
Weiter gehts mit C++ Teil 3 – Variablen und Konstanten.
Hey,
vielen dank – tolles tutorial!
ich bin absoluter anfänger und auf dein tutorial gestossen, weil ich das „cin.get()“ problem hatte und meine programme nicht die Zeit hatten, ausreichend von mir bewundert zu werden, wenn schon mal keine fehlermeldung kam.
lol.
sehr verständlich erklärt und die aufgaben sind auch toll!!
LOB! LOB! LOB!
DANKE
Hallo!
Danke für das Lob *ganz rot im Gesicht* ^^
Dann ab zum nächsten Kapitel ;)
Hi,
ich bin ein absoluter anfänger, und habe auch erst die ersten beiden Kapitel durch.
Aber ich finde deint Tutorital echt suppaaaaa.
Da alles gut erklärt ist. bei denn aufgaben musste ich aber nochmal nach oben gucken.
Danke das du dir die Mühe gemacht hast.
ach ja ähm is das ok wenn man die 2010er version verwendet da die alte auf meinem pc nicht läuft?
Ja, das ist überhaupt kein Problem. Als ich das Tutorial geschrieben habe, da war noch die 2008-Version aktuell.
Viel Spaß! Und nicht gleich aufgeben, wenn was nicht klappt. Das ist normal. Einfach weiter versuchen ;)
Danke das du/sie so schnell geanfortet haben.
FRAGE:
wenn ich ein neues Projekt erstellen möchte kommt eine Auswahl von Möglichkeiten an Projekttypen , welches soll ich verwenden?
Ein leeres Projekt und dann eine cpp-Datei hinzufügen.
PS: Du kannst mich duzen.
Wie oder besser gesagt Wo kann ich eine .ccp datei hinzufügen?
Hat sich erledigt
wenn ich den Debugger starte kommt immer eine fehlermeldung:
Das programm „C:/Users/…../Destop/debug/Hallo Welt.exe kann nicht gestartet werden.
Das System kann die angegebene Datei nicht finden.
KA, warum da eine Fehlermeldung erscheint. Probiere das Projekt neu zu compilieren.
Einfach probieren und nicht gleich fragen ;P So lernt man es am besten.
hab alles mögliche probiert.
Hast du das Projekt auch kompiliert? Keine Compilerfehler? Hast du versucht ein neues zu erstellen?
PS: bitte richtige Email-Adresse angeben.
Hey ho!
Joaaa, also bis hierhin stimmt eig. alles!
Super gut erklärt, konnte alles nachvollziehen und
die Ubüngsaufgaben konnte man auch ohne Zusatzwissen
bewältigen!
Dankeschön!
Mal sehen, wie’s weiter geht!
lg
Na dann ab zum nächsten Teil! ;)
Bitte sehr.