Anhang A
ASCII-Codes
Dezimal | Hexadezimal | Zeichen | Kommentar |
0 | 0x00 | ^@ | Null, \0 |
1 | 0x01 | ^A | |
2 | 0x02 | ^B | |
3 | 0x03 | ^C | |
4 | 0x04 | ^D | |
5 | 0x05 | ^E | |
6 | 0x06 | ^F | |
7 | 0x07 | ^G | Glocke, \a |
8 | 0x08 | ^H | Rücktaste, \b |
9 | 0x09 | ^I | Tabulator, \t |
10 | 0x0A | ^J | |
11 | 0x0B | ^K | Vertikaler Tabulator, \v |
12 | 0x0C | ^L | Seitenvorschub, \f |
13 | 0x0D | ^M | Wagenrücklauf, \r |
14 | 0x0E | ^N | |
15 | 0x0F | ^O | |
16 | 0x10 | ^P | |
17 | 0x11 | ^Q | |
18 | 0x12 | ^R | |
19 | 0x13 | ^S | |
20 | 0x14 | ^T | |
21 | 0x15 | ^U | |
22 | 0x16 | ^V | |
23 | 0x17 | ^W | |
24 | 0x18 | ^X | |
25 | 0x19 | ^Y | |
26 | 0x1A | ^Z | |
27 | 0x1B | ^[ | Escape |
28 | 0x1C | ^\ | |
29 | 0x1D | ^] | |
30 | 0x1E | ^^ | |
31 | 0x1F | ^_ | |
32 | 0x20 | Leertaste, Beginn der sichtbaren Zeichen | |
33 | 0x21 | ! | Ausrufezeichen |
34 | 0x22 | ″ | Doppeltes Anführungszeichen |
35 | 0x23 | # | Raute |
36 | 0x24 | $ | Dollarzeichen |
37 | 0x25 | % | Prozentzeichen |
38 | 0x26 | & | Und-Zeichen |
39 | 0x27 | ' | Apostroph |
40 | 0x28 | ( | Klammer auf |
41 | 0x29 | ) | Klammer zu |
42 | 0x2A | * | Stern |
43 | 0x2B | + | Plus |
44 | 0x2C | , | Komma |
45 | 0x2D | - | Minus |
46 | 0x2E | . | Punkt |
47 | 0x2F | / | Schrägstrich |
48 | 0x30 | 0 | Ziffern |
49 | 0x31 | 1 | |
50 | 0x32 | 2 | |
51 | 0x33 | 3 | |
52 | 0x34 | 4 | |
53 | 0x35 | 5 | |
54 | 0x36 | 6 | |
55 | 0x37 | 7 | |
56 | 0x38 | 8 | |
57 | 0x39 | 9 | |
58 | 0x3A | : | Doppelpunkt |
59 | 0x3B | ; | Semikolon |
60 | 0x3C | < | Kleiner |
61 | 0x3D | = | Gleich |
62 | 0x3E | > | Größer |
63 | 0x3F | ? | Fragezeichen |
64 | 0x40 | @ | At-Zeichen |
65 | 0x41 | A | Großbuchstaben |
66 | 0x42 | B | |
67 | 0x43 | C | |
68 | 0x44 | D | |
69 | 0x45 | E | |
70 | 0x46 | F | |
71 | 0x47 | G | |
72 | 0x48 | H | |
73 | 0x49 | I | |
74 | 0x4A | J | |
75 | 0x4B | K | |
76 | 0x4C | L | |
77 | 0x4D | M | |
78 | 0x4E | N | |
79 | 0x4F | O | |
80 | 0x50 | P | |
81 | 0x51 | Q | |
82 | 0x52 | R | |
83 | 0x53 | S | |
84 | 0x54 | T | |
85 | 0x55 | U | |
86 | 0x56 | V | |
87 | 0x57 | W | |
88 | 0x58 | X | |
89 | 0x59 | Y | |
90 | 0x5A | Z | |
91 | 0x5B | [ | Linke eckige Klammer |
92 | 0x5C | \ | Backslash |
93 | 0x5D | ] | Rechte eckige Klammer |
94 | 0x5E | ^ | Caret (Zirkumflex) |
95 | 0x5F | − | Unterstrich |
96 | 0x60 | ‛ | Gravis (Akzent) |
97 | 0x61 | a | Kleinbuchstaben |
98 | 0x62 | b | |
99 | 0x63 | c | |
100 | 0x64 | d | |
101 | 0x65 | e | |
102 | 0x66 | f | |
103 | 0x67 | g | |
104 | 0x68 | h | |
105 | 0x69 | i | |
106 | 0x6A | j | |
107 | 0x6B | k | |
108 | 0x6C | l | |
109 | 0x6D | m | |
110 | 0x6E | n | |
111 | 0x6F | o | |
112 | 0x70 | p | |
113 | 0x71 | q | |
114 | 0x72 | r | |
115 | 0x73 | s | |
116 | 0x74 | t | |
117 | 0x75 | u | |
118 | 0x76 | v | |
119 | 0x77 | w | |
120 | 0x78 | x | |
121 | 0x79 | y | |
122 | 0x7A | z | |
123 | 0x7B | { | Linke geschweifte Klammer |
124 | 0x7C | | | Vertikaler Strich |
125 | 0x7D | } | Rechte geschweifte Klammer |
126 | 0x7E | ~ | Tilde |
127 | 0x7F | Delete |
Die ASCII-Zeichen 0 bis 31 stellen Kontrollcodes dar. Diese Zeichen erhält man, indem man die Steuerungstaste auf der Tastatur drückt und das entsprechende Symbol bzw. Buchstaben eintippt.
32 ist der Code für das Leerzeichen.
Code 127 ist das Leerzeichen, das sich von Code Nummer 8 unterscheidet, der Rücktaste (Backspace). Code 8 ist nicht zerstörend, es bewegt nur den Cursor um einen Platz zurück.
Viele der Kontrollzeichen handhaben den Text auf dem Bildschirm; + etwa steht für die Tabulatortaste.
Wenn man genau hinschaut, erkennt man drei Wiederholungen in der ASCII-Code-Liste. Vergleichen Sie die Codes zwischen 0 und 26 mit denen von 64 bis 90. Betrachten Sie zusätzlich die Codes zwischen 97 und 122.
Die Differenz zwischen den Groß- und Kleinbuchstaben ist 32, eine heilige Computerzahl. Die hexadezimale Differenz ist 0x20. Daher kann man mit einfacher Mathematik beziehungsweise mit bitweiser Logik zwischen Groß- und Kleinbuchstaben schalten.
Die Zeichen für 0 bis 9 gleichen den Werten 0 bis 9, wenn man 48 (0x30) abzieht. In gleicher Weise kann man durch Addition von 48 beziehungsweise 0x30 aus den Zahlen die entsprechenden ASCII-Zeichen erhalten.
Jedes ASCII-Zeichen kann durch eine Escape-Sequenz dargestellt werden. Nach dem Backslash wird der Wert des Codes eingegeben, wie etwa \33 für das Ausrufezeichen (!). Der hexadezimale Wert kann auch benutzt werden, so zum Beispiel \x68 für das kleine h.
Anhang B
Schlüsselwörter
_Alignas | break | float | signed |
_Alignof | case | for | sizeof |
_Atomic | char | goto | static |
_Bool | const | if | struct |
_Complex | continue | inline | switch |
_Generic | default | int | typedef |
_Imaginary | do | long | union |
_Noreturn | double | register | unsigned |
_Static_assert | else | restrict | void |
_Thread_local | enum | return | volatile |
auto | extern | short | while |
Die Schlüsselwörter von C (C11-Standard)
asm | entry | fortran |
Veraltete C-Schlüsselwörter
asm | false | private | throw |
bool | friend | protected | true |
catch | inline | public | try |
class | mutable | reinterpret_cast | typeid |
const_cast | namespace | static_cast | using |
delete | new | template | virtual |
dynamic_cast | operator | this |
C++-Schlüsselwörter
C11 ist der gegenwärtige Standard der Sprache C (zur Zeit der Drucklegung dieses Buchs). Er wurde 2011 eingeführt.
Sie brauchen sich die C++-Schlüsselwörter nicht zu merken, aber sie sollten sich ihrer bewusst sein. Ich empfehle nachdrücklich, sie nicht als Namen von Funktionen oder Variablen in Ihren Programmen zu verwenden.
Das von C-Programmierern am häufigsten benutzte C++-Wort ist new. Sie sollten es nicht benutzen; verwenden Sie etwas anderes, etwa new_item oder newSomething.
Das Schlüsselwort bool in C++ ist genau das gleiche wie das _Bool-Schlüsselwort in C.
Anhang C
Operatoren
Operator | Typ | Funktion |
+ | Mathematisch | Addition |
− | Mathematisch | Subtraktion |
* | Mathematisch | Multiplikation |
/ | Mathematisch | Division |
% | Mathematisch | Modulo (Rest) |
++ | Mathematisch | Erhöhung (Inkrement) |
− − | Mathematisch | Verminderung (Dekrement) |
+ | Mathematisch | Einstelliges (unäres) + |
− | Mathematisch | Einstelliges (unäres) − |
= | Zuweisung | Wertzuweisung zu einer Variablen |
+= | Zuweisung | Addition |
−= | Zuweisung | Subtraktion |
*= | Zuweisung | Multiplikation |
/= | Zuweisung | Division |
%= | Zuweisung | Modulo (Rest) |
!= | Vergleich | Nicht gleich |
< | Vergleich | Kleiner als |
<= | Vergleich | Kleiner oder gleich |
== | Vergleich | Gleich |
> | Vergleich | Größer als |
>= | Vergleich | Größer oder gleich |
&& | Logisch | Logisches Und |
|| | Logisch | Logisches Oder |
! | Logisch | Der Ausdruck ist falsch |
& | Bitweise | Bitweises Und |
| | Bitweise | Bitweises Oder |
^ | Bitweise | Exklusives Oder (XOR) |
~ | Bitweise | Bitweises Nicht/NOT |
! | Unär | NOT |
* | Unär | Pointer |
Siehe auch Anhang G für die Rangordnung der Operatoren
Anhang D
Typen von Variablen
Typ | Wertebereich | Umwandlungszeichen für printf ( ) |
_Bool | 0 bis 1 | %d |
char | −128 bis 127 | %c |
unsigned char | 0 bis 255 | %u |
short int | −32 768 bis 32 767 | %d |
unsigned short int | 0 bis 65 535 | %u |
int | −2 147 483 648 bis 2 147 483 647 |
%d |
unsigned int | 0 bis 4 294 967 295 | %u |
long int | −2 147 483 648 bis 2 147 483 647 |
%ld |
unsigned long int | 0 bis 4 294 967 295 | %lu |
float | 1.17 × 10−38 bis 3.40 × 1038 | %f |
double | 2.22 × 10−308 bis 1.79 × 10308 | %f |
Anhang E
Escape-Sequenzen
Escape-Sequenz | Erzeugte Eigenschaft |
\a | Akustisches Signal (»Piep«) |
\b | Rückschritt |
\f | Seitenvorschub |
\n | Zeilenvorschub |
\r | Wagenrücklauf (Return) |
\t | Horizontaler Tabulator |
\v | Vertikaler Tabulator |
\\ | Umgekehrter Schrägstrich |
\? | Fragezeichen |
\' | Einfaches Anführungszeichen |
\'' | Doppeltes Anführungszeichen |
\xnn | Hexadezimaler Zeichencode nn |
\onn | Oktaler Zeichencode nn |
\nn | Oktaler Zeichencode nn |
Anhang F
Umwandlungszeichen
Zeichen | Was dargestellt wird |
%% | Prozentzeichen (%) |
%c | Einzelzeichen (char) |
%d | Ganze Zahl (short, int) |
%e | Gleitkommazahl in wissenschaftlicher Schreibweise mit kleinem e (float, double) |
%E | Gleitkommazahl in wissenschaftlicher Schreibweise mit großem E (float, double) |
%f | Gleitkommazahl in Dezimalschreiweise (float, double) |
%g | Ersatz für %f oder %e (je nachdem, was kürzer ist) (float, double) |
%G | Ersatz für %f oder %E (je nachdem, was kürzer ist) (float, double) |
%i | Ganze Zahl (short, int) |
%ld | Lange ganze Zahl (long, int) |
%o | Oktalzahl ohne Zeichen und ohne führende Null |
%p | Hexadezimaler Speicherort (*Pointer) |
%s | String (*char) |
%u | Ganze Zahl ohne Vorzeichen (unsigned short, unsigned int, unsigned long) |
%x | Hexadezimale Zahl ohne Vorzeichen, Kleinbuchstaben (short, int, long) |
%X | Hexadezimale Zahl ohne Vorzeichen, Großbuchstaben (short, int, long) |
Formatieren mit Umwandlungszeichen
Es gibt zahllose Möglichkeiten für die Verwendung von Umwandlungszeichen in C. Auf der Manualseite für printf () sind viele von Ihnen aufgeführt. Einige erfordern ein paar Experimente, bis man sie korrekt verwendet. Allgemein sieht das Format für ein typisches Umwandlungszeichen wie folgt aus:
%-pw.dn
Unbedingt notwendig sind das erste und das letzte Zeichen: Jedes Umwandlungszeichen beginnt mit einem %-Zeichen, n ist das eigentliche Umwandlungszeichen.
− | Das Minuszeichen sorgt zusammen mit der w-Option für eine rechtsbündige Ausrichtung der Ausgabe. | |
p | Das Auffüllungszeichen (padding character); es ist entweder Null oder ein Leerzeichen, wenn die w-Option benutzt wird. Normalerweise ist es ein Leerzeichen; in diesem Fall muss p nicht spezifiziert werden. Wenn p allerdings null ist, wird der Wert auf der linken Seite mit Nullen aufgefüllt, um die Breite zu erreichen, die durch die w-Option festgelegt wird. | |
w | Die Breitenoption; sie legt die Mindestzahl von Positionen fest, in der die Information angezeigt wird. Die Ausgabe ist rechtsbündig, wenn nicht das Vorzeichen – verwendet wird. Auf der linken Seite werden Leerzeichen aufgefüllt, es sei denn, der p-Wert ist 0 (Null). | |
.d | Der Punkt wird von einem d-Wert gefolgt, der festlegt, wie viele Stellen nach dem Dezimalpunkt bei einer Gleitkommazahl angegeben werden. Wenn d nicht angegeben wird, wird nur der ganzzahlige Anteil des Werts dargestellt. | |
n | Das Umwandlungszeichen, wie es in der Tabelle angegeben ist. Es kann auch ein Prozentzeichen sein; in diesem Fall erscheint ein %-Zeichen in der Ausgabe. |
Anhang G
Rangordnung
Operator | Klasse | Beschreibung |
! | Unär | Logisches Nicht, die Assoziativität geht von rechts nach links |
++−− | Unär | Erhöhung, Erniedrigung, von rechts nach links zu lesen |
*/% | Mathematisch | Multiplikation, Division, Rest |
+ − | Mathematisch | Addition, Subtraktion |
≪ ≫ | Binär | Logische Verschiebung links bzw. rechts |
< > <= >= | Vergleich | Kleiner als, größer als, kleiner gleich, größer gleich |
== != | Vergleich | Ist gleich, ist nicht gleich |
& | Binär | Und |
^ | Binär | Exklusives Oder (XOR) |
| | Binär | Oder |
&& | Logisch | Und |
|| | Logisch | Oder |
?: | Vergleich | Sonderbare Form der if-Anweisung; die Rangordnung ist von rechts nach links |
= | Zuweisung | Zuweisungsoperator für Variable, schließt += und *= sowie alle Zuweisungsoperatoren ein |
, | (keine) | Trennt Punkte in einer for-Anweisung, die Rangordnung ist von links nach rechts |
Tabelle G.1: Rangordnung der Standardoperatoren
Die Rangordnung kann durch die Verwendung von Klammern umgangen werden. C führt diesen Teil einer Gleichung vor allen anderen aus.
Variablen, die auf der rechten Seite mit ++ oder −− versehen sind, kommen vor Variablen, bei denen diese Operatoren auf der linken Seite stehen. Daher ist var++ vorrangig vor ++var.
Die Assoziativität von Zuweisungsoperatoren geht von rechts nach links. Bei += beispielsweise wird zunächst die Operation auf der rechten Seite ausgeführt.
Ausdruck | Adresse p | Wert *p |
p | Ja | Nein |
*p | Nein | Ja |
*p++ | Erhöhung nach dem Lesen | Unverändert |
*(p++) | Erhöhung nach dem Lesen | Unverändert |
(*p)++ | Unverändert | Erhöhung nach dem Lesen |
*++p | Erhöhung vor dem Lesen | Unverändert |
*(++p) | Erhöhung vor dem Lesen | Unverändert |
++*p | Unverändert | Erhöhung vor dem Lesen |
++(*p) | Unverändert | Erhöhung vor dem Lesen |
Tabelle G.2: Pointer und ihre Rangordnung
Kapitel 1
Ein schneller Start für die Ungeduldigen
IN DIESEM KAPITEL
Die Entwicklungsumgebung (IDE) Code::Blocks herunterladen
Ihr erstes Projekt vorbereiten
Den Code eingeben
Das Projekt und laufen lassen
Sie sind wahrscheinlich begierig darauf, mit dem Programmieren in C zu beginnen. Ich will nicht Ihre Zeit vergeuden.
Was Sie zum Programmieren benötigen
Um Ihren Computer, Ihr Tablet, Ihr Handy, Ihre Spielkonsole oder was auch immer vollständig zu beherrschen, benötigen Sie einige Softwaretools. Die gute Neuigkeit ist, dass zum jetzigen Zeitpunkt, im 21. Jahrhundert, all diese Tools über das Internet frei und einfach verfügbar sind. Sie müssen nur wissen, was erforderlich ist und wo Sie es bekommen.
Tools zum Programmieren besorgen
Die beiden wichtigsten Dinge, die Sie für den Start Ihres Programmierabenteuers benötigen sind:
Ein Computer
Ein Internetzugang
Der Computer ist Ihr wichtigstes Instrument zum Schreiben und Erstellen von Programmen. Sogar wenn Sie nur ein Spiel für die Xbox schreiben, benötigen Sie zum Programmieren einen Computer. Der Computer kann ein PC oder ein Macintosh sein. Er kann mit Windows oder Linux arbeiten.
Der Internetzugang ist notwendig, um die restlichen Programmiertools zu bekommen. Sie benötigen einen Texteditor, um den Code zu schreiben, und einen Compiler, um den Code in ein Programm zu verwandeln. Der Compiler kommt gewöhnlich zusammen mit anderen Tools, die Sie brauchen, wie einem Linker und einem Debugger. All diese Tools finden Sie kostenfrei im Internet.
Flippen Sie nicht aus! Die Begriffe Compiler, Linker und Debugger werden alle in Kapitel 2 erläutert.
Eine Entwicklungsumgebung (IDE) besorgen
Es ist völlig normal, dass Sie Ihre Reise in die Programmierwelt beginnen, indem Sie einen Texteditor, einen Compiler und andere Tools zusammenstellen. Die Verwendung von getrennten Programmen in der Kommandozeile in einem Bildschirmfenster ist die Art, in der ich in grauer Vorzeit das Programmieren gelernt habe. Das ist ein Weg, den man gehen kann, aber er ist etwas altmodisch.
Der geradlinige, professionelle Weg zum Erstellen von Codes besteht heutzutage in der Verwendung einer Integrierten Entwicklungsumgebung (engl. Integrated Development Environment), die von den echten Programmierern IDE genannt wird. Sie verbindet alle Tools, die Sie zum Programmieren benötigen, zu einer kompakten, furchterregenden und einschüchternden Einheit.
Sie verwenden die IDE zum Schreiben von Codes, zum Erstellen von Programmen, zum Auffinden von Fehlern und zur Durchführung aller Arten von Zauberei, obwohl es nostalgisch ist, einen separaten Texteditor oder Compiler zu verwenden. Alle Profis nutzen eine IDE. Das empfehle ich für den Gebrauch in diesem Buch ebenfalls.
Die Beschaffung einer IDE löst unzählige Probleme wie das Einrichten eines Compilers, die Konfigurierung des Texteditors und die Aufgabe, diese verschiedenen Elemente dazu zu bringen, zusammen zu arbeiten. Eine IDE zu haben, ist der beste Weg, um mit dem Programmieren zu beginnen – worauf Sie wahrscheinlich ziemlich scharf sind.
Die IDE Code::Blocks betrachten
Sie werden im Internet mehr als genug IDEs finden und sie sind alle ziemlich gut. Doch um konsistent zu sein, arbeitet dieses Buch mit der IDE Code::Blocks, die unter Windows, Mac OS X und Linux läuft. Sie hat alles, was Sie benötigen.
Wenn Sie bereits eine IDE haben – großartig! Ich bin sicher, dass sie das gleiche wie Code::Blocks kann, obwohl in diesem Buch die Abbildungen und Beispiele, vor allem in den ersten Kapiteln, typisch für Code::Blocks sind.
Code::Blocks installieren
Sie erhalten Code::Blocks im Internet auf folgender Webseite: www.codeblocks.org
Diese Webseite wird sich zweifellos im Verlauf der Zeit ändern, so dass sich die folgenden Schritte zur Installation der IDE etwas ändern können:
1. Verwenden Sie den Webbrowser Ihres Computers, um die Webseite Code::Blocks zu besuchen.
2. Gehen Sie in den Bereich zum Herunterladen.
Laden Sie eine binäre oder lauffähige Version von Code::Blocks herunter. Sie muss für das Betriebssystem Ihres Computers geeignet sein. Suchen Sie außerdem eine Version mit einem C–Compiler, wie etwa dem gebräuchlichen Compiler MinGW.
3. Klicken Sie auf den Link zum Anzeigen der binären oder lauffähigen Installation von Code::Blocks.
Als dieses Buch in den Druck ging, hieß der Link Downl oad t he Binar y Rel ease.
4. Wählen Sie das Betriebssystem Ihres Computers oder scrollen Sie zu dem Teil des Bildschirms, der Optionen für dieses Betriebssystem enthält.
Sie finden Abschnitte (oder Seiten) für Windows, Linux und Mac OS X.
5. Klicken Sie auf den Link, der den für Ihr Betriebssystem geeigneten Compiler und die entsprechende IDE herunterlädt.
Die Version des IDEs und des Compilers für Windows ist folgendermaßen benannt:
codeblocks-xx.yymingw-setup.exe
xx und yy sind dabei Platzhalter für die Nummern der jeweiligen Version des Code::Blocks.
In Linux können Sie je nach Ihrer Linux–Distribution, kurz Distro, die 32– oder die 64–Bit–Version und das von Ihnen gewünschte Dateiformat auswählen. Ich empfehle eine stabile Version.
Die Nutzer von Mac OS X können wählen, ob sie eine .dmg–Datei (Disk–Image–Datei) oder eine herkömmliche Zip–Datei herunterladen wollen.
6. Extrahieren Sie das Code::Blocks–Installationsprogramm aus dem Archiv.
Ungeachtet des Für Dummies–Titels dieses Buches gehe ich davon aus, dass Sie mit .zip, .gz, .dmg und anderen Dateiformaten in dem von Ihnen genutzten Betriebssystem erfolgreich arbeiten können.
7. Starten Sie das Installationsprogramm.
Achten Sie auf die Anweisungen auf dem Bildschirm. Führen Sie eine Standardinstallation durch; Sie müssen zu diesem Zeitpunkt nichts individuell einrichten.
Wenn Sie unter Windows arbeiten, stellen Sie sicher, dass Sie den MinGW–Compiler installieren. Wenn diese Option nicht im Fenster für die Wahl der Komponenten angezeigt wird, haben Sie die falsche Version von Code::Blocks heruntergeladen. Dann gehen Sie zurück zu Schritt 5.
8. Beenden Sie die Installation, indem Sie Code::Blocks laufen lassen.
Auf meinem Bildschirm erschien eine Anzeige, die fragte, ob ich Code::Blocks laufen lassen möchte. Ich klickte auf »Yes«. Wenn Sie diese Abfrage nicht sehen, verwenden Sie das Betriebssystem des Computers, um Code::Blocks so zu starten wie jedes andere Programm auch.
9. Schließen Sie das Fenster zur Installation.
Auch wenn Sie Code::Blocks über den Bildschirm laufen sehen, müssen Sie trotzdem die Installation beenden, indem Sie das Installationsfenster schließen.
Der folgende Abschnitt bietet einen Überblick über die Benutzeroberfläche des Code::Blocks–Programms.
Eine Reise durch den Arbeitsbereich von Code::Blocks
Wenn Code::Blocks noch nicht gestartet ist, schreiten Sie voran, indem Sie es starten. Man startet es wie jedes andere Programm: Gehen Sie zu seinem Icon im Startmenü oder zu dem entsprechenden Icon auf der Bildschirmoberfläche. Dies ist der einfachste Weg zum Starten von Code::Blocks unter Windows 8.
Abbildung 1.1 zeigt den Arbeitsbereich, wie der offizielle Name des gewaltigen Mosaiks aus Fenstern lautet, die Sie auf dem Bildschirm sehen.
Abbildung 1.1 Der Arbeitsbereich von Code::Blocks
Die Einzelheiten in Abbildung 1.1 sind relativ klein, aber Sie sollten die wesentlichen Bereiche kennen, die in der Abbildung angegeben sind:
Symbolleisten (engl. Toolbars): Diese vertrackten Leisten, die mit verschiedenen Kommandozeichen verziert sind, sind am oberen Ende des Code::Blocks–Fensters angeordnet. Es gibt acht Leisten, die Sie umordnen, anzeigen oder verstecken können. Legen Sie sich nicht mit ihnen an, bevor Sie sich mit der Benutzeroberfläche angefreundet haben.
Verwaltung (engl. Management): Das Fenster im linken Bereich des Arbeitsbereichs zeigt vier Reiter (engl. Tabs), obwohl Sie vielleicht nicht alle vier gleichzeitig sehen. Es bietet einem praktische Beaufsichtigung Ihrer Programmierbemühungen.
Statuszeile (engl. Status bar): Am unteren Ende des Bildschirms sehen Sie Informationen über das Projekt, den Editor und über andere Aktivitäten, die in Code::Blocks ablaufen.
Editor: Das große Fenster in dem mittleren und rechten Bereich des Bildschirms ist der Bereich, in dem Sie den Code eingeben.
Protokolldateien (engl. Logs): Im unteren Teil des Bildschirms befindet sich ein Fenster mit sehr vielen Reitern. Jeder Reiter zeigt Informationen über Ihr Programmierprojekt an. Der Reiter, den Sie am häufigsten verwenden, heißt Buil d Log.
Das Menü View kontrolliert die Sichtbarkeit eines jeden in dem Fenster angezeigten Posten. Wählen Sie das dazugehörige Kommando sowie Manager aus dem Menü View, um diesen Posten zu zeigen oder zu verstecken. Kontrollieren Sie die Symbolleisten, indem Sie das Untermenü View|Tool bar s verwenden.
Vergrößern Sie das Code::Blocks–Fenster, so dass es den gesamten Bildschirm füllt. Sie benötigen all diesen Platz.
Jeder der verschiedenen Bereiche auf dem Bildschirm – Verwaltung, Editor, Protokolldateien – kann in seiner Größe verändert werden: Setzen Sie den Mauszeiger zwischen zwei Bereiche. Wenn sich der Mauszeiger in ein doppelpfeilartiges Etwas verwandelt, können Sie die Maus so ziehen, dass sich die Größe eines Bereichs ändert.
Der Editor und die Protokolldateien weisen gekennzeichnete Benutzeroberflächen auf. Jedes Fenster zeigt viele »Blätter« mit Informationen. Wechseln Sie zwischen den Blättern, indem Sie einen anderen Reiter wählen.
Ihr erstes Projekt
Bei der herkömmlichen Computerprogrammierung verwendete man, voneinander getrennt, einen Texteditor, einen Compiler und einen Linker. Die Eingabeaufforderungszeile (engl. command prompt) wurde benutzt, um die Kommandos zum Editieren, Kompilieren und Linken einzugeben. Es war ein linearer Prozess, und war für kleine Projekte sehr gut geeignet. Mit dem Aufkommen neuer Betriebssysteme und der Programmierung von mobilen Geräten und Spielkonsolen wird diese lineare Methode jedoch höchst ineffizient.
Die moderne IDE besitzt immer noch die Elemente eines Editors, Compilers, Linkers, Debugger und anderer Programmiertools. Sie verfügt über Eigenschaften, die zum Erzeugen von grafischen Programmen und komplexen Projekten erforderlich sind. Daher ist die IDE darauf ausgerichtet, nicht nur mit einzelnen Programmen, sondern mit Projekten zu arbeiten.
In diesem Abschnitt wird der Prozess des Erstellens eines Projekts mit der IDE Code::Blocks erläutert.
Ein neues Projekt erstellen
Die in diesem Buch vorgestellten Beispiele sind ausschließlich Tastaturanwendungen; das bedeutet, dass sie im Textmodus in einem Computerfenster laufen. Meiner Meinung nach ist das der beste Weg zum Lehren von grundlegenden Programmierkonzepten, ohne Sie mit einem großen, komplexen, grafischen Scheusal von Programm zu erschlagen. Auch wenn eine IDE viel leistungsfähiger ist, verwenden sie Sie in diesem Buch, um einfache, tastaturbasierte Programme zu erzeugen. Sie arbeitet folgendermaßen:
1. Starten Sie Code::Blocks.
Sie sehen den Start–Here–Bildschirm, der das Logo von Code::Blocks und einige Links anzeigt. Wenn Sie den Start–Here–Bildschirm nicht sehen, dann wählen Sie File|Close Wor kspace.
2. Klicken Sie auf den Link Create a New Project.
Die in Abbildung 1.2 gezeigte Dialogbox New f r om Templ at e erscheint.
3. Wählen Sie Console Application aus und klicken Sie auf das Feld Go.
Der Tastaturanwendungs-Wizard erscheint.
4. Klicken Sie auf das Feld Next.
5. Wählen Sie C als die Sprache aus, die Sie verwenden wollen und klicken Sie dann auf das Feld Next.
C unterscheidet sich stark von C++ – Sie können in der einen Sprache Sachen machen, die in der anderen nicht erlaubt sind.
6. Geben Sie ex0101 als Projekttitel ein.
Alle Codes in diesem Buch sind nach diesem Schema benannt: Die Buchstaben ex (für exercise = Übung), gefolgt von einer zweistelligen Kapitelnummer und einer zweistelligen Projektnummer.
Wenn Sie den Projekttitel festlegen, wird der Dateiname des Projekts automatisch ausgefüllt.
7. Klicken Sie auf das Browse–Feld rechts in der Textbox mit dem Namen Folder to Create Project In.
Ich empfehle, dass Sie einen gesonderten Ordner für alle Projekte in diesem Buch anlegen.
8. Verwenden Sie das Feld Make New Folder in der Dialogbox Browse for Folder, um einen neuen Projektordner zu erzeugen.
Wenn Sie bereits einen Ordner für Programmierprojekte haben, erzeugen Sie einen neuen Unterordner mit dem Namen BegC4D für die Projekte in diesem Buch. Der Name des Ordners beruht auf dem Titel der amerikanischen Ausgabe dieses Buches Beginning Programming with C For Dummies.
Wenn Sie keinen Ordner für Programmierprojekte im Hauptordner Ihres Benutzerkontos haben, erzeugen Sie einen Unterordner namens prog und dann einen weiteren Ordner namens c. Zum Schluss erzeugen Sie einen Unterordner namens BegC4D und wählen ihn zum Speichern des Projekts.
In meinem Computer, der mit Windows 7 arbeitet, sind die Projekte aus diesem Buch in folgendem Ordner gespeichert:
C:\Users\Dan\prog\c\BegC4D\
9. Klicken Sie auf das Feld OK, um den Ordner auszuwählen, und schließen Sie die Dialogbox.
10. Klicken Sie auf das Feld Next.
Der nächste Bildschirm (der letzte) ermöglicht Ihnen, einen Compiler auszuwählen und zu entscheiden, ob Sie eine Debug– oder eine Veröffentlichungsversion oder beides anlegen wollen.
Die Auswahl des Compilers ist in Ordnung; der Compiler GNU GCC (oder was auch immer in dem Fenster angezeigt wird) ist genau der, den Sie haben wollen.
11. Entfernen Sie das Häkchen an der Zeile Create Debug Configuration.
Sie benötigen diese Konfiguration nur, wenn Sie ein Programmierdilemma beheben müssen (engl. debug), das Ihnen Kopfzerbrechen bereitet. In Kapitel 25 wird diese Situation behandelt.
12. Klicken Sie auf das Feld Finish.
Abbildung 1.2 Hier starten neue Projekte.
Code::Blocks erzeugt ein Gerüst Ihres Projekts, das Sie möglicherweise dennoch nicht im Fenster des Programms sehen. Bei einem einfachen Kommandozeilenprojekt ist das Gerüst eine Quelltextdatei – eine Klartextdatei, die den C–Programmiercode enthält, um Ihnen zu helfen, Ihr Projekt zu starten.
Lesen Sie im folgenden Abschnitt weiter.
Den Quelltext überprüfen
Wenn Code::Blocks ein neues Projekt hervorzaubert, erzeugt es eine Handvoll grundlegender Elemente, damit Sie anfangen können. Bei einer Tastaturanwendung beinhaltet dies nur ein Element: Die Quelltextdatei main.c.
Eine Quelltextdatei ist eine Klartextdatei, die den Programmiercode enthält. In Kapitel 2 werden die Einzelheiten erläutert, doch im Moment reicht es aus zu wissen, dass Code::Blocks diese Datei jedes Mal automatisch erzeugt, wenn Sie ein neues Projekt starten. Es gibt Ihnen sogar einen Mustercode vor, mit dem Sie starten können, obwohl Sie meistens das Gerüst löschen und von vorn anfangen, indem Sie Ihren eigenen Code schreiben.
Projekte in der IDE werden in dem Kasten Management auf der linken Seite des Bildschirms (siehe Abbildung 1.1) aufgelistet. Wenn Sie diesen Kasten nicht sehen, drücken Sie + auf der Tastatur oder wählen Sie View|Manager aus dem Menü aus.
Abbildung 1.3 zeigt den Managementkasten mit dem ausgewählten Projektreiter. Das derzeitige Projekt ist geöffnet, aber Sie können auch andere Projekte sehen.
Abbildung 1.3 Projekte in der IDE
Bei einem neuen Tastaturanwendungsprojekt wird die Quelltextdatei main.c genannt. Sie wird in dem Quellordner des Projekts gespeichert. Wenn Sie die Quelltextdatei nicht sehen (siehe Abbildung 1.3), dann öffnen Sie den Quellordner, um ihn anzuzeigen.
Machen Sie einen Doppelklick auf das Element main.c im Quellordner, um die Datei im Editorfenster zu öffnen. Das vorgeschriebene Codegerüst wird in Listing 1.1 angezeigt. Es handelt sich um einen richtigen Code für ein reales Programm in C, welches Sie erstellen können, wie im nächsten Abschnitt erläutert wird.
Listing 1.1: Das Code::Blocks–Gerüst
#include <stdio.h> #include <stdilib.h> int main() { printf("Hello world!\n"); return 0; }
In Kapitel 2 werden die Einzelheiten zu Listing 1.1 erläutert. Im Moment können Sie den farbenprächtigen Text und die schöne Formatierung bewundern.
Das Editorfenster zeigt Zeilennummern an. Wenn Sie sie nicht sehen, wählen Sie Edit|Edit or T weaks|Show Line Number s. In diesem Buch wird davon ausgegangen, dass Sie die Zeilennummern sehen können, um Bezug darauf nehmen zu können.
Die Zeilennummern sind kein Teil des C–Codes. Sie werden zum Bearbeiten benutzt; aber auch wenn Fehler auftreten, beziehen sich die Angaben auf die Zeilennummern in dem Code.
Sie können den Einzug des Tabulators festlegen, indem Sie Edit |Edit or T weaks|Tab Size auswählen und dann die Größe wählen. Ich bevorzuge vier Leerzeichen pro Einzug.
Der Farbton des Textes wird mithilfe von Edit |Highl ight Mode|C/C++ festgelegt. Um die Hervorhebungen zu entfernen, wählen Sie das Element Pl ain Text aus dem Untermenü Highl ight Mode aus. (Es ist dort das erste Element.)
Das Projekt erstellen und laufen lassen
Um ein Programm in Code::Blocks zu erzeugen, müssen Sie das Projekt erstellen. Dieser einzelne Schritt bedingt verschiedene Dinge; ich vermeide es allerdings, die Einzelheiten vor Kapitel 2 zu diskutieren. Wenn Sie bereits Ihr erstes Projekt ex0101 begonnen haben, es geöffnet ist und in Code::Blocks angezeigt wird, sind Sie so weit, dass Sie es erstellen können. Beachten Sie folgende Schritte:
1. Stellen Sie sicher, dass das Projekt, das Sie erstellen wollen, im Managementfenster aktiviert ist.
Aktivierte Projekte erscheinen in Fettdruck. Wenn mehr als ein Projekt im Projektfenster angezeigt wird, aktivieren Sie dasjenige, mit dem Sie arbeiten wollen, indem Sie mit der rechten Maustaste den Projektnamen anklicken (über den Code::Blocks–Icon) und das Kommando Act ivat e Pr oject wählen.
2. Wählen Sie Build|Build aus dem Menü.
Der Reiter Buil d Log in der Protokolldatei zeigt die Ergebnisse des Erstellen eines Projektes an. Sie sehen dort einige Zeilen Text; die Einzelheiten dazu werden in Kapitel 2 erläutert.
Da Sie sich nicht in das Quelltextgerüst eingemischt haben, wird das Projekt ohne Fehler übersetzt; Sie sehen den Text im Überblick, der null Fehler und null Warnungen anzeigt. Gut. Wenn Fehler auftreten, was häufig genug passiert, machen Sie sich daran, sie zu beheben. Die Fehlermeldungen helfen in dieser Hinsicht; dieses Thema wird in Kapitel 3 erläutert.
Das Erstellen eines Projekts ist aber nur die halbe Arbeit. Die andere Hälfte besteht im Laufenlassen des Projekts, also das Ausführen des fertiggestellten Programms innerhalb der IDE.
Um das aktuelle Projekt laufen zu lassen. wählen Sie Build|Run aus dem Menü. Sie sehen, dass das Bildschirmfenster erscheint und die Ausgaben des Programms sowie etwas überflüssiger Text aufgelistet sind, wie in Abbildung 1.4 gezeigt.
Abbildung 1.4 Laufenlassen eines Programms
Drücken Sie , um das Eingabeaufforderungsfenster zu schließen.
Die Tastenkombinationen für Buil d, Run und Buil d and Run sind + , + und . Es ist aber nicht nötig, sich diese Abkürzungen zu merken – sie sind im Menü aufgelistet.
Befehlsfelder zum Erstellen und Ausführen eines Projekts befinden sich in der Symbolleiste des Compilers. Sie finden ein gelbes Getriebe–Icon für Buil d, einen grünen Pfeil für Run und eine Kombination aus beiden für den Befehl Buil d and Run.
Die Ausgabe des Programms erscheint im oberen Teil des Eingabeaufforderungsfensters (siehe Abbildung 1.4). Die letzten beiden Zeilen werden von der IDE erzeugt, wenn das Programm läuft. Der Text enthält einen Wert, der vom Programm an das Betriebssystem zurückgegeben wird, eine null und die Angabe, wie lange das Programm läuft (9 Milli-sekunden). Die Anzeige Press any key to continue besagt, dass Sie mit das Fenster schließen können.
Speichern und schließen
Wenn Sie ein Projekt erstellt haben oder eine kleine Änderung vorgenommen haben, sollten Sie speichern. In einer IDE müssen Sie allerdings verschiedene Dinge speichern, etwa die Quelltextdatei, den Arbeitsbereich und das Projekt. Befehle zum Speichern dieser verschiedenen Punkte finden Sie in dem Menü Fil e.
Ein praktischer Weg, um alles auf einmal zu speichern, ist die Verwendung des Befehls Save Ever yt hing. Diesen Befehl finden Sie in dem Menü Fil e, die praktische Abkürzung auf der Tastatur ist + + (oder + + bei einem Macintosh).
Wenn Sie das Projekt bisher noch nicht gespeichert haben, machen Sie es jetzt.
Sie können das aktuelle Projekt auch schließen, wenn Sie Fil e|Cl ose Pr oject wählen.
Verlassen Sie Code::Blocks, wenn Sie eine Pause einlegen möchten.
Keine Sorge! Code::Blocks ermahnt Sie, wenn Dateien oder Projekte noch ungespeichert sind. Speichern, dann schließen.
Wenn der Befehl Save Ever yt hing nicht verfügbar ist, gehen Sie davon aus, dass alles in Ordnung und bereits gespeichert ist.
Der Standardbefehl zum Speichern in Code::Blocks – entweder Fil e|Save oder + – wird verwendet, um Dateien wie Ihre Quelltextdatei in der Sprache C zu speichern. Ich empfehle Ihnen dringend, Ihre Quelltextdateien zu speichern, wenn Sie sie bearbeitet haben.
Kapitel 2
Die Sache mit dem Programmieren
IN DIESEM KAPITEL
Die Geschichte des Programmierens verstehen
Quelltext erzeugen und in Objektcode verwandeln
Mithilfe des Linkers ein Programm erzeugen
Das endgültige Programm testen
Es wird Programmieren genannt, auch wenn es die echten Programmierer unter dem Wort Codieren kennen – der Prozess, bei dem ein Mensch Informationen schreibt, die manchmal einem kryptischen Englisch ähneln, die dann irgendwie in Anweisungen für ein elektronisches Dingsbums übersetzt werden. Am Ende verleiht diese stille und einsame Kunst Personen die Macht, die Elektronik zu kontrollieren. Das ist eine großartige Sache. Das ist das Programmieren.
Die Geschichte des Programmierens
Es gibt nur wenige Bücher über das Programmieren, in denen die aufregende, dramatische Geschichte des Programmierens nicht beschrieben wird. Für mich als Programmierer ist es schwierig, nicht darüber zu schreiben; meiner Begeisterung lasse ich auch auf Cocktailpartys immer freien Lauf. Betrachten Sie diesen Abschnitt also als freiwilligen Lesestoff, obwohl ein Überblick darüber, was das Programmieren früher war und was es heute ist, Ihnen helfen kann, diese Kunstform besser zu verstehen.
Kurz gesagt ist Programmieren der Prozess, einem Ding zu sagen, was es machen soll. Dieses Dingsbums ist die Hardware; das Programm ist die Software.
Ein Überblick über die frühe Geschichte des Programmierens
Das erste zu programmierende Dingsbums war die analytische Maschine (engl. Analytical Engine) von Charles Babbage im Jahr 1822. Die Programmierung erfolgte durch die physische Änderung der Werte, die durch eine Säule aus Zahnrädern dargestellt wurden. Die Maschine sollte dann das Ergebnis irgendeiner langweiligen, komplexen, mathematischen Gleichung berechnen.
In den Jahren nach 1940 wurden frühe elektronische Computer auf ähnliche Weise wie die analytische Maschine von Babbage programmiert. Ein wesentlicher Unterschied war, dass statt dem Umordnen von Zahnrädern eher Anweisungen festverdrahtet in den elektronischen Schaltkreis eingegeben wurden. »Programmierung« bedeutete größtenteils »Neuverdrahtung«.
Mit der Zeit wurde die Arbeit des Neuverdrahtens durch Reihen von Schaltern ersetzt. Die Anweisungen für den Computer wurden durch das Umlegen der Schalter in einer bestimmten Weise eingegeben.
Professor John von Neumann bereitete in den Jahren nach 1950 der modernen Programmierung von Computern den Weg. Er führte das Fällen von Entscheidungen in den Prozess ein, sodass Computer eine wenn–dann–Wahl treffen können. Professor von Neumann entwickelte auch das Konzept der Wiederholungsschleife und des Unterprogramms.
Es war Admiral Grace Hopper, die den ersten Compiler entwickelte, also ein Programm, das andere Programme erzeugt. Ihr Compiler nahm Wörter und Redewendungen in Englisch auf und wandelte sie in einen Code um. Somit war die Programmiersprache geboren.
Die erste bedeutende Programmiersprache in den 50er Jahren des letzten Jahrhunderts war FORTRAN. Der Name stammt von Formula Translator. Andere Programmiersprachen aus dieser Zeit sind unter anderen COBOL, Algol, Pascal und BASIC.
Die Einführung der Programmiersprache C
Die Programmiersprache C wurde 1972 in den AT&T Bell Labs von Dennis Ritchie entwickelt. Sie kombiniert Elemente der Sprachen B und BCPL, aber auch etwas Pascal steckt darin. Mr. Ritchie verwendete zusammen mit Brian Kernighan C, um das Betriebssystem Unix zu entwickeln. Ein C–Compiler war seither ein Teil dieses Betriebssystems.
In den frühen 80er Jahren des letzten Jahrhunderts verwendete Bjarne Stoustroup C als Grundlage der objektorientierten Programmiersprache C++. Der ++ (plus–plus)–Teil des Namens ist gewissermaßen ein Insiderwitz, den Sie besser verstehen werden, wenn Sie Kapitel 11 gelesen haben.Das Ziel von Mr. Stoustroup war, dass C++ der Nachfolger von C wird. In mancher Hinsicht ist das der Fall, auch wenn C weiterhin beliebt ist.
Die Programmiersprache D wurde im Jahr 2000 eingeführt. Sie ist nicht so bekannt wie C++ und hat nur optisch Ähnlichkeit mit C. Trotzdem deutet der Name D darauf hin, dass es die nächste Sprache nach C ist. Oder in diesem Fall nach C++.
Die Programmiersprache B, auf der C basiert, wurde nach dem B in dem Wort Bell Labs benannt.
BCPL steht für Basic Combined Programming Language.
Die Programmiersprache C++ hat ziemlich viel Ähnlichkeit mit C, aber sie ist nicht bloß eine Erweiterung oder ein Zusatz. Es ist einfacher, C++ zu lernen, wenn man C kennt, aber es ist nicht einfach, zwischen beiden Sprachen hin und her zu wechseln.
Unglücklicherweise habe ich keine Idee, wie man »Bjarne Stoustroup« ausspricht.
Der Prozess des Programmierens
Unabhängig davon, was Sie programmieren oder welche Sprache Sie verwenden: Bestimmte Schritte in dem Prozess sind stets die gleichen. Dieser Abschnitt bietet Ihnen einen Überblick darüber.
Das Programmieren verstehen
Der Zweck des Programmierens ist, eine Sprache zu wählen und verschiedene Instrumente zu nutzen, um ein Programm zu erstellen. Die Sprache ist C, die Instrumente sind Editor, Compiler und Linker – oder eine IDE, die alle drei verknüpft. Das Endergebnis ist ein Programm, das die Hardware so steuert, dass sie etwas macht. Bei dieser Hardware kann es sich um einen Computer, ein Tablet, ein Telefon, einen Mikrocontroller oder was auch immer handeln.
Beim Prozess des Programmierens geht man Schritt für Schritt vor:
1. Man schreibt den Quellcode.
2. Man übersetzt (kompiliert) den Quellcode in Objektcode.
3. Man verbindet den Objektcode mit Bibliotheken, um ein Programm zu erstellen.
4. Man lässt das Programm laufen und testet es.
Nehmen Sie sich einen Moment Zeit, um diesen Prozess zu verinnerlichen: schreiben, übersetzen, verbinden, laufen lassen. Der Mensch schreibt einen Quellcode. Der Quellcode wird in Objektcode übersetzt. Der Objektcode wird mit einer C–Bibliothek verknüpft, um ein Programm zu erzeugen. Dann, endlich, läuft das Programm.
In der Realität läuft es eher folgendermaßen ab:
1. Man schreibt den Quellcode.
2. Man übersetzt den Quellcode in Objektcode.
3. Man behebt Fehler und wiederholt die Schritte 1 und 2.
4. Man verknüpft den Objektcode mit Bibliotheken, um das Programm zu erzeugen.
5. Man behebt Fehler und wiederholt die Schritte 1 bis 4.
6. Man lässt das Programm laufen und testet es.
7. Man behebt Programmfehler (engl. Bug Fixing), indem man den gesamten Prozess wiederholt.
Oder, was häufiger vorkommt: Das Programm läuft gut, doch Sie möchten eine Funktion hinzufügen oder ein Element weiterentwickeln. Dann wiederholt man alles.
Hoffentlich sind die Schritte 3, 5 und 7 nicht allzu häufig notwendig. Trotzdem müssen Sie in einem Programmierkreislauf häufig Fehler beheben.
Die guten Neuigkeiten bestehen darin, dass der Computer brav die Fehler meldet und Ihnen sogar zeigt, wo sie sind. Das ist besser als einen Fehler in kilometerlangen Drähten, wie zur Zeit des ENIAC (Electronic Numerical Integrator and Computer), aufzuspüren.
Wenn Sie eine IDE verwenden, werden die Schritte des Übersetzens und Verbindens durch den Befehl Buil d ausgeführt. Die Schritte Übersetzen, Verbinden und Laufen lassen werden durch den Befehl Buil d and Run ausgelöst. Ungeachtet des Ausdrucks Build übersetzt die IDE Objektcode, verbindet Bibliotheken und erstellt ein endgültiges Programm.
Einer meiner Freunde, der professionell programmiert, schlug vor, dass diese Kunstform Debugging (engl. für Fehlerbehebung) statt Programmierung heißen sollte.
Die Legende besagt, dass der erste Computerfehler (engl. Computer Bug) buchstäblich ein Insekt war, das Grace Hopper in der Verdrahtung eines frühen Computers fand. Es gibt aber einige Zweifel an dieser Legende, vor allem, wenn man bedenkt, dass das englische Wort bug (dt. Insekt) schon seit Shakespeares Zeiten verwendet wird, um etwas Skurriles oder Seltsames zu beschreiben.
Quellcode schreiben
Der Quellcode (oder Quelltext) verkörpert den Teil des Prozesses, der die Programmiersprache selber enthält. Sie verwenden einen Texteditor zum Schreiben einer Quelltextdatei.
In diesem Buch wird der Quellcode in Listings angegeben, wie das Beispiel in Listing 2.1 zeigt.
Listing 2.1: Das Standardprogramm »Hello World«
#include <stdio.h> int main() { puts("Sei gegrüßt, Mensch."); return 0; }
Zeilenzahlen werden in den Listings nicht angezeigt, da es Sie verwirren könnte. Außerdem werden Zeilennummern im Editor angegeben, wenn Sie es eingeben.
Jetzt sollten Sie den Quelltext aus einem Listing als Teil einer Aufgabe eingeben, zum Beispiel:
Übung 2.1: Starten Sie ein neues Projekt in Code::Blocks. Nennen Sie das Projekt ex0201.
Führen Sie es aus: Erfüllen Sie Übung 2.1 und starten Sie gemäß der folgenden Schritte ein neues Projekt namens ex0201 in Code::Blocks:
1. Erzeugen Sie in Code::Blocks eine neue Tastaturanwendung, ein C–Projekt namens ex0201.
Lesen Sie in Kapitel 1 nach, wenn Sie diesen Schritt absolut nicht verstehen.
2. Geben Sie den Code aus Listing 2.1 in den Editor ein.
Sie können das von Code::Blocks gegebene Gerüst löschen oder es einfach so bearbeiten, dass das Ergebnis mit Listing 2.1 übereinstimmt.
3. Speichern Sie die Quelltextdatei, indem Sie den Befehl File|Save File auswählen.
Da haben Sie es. Sie haben gerade den ersten Schritt im Prozess des Programmierens beendet – das Schreiben des Quellcodes. Im nächsten Abschnitt setzen Sie Ihre Reise mithilfe des Compilers fort.
Alle C–Quelltextdateien enden mit der Dateinamenserweiterung (Extension) .c (»dot–see«).
Wenn Sie Windows verwenden, empfehle ich, dass Sie die Einstellungen des Ordners so wählen, dass die Dateinamenserweiterung angezeigt wird.
In C++ haben die Quelltextdateien die Erweiterung .cpp (»dot–see–pee–pee«). Ich sollte es unterlassen, hier einen kindischen Witz zu bringen.
Quelltextdateien werden genauso benannt wie alle anderen Dateien auf einem Computer auch. Gewöhnlich hat ein kleines Programm den gleichen Quelltextdateinamen wie das endgültige Programm. Wenn Ihr Programm puzzle heißt, dann heißt der Quelltext puzzle.c. Der Dateiname main.c wird von Code::Blocks verwendet, doch er muss nicht unbedingt main.c lauten.
In Code::Blocks ist der endgültige Dateiname der gleiche wie der Name des Projekts, so dass eine Änderung des Quelltextdateinamens nicht wichtig ist.
In Objektcode verwandeln
Ein Compiler ist ein Programm, das Text aus einer Quelltextdatei liest und diesen Text – eine Programmiersprache – in etwas übersetzt, das Objektcode genannt wird. In C bearbeitet der Compiler auch spezielle Instruktionen, die Präprozessordirektiven genannt werden.
Listing 2.1 enthält beispielsweise folgende Präprozessordirektive:
#include <stdio.h>
Die Direktive include weist den Compiler an, die Header–Datei stdio.h ausfindig zu machen. Die Inhalte dieser Datei werden dem Quelltext hinzugefügt; anschließend werden beide durch den Compiler in eine Objektcodedatei verwandelt. Die Objektcodedatei hat den gleichen Namen wie die Quelltextdatei, aber mit der Dateinamenerweiterung .o (»dot–oh«).
Wenn der Compiler Ihren C–Code in Objektcode übersetzt, überprüft er ihn auf gängige Fehler, fehlende Elemente und andere Aspekte. Wenn etwas falsch ist, zeigt der Compiler eine Fehlerliste an. Um die Fehler zu beheben, überarbeiten Sie den Quellcode und probieren Sie erneut, den Text zu übersetzen.
Fahren Sie mit Übung 2.1 fort: In Code::Blocks erfolgt das Übersetzen durch folgenden Schritt:
4.Choose Build|Compile Current File.
Das Fenster Buil d Log zeigt die Ergebnisse an, die keine Fehler und keine Warnungen enthalten. Gut, aber wenn Sie sich vertippt haben, dann überprüfen Sie Ihren Quelltext anhand von Listing 2.1 im vorangegangenem Abschnitt.
Normalerweise würden Sie an dieser Stelle, wie in Kapitel 1 erläutert, den Befehl Buil d wählen. Aber wenn Sie nur umwandeln wollen, verwenden Sie den Befehl Compil e Cur r ent Fil e.
Bei Erfolg erzeugt der Compiler eine Objektcodedatei. Da die Quellcodedatei main.c heißt, heißt die Objektcodedatei main.o.
In Code::Blocks findet man die Objektcodedatei im Projektordner innerhalb der Unterordner obj/Release oder obj/Debug.
Mit der Bibliothek von C verknüpfen
Der Linker ist das Werkzeug, das das endgültige Programm erzeugt. Er macht das, indem er die Objektcodedatei mit den Bibliotheken der Programmiersprache C verbindet. Die Bibliotheken enthalten die aktuellen Instruktionen, die dem Computer (oder einem anderen Gerät) sagen, was zu machen ist. Diese Instruktionen werden auf der Grundlage der Kurzschriftanweisungen ausgewählt und ausgeführt, die im Objektcode enthalten sind.
In Listing 2.1 steht beispielsweise das Wort puts. Dieses Wort ist in C eine Funktion, die in diesem Text in der Form puts() geschrieben wird. Sie steht für put string.
Der Compiler übersetzt puts() in ein Token (eine bestimmte Zeichenkette) und speichert dieses Token in der Objektcodedatei main.o.
Der Linker verbindet die Objektdatei mit der Standardbibliotheksdatei der Sprache, um das endgültige Programm zu erzeugen. Wenn Fehler ermittelt werden (an dieser Stelle hauptsächlich unbekannte Token) stoppt der Prozess, genau wie beim Compiler und Sie werden vor dem möglichen Unruhestifter gewarnt. Andernfalls wird ein vollständig funktionierendes Programm erzeugt.
In Code::Blocks wird der Befehl Build zum Verwandeln und Verknüpfen verwendet: Der IDE fehlt ein eigener Befehl zum Verknüpfen.
Fahren Sie mit Übung 2.1 fort: Erstellen Sie das Projekt ex0201. Dieser Schritt sieht wie folgt aus:
5.Wählen Sie den Befehl Build|Build.
Code::Blocks verknüpft die Objektdatei mit der Standardbibliotheksdatei von C, um eine Programmdatei zu erzeugen.
Der nächste und letzte Schritt in dem Prozess besteht darin, dass Programm laufen zu lassen.
Der Text, den ein Programm handhabt, wird als String bezeichnet; dies betrifft jeden Text, der länger als ein einzelner Buchstabe ist. In C wird ein String in Gänsefüßchen eingeschlossen:
"Hallo! Ich bin ein String."
Das endgültige Programm enthält die Bibliothek der Programmiersprache C zusammen mit dem Objektcode. Dies erklärt, warum eine Programmdatei größer als die sie erzeugende Quelltextdatei ist.
Einige C–Programme verbinden sich mit verschiedenen Bibliotheken, je nachdem, was das Programm erfordert. Zusätzlich zu den Standardbibliotheken von C können Sie weitere Bibliotheken verlinken, um mit Grafiken, Vernetzung, Ton und so weiter zu arbeiten. Wenn Sie mehr über das Programmieren lernen, werden Sie entdecken, wie man verschiedene Bibliotheken wählt und verknüpft. In Kapitel 24 werden die Einzelheiten erläutert.
Durchlaufen und testen