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.
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.
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.
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.
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.
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.
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.
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.
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
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.
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.
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.
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 )
|
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.
|
Ü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!