Schrödinger programmiert C++ - Das etwas andere Fachbuch
von: Dieter Bär
Galileo Press, 2012
ISBN: 9783836217569
Sprache: Deutsch
689 Seiten, Download: 97678 KB
Format: PDF, auch als Online-Lesen
Inhaltsverzeichnis | 13 | ||
Vorwort | 24 | ||
—1—Wir richten uns ein ... | 26 | ||
Brauche ich eine IDE zum Programmieren? | 27 | ||
Multikulturelle Sachen | 28 | ||
Mikroweiche Sachen | 29 | ||
Die X-Sachen | 30 | ||
Angebissene Äpfel | 31 | ||
Lass uns endlich loslegen ... | 32 | ||
Übersetzen mit einer Entwicklungsumgebung | 32 | ||
g++ und clang++ | 36 | ||
... am Ende läuft es | 38 | ||
—2—Elefanten können nicht fliegen, aber Schrödinger kann programmieren | 40 | ||
Was ist eigentlich ein Computerprogramm? Ganz kurz und knapp für alle Schrödingers | 41 | ||
Die Sache mit dem main-Dings ... | 42 | ||
Unser erstes main-Dings soll laufen ... | 44 | ||
Endlich entspannen und träumen! | 47 | ||
Kreuz und quer oder alles in Reih und Glied? | 48 | ||
Kein Kommentar? | 48 | ||
Wie komme ich hier zum Bildschirm ...? | 49 | ||
Auf dem Weg zum Bildschirm | 51 | ||
Badewanne schon voll? | 51 | ||
Gib mir fünf | 52 | ||
Stream me up, Scotty | 52 | ||
Gegenseitige Wahrnehmung ... | 53 | ||
Manipulieren oder selber steuern? | 54 | ||
Noch ein wenig Brain-Streaming | 55 | ||
—3—Verschiedene Typen für einen bestimmten Zweck | 58 | ||
Starke Typen | 59 | ||
Mein Name ist Schrödinger | 60 | ||
Fundamentale und faule Typen | 60 | ||
Deklaration und Definition | 61 | ||
Ganzer Kerl dank ... | 62 | ||
Zeichenfolgen von Ganzzahlen | 63 | ||
Positive und/oder negative Haltung und ein Endteil | 63 | ||
Die Sache mit der Wahrheit ... | 64 | ||
Was nehmen wir für einen Typen? | 66 | ||
Die Welt der ganzen Kerle | 67 | ||
Was für den einen das Komma, ist für den anderen der Punkt ... | 68 | ||
Das Pünktchen in der Werkstatt | 69 | ||
Am Ende war das Pünktchen ... | 70 | ||
Zeichensalat | 71 | ||
Doch ein ganzer Kerl? | 72 | ||
Positiver oder negativer Typ | 72 | ||
Turmbau zu Babel | 73 | ||
Zum Flüchten ... | 74 | ||
Unicode-Unterstützung | 74 | ||
Zeichen für die Welt | 75 | ||
Erste „Zeichen“ für eine Pause | 77 | ||
Auf die Größe kommt es an ... | 79 | ||
Je größer, desto besser | 80 | ||
The Final Frontier | 82 | ||
Gut, dass es Grenzen gibt ... | 84 | ||
—4—Von Zahlen verweht | 86 | ||
Manueller Rechenschieber | 87 | ||
Erweiterter Grundrechenzuweisungsoperator | 88 | ||
Futter für den Prozessor | 89 | ||
Kopfrechnen | 91 | ||
Achtung vor den Doppelgängern | 91 | ||
Nachsitzen in Mathe | 93 | ||
Wenn Grenzen überschritten werden | 93 | ||
Ungenaues Pünktchen | 95 | ||
Schwächen offenlegen | 96 | ||
Mir raucht der Kopf | 98 | ||
Mathematische Spezialitäten | 100 | ||
Keine Ahnung, aber ich verwende es trotzdem | 102 | ||
Am Ende der Mathewelt | 105 | ||
Den Typ mag ich nicht | 107 | ||
Lass ihn doch ... | 107 | ||
Automatische Promotion | 108 | ||
Mit dem Hammer auf die Schraube | 109 | ||
Warum man sich nicht auf jeden Typ einlassen sollte ... | 111 | ||
Der sanfte Typ | 113 | ||
Automatische Typenableitung | 115 | ||
—5—Eigene Entscheidungen treffen oder das Ganze nochmal bitte | 116 | ||
Endlich selbstständig sein und eigene Entscheidungen treffen | 117 | ||
Verzweigung, Abzweigung oder Kreuzung | 120 | ||
Wrong turn? | 122 | ||
Ein ganz anderer Fall | 126 | ||
Den Fall bearbeiten | 128 | ||
Den Fall analysieren | 130 | ||
Also sprach Zarathustra | 132 | ||
Immer diese Wiederholungen | 135 | ||
Ein Schritt vor oder einer zurück ... | 135 | ||
After a while ... | 136 | ||
Now for it! | 137 | ||
Fußnoten nicht vergessen! | 138 | ||
Nach oben oder nach unten | 138 | ||
Und alles noch einmal ... | 139 | ||
—6—Von gleichen und unterschiedlichen Typen, dem Sternchen und anderen ungemütlichen Sachen | 142 | ||
Gleiche Typen in einer Reihe aufstellen | 143 | ||
Die Frickel- und Fummelfraktion von Ze | 144 | ||
Die Ze-Strings | 145 | ||
Gib mir rohen Input (Bio-Arrays) | 146 | ||
Das macht keinen Spaß | 148 | ||
Krankheiten von Ze-Arrays und Ze-Strings | 149 | ||
Die gleichen Typen in einer Reihe aufstellen und wieder zurück | 151 | ||
Die Komfortklasse(n) von Ze | 151 | ||
Reduzierter Bioanteil in vector | 152 | ||
Reduzierter Bioanteil in string | 153 | ||
Nie mehr Bio(-Arrays) | 154 | ||
Am Ende hat es doch noch Spaß gemacht | 156 | ||
Die Mischlinge | 158 | ||
Zugriff auf die Mischlinge | 159 | ||
Endlich echte Schuhdaten | 160 | ||
Die gemischten Typen sind echt nützlich | 163 | ||
Von Unionen, Aufzählungen und Synonymen | 165 | ||
1, 2, Freddy kommt vorbei, 3, 4, schließe deine Tür … | 166 | ||
Die Lehre der Synonymie | 170 | ||
Leipziger Allerlei | 171 | ||
typedef Schrödinger hat_alles_kapiert_t | 173 | ||
Weißt du, wie viele Sternlein am Himmel stehen? | 175 | ||
Ich weiß, wo du wohnst ...! | 176 | ||
Einbruch in fremde Wohnungen | 177 | ||
Wohnorte ermitteln | 177 | ||
Sternenkunde | 178 | ||
Ze-Zeugs, Zeiger und wo soll das hinführen…?! | 179 | ||
Zeiger auf nichts…! | 181 | ||
Wo geht’s hier zur „Milky Way“? | 182 | ||
Wo gibt’s hier frischen RAM? | 184 | ||
Alles neu | 184 | ||
Speicherhalde und Müllbeseitigung | 185 | ||
RAM mit WoW-Freunden auf Anfrage | 187 | ||
RAM Unleashed | 190 | ||
—7—Funktionen, das Ende von Copy & Paste ... | 194 | ||
Die Geister, die ich rufen will | 195 | ||
Meine Hausgeister | 196 | ||
Erster Kontakt zum Jenseits | 198 | ||
Geisterjäger im Wohnzimmer | 200 | ||
Opfergaben für die Geister | 202 | ||
Als Kopie übergeben (Call-by-Value) | 202 | ||
Als Adresse übergeben (Call-by-Reference) | 203 | ||
Referenzen als Funktionsparameter | 204 | ||
Ze-Zeugs als Funktionsparameter | 205 | ||
Strukturen und Klassen als Parameter | 206 | ||
Unsere Gaben wurden angenommen … | 207 | ||
Unendliche Stille | 209 | ||
Das Jenseits antwortet dir | 212 | ||
Zeiger als Rückgabewert | 213 | ||
Dinge, die man besser nicht beschwören sollte … | 213 | ||
Referenzen als Rückgabewert | 215 | ||
Die Stille ist zerrissen | 216 | ||
Hausgeister zurückgeben … | 218 | ||
Jetzt bist du ein Medium | 219 | ||
Spezielle Geister | 221 | ||
Werte für den Not-fall … | 221 | ||
Gleicher Name, unterschiedliche Typen | 222 | ||
Rollerblades für Funktionen? | 222 | ||
main Programmende | 224 | ||
Jenseits von Eden | 225 | ||
Am Ende der Geisterwelt | 228 | ||
—8—Wie aus Chaos Ordnung entsteht | 230 | ||
Eigenschaften ohne Ende | 231 | ||
Klasse, die Speicherklasse | 231 | ||
Typqualifikationen | 233 | ||
… und für die Funktionen auch noch Extrawürstchen | 234 | ||
Mindesthaltbarkeitsdatum ändern | 235 | ||
Gleich-Gültigkeitsbereich | 239 | ||
Extrawurst-Gültigkeitsbereich | 242 | ||
Einen neuen Lebensraum schaffen | 243 | ||
Betreten des neuen Lebensraumes | 244 | ||
Using me | 245 | ||
Ein eigenes kleines Königreich | 247 | ||
Anti-Globalisierung | 250 | ||
Anonymer Lebensraum | 251 | ||
Lebensraum im Wohnzimmer | 253 | ||
Das #Ding vor dem Compiler | 256 | ||
#include „paste ohne copy“ | 257 | ||
#define „Symbol“ und „Makro“ | 257 | ||
Die Übersetzung dirigieren | 259 | ||
#Ich bestimme, was #du bekommst | 260 | ||
„No such file or directory“, oder wo bin ich hier … | 261 | ||
Makros und Symbole, oder doch lieber nicht? | 262 | ||
#Ich h### all## v##sch###t | 264 | ||
Und jetzt alle zusammen! | 266 | ||
Die Zutaten für den leckeren Kuchen | 267 | ||
„Symbol(s) not found“, oder eine Zutat fehlt | 268 | ||
Die Einkaufsliste mit den Zutaten | 269 | ||
Eine nützliche Einkaufsliste, was alles so in einer Headerdatei verwendet werden könnte/ sollte/muss … | 269 | ||
Die Zutaten vorbereiten und abwiegen | 270 | ||
… und jetzt alles in die Schüssel | 271 | ||
Rein ins Vergnügen | 272 | ||
Meister der Quelldateien | 276 | ||
—9—Von Hexenmeistern, Todesrittern und Datenkapseln | 278 | ||
Oben-ohne-Programmierung | 279 | ||
Klasse, Klassen! | 280 | ||
Objekte zum Mitnehmen | 280 | ||
Ein Objekt erblickt das Licht der Welt | 281 | ||
Kontrolle: Du kommst hier nicht durch | 283 | ||
Bei Klassendefinitionen den Überblick behalten | 285 | ||
Tieferer Einblick in die Elementfunktionen der Datenkapsel | 287 | ||
Du darfst hier nur lesen | 289 | ||
Elementfunktionen voll im Einsatz | 290 | ||
Toll, diese Klassenfunktionen | 292 | ||
Objekte erstellen | 294 | ||
Objekte auf die Welt bringen | 295 | ||
Zugriff auf die Öffentlichkeit der Klasse | 296 | ||
Indirekter Zugriff auf die Öffentlichkeit | 296 | ||
Objekte verwenden | 297 | ||
Die Geschichte von Objekten | 300 | ||
Aufbauen und vernichten | 303 | ||
Dienst nach Vorschrift | 303 | ||
Wir übernehmen selbst … | 304 | ||
Konstruktoren mit mehreren Parametern | 305 | ||
Konstruktoren effektiver initialisieren | 306 | ||
Klassenelemente direkt initialisieren | 307 | ||
Am Ende alles wieder saubermachen … | 307 | ||
Frühjahrsputz | 308 | ||
(K)ein Kartenhaus | 311 | ||
Deep inside | 313 | ||
Spezielle Konstruktoren | 313 | ||
Praxis Dr. Schrödinger | 316 | ||
Wohnung von Dr. Schrödinger | 318 | ||
The Big Three | 319 | ||
Spezielle Daten in der Kapsel | 320 | ||
Gute Freunde kann niemand trennen … | 322 | ||
*Gong* Die letzte Runde wird eingeläutet | 324 | ||
Kampfanalyse | 329 | ||
—10—Kino WoW Programmieren = viel Spaß | 332 | ||
Eigene Rechengesetze | 333 | ||
Gestatten: operator | 333 | ||
Gesetze für die Herren Operatoren | 334 | ||
Operatoren nur für Freunde | 335 | ||
Die Pärchen verwenden die Operatoren | 336 | ||
Mit vereinten Kräften | 338 | ||
Glückliche Pärchen | 341 | ||
Einsame Operatoren überladen | 345 | ||
Das einsame Leben der einsamen Operatoren | 347 | ||
Am Ende bleibt ein einsamer Operator | 350 | ||
Weitere Operatoren überladen | 352 | ||
Logisch? Fast immer! | 352 | ||
„Typenverbiegenumwandler“ überladen | 352 | ||
Input-Output-Kompott ... | 353 | ||
Spezielle Operatorüberladungen in der Praxis | 355 | ||
Spezialitäten auf dem Sofa | 361 | ||
Funktionsobjekte | 361 | ||
Indexoperator [] überladen | 362 | ||
new und delete überladen | 362 | ||
—11—Schrödinger macht sein Testament | 364 | ||
Erben ohne Erbschaftssteuer | 365 | ||
Ewig schleichen die Erben | 368 | ||
Damit keiner leer ausgeht | 372 | ||
Jetzt das Kleingedruckte lesen | 374 | ||
Zugriffsrechte für den Beerbten | 374 | ||
News: Konstruktoren vererben | 377 | ||
Das Kleingedruckte in der Praxis | 378 | ||
So macht erben langsam Spaß | 381 | ||
Private Mitglieder durchreichen ... | 382 | ||
Erbe verwenden und erweitern | 383 | ||
Redefinition | 384 | ||
Use me ... | 384 | ||
Unser Anlageberater verwaltet das Erbe | 386 | ||
Ordentlich angelegt | 388 | ||
Konstruktives und destruktives Vererben | 390 | ||
Implizite Klassenumwandlung | 392 | ||
Wer bekommt was ... | 393 | ||
Keiner geht leer aus ... | 395 | ||
Mehrfachvererbung | 397 | ||
Mehrfachvererbung in der Praxis | 399 | ||
Lohnt sich die Mehrfachvererbung überhaupt? | 402 | ||
Virtuelles Vererben | 404 | ||
Virtuelle Teilchen verwenden | 406 | ||
Zwischen Virtualität und Realität | 407 | ||
Abstrakte Welten | 409 | ||
Ein alter Bekannter ... | 409 | ||
Abstrakte Vielgestaltigkeit | 411 | ||
Jetzt wird es vielseitig – Polymorphie | 412 | ||
Virtuelle Zerstörungskraft | 414 | ||
Was vom Abstrakten übrig blieb | 415 | ||
Was bist du denn? | 416 | ||
override und final | 417 | ||
—12—Ausstechformen für die Plätzchen | 420 | ||
Funktionen zum Ausstechen | 421 | ||
Verschiedene Teigsorten | 423 | ||
Plätzchen backen | 425 | ||
Am Ende sind nur noch Krümel da … | 429 | ||
Klassen zum Ausstechen | 430 | ||
Klassen-Ausstecher-Elementfunktion definieren | 431 | ||
Klassen-Ausstecher-Elementfunktion überschreiben | 432 | ||
Objekte ausstechen | 433 | ||
Klassen-Ausstecher in der Praxis | 434 | ||
Klassen-Ausstecher in der Wohnung | 439 | ||
—13—Der Schleudersitz für den Notfall | 442 | ||
Versuchen, werfen und auffangen | 443 | ||
Noch ein paar Hinweise für das Werfen | 445 | ||
Jetzt schmeiß schon! | 447 | ||
Was passiert danach …? | 448 | ||
Homerun | 451 | ||
Mit Klassen um sich schmeißen | 454 | ||
Nix wie weg hier | 454 | ||
Schmeißen mit ganzen Klassen | 456 | ||
Homerun mit Klassen | 459 | ||
(Standard-)Ausnahmen im Angebot | 462 | ||
What ist dein Problem …? | 463 | ||
Ausnahmen im System | 464 | ||
Wir probieren es aus | 465 | ||
Logischer Fehler: | 465 | ||
Standardausnahme- Kontrolle | 469 | ||
Ausnahme-Spezifikation und noexcept ? | 471 | ||
noexpect | 471 | ||
Hasta la vista, baby | 472 | ||
Ausnahmen verweigern | 473 | ||
Keine Erwartungen | 475 | ||
—14—Unterwäsche, 100 % Baumwolle, Doppelripp | 476 | ||
Schurz, Schürzen, Schürzenjäger | 477 | ||
Strings anlegen und zuweisen | 477 | ||
Zugriff auf die einzelnen Zeichen | 480 | ||
Wie groß isses denn? | 481 | ||
Rohe Strings | 481 | ||
Noch mehr Unterwäsche | 482 | ||
Und noch mehr davon | 484 | ||
String konvertieren und manipulieren | 486 | ||
Klamottenkiste | 486 | ||
Such! | 487 | ||
Überladene Operatoren und Ein-/Ausgabe | 489 | ||
Ich kann’s nicht mehr hören: Strings | 491 | ||
Alles sauber dank „Schwarzer Zwerg“ | 495 | ||
—15—Ströme ohne Isolierkabel verwenden | 496 | ||
Gib aus den Strom | 497 | ||
Rohe Eier raus ... | 499 | ||
Mehr formatierter Output bitte | 500 | ||
Wir schwenken die Flagge ... | 501 | ||
Jetzt ist es raus ... | 503 | ||
Wir ändern die Richtung | 506 | ||
Rohe Eier rein ... | 506 | ||
Wo ist mein Input? | 508 | ||
Jetzt ist es drin ... | 512 | ||
Wir manipulieren die Ströme | 514 | ||
Manipulation ist alles ... | 517 | ||
Ordentlich manipuliert ... | 521 | ||
Auch ein Strom hat seine Fehler | 523 | ||
Erst den Strom abstellen ... | 525 | ||
Die Sicherung ist geflogen | 526 | ||
Kann man auch was speichern? | 527 | ||
Datei-Slang | 527 | ||
Vorhandene Ströme für Dateien | 528 | ||
Strom für die Datei anschließen | 528 | ||
Plug-ins für den Dateistrom | 529 | ||
Den Dateistecker ziehen | 531 | ||
Alles gesichert ...? | 532 | ||
Sauber lesbare Sache | 532 | ||
Stück für Stück | 533 | ||
Zeile für Zeile | 535 | ||
Ganze Happen ... | 536 | ||
Wahlfreier Zugriff | 537 | ||
Daten wiederherstellen | 538 | ||
Ein Strom für einen String? | 542 | ||
Schürzenjäger-Strom | 544 | ||
Ohne Isolation | 546 | ||
—16—Ausstechformen für Faule | 548 | ||
Fertigkuchen von Dr. STL …? | 549 | ||
Verschiedene Behälter (Container) | 550 | ||
Algorithmen und Iteratoren | 552 | ||
Besser als „Selbermachen“ | 553 | ||
… und schmeckt auch noch gut! | 556 | ||
Detaillierteres Arbeiten mit sequenziellen Fertigkuchen | 559 | ||
Behälter erstellen | 559 | ||
Zutaten hinzufügen | 560 | ||
Zugriff auf den Teig | 561 | ||
Wie viel passt rein, und wie viel ist drin …? | 562 | ||
Raus damit …! | 562 | ||
Tausch mit mir, oder gib mir alle | 563 | ||
Mixen, sortieren und rühren | 563 | ||
Sequenzielle Fertigkuchen abschmecken | 564 | ||
Bereit zum Essen … | 569 | ||
Detaillierteres Arbeiten mit assoziativen Fertigkuchen | 571 | ||
set und multiset | 572 | ||
map und multimap | 573 | ||
Bitte ein Bit-Feld …! | 573 | ||
Assoziative Kuchen backen | 574 | ||
(multi)set me up, baby! | 574 | ||
Now (multi)map me! | 576 | ||
Bitte ein Bit! | 577 | ||
Auch assoziative Kuchen kann man essen | 580 | ||
Zwischen Fertigkuchen und weiteren Zutaten | 582 | ||
Funktionsobjekte | 582 | ||
Kategorie von Iteratoren | 584 | ||
Iterator-Adapter | 586 | ||
Die Hilfsmittel für Fertigkuchen und Zutaten im Einsatz | 587 | ||
Hilfe für den Iterator | 589 | ||
Allmählich wird es öde … | 590 | ||
Die fleißigen Arbeiter | 593 | ||
Nicht-modifizierende Algorithmen | 593 | ||
Modifizierende Algorithmen | 594 | ||
Löschende Algorithmen | 595 | ||
Mutierende Algorithmen | 596 | ||
Sortierende Algorithmen | 597 | ||
Algorithmen für sortierte Bereiche | 598 | ||
Algorithmen verwenden | 599 | ||
Ende gut, alles gut … | 603 | ||
—17—Schöne neue Welt C 11 | 606 | ||
C++ auf dem neuesten Stand(ard) | 607 | ||
auto/decltype | 608 | ||
Einfachere Initialisierung | 608 | ||
Lambda-Funktionen | 609 | ||
Range-based-loop | 609 | ||
Explizite delete- und default-Funktionen | 610 | ||
nullptr | 610 | ||
constexpr | 611 | ||
Ein Konstruktor ruft einen anderen Konstruktor auf | 612 | ||
Move your body | 612 | ||
Neues Zeugs im Einsatz | 614 | ||
auto/decltype | 614 | ||
Lambda-Funktion | 615 | ||
Move my own class | 616 | ||
Cool, das neue Zeugs | 617 | ||
Weitere nützliche Features | 618 | ||
Noch mehr Neuigkeiten ... | 620 | ||
Ein neues Array? | 620 | ||
Eine neue verkettete Liste? | 621 | ||
Hasch? Ist das nicht illegal?! | 621 | ||
Neue Algorithmen | 622 | ||
Tuple? Tulpe? | 623 | ||
Neue Planeten braucht das Universum | 624 | ||
Neue Backmischungen sind auch gut | 627 | ||
Kluge Zeiger | 629 | ||
Ich bin der Klügste hier (shared_ptr) | 631 | ||
Schwacher Zeiger (weak_ptr) | 632 | ||
Egoistischer, aber kluger Zeiger (unique_ptr) | 634 | ||
Klug auch in der Praxis | 635 | ||
Bist du auch so klug ...? | 638 | ||
Von Hieroglyphen und regulären Ausdrücken | 640 | ||
Mini-Sprachkurs zu den Hieroglyphen | 640 | ||
Objekt für die Hieroglyphen | 644 | ||
Die Algorithmen für Hieroglyphen | 644 | ||
Suchergebnis analysieren | 645 | ||
Suchen mit Hieroglyphen | 646 | ||
Cleopatra ist da ... | 653 | ||
Parallele Welten | 655 | ||
Viele Fäden erzeugen | 656 | ||
Bist du jetzt ein Faden oder nicht? | 658 | ||
Argumente für den Thread | 658 | ||
Wir nehmen jetzt die Fäden in die Hand | 659 | ||
Nur nicht den Faden verlieren | 662 | ||
Schütze deine Daten | 664 | ||
Ein Schloss für den Mutex | 667 | ||
Sicheres Initialisieren | 668 | ||
Totgesperrt | 669 | ||
Einmal bitte ... | 671 | ||
Am Ende des Fadens ... | 673 | ||
„Konditions“-Variable ...? | 673 | ||
Zusammenfassung | 675 | ||
Index | 678 |