[Home]
für Einsteiger!
Seite:  [1] 2 3 4 - Drucken

Inhalt:


Hello World!

Das erste "richtige" Programm einer Programmiersprache gibt meist einfach nur "Hello World!" auf den Bildschirm aus. Da wir wissen, dass unser Compiler funktioniert, wollen wir auch so weitermachen!
 
Das sieht jetzt nicht nach viel aus, aber es ist immerhin ein Anfang. Doch wie bekommt man diese Ausgabe? Dazu muss man den folgenden Quelltext in einer Textdatei namens "*.cpp" (z.B.: hello.cpp; C-Programme haben die Endung ".c", in der Unix-Welt haben C++-Programme die Endung ".C" (Großes C). Sonst auch: ".cc", ".cpp", ".cxx", ".c++") speichern: Beispiele für Dateiendungen von C++-Quelltexten
 
Quelltext[142B]Download
  1. //HelloWorld.cpp
  2. //Erstes C++ Programm
  3.  
  4. #include <iostream>
  5.  
  6. int main (int argc, char *argv[])
  7. {
  8. std::cout << "Hello World!\n";
  9. return 0;
  10. }
  11.  

 
Die Zeilenumbrüche, Leerzeichen, Leerzeilen oder Einrückung kannst du anders setzen, das ist dem Compiler egal. Es dient nur, wie auch die Farben in den IDE's, nur der Übersicht... ;)
Beachte: C++ unterscheidet zwischen Groß- und Kleinschreibung!

Nun zum kompilieren:

(siehe auch Tutorial 1 für ausführlichere Informationen!)
 
  • Wechsle in das Verzeichnis, in dem du die *.cpp-Datei abgespeichert hast.
  • Tippe nun: (Auswahl)
    Windows bcc32 *.cpp  (z.B.: bcc32 beispiel.cpp)
    Dev-Cpp
    Linux g++ *.cpp  (z.B.: g++ beispiel.cpp)
    Dev-Cpp öffne die *.cpp-Datei und drücke kompilieren
Kompilieren leicht gemacht:
Alle meine Compiler!
 
Nun solltest du das Programm ausführen können.
Es passiert nichts? Keine Fehler? Nur kurz ein schwarzes Fenster?
Dann öffne eine Konsole (Konsolen-Reiseführer für Anfänger) (Win: start>run>"cmd", Linux: Such dir ne Shell aus...), navigiere in das Verzeichnis, wo deine ausführbare Datei liegt und führe sie aus. Nun solltest du die Ausgabe sehen.

WICHTIG: Dieses Programm kann über die graphische Oberfläche (GUI ="graphical user interface") aufgerufen werden! Das Fenster würde mit "return 0;" aber sofort schließen. Dieses Verhalten ist hier zwar unerwünscht, aber normal. Benutze also einfach mal die Shell.

Ich möchte an dieser Stelle darauf hinweisen, dass wir in der Einführung und den ersten Lektionen im Textmodus arbeiten, also keine Fenster oder ähnliches erstellen. Dies liegt daran, dass man um Fenster etc. zu programmieren, erst einmal einige Grundkenntnisse braucht. Um diese geht es in den ersten Lektionen...
 

Was ist passiert?

Der Compiler hat nun den Quelltext übersetzt und eine "Executable" erstellt (Win:*.exe/Linux: beliebig). Die kann man dann ausführen.
Diagramm zum Kompilieren
Der Linker ((meist) beim Compiler dabei) fügt nicht nur alle Codes zusammen, die du geschrieben hast, sondern setzt an den Anfang der Executable auch noch _einen_ plattformabhängigen (Entweder für Linux, Windows oder andere...) Startcode:
Funktionsweise des Linkers
Natürlich werden nur die Dateien hinzugefügt, die du benötigst!
 
