[Inhalt][0][1][2][3][4][5][6][7][8][9][10][11][12][13][14][15][16][17]
Aller Anfang....

...ist schwer, C wurde erfunden um den Russen ein viel zu komplexes Betriebssystem zu verkaufen und die Erde ist eine Scheibe!
Unser Anfang besteht natürlich darin, einen Compiler für die Sprache zu beschaffen, in der man programmieren will. Ein Compiler ist ein Programm, welches unsere Formulierungen in der Programmiersprache C in ein vom Computer verständliches Programm umwandeln.
 
INSTALLATION DES COMPILERS:
Installation unter DOS

Die folgende Vorgehensweise gilt für diejenigen, die Mitglieder von AOL sind. Alle anderen müssen die entsprechenden Hilfstexte der jeweiligen Compiler lesen.
Als erstes sollte ein Compiler zur Verfügung stehen. Der DJGPP befindet sich in der File-Library Programmieren/Kursmaterialunter dem File C-Compiler. Alle anderen, die den Kurs außerhalb AOL´s mitverfolgen, entnehmen bitte den Installationshinweisen des DJGPP-Packetes, wie sie den Compiler zum laufen bringen. Für alle anderen vereinfacht sich die Installation wie weiterführend beschrieben.
Achtung: Es sollte nachdem herunterladen mindestens 10 MB auf dem Laufwerk C: frei sein, da der Compiler ca. 6.2 MB benötigt und selber noch temporäre Dateien erzeugt. Nun folgendes in der Dos-Shell eingeben:
 

mkdir c:\ckurs

pkunzip -d c-comp.zip c:\ckurs

Es liegt nun eine Batchdatei ckurs.bat unter c:\ckurs welche alle nötigen Variablen setzt, die wir benötigen. Also entweder in der autoexec.bat am Ende ein c:\ckurs\ckurs einfügen, oder das Skript vor der Benutzung des C-Compiler starten. Wer sich die Dos-Version von von http://www.delorie.com/djgpp/zip-picker.html  heruntergeladen hat, schaut am besten in die beiliegende Anleitung, dürfte aber keine weiteren Schierigkeiten bereiten.
 
 
Installation unter Unix/Linux und dem Rest

Glücklicherweise ist es zum Standard geworden einen C-Compiler bei allen Unix-Varianten mitzuliefern. Daher erübrigt sich die Installation bei solchen Systemen, zum testen kann man ja cc oder gcc eintippen, um zu sehen, ob schon ein C-Compiler installiert ist. Unter Windows muß ich hier auf die entsprechenden Installationshinweise verweisen, denn man kann ja nicht alles wissen und beschreiben :-)
 
BENUTZUNG DES COMPILERS
Editieren der Quellcodes

Quellcode wird der Code genannt, der später vom verwendeten Compiler benutzt wird. Das Editieren selber geschieht in einem externen Editor. Unter Dos z.B. mittels
 

edit test.c

um die Datei zu erstellen, oder je nach Betriebssystem ein beliebigen Texteditor. Für Dos ist auch Rhide zu empfehlen. Rhide ist eine Entwicklungsoberfläche, wie die von Borland C. Praktisch nicht ? Das Programm ist Freeware. Das Copyright liegt bei Robert Hoehne. Ihr findet die aktuelle Version unter ftp://ftp.urz.uni-heidelberg.de/pub/simtelnet/gnu/djgpp/v2apps oder im AOL-Programmierforum (Kennwort: Programmieren) unter Kursmaterial.
 
 
Compilieren unter DOS

Da wir den Compiler installiert haben, wollen wir uns gleich überzeugen, das er auch einwandfrei funktioniert. Wie oben beschrieben, c:\ckurs\ckurs eingeben, wenn die Batchdatei noch nicht gestartet wurde. Prinzipiell wird generell wie folgt compiliert und gelinkt.
 
 

gcc -o programm programm.c
aout2exe programm

