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