| |
Inhaltsverzeichnis |
6 |
|
| |
Liebe Leserin, lieber Leser! |
14 |
|
| |
Teil I Grundlagen |
16 |
|
| |
1 Was ist Programmieren? |
18 |
|
| |
1.1 Was ist eigentlich ein Computerprogramm? |
18 |
|
| |
1.2 Entwicklungsschritte zum ausführbaren Computerprogramm |
21 |
|
| |
1.2.1 Aufsetzen des Quellcodes |
21 |
|
| |
1.2.2 Kompilierung |
21 |
|
| |
1.2.3 Präprozessor und Linker |
23 |
|
| |
1.3 Was versteht man unter einer IDE? |
24 |
|
| |
1.4 Was sind Konsolenprogramme? |
25 |
|
| |
2 Welchen Compiler sollten Sie verwenden? |
30 |
|
| |
2.1 Borland C++-Compiler |
30 |
|
| |
2.2 Wie finde ich einen passenden Compiler? |
31 |
|
| |
2.3 Installation des Borland-Compilers |
32 |
|
| |
3 Ihr erstes C++-Programm |
36 |
|
| |
3.1 Die Lösung vorweggenommen |
36 |
|
| |
3.1.1 C++ und Zwischenraumzeichen |
38 |
|
| |
3.2 Von Anfang an |
40 |
|
| |
3.2.1 Aufbau von C++-Programmen |
40 |
|
| |
3.2.2 Funktionen |
41 |
|
| |
3.2.3 #include |
44 |
|
| |
3.2.4 using namespace std |
45 |
|
| |
4 Kompilieren und Ausführen von C++-Programmen |
48 |
|
| |
4.1 Was für einen Editor sollten Sie verwenden? |
48 |
|
| |
4.2 Kompilierung |
50 |
|
| |
4.3 Ausführen der .exe-Datei |
53 |
|
| |
4.3.1 Ausführung über den Windows-Explorer |
54 |
|
| |
5 Über Programm(ier)fehler |
56 |
|
| |
5.1 Unterscheidung der verschiedenen Fehlerarten |
56 |
|
| |
5.1.1 Syntaxfehler |
56 |
|
| |
5.1.2 Programmfehler |
58 |
|
| |
5.2 Fehlermeldungen »aus Compilersicht« |
59 |
|
| |
5.3 Historisches |
61 |
|
| |
5.3.1 C/C++ |
61 |
|
| |
5.3.2 ANSI/ISO-Standard |
63 |
|
| |
Teil II Das C++-ABC |
64 |
|
| |
6 Kommentare |
66 |
|
| |
6.1 Einzeilige Kommentare |
66 |
|
| |
6.2 Mehrzeilige Kommentare |
68 |
|
| |
6.3 Einsatz von Kommentaren bei der Fehlersuche |
71 |
|
| |
7 Syntaxregeln |
76 |
|
| |
7.1 Textbausteine |
76 |
|
| |
7.2 Anweisungsende |
78 |
|
| |
7.3 Blöcke |
78 |
|
| |
7.4 Leerräume |
81 |
|
| |
7.5 Programmierstil |
84 |
|
| |
8 Ausgabe mit cout |
86 |
|
| |
8.1 Datenströme |
86 |
|
| |
8.2 C++ unterscheidet zwischen verschiedenen Datentypen |
87 |
|
| |
8.3 Ausgabeeinheiten aneinander hängen |
90 |
|
| |
8.3.1 In der Programmierung gibt es meist mehrere Lösungen |
90 |
|
| |
8.3.2 Anweisungen auf mehrere Zeilen verteilen |
91 |
|
| |
8.3.3 Verkettung von Strings |
92 |
|
| |
8.4 Manipulatoren |
93 |
|
| |
9 Steuerzeichen |
96 |
|
| |
9.1 Die Escape-Sequenzen \", \' und \\ |
96 |
|
| |
9.2 ASCII-Code |
99 |
|
| |
9.3 Darstellung von Zeichen mittels Escape- Sequenzen |
102 |
|
| |
9.3.1 Ausgabe von Umlauten sowie des Zeichens »ß« |
104 |
|
| |
9.4 Das Steuerzeichen \n |
105 |
|
| |
9.5 Weitere Steuerzeichen |
107 |
|
| |
10 Variablen |
112 |
|
| |
10.1 Variablen deklarieren |
112 |
|
| |
10.1.1 Mehrere Variablen mit einer Anweisung deklarieren |
114 |
|
| |
10.2 Regeln zur Bezeichnerwahl |
115 |
|
| |
10.3 Zuweisung |
117 |
|
| |
10.3.1 Additionsoperator (+) |
122 |
|
| |
10.3.2 Initialisierung |
125 |
|
| |
10.3.3 string-Variablen |
126 |
|
| |
10.4 Das Objekt cin |
128 |
|
| |
10.5 Dreieckstausch |
131 |
|
| |
11 Ausdrücke und Operatoren |
134 |
|
| |
11.1 Was ist ein Ausdruck? |
134 |
|
| |
11.1.1 Mehrere Zuweisungen hintereinander schalten |
135 |
|
| |
11.1.2 Komplexe Ausdrücke |
136 |
|
| |
11.2 Arithmetische Operatoren |
138 |
|
| |
11.2.1 Der Modulo-Operator |
139 |
|
| |
11.3 Zusammengesetzte Zuweisungsoperatoren |
141 |
|
| |
11.4 Inkrement- und Dekrementoperatoren |
143 |
|
| |
11.5 Priorität von Operatoren |
146 |
|
| |
12 Zahlen mit Nachkommastellen |
150 |
|
| |
12.1 Die Datentypen double und float |
150 |
|
| |
12.1.1 sizeof-Operator |
151 |
|
| |
12.2 Literale zur Darstellung von Zahlen mit Nachkommastellen |
153 |
|
| |
12.3 Ein Programm zur Berechnung der Mehrwertsteuer |
156 |
|
| |
12.4 Konstanten mit const deklarieren |
160 |
|
| |
13 Ausgabe mit Manipulatoren formatieren |
166 |
|
| |
13.1 Standardeinstellungen |
166 |
|
| |
13.1.1 Genauigkeit |
166 |
|
| |
13.1.2 Ausgabeformat |
169 |
|
| |
13.2 Die Manipulatoren setiosflags() und resetiosflags() |
173 |
|
| |
13.3 Die Manipulatoren fixed und scientific |
178 |
|
| |
13.4 setprecision() |
180 |
|
| |
13.4.1 setprecision() in Verbindung mit Scientific-/Fixed-Format |
183 |
|
| |
13.4.2 Anzeige von Nachkommastellen begrenzen |
184 |
|
| |
13.5 Feldbreite setzen |
186 |
|
| |
13.5.1 Füllzeichen festlegen mit setfill() |
187 |
|
| |
13.5.2 Ausgaben linksbündig/rechtsbündig ausrichten mit left/right |
188 |
|
| |
14 Datentypen |
192 |
|
| |
14.1 Welche Datentypen gibt es noch? |
192 |
|
| |
14.1.1 Datentypqualifizierer |
193 |
|
| |
14.2 Literale |
198 |
|
| |
14.2.1 Literale zur Darstellung von ganzzahligen Werten |
199 |
|
| |
14.2.2 Gleitkommaliterale |
202 |
|
| |
15 Typumwandlungen |
204 |
|
| |
15.1 Implizite Typumwandlungen |
204 |
|
| |
15.1.1 Konvertierung von char nach int |
206 |
|
| |
15.2 Wann gehen bei der Konvertierung Informationen verloren? |
209 |
|
| |
15.3 Welchen Datentyp hat ein bestimmter |
211 |
|
| |
15.3 Welchen Datentyp hat ein bestimmter Ausdruck? |
211 |
|
| |
15.3.1 Ausdrücke als Operanden des sizeof-Operators |
214 |
|
| |
15.3.2 Datentypen werden nicht konvertiert |
216 |
|
| |
15.3.3 Reihenfolge der Konvertierungen |
218 |
|
| |
15.3.4 char und short |
220 |
|
| |
15.4 Explizite Typumwandlungen |
221 |
|
| |
16 Verzweigungen |
224 |
|
| |
16.1 Logische Ausdrücke |
224 |
|
| |
16.1.1 Vergleichsoperatoren |
224 |
|
| |
16.1.2 Logische Operatoren |
226 |
|
| |
16.1.3 Priorität von logischen und Vergleichsoperatoren |
230 |
|
| |
16.2 Die if- Anweisung |
232 |
|
| |
16.2.1 Verschachteln von Kontrollstrukturen |
236 |
|
| |
16.2.2 Konvertierung in logischen Ausdrücken |
238 |
|
| |
16.2.3 if else |
240 |
|
| |
16.2.4 Stringvergleiche |
242 |
|
| |
16.2.5 else if |
242 |
|
| |
16.3 Die switch- Anweisung |
248 |
|
| |
16.4 Bedingungsoperator |
258 |
|
| |
16.5 Zufallszahlen auslosen |
260 |
|
| |
17 Wiederholungsanweisungen |
268 |
|
| |
17.1 Die while- Schleife |
268 |
|
| |
17.1.1 Endlosschleifen |
271 |
|
| |
17.1.2 Fakultät berechnen |
272 |
|
| |
17.2 Die do while- Schleife |
276 |
|
| |
17.3 Die for- Schleife |
278 |
|
| |
17.3.1 Sequenzoperator |
285 |
|
| |
17.4 Die Anweisungen break und continue |
286 |
|
| |
17.5 Gültigkeitsbereich von Variablen |
289 |
|
| |
17.5.1 »Lebensdauer « von Variablen |
291 |
|
| |
17.5.2 static- Variablen |
295 |
|
| |
17.5.3 Namensgleichheit |
297 |
|
| |
18 Arrays |
300 |
|
| |
18.1 Deklaration von Arrays |
300 |
|
| |
18.2 Mit Arrays arbeiten |
301 |
|
| |
18.3 Arrays in for- Schleifen durchlaufen |
303 |
|
| |
18.4 Initialisierung von Arrays |
306 |
|
| |
18.4.1 Die Gröfle eines Arrays bestimmen mit dem sizeof-Operator |
308 |
|
| |
18.5 Mehrdimensionale Arrays |
309 |
|
| |
19 Strings |
314 |
|
| |
19.1 Wie Zeichenketten dargestellt werden |
314 |
|
| |
19.2 Arrays und Adressen |
316 |
|
| |
19.2.1 cin.get() |
320 |
|
| |
19.2.2 cout.put() |
324 |
|
| |
19.2.3 Die Funktionen getch(), getche(), kbhit() |
325 |
|
| |
19.3 Funktionen zur Stringverarbeitung |
327 |
|
| |
19.3.1 strcmp() |
327 |
|
| |
19.3.2 strcpy() |
329 |
|
| |
19.3.3 Die Konvertierungsfunktionen atoi(), itoa(), atof() |
329 |
|
| |
19.4 string- Variablen |
332 |
|
| |
19.4.1 Die Methode c_str() |
334 |
|
| |
20 Funktionen |
338 |
|
| |
20.1 Funktionen definieren und aufrufen |
338 |
|
| |
20.2 Funktionsprototypen |
344 |
|
| |
20.2.1 Den Quellcode auf mehrere Dateien verteilen |
347 |
|
| |
20.2.2 Prototypen von vordefinierten Funktionen |
349 |
|
| |
20.3 Funktionsparameter |
352 |
|
| |
20.3.1 Wertübergabe |
357 |
|
| |
20.3.2 Arrays an Funktionen übergeben |
359 |
|
| |
20.4 Rückgabewerte von Funktionen |
361 |
|
| |
20.4.1 Rückgabewert von main() |
364 |
|
| |
20.4.2 Vorgabeargumente |
365 |
|
| |
20.5 Überladen von Funktionen |
366 |
|
| |
20.6 Rekursionen |
368 |
|
| |
20.7 inline-Funktionen |
371 |
|
| |
20.8 Globale Variablen |
373 |
|
| |
21 Eine Funktionsbibliothek |
376 |
|
| |
21.1 Funktion ArrMinIndex() |
376 |
|
| |
21.2 Funktion sortiereArr() |
380 |
|
| |
21.3 Funktion doppelte() |
383 |
|
| |
22 Ein Lottospiel |
388 |
|
| |
22.1 Im Programm Lottozahlen auslosen |
388 |
|
| |
22.2 Tippen |
392 |
|
| |
22.3 Gewinnanzeige |
394 |
|
| |
Teil III Einführung in die objektorientierte Programmierung |
398 |
|
| |
23 Strukturen |
400 |
|
| |
23.1 Strukturen definieren |
400 |
|
| |
23.2 Auf die Komponenten von Strukturen zugreifen |
405 |
|
| |
23.3 Ausblick |
411 |
|
| |
24 Klassen und Objekte |
414 |
|
| |
24.1 Methoden |
414 |
|
| |
24.1.1 Methoden auflerhalb einer Klasse definieren |
419 |
|
| |
24.1.2 Den Code von Klassendefinitionen auf mehrere Dateien verteilen |
421 |
|
| |
24.1.3 Wie man vermeidet, dass eine Klassendefinition mehrfach eingebunden wird |
422 |
|
| |
24.2 Zugriffsspezifizierer |
425 |
|
| |
24.3 Konstruktoren und Destruktoren |
432 |
|
| |
24.3.1 Überladen von Konstruktoren |
435 |
|
| |
24.3.2 Ersatzkonstruktor |
437 |
|
| |
24.4 Was es mit Namensräumen auf sich hat |
441 |
|
| |
25 Statische Elemente einer Klasse |
444 |
|
| |
25.1 Statische Attribute |
444 |
|
| |
25.2 Statische Methoden |
447 |
|
| |
26 Dateioperationen |
456 |
|
| |
26.1 In Textdateien schreiben |
456 |
|
| |
26.2 Aus Textdateien lesen |
462 |
|
| |
26.2.1 Programm zum Verwalten von (Entenhausener) Bankkunden |
467 |
|
| |
Teil IV Fortgeschrittene Programmierkonzepte |
476 |
|
| |
27 Präprozessor- Direktiven |
478 |
|
| |
27.1 #include |
478 |
|
| |
27.2 Symbolische Konstanten mit #define vereinbaren |
479 |
|
| |
27.3 Bedingte Kompilierung |
480 |
|
| |
28 Zeiger |
486 |
|
| |
28.1 Der Adressoperator (&) |
486 |
|
| |
28.2 Zeigervariablen deklarieren und verwenden |
488 |
|
| |
28.2.1 Wilde Zeiger |
491 |
|
| |
28.2.2 Dereferenzierung von Zeigern |
492 |
|
| |
28.2.3 Konstante Zeiger |
494 |
|
| |
28.2.4 Elementzugriff über Zeiger |
496 |
|
| |
28.3 Zeiger als Parameter von Funktionen |
499 |
|
| |
28.4 Zeiger als Klassenelemente |
501 |
|
| |
28.5 Der this- Zeiger von Methoden |
503 |
|
| |
28.6 Speicherplatz dynamisch anfordern |
505 |
|
| |
28.6.1 Arrays dynamisch allozieren |
508 |
|
| |
28.6.2 Destruktoren sorgen für die Aufräumarbeiten |
510 |
|
| |
29 Referenzen |
522 |
|
| |
29.1 Was sind Referenzen? |
522 |
|
| |
29.2 Referenzen als Parameter von Funktionen |
525 |
|
| |
29.3 Referenzen als Rückgabewerte von Funktionen |
527 |
|
| |
30 Vererbung |
530 |
|
| |
30.1 Klassen von Basisklassen ableiten |
530 |
|
| |
30.2 Zugriff auf die geerbten Elemente einer Basisklasse |
532 |
|
| |
30.2.1 private- Vererbung |
532 |
|
| |
30.2.2 protected- Vererbung |
537 |
|
| |
30.2.3 public- Vererbung |
541 |
|
| |
30.3 Überschreiben von Methoden |
542 |
|
| |
31 Überladen von Operatoren |
548 |
|
| |
31.1 Welche Operatoren lassen sich überladen? |
549 |
|
| |
31.2 Definition von Operatormethoden |
549 |
|
| |
31.2.1 Überladen von binären Operatoren |
550 |
|
| |
31.2.2 Überladen von unären Operatoren |
561 |
|
| |
31.2.3 Überladen eines Vergleichsoperators |
567 |
|
| |
32 Ausnahmebehandlung |
570 |
|
| |
32.1 try – catch |
570 |
|
| |
32.1.1 Benutzerdefinierte Klassen für die Fehlerbehandlung |
575 |
|
| |
32.1.2 Mehrere catch-Handler |
577 |
|
| |
32.2 Auffangen von Ausnahmen im Aufrufer |
578 |
|
| |
Bonusteil Managed Code |
582 |
|
| |
33 Microsoft und das .NET |
584 |
|
| |
33.1 Microsoft Intermediate Language |
584 |
|
| |
33.2 Das .NET Framework |
586 |
|
| |
33.3 Common Language Runtime |
587 |
|
| |
33.3.1 Garbage-Collection |
588 |
|
| |
33.3.2 Programmieren für .NET |
588 |
|
| |
34 Windows- Anwendungen |
590 |
|
| |
34.1 Windows Forms |
590 |
|
| |
34.1.1 Ein neues Projekt beginnen |
591 |
|
| |
34.1.2 Das Eigenschaftenfenster im Visual Studio |
594 |
|
| |
34.1.3 Weitere Steuerelemente |
597 |
|
| |
34.2 Steuerelemente mit Code verbinden – Ereignisbehandlungsroutinen |
600 |
|
| |
Anhang |
606 |
|
| |
A CD-ROM zum Buch |
608 |
|
| |
B Schlüsselwörter in C++ |
610 |
|
| |
C Prioritätsreihenfolge der C++- Operatoren |
612 |
|
| |
D ASCII- Tabelle |
614 |
|
| |
E Glossar |
616 |
|
| |
Stichwortverzeichnis |
620 |
|
| |
Symbole |
620 |
|
| |
A |
620 |
|
| |
B |
621 |
|
| |
C |
621 |
|
| |
D |
622 |
|
| |
E |
622 |
|
| |
F G |
623 |
|
| |
H |
624 |
|
| |
I |
624 |
|
| |
J |
624 |
|
| |
K |
624 |
|
| |
L |
625 |
|
| |
M |
625 |
|
| |
N |
625 |
|
| |
O |
626 |
|
| |
P |
626 |
|
| |
Q |
626 |
|
| |
R |
627 |
|
| |
S |
627 |
|
| |
TTabulatorschritte |
628 |
|
| |
U |
628 |
|
| |
VVariablen |
628 |
|
| |
WWahrheitswerte |
629 |
|
| |
Z |
629 |
|