Wobei programm.c unseren Sourcecode/Quelldatei darstellt und programm.exe das ausführbare Programm ist, was am Ende erzeugt wird. Im Unterverzeichnis c:\ckurs\kurs befindet sich auch schon unser erstes Programm, welches wir im Anschluß als unsere erste Lerneinheit benutzen wollen. Wir geben also ein:
 

cd \ckurs\kurs
gcc -o test test.c 
aout2exe test

Wenn alles ohne Probleme von statten ging, haben wir nun ein Programm, welches test.exe heißt, erzeugt. Was ist nun passiert ? Mit gcc -o test test.c starteten wir den Compiler und teilten ihm mit, das wir das Programm test.c compilieren möchten und das er ein Programm test erzeugen soll. Hier merken wir schon: Der Compiler kommt aus der UNIX-Welt : ) Er generiert ein Programm mit dem Namentest. Typisch UNIX und sehr unbrauchbar für uns ist, das das so erzeugte Programm im sogenannten a.out-Format vorliegt. Da das in diesem Fall erstmal uninteressant ist, gehen wir nicht näher darauf ein. Wir tippen also aout2exe test ein um damit das Ausführbare Programm test.exe zu generieren, welches wir dann starten können.

Screenshot: Ausführen der Beispielcompilierung

WICHTIG: C-Programme müssen (!) die Endung '.c' besitzen , C++-Programme in der Regel die Endung '.C' (großes C unter Unix), '.cc' (u.a. der DJGPP) oder 'cpp' (u.a. Visual C++).
 
 
Compilieren unter Linux

Das compilieren unseres Programmes unter Linux ist ähnlich. Fast sogar schon einfacher. Da im Grundsystem der GCC schon integriert ist, brauchen wir uns nur noch den Compileraufruf anzuschauen.
 

gcc -o test test.c

Das war es schon. Der Compiler compiliert und linkt in einem Durchgang unser Programm test.c und erzeugt das ausführbare Programm test. Dieses kann sofort mit dem Aufruf ./test ausgeführt werden. Als Programmieroberfläche kann wpe im Terminalmodus, oder xwpe unter X-Windows empfohlen werden. Sie entsprechen weitgehend den Borlandcompilern.
 
Der Umgang mit Visual C++

Möchte man unter Visual C++ Programme für unseren Kurs erstellen und austesten, so ist das etwas komplizierter in der anfänglichen Handhabung. Auf der anderen Seite hat man einen sehr mächtigen Compiler, der sehr viele Möglichkeiten, gerade unter Windows, bietet. Wir werden jetzt Schritt für Schritt zeigen, wie man ohne Probleme unter Visual C++ die ersten Programme schreiben kann. Nach dem starten des Developer Studios , das ist die Programmierumgebung von Microsoft , findet man sich in einer Umgebung wieder, in der man erstmal nicht weiß, wo man denn nun sein Programm eingeben soll. Als erstes müssen wir ein neues Projekt von uns erzeugen.

Screenshot : Visual C++

Dies tun wir, in dem wir unter dem Menüpunkt File das weiße Blatt mit der Beschriftung New ( Neu ) anwählen. Wir erhalten nun eine Auswahl von verschiedenen Projekten, die wir erzeugen können. Für unsere Zwecke reicht es, wenn wir eine Win32 Console Application ( Konsolenapplikation ) auswählen. Das sind die Programme, die ohne Probleme auch unter Dos ablauffähig sind. Jetzt müssen wir dem Projekt noch einen Namen geben, denn unser künftiges Erzeugnis soll ja auch einen Namen haben. Dazu geben wir ihn unter Project name ( Projektnamen ) an, hier wurde CKursProjekt als Projektname gewählt.

Screenshot : Visual C++

