Site hosted by Angelfire.com: Build your free website today!

C++ Einsteigerkurs - Teil 1 vom 30.3.2000


Hallo Leserin, hallo Leser, ich habe mich nun entschlossen einen C++ Kurs für Anfänger zu schreiben, die noch keine Ahnung von C bzw. C++ haben. Dies ist mein erster Kurs, den ich schreibe. Deshalb bitte ich euch nachsichtig mit mir zu sein. Seht bitte über Rächdschreib-Fehler hinweg (stellt euch einfach vor, ich würde nach der Beta-Version der Rechtschreibreform schreiben). Aber bitte macht mich darauf aufmerksam, wenn ich einen sachlichen Fehler mache, oder etwas unverständlich erkläre. Dieser Kurs behandelt das prozedurale Programmieren, also ohne das Klassenkonzept der objektorientierten Programmierung zu berücksichtigen, da dies für den Anfang einfacher ist. Ich werde mich weitestgehend an den ANSI-Standard halten, also keine compilerspezifischen Konstruktionen verwenden. Ich gebrauche jedoch Sprachmittel, die nur in C++, nicht aber in C vorhanden sind, da sie die Programmierung oft einfacher gestalten und einen nicht zwingen, auf einem Low-Level-Niveau zu coden, wie es in C oft nicht umgänglich ist. Jetzt habe ich aber genug erzählt und fange endlich an.

C++ Programme werden compiliert, nicht interpretiert, sind also nach der Compilierung und nach dem Linken als eine ausführbare .exe Datei vorhanden. Um diessen Status zu erreichen braucht man einen Compiler, der den mit einem normalen Texteditor erzeugten Text (Programmcode) zu übersetzen vermag.
Ein kostenloses, für alle möglichen Plattformen verfügbares Programm dieser Sorte ist der DJGPP, dessen Downloadaddy ich leider momentan nicht zur Hand habe, den man aber leicht über diverse Suchmaschinen im Internet finden kann. Im folgenden Text gehe ich nicht weiter auf die Installation und Benutzung des Compilers bzw. Texteditors ein. Das kann, falls Bedarf besteht, jemand anderes machen. Stattdessen stürze mich gleich in die Syntax und den C++ Code.

In jedem Programm muss ein Startpunkt definiert sein. In C(++) ist dies die main()-Funktion. Alle Instruktionen sind in Funktionen verpackt, d.h. in kleinere Unterprogramme strukturiert, die wie folgt definiert werden:

Typ_des_Rückgabewertes  Funktionsname(Argumente_durch_Kommata_getrennt) {
      Anweisungen, die bei Funktionsaufruf ausgeführt werden;
}

Am besten schauen wir es uns mal in einem kleinen, sogar schon lauffähigen Programm an, das, wie sollte es auch anders sein, "Hallo Welt!" ausgibt.

---- cut ----

// Programm 1.1
#include <iostream>
int main() {
     std::cout << "Hallo Welt!\n";
     return 0;
}
---- cut ----

Das ist jetzt schon gewaltig viel Holz auf einmal, aber keine Panik, sehen wir uns das Ganze Stück für Stück genauer an: In der ersten Zeile steht // Programm 1.1 . Dies könnte man auch einfach weglassen und das Programm würde noch genauso ausgeführt werden. Zwei Slashes // führen immer einen Kommentar ein. Der Compiler ignoriert alles bis zum Zeilenende. Der Text ist nur für den Programmierer gedacht, damit er sich, wenn er sich den Code zu einem späteren Zeitpunkt wieder ansieht, besser an bestimmte Sachen erinnern kann. Kommentare, die über mehrere Zeilen gehen, werden durch /* begonnen und durch */ abgeschlossen.

Das folgende #include <iostream> bindet die Header-Datei iostream ein, welche die Funktionalität der Ausgabeanweisung von cout (s.u.) gewährleistet.