Tipp: Das Linken kannst du auch verhindern, indem du "bcc32/g++ -c *.cpp" tippst. Du erhälst die Object-Dateien ("*.o[bj]"), aber keine ausführbare Datei ("*.exe"/...). Mit dem folgenden Kommando erstellst du die ausführbare Datei aus der Object-Datei: "bcc32/g++ *.obj". Bei großen Projekten kann es Stunden dauern, sie zu kompilieren, und wenn man dann nur einen Rechtschreibfehler rausmacht, dauert es nochmal so lange. In einem solchen Fall ist es praktisch, einfach nur die betreffende Datei zu kompilieren (mit "-c"), und dann die anderen nur dazuzulinken, da sie sich nicht verändert haben...

 
Nun zum Quelltext: Vielleicht hast du bereits in einer anderen Sprache programmiert und kannst dir Teile erklären. Trotzdem werde ich erst einmal die Zeilen eine nach der anderen erklären:
Zeile Inhalt Bedeutung
1&2
//HelloWorld.cpp
//Erstes C++ Programm
Ein einfacher Kommentar ("//Kommentar"). Diese Zeile wird vom Compiler ignoriert. Kommentare können durch einen doppelten Slash ("//") eingeleitet werden. Sie gehen dann bis zum Ende der Zeile. Ein Kommentar kann aber auch zwischen "/*" und "*/" stehen: "/* Kommentar */". In diesem Fall kann er auch über mehrere Zeilen gehen, oder nur einen Teil einer Zeile "ausklammern", etwa für Testzwecke: "xy/*Kommentar*/z;".
3,5   Leerzeile... ;D
4
#include <iostream>
Das ist die erste Zeile, die vom Computer interpretiert wird. Alle Zeilen, die mit einem Hashzeichen ("#") anfangen, werden vom Präprozessor (Teil des Compilers) bearbeitet, wie zum Beispiel durch weitere Codeschnipsel ergänzt ("#include"). Diese Schnipsel stehen hier in der Datei "iostream". Diese wird mit dem Compiler meist mitgeliefert. Sie ist in dem Ordner, der "Include"-Ordner gennant wird. Schreibt man "#include <iostream>", sucht der Präprozessor immer im "Include"-Ordner.
Schreibt man hingegen "#include "xyz.h"", so sucht er die Datei "xyz.h" im Ordner, in dem auch der Quelltext liegt. Meist werden so selbstgeschriebene C++ Schnipsel eingebunden, damit die Hauptdatei übersichtlich bleibt. Außerdem kann man die Include-Dateien in mehreren Projekten schnell einbinden. Include-Dateien haben meist die Endung "*.h" oder "*.hpp". "*.h-Dateien sind eigentlich für C (ohne "++"), "*.hpp"-Dateien für C++. (Eine C-Datei hat auch die Endung "*.c".)
Warum heißt es aber nun "<iostream>" anstatt "<iostream.h>?
"iostream.h" gilt als "deprecated" (d.h.: veraltet) und erzeugt eine Warnung. Es gibt eine neuere Version, nämlich "iostream" (ohne ".h") Zu den Include-Dateien später mehr.
 
Eine Anmerkung zu den Pfaden: "#include "eigenehs/test.h"" bindet "test.h" aus dem Unterordner "eigenehs" ein! Du nutzt "/" und nicht "\"!
6
int main(int argc,
char *argv[])
Unsere erste Funktion! Die "main"-Funktion steht in (fast) jedem Programm. Sie ist der Einstiegspunkt. Hier beginnt die Ausführung. Alle Befehle in dieser Funktion werden der Reihe nach abgearbeit. Diese Zeile wollen wir uns genauer anschauen:
int Rückgabetyp der Funktion. "int" bezeichnet eine Ganzzahl. Später mehr dazu.
main Name der Funktion. Darf bei eigenen Funktionen kein reservierter Name sein. Auch hierzu später mehr.
(int argc, char *argv[]) Parameter: Werte, die der Funktion übergeben werden."int argc" ist der erste Wert und bezeichnet die Anzahl der Parameter der "main()"-Funktion."char *argv[]" sind die weiteren Parameter. Zu Parametern später mehr.
In einigen Tutorials oder Büchern wird auch "void main()" oder nur "main()" geschrieben. Dies ist falsch, "main" muss immer einen "int" zurückgeben!
7
{
Beginn des Funktionblocks, Anfang der main-Funktion!
Alles was zwischen "{" und " "}" steht, gehört zusammen. Hier sind das alle Kommandos der "main()"-Funktion. Man spricht von einem "Block".
8
std::cout <<
"Hello World!\n";
Hier kommt unser erstes Kommando! "cout"!" cout" gibt einfach nur einen "Stream" auf die Standardausgabe aus. Das ist hier der Bildschirm. "cout" erwartet einen Aufruf, wie den folgenden:
"cout << Variable(s.u.) << "...";". "\n" besagt, dass ein Zeilenumbruch folgen soll.
"<<" und ">>" sind Stream-Operatoren. Dazu später mehr. Bis jetzt musst du nur wissen, dass du mit "cout" mehrere Variablen oder Texte ausgeben kannst. Achte auf das Semikolon (";").
Das "std::" bedeutet, dass sich die Funktion im Standard-"namespace" befindet. Dazu später mehr, betrachte es am besten so, als gehöre es mit zu "cout"!
(Alternativ könnte man auch "using namespace std;" über die Funktionen schreiben, dies ist allerdings nicht zu empfehlen (Namenskonflikte...))
9
return 0;
Als wir "int main(...)" geschrieben haben, haben wir gesagt, dass "main()" eine Ganzzahl zurückliefert. In unserem Fall "Null". Wir könen aber später in eigenen Funktionen auch andere Werte, wie Buchstaben oder Texte, zurückliefern. Oft werden Rückgabewerte für Fehlermeldungen benutzt. ("0"=OK, "-1"=FEHLER oder ähnlich) Wir werden das noch sehen.
Beachte auch hier das Semikolon (";"). Es signalisiert wieder das Ende des Kommandos.
Bei "main()" bedeutet die Rückgabe auch, dass das Programm beendet wird! (Falls du das Programm innerhalb der "main()"-Funktion beenden willst, gibst du also (egal wo) irgendwas zurück... ;) )
10
}
Ende der "main"-Funktion. Hier könnten weitere Funktionen geschrieben werden.
11   Leere Zeile am Ende, verhindert Compilerwarnungen.

 
Das war's auch schon! Unser erstes Programm läuft und alle Fragen sind beseitigt!
Nein? OK, dann weiter:

Wie geht's weiter?

Mit Daten! Wir werden Daten einlesen, damit rechnen/arbeiten und dann wieder ausgeben!
Seite:  [1] 2 3 4 - Drucken