Alle anderen Einstellungen werden nicht verändert, da die Voreinstellungen in Ordnung sind. Nun haben wir ein Projekt erzeugt. Aber irgendwie fehlt uns immer noch etwas wichtiges. Richtig! Der Teil, in dem wir unser Programm eingeben können. Dazu legen wir in unserem Projekt ein neues C-Sourcefile an, indem wir im Menüpunkt File auf New ( Neu ) klicken.

Screenshot : Visual C++

Wie wir sehen können, sind wir in der Lage verschiedene Datentypen in unserem Softwareprojekt einzubinden. Aber im Moment interessiert uns nur die Möglichkeit, C Programme zu schreiben. Wir wählen also C++ Source File aus und geben unter Filename an, unter welchem Namen das File gespeichert werden soll. In unserem Fall nennen wir es programm.c . Da alle C-Programme auch gleichzeitig C++ Programme sind, brauchen wir uns also nicht weiter den Kopf zermürben, wieso es denn ein C++ File sei.

Screenshot : Visual C++

Nachdem wir auf OK klickten hatten wir auf der rechten Hälfte ein weißes Textfeld erzeugt. Hier können wir nun unser Programm schreiben. Folgendes kleines Beispielprogramm können wir nun zum testen eingeben.

Screenshot : Visual C++

Abgetippt haben wir nun, und wie starten ? Wie wir im anschließenden Teil sehen werden, arbeitet ein Compiler in mehreren Schritten. Die sind hier automatisiert worden, d.h. wir brauchen im Prinzip nur noch einen Button klicken und der Rest wird vom Compiler automatisch erledigt. Wenn wir das große rote Ausrufezeichen anklicken, so prüft er unser Programm auf Fehler und erzeugt daraus ein lauffähiges Programm welches er auch gleich ausführt.

Screenshot : Visual C++

Nach dem starten unseres Programms wird ein Dos-Fenster geöffnet, da wir ja kein spezielles Windowsprogramm schrieben, in dem unser Programm ausgeführt wird. Nach Beendigung steht press any key to continue , oder etwas ähnliches, was uns auffordert eine beliebige Taste zu drücken um weiter zu machen.

Screenshot : Visual C++

Somit hätten wir den kompletten Werdegang einer Programmerstellung, wie wir ihn für unseren Kurs benötigen. Beim nächsten Start des Visual C++ Compilers kann man alle bisherigen Projekte unter File dem Menüpunkt  Recent Workspaces einsehen und mit einem klick das alte Projekt öffnen. Wir landen dann automatisch auf der Bearbeitungsebene, die wir zuletzt sahen, in unserem Fall also den Editor mit unserem Beispielprogramm

Screenshot : Visual C++

Alle weiteren Einzelheiten entnehmen sie bitte dem Handbuch des Compilers, da dies kein Visual C-Kurs werden soll und es zu weit führen würde auf alle Einzelheiten einzugehen.
 
Wie arbeitet der Compiler

C Compiler arbeiten im Prinzip in drei Schritten, welche in der Regel durch 3 Teilprogramme ausgeführt werden. Dem Precompiler, dem Compiler und dem Linker. Im folgenden wird nur kurz angeschnitten, was in den einzelnen Schritten gemacht wird.

Prinzip: Compiliervorgang

Der Precompiler ist ein Programm welches im Grunde genommen den Sourcecode durchgeht und speziell für ihn bestimmte Befehle ausführt. Diese Befehle beginnen in der Regel mit # In einem späteren Kapitel werden wir noch genauer auf einige Befehle eingehen.Erkennt der Precompiler zum Bespiel #include <xy.h>  so ersetzt er an dieser Stelle den Code von #include <xy.h> durch den Text des Files xy.h . So wächst der Sourcecode entsprechend, bis am Ende ein Quelltext steht, der an den Compiler übergeben wird.

Prinzip: Precompiler