Als nächstes steht int main() { dort. Diese Zeile beschreibt den Kopf der Funktion, die bei jedem Programmaufruf als Einstiegspunkt dient. Das int bezeichnet den Typ des Rückgabewertes, in diesem Fall einen ganzzahligen Wert (Integer). Die verschiedenen Typen werde ich später noch ausführlich beschreiben. main ist der Funktionsname, der genau so geschrieben werden muss. C++ unterscheidet zwischen Groß- und Kleinbuchstaben: main, Main und MAIN sind also drei verschiedene Namen. Die () Klammern enthalten keinen weiteren Text, was anzeigt, dass der Funktion keine Argumente übergeben werden. Die geschweifte Klammer { steht immer für den Anfang eines Blockes und wird uns später wieder begegnen. In der darauffolgenden Zeile findet man die Anweisung, die für die Bildschirmausgabe unseres ersten Programmes zuständig ist. cout ist der Name des Schlüsselwortes, das die Ausgabe auf das Standardausgabegerät (meist der Bildschirm) managed. std:: steht für den Standardnamensbereich, in dem alle möglichen Funktionen definiert sind, der uns aber zum jetzigen Zeitpunkt nicht weiter stören soll.

Als kleine Aufgabe für den Leser:
entfernt mal das std:: und schaut, was der Compiler für einen Fehler bringt. Dann ändert auch #include <iostream> in #include <iostream.h> und kompiliert erneut. Das Programm sollte nun wieder funktioneren. Bei manchen nicht standardkonformen Compilern kann es sein, dass man den Code sogar so schreiben muss, weil der Compiler den mit "std::" und ohne ".h" nicht versteht.

Das << ist ein Operator, der den Text auf den Bildschirm "verschiebt". In doppelte Hochkommas ist dann der Text gestellt, der ausgegeben werden soll "Hallo Welt!\n". Wenn man sich nun den Programmoutput ansieht, so stellt man fest, dass \n nicht mit ausgegeben wird, sondern nur Hallo Welt!  \n ist eine sogenannte Sequenz. Sequenzen bestehen aus einem einleitenden Backslash und einem folgenden Zeichen mit besonderer Bedeutung. Sequenzen werden ausgewertet und haben eine Funktionalität. In diesem Fall wird ein Zeilenvorschub (newline) bewirkt. Weitere Sequenzen sind \t (Tabulator) \a (Alarmpiepsen), \\ gibt einen Backslash aus, \x für eine hexadezimale Ausgabe, u.v.m.

Alle Anweisungen und Deklarationen werden mit einem Semikolon ; abgeschlossen.

Die letzte Zeile vor dem } , das den Funktionsblock schließt, return 0; bewirkt, dass die Zahl 0 zurückgegeben wird, was in diesem Fall, bei der main() Funktion, soviel bedeutet, wie "Programm ohne Probleme ausgeführt". In anderen Funktionen, wie wir sie später besprechen werden,
geben sie oft das Ergebnis zurück, das sich aus den Operationen mit den Funktionsargumenten ergibt.

Ich weiß, das ist ziemlich viel auf einmal, wenn man noch nie programmiert hat. Wer sich schon mal in anderen Programmiersprachen umgesehen hat, wird sich jedoch um einiges leichter tun. Schaut euch das Programm nochmals genau an, schreibt es auf alle Fälle in eine Texteditor, startet es und modifiziert es (!!!). Als Übung bis zum nächsten Mal ändert ihr das Programm so, dass folgender Text auf dem Bildschirm erscheint:

Hallo Welt!

C++ ist    (nicht)    schwer!

Man beachte die ausgelassene Zeile und den Leerraum links und rechts von (nicht) , der genau einem Tabulator entspricht!

Bis zum nächsten Mal
 Jolly Roger
 webmaster@christoph-mueller.de
 http://www.christoph-mueller.de

   Computer    Programmieren (incl. C++ Kurs)    Algorithmen    Bücher    

Zeitschriften    Heavy Metal    Mountainbiking    Meine Katze    

Über mich und die Site    Links    Downloads    Gästebuch    HP mit Umfrage