Struktur eines Programms in C++
Hast du dich jemals gefragt, wie ein Programm in C++ organisiert ist? In diesem Leitfaden werden wir die technischen Grundlagen untersuchen, die die Basisstruktur jedes Programms in dieser Sprache bilden, damit du nicht nur das „Was“, sondern auch das „Warum“ hinter jedem Element verstehen kannst.
Lernziele:
Am Ende dieser Einheit wird der Studierende in der Lage sein,
- Den Zweck und die Verwendung von Präprozessor-Direktiven mittels
#includein der Organisation des Codes zu verstehen. - Die Grundstruktur eines Programms in C++ zu verstehen, einschließlich der Funktion
main()als Einstiegspunkt. - Die Bibliothek
iostreamzu verwenden, um die Eingabe und Ausgabe von Daten zu verwalten. - Den Code zu dokumentieren, indem Kommentare verwendet werden, um seine Funktionsweise zu erklären.
INHALTSVERZEICHNIS:
Präprozessor-Direktiven #include
Der Hauptteil des Programms: die Funktion main()
Vergiss nicht, deinen Code zu kommentieren
An diesem Punkt haben wir bereits unser erstes Hallo-Welt-Programm geschrieben. Nun werden wir diesen Code verwenden, um jede seiner Teile zu analysieren.
/*Dies ist die Präprozessor-Direktive
bindet die Header-Datei iostream ein*/
#include <iostream>
//Die Funktion main entspricht dem Hauptblock des Codes
int main() {
// Zeigt den Text "Hallo, Welt!" auf dem Bildschirm an
std::cout << "Hallo, Welt!" << std::endl;
// Übergibt den Wert 0 an das Betriebssystem
return 0;
}
Präprozessor-Direktiven #include
Präprozessor-Direktiven sind Anweisungen, die der Compiler verarbeitet, bevor er den Code kompiliert. Diese Direktiven ermöglichen es dem Programmierer, externe Ressourcen einzubinden oder Vorkonfigurationen festzulegen. Eine der am häufigsten verwendeten Direktiven ist #include, das verwendet wird, um für das Programm notwendige Bibliotheken einzubinden.
Verwendung von #include
Die grundlegende Syntax zum Einbinden einer Standardbibliothek lautet:
#include <bibliotheksname>
Die Verwendung der kleiner-als- und größer-als-Zeichen (< und >) weist den Präprozessor an, die Bibliothek in den Standardverzeichnissen des Compilers zu suchen. Um beispielsweise die Bibliothek iostream einzubinden, die die Eingabe- und Ausgabeverarbeitung ermöglicht, verwendet man:
#include <iostream>
Eigenschaften von iostream
Die Bibliothek iostream enthält Klassen und Objekte, die die Verarbeitung von Datenströmen erleichtern. Zu den gebräuchlichsten Elementen gehören:
std::cin: Wird für die Dateneingabe über die Tastatur verwendet.std::cout: Ermöglicht die Datenausgabe auf die Konsole.std::cerr: Wird zur Anzeige von Fehlermeldungen verwendet.std::clog: Bietet einen Datenstrom für Protokollmeldungen.
Ein einfaches Beispiel mit std::cin und std::cout:
#include <iostream>
int main() {
std::string name;
std::cout << "Geben Sie Ihren Namen ein: ";
std::cin >> name;
std::cout << "Hallo, " << name << "!" << std::endl;
return 0;
}
Einbindung eigener Bibliotheken
Um vom Programmierer erstellte Bibliotheken einzubinden, wird dieselbe Direktive #include verwendet, jedoch mit einer anderen Syntax:
#include "bibliotheksname.h"
Die Verwendung von Anführungszeichen weist den Präprozessor an, zuerst im Verzeichnis des aktuellen Projekts nach der Bibliothek zu suchen. Falls sie dort nicht gefunden wird, erfolgt die Suche in den Standardverzeichnissen.
Beispiel für eine benutzerdefinierte Bibliothek:
// Datei "meine_bibliothek.h"
void gruessen() {
std::cout << "Hallo aus einer benutzerdefinierten Bibliothek!" << std::endl;
}
// Datei hauptprogramm.cpp
#include <iostream>
#include "meine_bibliothek.h"
int main() {
gruessen();
return 0;
}
Der Hauptteil des Programms: die Funktion main()
Die Funktion main() ist der Einstiegspunkt jedes Programms in C++. Hier beginnt die Ausführung des Codes, und ihre Definition ist für jedes funktionsfähige Programm in dieser Sprache unerlässlich.
Grundlegende Definition von main()
Die einfachste Form der Definition von main() lautet:
int main() {
// Hier wird das Programm geschrieben
return 0;
}
In dieser Definition:
int: Gibt den Datentyp an, den die Funktionmain()zurückliefert. In diesem Fall bedeutetint, dass die Funktion eine Ganzzahl zurückgeben muss.return 0;: Teilt dem Betriebssystem mit, dass das Programm erfolgreich beendet wurde. Dieser Wert wird als Rückgabecode (exit code) bezeichnet, wobei0in der Regel Erfolg darstellt und andere Werte Fehler signalisieren können.
Warum int als Rückgabetyp?
Der C++-Standard legt fest, dass die Funktion main() den Rückgabetyp int (Ganzzahl) haben muss. Dies liegt daran, dass das Betriebssystem einen Rückgabewert benötigt, um den Zustand des Programms nach seiner Beendigung zu bestimmen. Zum Beispiel:
- Ein Wert von
0zeigt an, dass das Programm erfolgreich beendet wurde. - Ein von
0abweichender Wert kann verwendet werden, um spezifische Fehler anzuzeigen.
Die Definition von main() mit einem anderen Rückgabetyp, wie etwa void, ist in einigen Compilern zwar möglich, entspricht jedoch nicht dem C++-Standard und kann zu Kompatibilitätsproblemen führen.
Vergiss nicht, deinen Code zu kommentieren
Kommentare sind unerlässlich, um den Code zu dokumentieren und sein Verständnis zu erleichtern. Obwohl sie die Programmausführung nicht beeinflussen, sind sie nützlich, um den Zweck oder die Logik hinter bestimmten Codeabschnitten zu erklären. Kommentieren ist besonders wichtig, wenn der Code eine komplexe Logik enthält oder ein intensives Design erfordert hat. Man sollte sich niemals von dem Gefühl täuschen lassen, beim Schreiben oder Lesen des eigenen Codes völlige Klarheit zu haben; diese Klarheit kann am nächsten Tag vollständig verschwunden sein. Unser Code sollte so klar und sauber wie möglich geschrieben werden, und die Kommentare sollten die notwendige Orientierung bieten, um diese Klarheit zu bewahren.
In C++ gibt es zwei Hauptarten von Kommentaren:
- Einzeilige Kommentare:
// Dies ist ein Kommentar in einer einzigen Zeile
- Mehrzeilige Kommentare:
/* Dies ist ein Kommentar, der über mehrere Zeilen geschrieben werden kann */
Dinge, die wir tun sollten
- Kommentare hinzufügen, die die Funktionsweise komplizierter Algorithmen oder komplexer Teile des Programms erklären: Dies hilft zukünftigen Lesern, einschließlich dir selbst, die implementierte Logik schnell zu verstehen.
- Kommentare so verfassen, dass sie für deine Kollegen leicht verständlich sind: Dieser Aspekt ist besonders wichtig, wenn du im Team oder in kollaborativen Projekten arbeitest.
Dinge, die wir vermeiden sollten
- Kommentare verwenden, um das Offensichtliche zu erklären oder zu wiederholen: Zum Beispiel ist es nicht hilfreich,
// Diese Zeile addiert zwei Zahlendirekt überint summe = a + b;zu schreiben. - Dunklen Code mit Kommentaren rechtfertigen: Auch wenn Kommentare wichtig sind, sollte die Klarheit des Codes immer Vorrang haben. Ein lesbarer und gut strukturierter Code benötigt weniger Kommentare, um verstanden zu werden.
- Kommentare nicht aktualisieren: Wenn du den Code bearbeitest, achte darauf, dass die Kommentare die vorgenommenen Änderungen widerspiegeln. Veraltete Kommentare können Verwirrung stiften.