Der Compiler übersetzt nun den Quelltext in ein sogenanntes Objektformat. Diese Files haben in der Regel die Endung .o oder .obj . Der Linker kann nun ein oder mehrere dieser Objektdateien zusammenfügen und ein startbares Programm generieren. Systemabhängig wird dann ein Startcode an den Anfang gehängt, der bei dem Ausführen des Programmes als erstes aufgerufen wird und der dann auf das Hauptprogramm verzweigt.

Prinzip: Linker

Diese hinzugelinkten Objektdateien können nun Beispielsweise Unterprogramme beinhalten. In der Beispielgrafik werden z.B. die Objektdateien des Hauptprogramms haupt.o mit den Objektdateien der Module, die vom Hauptprogramm benötigt werden, help.o und show.o , zu einem ablauffähigen Programm gelinkt.  Die erzeugten Programme haben unter Dos z.B. die Endung .com oder .exe . In der Regel werden diese Schritte automatisch bei modernen Compilersystemen ausgeführt und der Programmierer bekommt nicht mehr viel davon zu sehen.
 
 
Und los geht's mit unserem ersten C-Programm!

Zurück zu unserem Beispielprogramm, mit dem wir den Compiler getestet haben. Wenn wir es mit einem Texteditor ansehen, z.B. mit edit test.c so sieht es wie folgt aus:
 

/* Dies ist unser erstes C-Programm im AOL C-Kurs */
#include <stdio.h>

