Breymann C++
1. Auflage 2016
ISBN: 978-3-446-44912-1
Verlag: Carl Hanser
Format: PDF
Kopierschutz: 1 - PDF Watermark
eine Einführung
E-Book, Deutsch, 398 Seiten
ISBN: 978-3-446-44912-1
Verlag: Carl Hanser
Format: PDF
Kopierschutz: 1 - PDF Watermark
Das Buch ist nicht nur für angehende Softwareentwickler, sondern auch für Studierende technischer Fächer ein idealer Einstieg.
Softwareentwicklung ist nicht nur Schreiben eines irgendwie funktionierenden Programms. Deshalb gibt es viele Tipps für einen guten Programmierstil, die die Qualität eines Programms erhöhen. Auch wird auf Fallstricke hingewiesen und wie man sie vermeidet.
Aus dem Inhalt:
Das erste Programm!
Grunddatentypen: Zahlen und Zeichen
Zahlen raten - Kontrollstrukturen zur Steuerung des Ablaufs
Ein- und Ausgabe, auch mit Dateien
Aufgaben strukturieren mit Funktionen
Das Spielfeld - Arrays und Vektoren
Beispiel TicTacToe
Spieler, Würfel und Klassen - objektorientierte Programmierung Grafik mit C++
Ereignisgesteuerte Programmierung
Bewegte Grafik
Dynamische Speicherplatzbeschaffung
Vererbung und Polymorphismus
TicTacToe reloaded
Fehlerbehandlung
Interaktives Spiel mit Grafik und Sound
Überladen von Operatoren
Die C++-Standardbibliothek
Templates Container, Iteratoren und Algorithmen
Professor Dr. Ulrich Breymann war in der Industrie und in der Raumfahrttechnik tätig und lehrte Informatik an der Hochschule Bremen. Er arbeitete an dem ersten C++-Standard mit und ist ein bekannter Autor zu den Themen C++, STL und Java ME. Aus seiner Tätigkeit in Industrie und Hochschule weiß er genau, worauf es bei der Softwareentwicklung ankommt. Er stellt komplexe Sachverhalte verständlich dar und legt Wert auf eine Programmiermethodik, die den Ansprüchen an hochqualitative Software gerecht wird. Die Internetseite zu seinem C++-Buch ist cppbuch.de.
Autoren/Hrsg.
Fachgebiete
Weitere Infos & Material
1;Inhalt;6
2;Vorwort;14
3;1 Erste Grundlagen;16
3.1;1.1 Historisches;16
3.2;1.2 Die Programmiersprache C++ und die Maschine;17
3.3;1.3 Werkzeuge zum Programmieren;19
3.3.1;1.3.1 Der Editor;19
3.3.2;1.3.2 Der Compiler;20
3.4;1.4 Die Beispiele;21
3.5;1.5 Wo gibt es Hilfe?;21
3.6;1.6 Das erste Programm!;22
3.6.1;1.6.1 Fehlermeldungen;25
3.7;1.7 Eingaben und Kommentare;27
3.7.1;1.7.1 Kommentare und Namen;29
3.8;1.8 Zahltypen und -bereiche;30
3.8.1;1.8.1 Ganze Zahlen;30
3.8.2;1.8.2 Kommazahlen;34
3.8.3;1.8.3 Bit-Operatoren;0
3.8.4;1.8.4 Vorsicht Falle: Umwandlung des Zahltyps;36
3.9;1.9 Zeichen und Zeichenketten;39
3.9.1;1.9.1 Eingabe;42
3.9.2;1.9.2 Zeichen und Zahlen;44
3.10;1.10 C++-Quiz;45
4;2 Zahlen raten – Kontrollstrukturen anwenden;48
4.1;2.1 Fallunterscheidung mit if;48
4.1.1;2.1.1 Vergleichsoperatoren;50
4.1.2;2.1.2 Logische Verknüpfungen;51
4.1.3;2.1.3 Bedingungsoperator;53
4.1.4;2.1.4 if und Fehler bei der Eingabe;54
4.1.5;2.1.5 Fehler in Verbindung mit if;56
4.1.6;2.1.6 C++-Quiz;57
4.2;2.2 Wiederholungen;58
4.2.1;2.2.1 while-Schleife;58
4.2.2;2.2.2 do-while-Schleife;60
4.2.3;2.2.3 for-Schleife;62
4.2.4;2.2.4 Abbruch mit break;63
4.2.5;2.2.5 Abbruch mit boolescher Variable;64
4.2.6;2.2.6 continue – zurück an den Anfang;64
4.2.7;2.2.7 C++-Quiz;65
4.3;2.3 Der Zufall kommt ins Spiel;67
4.3.1;2.3.1 Bereich für Zufallszahlen definieren;70
4.4;2.4 Konstante;72
4.5;2.5 Auswahl mit switch;74
4.6;2.6 Aufzählungstyp;77
4.7;2.7 C++-Quiz;79
5;3 Ein- und Ausgabe;80
5.1;3.1 Standardein- und -ausgabe;81
5.1.1;3.1.1 Umleitung auf Betriebssystemebene;82
5.2;3.2 Ein- und Ausgabe mit Dateien;83
5.2.1;3.2.1 Schreiben einer Textdatei (Spielerdatenbank);83
5.2.2;3.2.2 Einlesen der Spielerdatenbank;85
5.2.3;3.2.3 Binärdatei;87
5.3;3.3 Formatierung der Ausgabe;89
5.4;3.4 C++-Quiz;90
6;4 Aufgaben strukturieren;92
6.1;4.1 Deklaration und Definition;93
6.1.1;4.1.1 Übergabe per Wert;94
6.1.2;4.1.2 Überladen einer Funktion;96
6.2;4.2 Trennung von Schnittstelle und Implementation;97
6.2.1;4.2.1 Namensräume;101
6.2.2;4.2.2 Präprozessoranweisungen;102
6.3;4.3 Übergabe per Referenz;103
6.4;4.4 Dateiübergreifende Sichtbarkeit;105
6.5;4.5 Rekursion;107
6.6;4.6 Einschränkung der Sichtbarkeit;110
6.7;4.7 C++-Quiz;113
7;5 Das Spielfeld;114
7.1;5.1 Eine Zeile;114
7.1.1;5.1.1 Zeilen mit array;115
7.1.2;5.1.2 Zeilen mit vector;117
7.2;5.2 Das Spielfeld – viele Zeilen;118
7.2.1;5.2.1 Spielfeld mit vector;120
7.2.2;5.2.2 Feld vorbesetzen;121
7.3;5.3 Die Anwendung – TicTacToe;122
7.4;5.4 C++-Quiz;131
8;6 Spieler, Würfel und Klassen;134
8.1;6.1 Objektorientierung;135
8.2;6.2 Klasse Spieler;137
8.2.1;6.2.1 explicit;142
8.2.2;6.2.2 private oder public?;143
8.3;6.3 Trennung von Schnittstelle und Implementation;144
8.4;6.4 Mehr über Konstruktoren;146
8.4.1;6.4.1 Allgemeiner Konstruktor;146
8.4.2;6.4.2 Standardkonstruktor;146
8.4.3;6.4.3 Kopierkonstruktor;147
8.4.4;6.4.4 Einheitliche Initialisierung;150
8.5;6.5 Die Zerstörung von Objekten;151
8.5.1;6.5.1 Der Laufzeit-Stack;151
8.5.2;6.5.2 Destruktor;152
8.6;6.6 Klasse Würfel;154
8.7;6.7 Würfelspiel: Mensch gegen Maschine;156
8.7.1;6.7.1 Der Computer spielt gegen sich selbst;157
8.8;6.8 C++-Quiz;162
9;7 Grafik mit C++;164
9.1;7.1 Ereignisgesteuerte Programmierung;165
9.2;7.2 Einfache Grafik;166
9.3;7.3 Klassenvariablen und -funktionen;170
9.4;7.4 Ereignisse;172
9.5;7.5 Bewegte Grafik;174
9.6;7.6 Grafikerzeugung;182
9.7;7.7 C++-Quiz;188
10;8 Dynamische Speicherbeschaffung;190
10.1;8.1 Zeiger;191
10.1.1;8.1.1 Zeiger auf Zeichen;193
10.1.2;8.1.2 Zeigerarithmetik und Wahrheitswerte;194
10.2;8.2 C-Arrays;196
10.2.1;8.2.1 Parameterübergabe per Zeiger;198
10.3;8.3 Speicherbeschaffung;199
10.3.1;8.3.1 Die beste Art!;199
10.3.2;8.3.2 new und delete – tun Sie es nicht!;200
10.3.3;8.3.3 unique_ptr;203
10.3.4;8.3.4 shared_ptr;205
10.4;8.4 Grafische Objekte dynamisch erzeugen;207
10.4.1;8.4.1 Speicherplatz besser nutzen;209
10.5;8.5 Zeiger als Beobachter;210
10.6;8.6 C++-Quiz;212
11;9 Vererbung;214
11.1;9.1 Generalisierung und Spezialisierung;214
11.2;9.2 Vererbung am Beispiel;215
11.2.1;9.2.1 Statische Auswertung;221
11.3;9.3 Konstruktor erben;221
11.4;9.4 Polymorphismus;222
11.4.1;9.4.1 Polymorphismus und >>die großen Drei<<;224
11.4.2;9.4.2 Überschreiben oder nicht überschreiben?;224
11.4.3;9.4.3 Polymorphismus-Anwendung;226
11.4.4;9.4.4 Herausfiltern bestimmter Klassen;227
11.5;9.5 Abstrakte Klassen;228
11.6;9.6 Mehrfachvererbung;229
11.7;9.7 Polymorphismus und SFML – TicTacToe reloaded;230
11.8;9.8 Probleme der Modellierung mit Vererbung;237
11.9;9.9 C++-Quiz;238
12;10 Fehlerbehandlung;240
12.1;10.1 Fehler erkennen und signalisieren;241
12.2;10.2 Fehler behandeln;241
12.3;10.3 Vordefinierte Exceptions;245
12.4;10.4 Eigene Exception-Klasse;246
12.5;10.5 C++-Quiz;248
13;11 Interaktives Spiel mit Grafik und Sound;250
13.1;11.1 Anzeige des Spielergebnisses;252
13.2;11.2 Einfache grafische Komponenten;254
13.2.1;11.2.1 Der Mond;254
13.2.2;11.2.2 Die fallenden Objekte;255
13.3;11.3 Sprites;257
13.3.1;11.3.1 Der Vogel;260
13.4;11.4 Spielablauf;261
14;12 Überladen von Operatoren;270
14.1;12.1 Zeiger als Beobachter: Operatoren -> und *;273
14.2;12.2 ++, ==, << und weitere;275
14.2.1;12.2.1 Typumwandlung;280
14.2.2;12.2.2 ++ vorangestellt (Präfix);280
14.2.3;12.2.3 ++ nachgestellt (Postfix);282
14.2.4;12.2.4 Gleichheitsoperator;283
14.2.5;12.2.5 Subtraktion;285
14.2.6;12.2.6 Ausgabeoperator <<;285
14.2.7;12.2.7 Eingabeoperator >>;287
14.2.8;12.2.8 Objekte als Funktion;288
14.2.9;12.2.9 Indexoperator [];288
14.2.10;12.2.10 Arithmetische Operatoren += und +;290
14.2.11;12.2.11 Zuweisungsoperator;292
14.2.12;12.2.12 new, delete und die großen Drei;295
14.3;12.3 Empfehlungen;299
14.4;12.4 C++-Quiz;300
15;13 Die C++-Standardbibliothek;302
15.1;13.1 Templates;303
15.1.1;13.1.1 Funktions-Template;304
15.1.2;13.1.2 Template-Spezialisierung;306
15.1.3;13.1.3 Klassen-Template;308
15.2;13.2 Funktionsobjekte und Lambda-Funktionen;310
15.2.1;13.2.1 Funktionsobjekte;311
15.2.2;13.2.2 Lambda-Funktionen;315
15.3;13.3 Paare;316
15.4;13.4 Iteratoren;318
15.4.1;13.4.1 Iterator-Kategorien;322
15.5;13.5 Algorithmen;323
15.5.1;13.5.1 Funktionsweise;323
15.5.2;13.5.2 sort;325
15.5.3;13.5.3 find;325
15.5.4;13.5.4 binary_search und lower_bound;327
15.5.5;13.5.5 copy;329
15.5.6;13.5.6 remove und erase;330
15.5.7;13.5.7 fill;331
15.5.8;13.5.8 Folge mit fortlaufenden Werten füllen;332
15.5.9;13.5.9 generate;332
15.5.10;13.5.10 min und max;333
15.5.11;13.5.11 min_element und max_element;334
15.5.12;13.5.12 accumulate;334
15.5.13;13.5.13 Skalarprodukt;336
15.6;13.6 Container;337
15.6.1;13.6.1 Gemeinsame Eigenschaften;337
15.6.2;13.6.2 Sequentielle Container;340
15.6.3;13.6.3 array;342
15.6.4;13.6.4 vector;342
15.6.5;13.6.5 list;343
15.6.6;13.6.6 deque;344
15.6.7;13.6.7 stack;345
15.6.8;13.6.8 Assoziative Container;345
15.6.9;13.6.9 map;346
15.6.10;13.6.10 set;350
15.6.11;13.6.11 unordered_map;351
15.6.12;13.6.12 unordered_set;352
15.7;13.7 Zeitmessung und Datum/Uhrzeit;353
15.8;13.8 Komplexe Zahlen;355
16;14 Referenzsemantik;358
16.1;14.1 Compiler-generierte Funktionen;359
16.2;14.2 Empfehlungen;360
16.3;14.3 Praktische Umsetzung;361
17;15 Ausblick;364
17.1;15.1 Template-Erweiterungen;364
17.2;15.2 Die C++–Standardbibliothek;365
17.3;15.3 Test von C++-Programmen;367
18;A Anhang;368
18.1;A.1 Installationshinweise für Windows;369
18.1.1;A.1.1 Compiler;369
18.1.2;A.1.2 Entwicklungsumgebung;369
18.1.3;A.1.3 SFML;371
18.2;A.2 Installationshinweise für Linux;372
18.2.1;A.2.1 Compiler;372
18.2.2;A.2.2 Entwicklungsumgebung;372
18.2.3;A.2.3 SFML;373
18.3;A.3 Installationshinweise für OS X;374
18.3.1;A.3.1 Compiler und Entwicklungsumgebung;374
18.3.2;A.3.2 SFML;375
18.4;A.4 ASCII-Tabelle;377
19;Glossar;380
20;Literatur;392
21;Stichwortverzeichnis;394