Details

C++ für Dummies


C++ für Dummies


Für Dummies 8. Auflage

von: Arnold V. Willemer

17,99 €

Verlag: Wiley-VCH
Format: EPUB
Veröffentl.: 30.04.2020
ISBN/EAN: 9783527827459
Sprache: deutsch
Anzahl Seiten: 464

DRM-geschütztes eBook, Sie benötigen z.B. Adobe Digital Editions und eine Adobe ID zum Lesen.

Beschreibungen

Die Programmierung mit C++ muss nicht schwer sein. Mit diesem Buch werden Sie schon ab dem ersten Kapitel eigene Programme schreiben und die C++-Syntax von der Pike auf lernen, verstehen und anwenden. Arnold Willemer erklärt Ihnen, wie Sie Code zu Modulen zusammenfassen, die Sie immer wieder verwenden können, und schon bald werden Sie wissen, wie man Variablen deklariert und mathematische Operationen ausführt. So ist dies das richtige Buch für Ihren Einstieg in C++.
<p><b>Einleitung 21</b></p> <p>Über dieses Buch 21</p> <p>Konventionen in diesem Buch 21</p> <p>Törichte Annahmen über den Leser 21</p> <p>Wie dieses Buch aufgebaut ist 22</p> <p>Symbole, die in diesem Buch verwendet werden 23</p> <p>Wie es weitergeht 24</p> <p><b>Teil I: Wir programmieren</b> <b>25</b></p> <p><b>Kapitel 1 Grundgerüst eines Programms</b> <b>27</b></p> <p>Die Funktion main() 27</p> <p>Kommentare 28</p> <p>Ausgabe für Anfänger 29</p> <p>Zahlenspielereien 30</p> <p>Übungen 31</p> <p><b>Kapitel 2 Variablen und Verarbeitung</b> <b>33</b></p> <p>Variablendefinition 33</p> <p>Namensregeln 35</p> <p>Ganze Zahlen 36</p> <p>Wir rechnen 37</p> <p>Wertveränderungen 38</p> <p>Ganzzahlige Literale 41</p> <p>Zeichen 42</p> <p>Fließkommazahlen 45</p> <p>Symbolische Konstanten 46</p> <p>Aufzählungstyp enum 47</p> <p>Typen umtaufen 49</p> <p>Fallstricke beim Umgang mit Typen 49</p> <p>Überlauf 49</p> <p>Typkonvertierung und Casting 51</p> <p>Ganzzahlige Division 52</p> <p>Automatische Typbestimmung 53</p> <p>Zahlen ein- und ausgeben 53</p> <p>Ausgabestrom 53</p> <p>Formatierte Ausgabe 54</p> <p>Eingabestrom aus cin 54</p> <p>Übungen 55</p> <p><b>Kapitel 3 Abfrage und Wiederholung</b> <b>57</b></p> <p>Verzweigungen 57</p> <p>Nur unter einer Bedingung: if 58</p> <p>Andernfalls: else 58</p> <p>Struktogramm 59</p> <p>Dangling else 61</p> <p>Fall für Fall: switch case 62</p> <p>Bedingter Ausdruck: Fragezeichen 64</p> <p>Boolesche Ausdrücke 65</p> <p>Variablen und Konstanten 65</p> <p>Operatoren 66</p> <p>Verknüpfung von booleschen Ausdrücken 67</p> <p>Immer diese Wiederholungen: Schleifen 71</p> <p>Kopfgesteuert: while 71</p> <p>Fußgesteuert: do… while 75</p> <p>Abgezählt: for 76</p> <p>Der Sprung als Feind der Struktur 79</p> <p>Der brutale Sprung: goto 80</p> <p>Schleifenausbruch: break 81</p> <p>Schleifenrücksprung: continue 82</p> <p>Beispiel: Größter gemeinsamer Teiler 83</p> <p>Mitmachbeispiel: Schleifende Hunde und Füchse 85</p> <p>Übungen 86</p> <p><b>Teil II: Datentypen und -strukturen</b> <b>89</b></p> <p><b>Kapitel 4 Das Array</b> <b>91</b></p> <p>Definition und Zugriff auf ein Array 91</p> <p>Grenzen und Größen 93</p> <p>Arrays lieben die for-Schleife 94</p> <p>Lottozahlen sollten zufällig sein 95</p> <p>Keine Doppelten beim Lotto 96</p> <p>Sortierte Lottozahlen 99</p> <p>Mehrere Dimensionen 102</p> <p>Beispiel: Bermuda 103</p> <p>Spielanleitung Bermuda 103</p> <p>Spielfeld anzeigen 103</p> <p>Die Schiffskoordinaten 105</p> <p>Übungen 106</p> <p><b>Kapitel 5 Zeiger und dessen Möglichkeiten</b> <b>109</b></p> <p>Der Zeiger und die Adresse 109</p> <p>Arrays und Zeiger 112</p> <p>Zeigerarithmetik 113</p> <p>Wettrennen zwischen Index und Zeiger 114</p> <p>Klassische Zeichenketten 115</p> <p>Addition und Subtraktion 116</p> <p>Konstante Zeiger 116</p> <p>Der Zeiger auf gar nichts: void<sup>*</sup> 117</p> <p>Übungen 117</p> <p><b>Kapitel 6 Variablenverbund struct 119</b></p> <p>Ein Verbund mehrerer Variablen 119</p> <p>Arrays von Strukturen 121</p> <p>Zeiger auf Strukturen 121</p> <p>Beispiel: Bermuda 123</p> <p>Objekte dynamisch erzeugen und löschen: new und delete 124</p> <p>Der Befehl new 124</p> <p>Zur Laufzeit erzeugte Arrays 125</p> <p>Verkettete Listen 126</p> <p><b>Teil III: Funktionen</b> <b>131</b></p> <p><b>Kapitel 7 Funktionen im Eigenbau</b> <b>133</b></p> <p>Anweisungen zusammenfassen 133</p> <p>Funktionsparameter 135</p> <p>Ein Rückgabewert als Ergebnis 136</p> <p>Prototypen 137</p> <p>Noch ein paar Bemerkungen zu Parametern 138</p> <p>Zeiger als Parameter 138</p> <p>Arrays als Parameter 140</p> <p>Die Parameter der Funktion main 144</p> <p>Referenzparameter 145</p> <p>Parameter vorbelegen 146</p> <p>Variable Anzahl von Parametern 147</p> <p>Überladen von Funktionen 148</p> <p>Kurz und schnell: Inline-Funktionen 149</p> <p><b>Kapitel 8 Hilfreiche Bibliotheksfunktionen</b> <b>151</b></p> <p>Zufall 151</p> <p>Mathematische Funktionen 153</p> <p>Zeitfunktionen 155</p> <p><b>Kapitel 9 Einsatz von Funktionen 159</b></p> <p>Vermeidung doppelten Codes 159</p> <p>Top-down-Design am Beispiel Bermuda 159</p> <p>Vom Diagramm zum Listing 160</p> <p>Die Daten und die Parameter 160</p> <p>Initialisierung der Datenstrukturen 161</p> <p>Benutzereingabe 162</p> <p>Suche die Schiffe 162</p> <p>Eintrag im Spielfeld 165</p> <p>Ende des Spiels 165</p> <p>Globale, lokale und statische Variablen 166</p> <p>Globale Variablen 166</p> <p>Lokale Variablen 167</p> <p>Statische Variablen 167</p> <p>Rekursion: Selbstaufrufende Funktionen 168</p> <p>Fibonacci, die Kaninchen und der Goldene Schnitt 168</p> <p>Einbindungen 170</p> <p>Türme von Hanoi 171</p> <p>Rückruf erwünscht: Der Funktionszeiger als Parameter 173</p> <p>Anonym: Die Lambda-Funktion 175</p> <p>Übungen 176</p> <p><b>Teil IV: Zeichenketten</b> <b>177</b></p> <p><b>Kapitel 10 Die Standardklasse string 179</b></p> <p>Zeichenkettenliterale 179</p> <p>Definieren und Zuweisen 180</p> <p>Zugriff auf einzelne Zeichen 181</p> <p>String-Funktionen 181</p> <p>Länge des Strings 181</p> <p>Verändern von String-Inhalten 181</p> <p>Suche und Informationen 182</p> <p>Umwandlung von Zahlen und Zeichenketten 183</p> <p>Vergleiche 185</p> <p>Ein- und Ausgabe von Strings 186</p> <p>Umwandlung von string in ein char-Array 187</p> <p><b>Kapitel 11 Das char-Array als Erbe von C</b> <b>189</b></p> <p>Speichern im Array 189</p> <p>Der Zeiger auf char 191</p> <p>Die String-Bibliothek 192</p> <p>Strings in Zahlen konvertieren 193</p> <p>Zahlen in Strings konvertieren 194</p> <p><b>Teil V: Klassen</b> <b>197</b></p> <p><b>Kapitel 12 Am Beispiel zu Bruch gehen</b> <b>199</b></p> <p>Die Klasse Bruch 199</p> <p>Der Bruch hat eigene Funktionen 202</p> <p>Initialisierung durch Konstruktoren 205</p> <p>Konstruktor mit Parameter 207</p> <p>Destruktor 209</p> <p>Konstruktor und Destruktor bei Arrays 210</p> <p>Konvertierungskonstruktor 210</p> <p>Konvertierungsoperator 211</p> <p>Private Attribute 212</p> <p>Operatoren überladen 213</p> <p>Wir multiplizieren mit dem Stern 213</p> <p>Alle möglichen Operatoren 214</p> <p>Besonderheiten bei Inkrement und Dekrement 216</p> <p>Die Vergleichsoperatoren 217</p> <p>Ausgabeoperatoren und Freunde 218</p> <p>Der Indexoperator 220</p> <p>Der Aufrufoperator () 222</p> <p>Die Kopie von Zeigern in Klassen 222</p> <p>Der Zuweisungsoperator 223</p> <p>Kopierkonstruktor 224</p> <p>Statische Variablen und Funktionen in Klassen 226</p> <p>Statische Klassenattribute 226</p> <p>Statische Methoden 227</p> <p>Statische lokale Variable 228</p> <p>Konstante Parameter und Funktionen 229</p> <p>Übungen 230</p> <p><b>Kapitel 13 Vererbung</b> <b>231</b></p> <p>Basisklasse 232</p> <p>Kompatibilität zur Basisklasse: »Ist ein« 234</p> <p>Zugriff nur für Erben: protected 234</p> <p>Zugriffsattribute der Vererbung 235</p> <p>Konstruktorenvererbung 237</p> <p>Kopierkonstruktor und Zuweisungsoperator 238</p> <p>Mehrfachvererbung 238</p> <p>Objektorientiertes Design für Bermuda 240</p> <p>Die Koordinate 240</p> <p>Das Schiff 241</p> <p>Die Flotte 242</p> <p>Das Spielfeld 245</p> <p>Die Spielklasse Bermuda mit Mehrfachvererbung 247</p> <p>Übungen 247</p> <p><b>Kapitel 14 Polymorphie und virtuelle Funktionen 249</b></p> <p>Die Mensa der Universität Norgaardholz 249</p> <p>Ein Objekt weiß, was es tut: Polymorphie 252</p> <p>Rückgriff auf die Basisklasse 253</p> <p>Eine abstrakte Suppe 254</p> <p>Die Mahlzeit als vollkommen abstrakte Klasse 255</p> <p>Virtueller Destruktor 256</p> <p>Polymorphie bei grafischen Oberflächen 257</p> <p>Übungen 258</p> <p><b>Teil VI: Fortgeschrittene Programmiertechniken</b> <b>261</b></p> <p><b>Kapitel 15 Große Programmprojekte</b> <b>263</b></p> <p>Aufteilung der Quelltexte 263</p> <p>Implementierung und Schnittstelle 263</p> <p>Doppelter Include 268</p> <p>Zusammenbinden der Objektdateien 269</p> <p>Projektsteuerung am Beispiel make 269</p> <p>Header-Dateien und Schnittstellen 271</p> <p>Deklaration und Definition 271</p> <p>Einbinden von Header-Dateien 273</p> <p>Bibliotheken 274</p> <p>Eigene Bibliotheken erzeugen 274</p> <p>Statische Bibliotheken einbinden 275</p> <p>Dynamische Bibliotheken 276</p> <p>Namensräume 278</p> <p>Definition eines Namensraums 278</p> <p>Zugriff 279</p> <p>Besondere Namensräume 280</p> <p><b>Kapitel 16 Katastrophenschutz: Fehler, Ausnahmen und Vorbedingungen</b> <b>281</b></p> <p>Die klassische Fehlerbehandlung 281</p> <p>Ausnahmebehandlung 283</p> <p>try und catch 283</p> <p>Eigene Ausnahmen werfen 284</p> <p>Erstellen von Fehlerklassen 287</p> <p>Die Ausnahmen der Standardbibliotheken 288</p> <p>Vorbedingungen 290</p> <p>assert 290</p> <p>Der Compiler prüft 292</p> <p><b>Kapitel 17 Intelligente Sammelbehälter</b> <b>293</b></p> <p>Charakterlose Daten 293</p> <p>Generische Programmierung 295</p> <p>Template-Funktionen 296</p> <p>Template-Klassen 299</p> <p>Die Container-Klasse vector 302</p> <p>Dynamik 303</p> <p>Kapazität und Größe 305</p> <p>Grenzüberschreitung 306</p> <p>Iteratoren als Zeigerersatz 307</p> <p>Methoden des Vektors 309</p> <p>Die Container-Klasse deque 310</p> <p>Die Container-Klasse list 312</p> <p>Sortieren einer Liste: sort 313</p> <p>Eine Liste in eine andere einsortieren: merge 315</p> <p>Alles umdrehen: reverse 316</p> <p>Mengen-Container: set 317</p> <p>Löschen aus dem Set 317</p> <p>Suchen und Sortieren 318</p> <p>Sortierreihenfolge 318</p> <p>Der assoziative Container map 319</p> <p>Container-Adapter 321</p> <p>Der Container-Adapter stack 321</p> <p>Der Container-Adapter queue 322</p> <p>Iteratortypen 323</p> <p>Die Algorithmen der STL 324</p> <p>Suchen: find 325</p> <p>Sortieren 326</p> <p>Binäres Suchen 327</p> <p>Kopieren: copy 327</p> <p>Umdrehen: reverse 328</p> <p>Füllen: fill 329</p> <p>equal 329</p> <p>Funktionsobjekt als Parameter: find_if 329</p> <p>for_each 332</p> <p>Vereinigung und Durchschnitt 333</p> <p>Die Template-Klasse bitset 335</p> <p><b>Teil VII: Dauerhaftes Ablegen von Daten</b> <b>337</b></p> <p><b>Kapitel 18 Ein- und Ausgabe in Dateien 339</b></p> <p>Formatierte Ausgabe im Datenstrom 339</p> <p>Ausgabestrom ausrichten 340</p> <p>Dateioperationen mit fstream 344</p> <p>Öffnen und Schließen 345</p> <p>Lesen und Schreiben sequenzieller Daten 346</p> <p>Binäre Daten blockweise verarbeiten 350</p> <p>Problembehandlung 353</p> <p>Exceptions 354</p> <p>Dateizugriffe nach ANSI-C 355</p> <p><b>Kapitel 19 Datenbanken</b> <b>361</b></p> <p>Objektorientierter portabler Zugang: CppDB 363</p> <p>Installation 363</p> <p>Einbindung 363</p> <p>Verbindungsaufname zur Datenbank 364</p> <p>SQL-Befehle übergeben 365</p> <p>Auslesen mit SELECT 366</p> <p>Beispielhafte Person 366</p> <p>Datenbankbibliothek SQLite 369</p> <p>Einrichtung 369</p> <p>Programmieren mit SQLite 370</p> <p>Tabelle erzeugen und mit Daten füllen 371</p> <p>Auslesen der Daten 373</p> <p><b>Teil VIII: Grafische Fensterprogramme GUI</b> <b>377</b></p> <p><b>Kapitel 20 Grafische Oberflächen</b> <b>379</b></p> <p><b>Kapitel 21 C-API am Beispiel Win32</b> <b>381</b></p> <p>Hauptprogramm 382</p> <p>Die Fensterfunktion WndProc 382</p> <p>Mausverhalten 384</p> <p>Kontrollelemente 384</p> <p>Bermuda in Win32 385</p> <p><b>Kapitel 22 Objektorientiert mit wxWidgets</b> <b>391</b></p> <p>Installation von wxWidgets 391</p> <p>wxWidgets für Linux einrichten 392</p> <p>wxWidgets für Windows und Mac beschaffen 392</p> <p>Ein wxWidgets-Programm erstellen 393</p> <p>Code::Blocks unter Linux und Windows 394</p> <p>Ein minimales xwWidgets-Programm 395</p> <p>Grafik 396</p> <p>Grafische Kontroll- und Eingabeelemente 398</p> <p>Layout 400</p> <p>BoxSizer 400</p> <p>GridSizer 401</p> <p>FlexGridSizer 402</p> <p>Die Kombination mehrerer Layouts 402</p> <p>Bermuda in der wxWidgets-Version 403</p> <p><b>Kapitel 23 Qt</b> <b>409</b></p> <p>Geschichte eines portablen Frameworks 409</p> <p>Installation 410</p> <p>Linux 410</p> <p>Windows und Mac 410</p> <p>Ein Qt-Widgets-Projekt 410</p> <p>Der Qt-Designer 412</p> <p><b>Teil IX: Programmierumgebung</b> <b>415</b></p> <p><b>Kapitel 24 Compiler beschaffen und einrichten</b> <b>417</b></p> <p>Der GNU-C++-Compiler 417</p> <p>Der GNU-C++-Compiler unter Linux 417</p> <p>Der GNU-C++-Compiler unter MS Windows 418</p> <p>Microsoft Visual Studio 418</p> <p>Projekt erstellen 419</p> <p>Windows Desktopassistent 421</p> <p>Code::Blocks 421</p> <p>Linux 422</p> <p>Windows 422</p> <p>Der Aufbau von Code::Blocks 422</p> <p>Ein Projekt anlegen 423</p> <p>Übersetzen und starten 424</p> <p>Eclipse als C++-Umgebung 424</p> <p>Anlegen eines Projekts 425</p> <p>Generieren und ausführen 425</p> <p>NetBeans 425</p> <p>Linux 426</p> <p>Windows 426</p> <p>Ein C++-Projekt erzeugen 427</p> <p><b>Kapitel 25 Programmierwerkzeuge</b> <b>429</b></p> <p>Der Compiler und der Linker 429</p> <p>Compiler-Aufruf 429</p> <p>Compiler-Optionen 430</p> <p>Fehlermeldungen 431</p> <p>Der Präprozessor 432</p> <p>Einbinden von Dateien: #include 433</p> <p>Konstanten und Makros: #define 433</p> <p>Abfragen: #if 435</p> <p>Auf Fehlersuche mit dem Debugger 437</p> <p>Debuggen in der IDE 437</p> <p>Konsolen-Debug 438</p> <p>Versionsverwaltungen 439</p> <p>Arbeitsweise 439</p> <p>Subversion 441</p> <p>Git 443</p> <p><b>Teil X: Der Top-Ten-Teil</b> <b>445</b></p> <p><b>Kapitel 26 10 Gründe, warum Sie C</b>++ <b>einsetzen wollen 447</b></p> <p>Sie wollen native Programme schreiben 447</p> <p>Sie wollen sehr schlanke Programme schreiben 447</p> <p>Das Programm soll schnell starten 447</p> <p>Das Programm soll schnell laufen 447</p> <p>Das Programm soll direkt an eine API ankoppeln 448</p> <p>Sie wollen verhindern, dass jemand Ihren Source Code</p> <p>aus der ausführbaren Datei rekonstruiert 448</p> <p>Sie müssen ganz dicht an die Maschine heran 448</p> <p>Sie mögen keine ideologischen Vorschriften 448</p> <p>Sie müssen sehr vertrackte Datenstrukturen auslesen 449</p> <p>Sie lieben das Hashtag-Zeichen 449</p> <p><b>Kapitel 27 Die 10 beliebtesten C</b>++<b>-Fehler</b> <b>451</b></p> <p>Sie benutzen beim n-dimensionalen Array n als Index 451</p> <p>Ihre Schleife läuft ewig, weil Ihre Bedingung falsch formuliert ist 451</p> <p>Ihre Schleife läuft ewig, weil sich die Variable, die für die Bedingung geprüft wird, im Schleifenkorpus nie ändert 451</p> <p>Sie haben direkt hinter der Klammer von if/while/for ein Semikolon gesetzt 452</p> <p>Sie haben vergessen, den #include zu setzen, und wundern sich, warum die Bezeichner unbekannt sind 452</p> <p>Sie arbeiten mit deutschen Umlauten und verwenden kein unsigned char 452</p> <p>Sie haben delete aufgerufen, aber den Zeiger anschließend nicht auf nullptr gesetzt 452</p> <p>Sie verwenden häufiger new als delete 453</p> <p>Ihre Klasse enthält ein Zeigerattribut, aber es fehlt der Copy-Konstruktor und der Zuweisungsoperator 453</p> <p>Sie verwechseln es mit Java 453</p> <p>Stichwortverzeichnis 457</p>
Arnold Willemer ist Programmierer und Administrator mit mehr als zwanzig Jahren Berufserfahrung. Er hat mehrere erfolgreiche Computer-Bücher geschrieben, die sich durch ihre Verständlichkeit und ihren lockeren Stil auszeichnen.

Diese Produkte könnten Sie auch interessieren:

Domain Architectures
Domain Architectures
von: Daniel J. Duffy
PDF ebook
31,99 €