void main( void
{

    printf ("AOL C-Kurs\n");
}

Zu Anfang gleich eine Warnung: C unterscheidet zwischen Groß- und Kleinschreibung! Schlüsselwörter, d.h. Standardbefehle in C sind klein geschrieben
 
 
Die Grundstruktur

An unserem ersten Programm können wir schon alle Merkmale eines C-Programms sehen. Kommentare sind von einem /* am Anfang und einem */ am Ende umklammert. Der Compiler überliest so alles was sich innerhalb dieses Kommentars befindet:
 

/* Dies ist ein Kommentar */

Der Befehl #include weißt an, das eine Programmsammlung in das Programm eingebunden werden soll. C ist eine Programmiersprache, die in ihren Grundzügen nur aus wenigen Befehlen aufgebaut ist. Das ist eine ihrer großen Stärken, da man sich später eigene Befehle programmieren kann. Das heißt aber auch: Selbst Grundfunktionen wie Bildschirmausgabe oder die Tastatureingabe sind kleine Unterprogramme, die explizit eingebunden werden müssen, da sonst der Compiler nicht weiß, was er zu tun hat. Fazit: C ist modular aufgebaut. Und zwar von Grund auf! Mit dem #include werden wir uns in einem späteren Kapitel noch ausführlicher zuwenden.

Nun kommen wir zu dem wichtigsten Modul , welches auf keinen Fall Fehlen darf, dem main-Modul. Es sagt dem Compiler, das dieses Modul unser Programm darstellt. Wenn es fehlen würde, wüßte der Compiler gar nicht, welches das Hauptprogramm ist und würde von daher nur Programmodule erzeugen, ohne uns auch mit nur einem funktionierenden Programm zu beglücken. Alle anderen Module, die wir später schreiben können nur ausgeführt werden, wenn sie direkt oder indirekt vom Hauptprogramm aus aufgerufen werden! Jedes Modul besteht aus einem Modulnamen und einem Körper. Der Modulkörper wird durch zwei geschweifte Klammern dargestellt. Alles, was sich in diesen Klammern befindet, gehört zum Modul.
 

Modulname ( )

{

/* Dies ist der Inhalt des Moduls */

}

Zugegeben, dieses Modul ist recht nutzlos, da es nur eine Kommentarzeile enthält. Es ist aber recht anschaulich.Wie oben bereits beschrieben wurde: Ein Modulname zeichnet sich durch alle anderen aus: main ( ) ! Die Doppelklammer hinter dem Modulnamen ist zwingend, da dort  Übergabeparameter stehen können. Davon werden wir später noch Gebrauch machen wenn wir uns näher mit den Modulen befassen
 
 
printf

Zurück zu unserem Programm: Den einzigen Befehl, den wir hier benutzen, ist der printf () Befehl. Wie schon erwähnt, handelt es sich hierbei selber um ein Modul, dem übergeben wird, was auf dem Bildschirm ausgegeben werden soll.
 

printf ("AOL C-Kurs\n");

Es soll also der Text AOL C-Kurs auf dem Bildschirm ausgegeben werde. Jede Befehlszeile muß mit einem Semikolon abgeschlossen werden, damit der Compiler weiß, wann Befehlsende ist. Jetzt kommt natürlich der berechtigte Einwand: Was soll das \n dort ? Bestimmte Zeichen wie \ oder auch % sind reservierte Zeichen, die dem Compiler sagen, das hier bestimmte Aktionen durchgeführt werden. \n sagt: An dieser Stelle wird ein Zeilenvorschub eingefügt. Ansonsten würde einfach nach dem Text keine neue Zeile angefangen werde.
 

printf ("AOL "); 

printf ("C-Kurs\n");

Ist also das gleiche, was wir mit unserer einen Zeile oben bewirkt haben.
 

printf ("AOL C-Kurs\n");

Oberes würde also erst ein Zeilenvorschub, dann unseren Text und zwei Zeilenvorschübe auf dem Bildschirm ausgeben. Am besten sie probieren das einfach mal.
 
 
printf - Sonderzeichen

Wie wir bereits sahen, gibt es Sonderzeichen, die mit \ beginnen. Damit stellt man Zeichen, die sonst nur schwer dargestellt werden könnten. Im folgenden werden diese Sonderzeichen aufgelistet.
 
 

\n Zeilenvorschub , entspricht RETURN bei der Tastatureingabe
\t Tabulator , auf dem Bildschirm wird ein Tabulator [TAB] - Sprung gemacht
\b Backspace , letztes Zeichen wird gelöscht
\r Carriage Return , unter UNIX irrelevant. Unter DOS besteht ein Zeilenende aus \n\r
\f Irrelevant für Bildschirm und Tastatur, bewirkt unter einer Druckerausgabe einen Seitenvorschub (formfeed)
\0 NULL , wird intern für eine String-Endmarkierung verwendet. Wird manchmal auch bei Druckersequenzen benutzt.
\\ Backlash , erzeugt ein \ auf dem Bildschirm
\' Erzeugt ein Hochkomma auf dem Bildschirm
\" Erzeugt Anführungszeichen, die ja sonst schwerlich darstellbar sind

 
 
Übungsaufgaben

Soviel zum ersten Teil unseres C-Kurses! Natürlich werde ich das Ganze nicht ohne Übungsaufgaben auf sich beruhen lassen. Wenn jemand Verständnisfragen hat, bitte ich diese in das MessageBoard der Homepage zu schreiben. So kann gleich mehreren mit ähnlichen Problemen geholfen werden und es kann auch eine konstruktive Zusammenarbeit zwischen allen erfolgen!

1) Folgende Zeichenfolge soll mit Anführungszeichen ausgegeben werden. "C macht Spaß"
2) Selbiges soll mit ausgegeben werden ohne Anführungszeichen, dafür aber mit einem Zeilenvorschub zwischen jedem Wort.
3) Einfach mit den Sonderzeichen, die mit \ beginnen experimentieren.

Viel Spaß. Nächstes mal werden wir uns mit Variablen und dem einlesen von der Tastatur beschäftigen.
 
 
 
...das Obligatorische

Autor: Sebastian Cyris

Dieser C-Kurs dient nur zu Lehrzwecken! Eine Vervielfältigung ist ohne vorherige Absprache mit dem Autor verboten! Die verwendete Software unterliegt der GPL und unterliegt der Software beiliegenden Bestimmungen zu deren Nutzung! Jede weitere Lizenzbestimmung die der benutzten Software beiliegt, ist zu beachten!