Walter Saumweber C++ Programmierhandbuch Walter Saumweber C++ Programmierhandbuch Walter Saumweber: C++ Programmierhandbuch ISBN: 978-3-939084-50-1 © 2007 entwickler.press Ein Imprint der Software & Support Verlag GmbH http://www.entwickler-press.de http://www.software-support.biz Ihr Kontakt zum Verlag und Lektorat: [email protected] Bibliografische Information Der Deutschen Bibliothek Die Deutsche Bibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.ddb.de abrufbar. Satz: text&form GbR, Carsten Kienle Titelgrafik: Melanie Hahn, Maria Rudi Umschlaggestaltung: Caroline Butz Belichtung, Druck & Bindung: M.P. Media-Print Informationstechnologie GmbH, Paderborn Alle Rechte, auch für Übersetzungen, sind vorbehalten. Reproduktion jeglicher Art (Fotokopie, Nachdruck, Mikrofilm, Erfassung auf elektronischen Datenträgern oder andere Verfahren) nur mit schriftlicher Genehmigung des Verlags. Jegliche Haftung für die Richtigkeit des gesamten Werks kann, trotz sorgfältiger Prüfung durch Autor und Verlag, nicht übernommen werden. Die im Buch genannten Produkte, Warenzeichen und Firmennamen sind in der Regel durch deren Inhaber geschützt. Inhaltsverzeichnis Liebe Leserin, lieber Leser! Teil I Grundlagen C++ 13 15 1 Was ist Programmieren? 17 1.1 Was ist eigentlich ein Computerprogramm? 17 1.2 Entwicklungsschritte zum ausführbaren Computerprogramm Aufsetzen des Quellcodes Kompilierung Präprozessor und Linker 20 20 20 22 1.3 Was versteht man unter einer IDE? 23 1.4 Was sind Konsolenprogramme? 24 2 Welchen Compiler sollten Sie verwenden? 2.1 Borland C++-Compiler 29 2.2 Wie finde ich einen passenden Compiler? 30 2.3 Installation des Borland-Compilers 31 3 Ihr erstes C++-Programm 3.1 Die Lösung vorweggenommen C++ und Zwischenraumzeichen 35 37 3.2 Von Anfang an Aufbau von C++-Programmen Funktionen #include <iostream> using namespace std; 39 39 40 43 29 35 44 4 Kompilieren und Ausführen von C++-Programmen 4.1 Was für einen Editor sollten Sie verwenden? 47 47 4.2 Kompilierung 49 4.3 Ausführen der .exe-Datei Ausführung über den Windows-Explorer 52 53 5 Inhaltsverzeichnis 5 Über Programm(ier)fehler 5.1 Unterscheidung der verschiedenen Fehlerarten Syntaxfehler Programmfehler 55 55 57 5.2 Fehlermeldungen »aus Compilersicht« 58 5.3 Historisches C/C++ ANSI/ISO-Standard 60 60 62 Teil II Das C++-ABC 6 55 63 6 Kommentare 65 6.1 Einzeilige Kommentare 65 6.2 Mehrzeilige Kommentare 67 6.3 Einsatz von Kommentaren bei der Fehlersuche 70 7 Syntaxregeln 75 7.1 Textbausteine 75 7.2 Anweisungsende 77 7.3 Blöcke 77 7.4 Leerräume 80 7.5 Programmierstil 83 8 Ausgabe mit cout 8.1 Datenströme 85 8.2 C++ unterscheidet zwischen verschiedenen Datentypen 86 8.3 Ausgabeeinheiten aneinander hängen In der Programmierung gibt es meist mehrere Lösungen Anweisungen auf mehrere Zeilen verteilen Verkettung von Strings 89 89 90 91 8.4 Manipulatoren 92 9 Steuerzeichen 95 9.1 Die Escape-Sequenzen \", \' und \\ 9.2 ASCII-Code 9.3 Darstellung von Zeichen mittels Escape-Sequenzen Ausgabe von Umlauten sowie des Zeichens »ß« 101 103 9.4 Das Steuerzeichen \n 104 9.5 Weitere Steuerzeichen 106 85 95 98 Inhaltsverzeichnis 10 111 10.1 Variablen deklarieren Mehrere Variablen mit einer Anweisung deklarieren 111 113 10.2 Regeln zur Bezeichnerwahl 114 10.3 Zuweisung Additionsoperator (+) Initialisierung string-Variablen 116 121 124 125 10.4 Das Objekt cin 127 10.5 Dreieckstausch 130 11 133 Ausdrücke und Operatoren 11.1 Was ist ein Ausdruck? Mehrere Zuweisungen hintereinander schalten Komplexe Ausdrücke 133 134 135 11.2 Arithmetische Operatoren Der Modulo-Operator 137 138 11.3 Zusammengesetzte Zuweisungsoperatoren 140 11.4 Inkrement- und Dekrementoperatoren 142 11.5 Priorität von Operatoren 145 12 Zahlen mit Nachkommastellen 149 12.1 Die Datentypen double und float sizeof-Operator 149 150 12.2 Literale zur Darstellung von Zahlen mit Nachkommastellen 152 12.3 Ein Programm zur Berechnung der Mehrwertsteuer 155 12.4 Konstanten mit const deklarieren 159 13 C++ Variablen Ausgabe mit Manipulatoren formatieren 165 13.1 Standardeinstellungen Genauigkeit Ausgabeformat 165 165 168 13.2 Die Manipulatoren setiosflags() und resetiosflags() 172 13.3 Die Manipulatoren fixed und scientific 177 13.4 setprecision() setprecision() in Verbindung mit Scientific-/Fixed-Format Anzeige von Nachkommastellen begrenzen 179 182 183 13.5 Feldbreite setzen Füllzeichen festlegen mit setfill() Ausgaben linksbündig/rechtsbündig ausrichten mit left/right 185 186 187 7 Inhaltsverzeichnis 14 191 14.1 Welche Datentypen gibt es noch? Datentypqualifizierer 191 192 14.2 Literale Literale zur Darstellung von ganzzahligen Werten Gleitkommaliterale 197 198 201 15 Typumwandlungen 203 15.1 Implizite Typumwandlungen Konvertierung von char nach int 203 205 15.2 Wann gehen bei der Konvertierung Informationen verloren? 208 15.3 Welchen Datentyp hat ein bestimmter Ausdruck? Ausdrücke als Operanden des sizeof-Operators Datentypen werden nicht konvertiert Reihenfolge der Konvertierungen char und short 210 213 215 217 219 15.4 Explizite Typumwandlungen 220 16 Verzweigungen 223 16.1 Logische Ausdrücke Vergleichsoperatoren Logische Operatoren Priorität von logischen und Vergleichsoperatoren 223 223 225 229 16.2 Die if-Anweisung Verschachteln von Kontrollstrukturen Konvertierung in logischen Ausdrücken if else Stringvergleiche else if 231 235 237 239 241 241 16.3 Die switch-Anweisung 247 16.4 Bedingungsoperator 257 16.5 Zufallszahlen auslosen 259 17 8 Datentypen Wiederholungsanweisungen 267 17.1 Die while-Schleife Endlosschleifen Fakultät berechnen 267 270 271 17.2 Die do while-Schleife 275 17.3 Die for-Schleife Sequenzoperator 277 284 17.4 Die Anweisungen break und continue 285 Inhaltsverzeichnis 17.5 Gültigkeitsbereich von Variablen »Lebensdauer« von Variablen static-Variablen Namensgleichheit 18 299 18.1 Deklaration von Arrays 299 18.2 Mit Arrays arbeiten 300 18.3 Arrays in for-Schleifen durchlaufen 302 18.4 Initialisierung von Arrays Die Größe eines Arrays bestimmen mit dem sizeof-Operator 305 307 18.5 Mehrdimensionale Arrays 308 19 313 Strings 19.1 Wie Zeichenketten dargestellt werden 313 19.2 Arrays und Adressen cin.get() cout.put() Die Funktionen getch(), getche(), kbhit() 315 319 323 324 19.3 Funktionen zur Stringverarbeitung strcmp() strcpy() Die Konvertierungsfunktionen atoi(), itoa(), atof() 326 326 328 328 19.4 string-Variablen Die Methode c_str() 331 333 20 C++ Arrays 288 290 294 296 Funktionen 337 20.1 Funktionen definieren und aufrufen 337 20.2 Funktionsprototypen Den Quellcode auf mehrere Dateien verteilen Prototypen von vordefinierten Funktionen 343 346 348 20.3 Funktionsparameter Wertübergabe Arrays an Funktionen übergeben 351 356 358 20.4 Rückgabewerte von Funktionen Rückgabewert von main() Vorgabeargumente 360 363 364 20.5 Überladen von Funktionen 365 20.6 Rekursionen 367 20.7 inline-Funktionen 370 20.8 Globale Variablen 372 9 Inhaltsverzeichnis 21 Eine Funktionsbibliothek 21.1 Funktion ArrMinIndex() 375 21.2 Funktion sortiereArr() 379 21.3 Funktion doppelte() 382 22 Ein Lottospiel 387 22.1 Im Programm Lottozahlen auslosen 387 22.2 Tippen 391 22.3 Gewinnanzeige 393 Teil III Einführung in die objektorientierte Programmierung 23 Strukturen 397 399 23.1 Strukturen definieren 399 23.2 Auf die Komponenten von Strukturen zugreifen 404 23.3 Ausblick 410 24 Klassen und Objekte 413 24.1 Methoden Methoden außerhalb einer Klasse definieren Den Code von Klassendefinitionen auf mehrere Dateien verteilen Wie man vermeidet, dass eine Klassendefinition mehrfach eingebunden wird 413 418 420 24.2 Zugriffsspezifizierer 424 24.3 Konstruktoren und Destruktoren Überladen von Konstruktoren Ersatzkonstruktor 431 434 436 24.4 Was es mit Namensräumen auf sich hat 440 25 Statische Elemente einer Klasse 421 443 25.1 Statische Attribute 443 25.2 Statische Methoden 446 26 10 375 Dateioperationen 455 26.1 In Textdateien schreiben 455 26.2 Aus Textdateien lesen Programm zum Verwalten von (Entenhausener) Bankkunden 461 466 Inhaltsverzeichnis Teil IV Fortgeschrittene Programmierkonzepte 27 Präprozessor-Direktiven 477 27.1 #include 477 27.2 Symbolische Konstanten mit #define vereinbaren 478 27.3 Bedingte Kompilierung 479 28 Zeiger 485 28.1 Der Adressoperator (&) 485 28.2 Zeigervariablen deklarieren und verwenden Wilde Zeiger Dereferenzierung von Zeigern Konstante Zeiger Elementzugriff über Zeiger 487 490 491 493 495 28.3 Zeiger als Parameter von Funktionen 498 28.4 Zeiger als Klassenelemente 500 28.5 Der this-Zeiger von Methoden 502 28.6 Speicherplatz dynamisch anfordern Arrays dynamisch allozieren Destruktoren sorgen für die Aufräumarbeiten 504 507 509 29 Referenzen 29.1 Was sind Referenzen? 521 521 29.2 Referenzen als Parameter von Funktionen 524 29.3 Referenzen als Rückgabewerte von Funktionen 526 30 Vererbung 529 30.1 Klassen von Basisklassen ableiten 529 30.2 Zugriff auf die geerbten Elemente einer Basisklasse private-Vererbung protected-Vererbung public-Vererbung 531 531 536 540 30.3 Überschreiben von Methoden 541 31 C++ 475 Überladen von Operatoren 547 31.1 Welche Operatoren lassen sich überladen? 548 31.2 Definition von Operatormethoden Überladen von binären Operatoren Überladen von unären Operatoren Überladen eines Vergleichsoperators 548 549 560 566 11 Inhaltsverzeichnis 32 Ausnahmebehandlung 569 32.1 try – catch Benutzerdefinierte Klassen für die Fehlerbehandlung Mehrere catch-Handler 569 574 576 32.2 Auffangen von Ausnahmen im Aufrufer 577 Bonusteil Managed Code; GUI-Programmierung 33 Microsoft und das .NET 581 583 33.1 Microsoft Intermediate Language 583 33.2 Das .NET Framework 585 33.3 Common Language Runtime Garbage-Collection Programmieren für .NET 586 587 587 34 Windows-Anwendungen 589 34.1 Windows Forms Ein neues Projekt beginnen Das Eigenschaftenfenster im Visual Studio Weitere Steuerelemente 589 590 593 596 34.2 Steuerelemente mit Code verbinden – Ereignisbehandlungsroutinen 599 ANHANG A CD-ROM zum Buch 607 B Schlüsselwörter in C++ 609 C Prioritätsreihenfolge der C++-Operatoren 611 D ASCII-Tabelle 613 E Glossar 615 Stichwortverzeichnis 12 619 Liebe Leserin, lieber Leser! Vielen Dank, dass Sie sich für dieses Buch entschieden haben. Es sollte Ihnen dazu verhelfen, auf möglichst angenehme Weise ein gutes Stück Weg in der Welt der Programmierung im Allgemeinen und in der von C++ im Besonderen hinter sich zu bringen. Allerdings ist wie bei den meisten Dingen im Leben auch hierzu etwas Geduld erforderlich. Gerade dem programmierunerfahrenen Leser sei es deshalb nahe gelegt, diese aufzubringen, auch wenn ihm die ersten Kapitel möglicherweise etwas langweilig erscheinen werden (dem Fortgeschrittenen steht es natürlich frei, an einer späteren Stelle mit dem Lesen zu beginnen). Ich habe mich grundsätzlich bemüht, die Lerninhalte mit möglichst vielen prägnanten, aber einfachen Beispielen zu verdeutlichen. Die Lektüre dieses Buches sollte daher auch ohne unmittelbaren Rechnerkontakt möglich sein (ich selbst gehöre zu den Leuten, die nicht gerne am Computer sitzen, wenn sie ein Buch lesen). Praktische Übung, zumindest im Nachhinein, ist natürlich immer anzuraten. Alle abgedruckten Listings plus erweiterte Beispiele finden Sie, nach Kapiteln geordnet, als Quellcodedateien und – soweit es sich um größere oder inhaltlich wichtige Programme handelt – samt ausführbarer Datei auf der Buch-CD im Verzeichnis Beispiele. Speziell das Visual-Studio-Projekt aus Kapitel 34 befindet sich als .zip-Archiv im Unterordner K34. Die Beispiele können Sie mit dem Borland C++-Compiler kompilieren. Er steht ebenfalls auf der Buch-CD im Verzeichnis Borland-Compiler zur Verfügung (Dateiname freecommandLinetools.exe). Die Installation und Bedienung ist in Kapitel 2 und 4 beschrieben. Es sei jedoch darauf hingewiesen, dass Sie genauso gut jeden anderen aktuellen Compiler verwenden können. Auf die Abhandlung einiger Fortgeschrittenen-Themen wie beispielsweise Templates habe ich bewusst – wenn auch nicht ganz ohne schlechtes Gewissen – verzichtet. Als Gegenleistung sollte der Leser eine gut verständliche Darstellung der behandelten Themen in Händen halten (da diese Beurteilung letzten Endes immer auf persönlicher Einschätzung beruht, möchte ich hiermit der Hoffnung Ausdruck geben, dass mir dies gelungen ist). Um aus dem Buch den größtmöglichen Nutzen zu ziehen, empfehle ich Ihnen, sich für die Lektüre und für das Nachvollziehen der Beispiele Geduld und Zeit zu nehmen. Eventuell zusätzliche Infos zum Buch sowie gegebenenfalls eine Fehlerliste werde ich beizeiten auf meiner Webseite http://www.mipueblo.de veröffentlichen. Über die dort angegebene E-Mail-Adresse können Sie mich jederzeit kontaktieren. Für Anregungen und Hinweise bin ich Ihnen schon jetzt sehr dankbar. Und nun viel Spaß beim Lesen und viel Erfolg mit der Programmierung. Walter Saumweber C++ 13 Grundlagen Dieser einführende Teil soll Ihnen den Einstieg in die Programmierung erleichtern. Bevor wir uns speziell mit der Programmiersprache C++ befassen, werden wir zunächst auf allgemeine Aspekte der Programmierung eingehen. Insbesondere werden Sie mit Fachbegriffen bekannt gemacht, die Ihnen im weiteren Verlauf des Buches immer wieder begegnen werden. Im Anschluss daran werden Sie ein erstes kleines C++-Programm erstellen und ausführen, wobei Sie einige Tipps zu Entwicklungswerkzeugen erhalten. Falls Sie schon einige Programmiererfahrung haben und sich auch die Frage der zu verwendenden Software für Sie nicht stellt, steht es Ihnen natürlich frei, diesen Teil zu überspringen und sogleich mit Teil 2 fortzufahren. C++ 15 Was ist Programmieren? »… sich um das Entstehen einer ausführbaren Datei zu kümmern.« Diese einfache Antwort ist nahe liegend, da das Endprodukt jeder erfolgreichen Programmentwicklung in einer solchen (ausführbaren Datei) besteht. Eine ebenso lapidare – und auch mehr oder weniger korrekte – Erwiderung würde lauten: »Programmieren bedeutet, Text in einen Editor einzugeben.« Hinweis Die eigentliche Schwierigkeit liegt natürlich darin, dies syntaktisch und logisch korrekt, effizient und auch für andere Programmierer nachvollziehbar zu tun (Letzteres wird beim Modifizieren von Programmen bedeutsam). Was das alles genau bedeutet, werden Sie im Weiteren sehen. Da eine Textdatei eben nicht ausführbar ist, scheint die zweite Aussage im Widerspruch zur ersten zu stehen. Lassen Sie uns die Klärung mit einer weiteren Frage einleiten. 1.1 Was ist eigentlich ein Computerprogramm? Ein ausführbares Programm enthält Befehle, die vom Computer ausgeführt werden. Die Reihenfolge der Abarbeitung ist dabei durch die Kodierung der Programmdatei festgelegt. Hinweis Die Begriffe »Programmdatei«, »ausführbare Datei«, »Programm« und »ausführbares Programm« werden gleichbedeutend verwendet. Es handelt sich um solche Dateien, die vom Computer zur Ausführung vorgesehen sind. Dies trifft z.B. für Text- oder Grafikdateien nicht zu. Zu den Begriffen »Programm« sowie »ausführbares Programm« werden bezüglich dieser Definition später noch gewisse Einschränkungen zu nennen sein, die aber hier keine Rolle spielen. Programmdateien können auf verschiedene Weise zur Ausführung gelangen. Möglich ist ein Aufruf aus bereits laufenden anderen Programmen heraus: Programm A startet Programm B (dieses wiederum Programm C usw.). Einige Programme werden vom Betriebssystem automatisch beim Start des Computers in Gang gesetzt. C++ 17 1 – Was ist Programmieren? Am anschaulichsten geschieht dies jedoch durch einen expliziten Startbefehl des Anwenders – durch einen Doppelklick auf die Programmdatei im Windows-Explorer, mithilfe einer Verknüpfung (Desktop, Startmenü) oder über einen Befehl in der Konsole (die bei DOS und Windows als »Eingabeaufforderung« bezeichnet wird). Wenn Sie beispielsweise mit dem Tabellenkalkulationsprogramm Microsoft Excel arbeiten möchten, werden Sie dieses vermutlich über einen Eintrag im Startmenü oder mittels eines Symbols auf dem Desktop aufrufen. Da es sich bei beiden um Verknüpfungen zur entsprechenden Programmdatei handelt, wird diese damit gestartet. Der Name der Excel-Programmdatei lautet übrigens excel.exe. Sie befindet sich in der Regel im Verzeichnis C:\Programme\Microsoft Office\Office bzw. C:\Programme\Microsoft Office\OFFICE11 oder C:\Programme\Microsoft Office\Office12. Achtung Für alle Pfadangaben in diesem Buch gilt: Falls sich bei Ihnen die Dateien bzw. Verzeichnisse auf einem anderen Laufwerk befinden, ersetzen Sie den Laufwerksbuchstaben C durch den jeweiligen Buchstaben. Eine Programmdatei wird in den meisten Betriebssystemen an der Dateierweiterung erkannt. Die am häufigsten anzutreffende Erweiterung von ausführbaren Dateien unter Windows und DOS ist .exe. Unter Unix und Unix-Derivaten wie Linux gibt es für ausführbare Dateien keine vorgeschriebene Erweiterung, die meisten Programme verzichten daher ganz auf eine Erweiterung. Auch die Resultate Ihrer zukünftigen Bemühungen werden sich vor allem in .exeDateien zeigen (vorausgesetzt, Sie arbeiten mit einem Windows-Betriebssystem). Wenn also Ihr Computer auf eine Datei mit der Erweiterung .exe trifft, wird er versuchen, den Inhalt dieser Datei als Befehlsfolge zu verstehen und auszuführen. Wenn dieser Versuch misslingt, wird er dies mit einer Fehlermeldung kundtun. Hinweis Genau genommen ist es der Prozessor Ihres Computers, der die Datei zu interpretieren versucht, und der Mittler zwischen Programmdatei und Prozessor ist das Betriebssystem. Mit anderen Worten, das Betriebssystem reicht .exe-Dateien an den Prozessor des Computers zur Ausführung weiter. Was hier am Beispiel von .exe-Dateien geschildert wird, gilt natürlich in Abhängigkeit vom Betriebssystem ebenso für bestimmte andere Dateierweiterungen – wie oben erwähnt. Angenommen, Sie würden eine Textdatei beliebigen (!) Inhalts editieren und diese mit der Erweiterung .exe speichern. Auf einen entsprechenden Startbefehl hin würde Ihr Computer auch diese Datei als Programmdatei ansehen. Bleibt die Hoffnung, dass in diesem Fall alle Interpretationsversuche fehlschlagen, andernfalls würde das nicht vorhersehbare Aktionen zur Folge haben. Es verhält sich dann gewissermaßen so, als ob ein 18 Was ist eigentlich ein Computerprogramm? Spanier einem Italiener in der irrigen Annahme, es handle sich um einen Landsmann, Anweisungen erteilt und dabei Worte wählt, die auch im Italienischen vorkommen, nur eben in ganz anderer Bedeutung. Hinweis Aus dem genannten Grund handelt es sich um keinen wirklich ernst gemeinten Vorschlag. Möglicherweise interpretiert Ihr Computer eine Zeichenfolge als »Lösche … «. Ich empfehle Ihnen also, von solchen Experimenten abzusehen und mir auch so zu glauben. Eine Programmdatei ist somit nur dann ausführbar (und verdient auch nur in diesem Fall, so genannt zu werden), wenn die in ihr enthaltenen Befehle vom Computer verstanden werden können. Das setzt voraus, dass sie in der Sprache des Computers, der so genannten Maschinensprache, abgefasst sind. Befehle in Maschinencode sind binärkodiert, das heißt, sie liegen als Folge von Nullen und Einsen vor: 01101010100101010101110001011100 10101010110101100101100111101011 00101000110101110101100100101010 Der offensichtliche Nachteil von Maschinencode liegt in seiner schlechten Lesbarkeit. Er lässt sich kaum sinnvoll strukturieren und ist somit nur schwer nachvollziehbar. Hinzu kommt, dass sich Maschinenbefehle nur schwer aus dem Gedächtnis reproduzieren lassen. Alles zusammengenommen gestaltet sich die Entwicklung eines Programms auf diese Weise sehr schwierig, ganz zu schweigen von einer eventuellen späteren Überarbeitung. Wie viel erfreulicher wäre es, wenn ein Computer etwa folgendermaßen kodierte Anweisungen akzeptieren würde: Nimm eine Eingabe des Anwenders entgegen. Prüfe, ob die Eingabe als Zahlenwert interpretierbar ist. Falls nicht, schreibe die Zeichenfolge "Falsche Eingabe" auf den Bildschirm. … Nun, ganz so einfach ist es leider nicht (andernfalls würden Sie dieses Buch nicht lesen). Allerdings lassen sich Wortschatz und Grammatik moderner Programmiersprachen wie C++ etwa auf einem Niveau zwischen Maschinensprache und dieser gedachten Variante ansiedeln, was die Sache schon sehr viel angenehmer macht. Hinweis Es sei angemerkt, dass nahezu alle Programmiersprachen sich angloamerikanischer Begriffe bedienen. C++ 19 1 – Was ist Programmieren? In gewisser Weise erscheint eine Programmiersprache wie C++ sogar eleganter und unkomplizierter als jede Umgangssprache, da sie über geeignete Schlüsselwörter und Zeichen verfügt, mit denen sich extrem präzise das formulieren lässt, was man erreichen möchte – Konfusionen wie in der Alltagssprache sind ausgeschlossen. 1.2 Entwicklungsschritte zum ausführbaren Computerprogramm Welche Verbindung besteht nun zwischen der unvermeidbaren Maschinensprache (Nur diese versteht ja der Computer!) und der Programmiersprache C++? Um dies aufzuzeigen, wollen wir in aller Kürze die Entwicklungsstationen zum fertigen Programm skizzieren, und zwar von Anfang an. 1.2.1 Aufsetzen des Quellcodes Ursprung jeder fertigen Anwendung ist der so genannte Quellcode. Dieser besteht aus reinem Text, setzt sich also aus Buchstaben, Zahlen und anderen Zeichen zusammen, die Ihnen von der Tastatur Ihres PCs her bekannt sein dürften. Der Quellcode (Englisch »source code«) wird daher auch als »Quelltext« bezeichnet. Vor allem, wenn man nur einen Teil des Quellcodes meint, spricht man auch kurz von »Code«. Die Hauptaufgabe für Sie als Programmierer besteht im Erstellen dieses Quellcodes. Dazu müssen Sie diesen, wie eingangs erwähnt, in einen Editor eingeben, wobei Sie den Vorgaben der verwendeten Programmiersprache unterworfen sind. Eben das Erlernen dieser Vorgaben – oder positiv ausgedrückt: Möglichkeiten – der Programmiersprache C++ bildet das Thema dieses Buches. Hinweis Die Bezeichnung »Programm« wird – je nach Sichtweise – nicht nur für die fertige Anwendung, sondern mitunter auch für den – noch nicht lauffähigen – Quellcode verwendet. Während der Anwender unter »Programm« in der Regel die ausführbare Anwendung versteht, meint der Programmierer mit dieser Bezeichnung häufig in erster Linie den von ihm verfassten Quellcode. 1.2.2 Kompilierung Nichtsdestotrotz ist es letzten Endes erforderlich, dass die ausführbare Programmdatei in Maschinensprache vorliegt. Es muss also eine binärkodierte Entsprechung des C++Quellcodes hergestellt werden. Das heißt nichts anderes, als dass der Quelltext in Maschinensprache zu übersetzen ist. Dies besorgt eine Software, der so genannte Compiler. Der Compiler übersetzt (kompiliert) den Quellcode als Ganzes in Maschinensprache und speichert das Endprodukt in einer eigenen Datei (eben unter Windows mit der Dateierweiterung .exe). Dies geschieht in verhältnismäßig kurzer Zeit und ohne Ihr wei- 20