peace software
  Berndt Wischnewski  Richard-Wagner-Str. 49  10585 Berlin 
  Tel.: 030 - 3429075  FAX : 030 34704037  email: webmaster@peacesoftware.de  Ust-ID: DE135577379 

<= Previous

 

C Kurs - Einführung oder "Bier oder Kaffee"

1. Ihr erstes Programm

Bravo. Sie scheinen die Installation des C-Compilers geschafft zu haben. Dann tippen Sie doch mal Ihr erstes C Programm in einen Editor ein:

#include <stdio.h>
int main(void)
{
   printf("hello world");
  return 0;

}

Speichern Sie Ihr Textfile unter "hello.c", bringen Sie Ihren Compiler dazu, hello.c zu kompilieren und zu linken. Wenn Sie einen integrierten Editor/Compiler benutzen, ist das überhaupt kein Problem, es sollte einen Menübefehl "Build" oder "Make" oder ähnliches geben.

Unter Windows starten Sie jetzt die MSDOS Box, gehen mit "cd" zu dem Directory in welchem sich hello.c befindet und suchen nach "hello.exe". Starten Sie ihr Programm in dem Sie hello eingeben und auf Return drücken. Auf anderen Betriebssystemen wissen Sie sicher selber, wie man ein Programm ausführt. Sie sollten jetzt folgendes sehen:

    hello world

Wenn Sie das tun, dann Glückwunsch, jetzt sind Sie ein C Programmierer (dieser Gag ist alt und auch nicht von mir, sondern von Kerningham & Ritchie).

 

2. Edit-Compile-Run

Programmieren funktioniert folgendermaßen: man schreibt mit einem Editor ASCII-Text in ein File, dieses File (oder mehrere) schickt man an den Compiler, welcher es in Maschinensprache übersetzt falls es keine Syntaxfehler enthält. Das Ergebnis sind ein oder mehrere Objektcode-Files. Danach wird gelink, der Linker baut aus dem Objektcodefiles zusammen mit anderen Libraries ein ausführbares Programm, oder was auch immer. Dieses Programm testet man dann, wenn Fehler auftreten fängt man wieder an zu editieren. Das ganze heißt auf gut deutsch der Edit-Compile-Run Zyklus.

 

3. Syntax / Syntaxfehler

Hier kann ich jetzt prima ein paar einführende Allgemeinplätze loswerden: Zum ersten die Programmiersprache C hat eine Syntax, also es gibt bestimmte Regeln, wie die Programme geschrieben werden. Sonst würde es auch keine Syntaxfehler geben. C z.B. ist case sensitive, es ist empfindlich für Groß- und Kleinschreibung. Es ist also nicht egal ob Sie

#include <stdio.h>
     oder
#inclUde <stDio.h>

eintippen. Im zweiten Fall erhalten Sie beim kompilieren eine Fehlermeldung (Syntaxerror in line 1). Alle Compiler die ich kenne, melden die Zeilennummer, in der der Fehler auftritt, oder zu mindestens die in der der Compiler meint dass er auftritt (in einigen Fällen passierte der Fehler schon vorher). Der Compiler gibt meistens noch eine Erklärung zu dem Fehler, die ist aber häufig genauso hilfreich wie eine IKEA Anleitung auf klingonisch. "#inclUde <stdio.h>" führt bei meinem Lieblingscompiler zu "undefined preprocessor directive", was ungefähr heißt "ich verstehe nicht, was du da geschrieben hast".

Neben Syntaxfehlern gibt der Compiler noch Warnungen, Warnings heraus, wenn er meint das in Ihr Programm syntaktisch zwar korrekt ist, es aber trotzdem einen Fehler haben könnte. Meistens, aber nicht immer, hat der Compiler damit recht.

Bei Ihren ersten Programmen werden Sie zu anfang viel mit Syntaxfehlern zu kämpfen haben, nach 5 jähriger Praxis mit ca 16 Stunden täglicher Arbeit geht die Zahl der Syntaxfehler stark zurück. Nach dieser Zeit treten dann nur noch Vertipper auf. Der Genuss alkoholischer Getränke dagegen, erhöht die Anzahl der Syntaxfehler stark und zwar recht proportional zur Alkoholmenge; 3 Bier entsprechen 3 Syntaxfehler pro Zeile; 5 Bier = 5 Syntaxfehler pro Zeile usw. Diese Regel wurde empirisch nach umfangreichen Selbstversuchen aufgestellt. Dies ist wohl der Grund, warum Programmierer Kaffee bevorzugen.

 

4. wichtige Begriffe

Einige wichtige Begriffe aus der Programmiererwelt:

  • kompilieren: der C-Compiler kompiliert, d.h. er übersetzt das was Sie geschrieben haben in Maschinensprache

  • Maschinensprache: die Befehlssyntax, die die CPU des Computers versteht, Assembler entspricht ungefähr Maschinensprache, letztendlich wird hier der Prozessor angewiesen, an einige seiner Beinchen Spannung anzulegen und an andere nicht.

  • CPU = Central Processing Unit: der zentrale Prozessor Ihres Computers, z.B. Pentium 4, PowerPC G4, Sun UltraSparc

  • Assembler: LowestLevel Programmiersprache für eine bestimmte CPU, Assemblerbefehle sind etwa so aufgebaut: "hole das was in Adresse 1234466 steht und addiere es auf Register 4" Maschinensprache ist (meistens) dasselbe in Hex-code. Bestimmte Dinge wie Hardware Treiber, Startroutinen des Betriebssystems und vor allen Dingen Bootsektorviren werden heute noch in Assembler programmiert. Wenn man einen Bug in seinem Programm absolut nicht findet, geht man auf die Assemblerebene herunter, ansonsten gilt: "Live is to short to program in Assembler"

  • Hexadezimalsystem: hier werden die Zahlen in einem System dargestellt das nicht auf zehn sondern auf 16 beruht, nach 1 .. 9 kommt A, B, C, D, E, F und dann erst 10, ein Byte entspricht einer hex Zahl von 0 - FF, dezimal ausgedrückt 0 - 255. Das praktische hieran ist, a) es sind 2-er Potenzen, also prima von dem Computer zu verarbeiten b) nur ein Programmierer versteht sie

  • Hex-code: Maschinensprache, Programmcode der vom Prozessor ausgeführt werden soll, in einem 32.Bit Betriebssystem sind es Blöcke von jeweils 4 Hexadezimalzahlen, entspricht Assembler, nur das ein Mensch Assembler noch ansatzweise lesen kann.

  • Linker, linken: Neben dem was Sie selber programmieren, gehört zu einem lauffähigen Programm noch andere Routinen. Zum Starten des Programms z.B. die Runtime-Library, wenn Sie mathematische Routinen benutzen die MathLib, wenn Sie wie in unserem Beispiel "printf(..)" benutzen, die StandardIO Library. Diese ganzen Teile werden nach dem fehlerfreien kompilieren zu einem ausführbaren Programm zusammengebunden. Diesen Vorgang nennt man linken, das Programm, welches dies tut ist der Linker.

Hier mal ein Screenshot unseres "hello.c" Programmes in Assembler, habe ich aus dem Metroworks Debugger heraus gemacht:

debugger screenshot

 
<= Previous












Einige gute C Lernbücher von Andre Wilms: