Einführung in C++ - Einstieg in die moderne Programmierung mit C++ / Setzt keine Programmier-oder C-Kenntnisse voraus / Inkl.Objektorientierung, Standardbibliothek, Zeiger u.v.m

Gebundene Ausgabe
24,90 €
inkl. MwSt. zzgl. Versandkosten

Reduzierte Artikel in dieser Kategorie

Preisbindung aufgehoben3
10,99 € 44,90 €3
Preisbindung aufgehoben3
4,99 € 14,90 €3

Produktdetails  
Verlag Rheinwerk Verlag GmbH
Auflage 27.10.2014
Seiten 520
Format 24,6  x  17,4  x  3,2 cm
Gewicht 1001 g
Reihe Galileo Computing
ISBN-10 3836226774
ISBN-13 9783836226776
Bestell-Nr 83622677A

Produktbeschreibung  

Ohne Umwege und ohne Vorkenntnisse lernen Sie, in C++ zu programmieren - und zwar ganz nebenbei so, wie es aktuelle Profi-Praxis ist. Der vermeintlichen Dinosaurier unter den objektorientierten Sprachen hat neue Standards und moderne Programmierwerkzeuge zu bieten. Lernen Sie hier, damit umzugehen. Lassen Sie sich in der C++-Welt an die Hand nehmen. Ob es um einfache Variablen oder anonyme Funktionen geht - unser Autor führt Sie an allen Fallstricken vorbei und erläutert Fachbegriffe und Best Practices zu den Grundlagen genauso wie zu professionellen Themen.



Aus dem Inhalt:



  • Ausdrücke und Anweisungen

  • Werte und Datentypen

  • Ablaufkontrolle

  • Algorithmen und Komplexität

  • Compiler, IDE und Konsole

  • Vererbung, Aggregation, Design Patterns

  • Heap und Stack verstehen

  • Dateizugriffe und Streams

  • Lebenszyklen und Zugriffskontrolle


Inhalt:



  Geleitwort des Fachgutachters ... 18


  Vorwort ... 20




TEIL I  Erste Schritte ... 23



  1.  Über dieses Buch ... 25


       1.1 ... Der C++-Standard ... 26

       1.2 ... Verwendete Formatierungen ... 27



  2.  Vom Problem zum Programm ... 29


       2.1 ... Was ist Programmieren? ... 30

       2.2 ... Softwareentwicklungsmethoden ... 30

       2.3 ... Entwurfsmuster ... 32

       2.4 ... Algorithmen ... 33

       2.5 ... Ressourcen ... 34



  3.  Programmieren in C++ ... 36


       3.1 ... Übersetzen ... 37

       3.2 ... Aktuelle Compiler ... 37

       3.3 ... Entwicklungsumgebungen ... 39

       3.4 ... Die Kommandozeile unter Ubuntu ... 41

       3.5 ... Die IDE 'Microsoft Visual Studio Express' unter Windows ... 44

       3.6 ... Schneller ... 47

       3.7 ... Aufgaben ... 47



  4.  Ein ganz schneller Überblick ... 49


       4.1 ... Kommentare ... 50

       4.2 ... Die 'include'-Direktive ... 50

       4.3 ... Die Standardbibliothek ... 51

       4.4 ... Die Funktion 'main()' ... 51

       4.5 ... Typen ... 51

       4.6 ... Variablen ... 52

       4.7 ... Initialisierung ... 52

       4.8 ... Ausgabe auf der Konsole ... 53

       4.9 ... Anweisungen ... 53

       4.10 ... Aufgaben ... 54



  5.  Ohne Eile erklärt ... 56


       5.1 ... Leerräume, Bezeichner und Token ... 58

       5.2 ... Kommentare ... 59

       5.3 ... Funktionen und Argumente ... 60

       5.4 ... Seiteneffekt-Operatoren ... 61

       5.5 ... Die 'main'-Funktion ... 62

       5.6 ... Anweisungen ... 64

       5.7 ... Ausdrücke ... 66

       5.8 ... Zuweisungen ... 68

       5.9 ... Typen ... 69

       5.10 ... Variablen -- Deklaration, Definition und Initialisierung ... 74

       5.11 ... Details zur 'include'-Direktive ... 75

       5.12 ... Eingabe und Ausgabe ... 76

       5.13 ... Der Namensraum 'std' ... 77

       5.14 ... Aufgaben ... 79



  6.  Programmiertechnik, 1. Dan: Lesbarer Code ... 81


       6.1 ... Kommentare ... 81

       6.2 ... Dokumentation ... 82

       6.3 ... Einrückungen und Zeilenlänge ... 83

       6.4 ... Zeilen pro Funktion und Datei ... 84

       6.5 ... Klammern und Leerzeichen ... 84

       6.6 ... Namen ... 86




TEIL II  Die Elemente von C++ ... 87



  7.  Operatoren ... 89


       7.1 ... Operatoren und Operanden ... 90

       7.2 ... Überblick über Operatoren ... 90

       7.3 ... Arithmetische Operatoren ... 91

       7.4 ... Bitweise Arithmetik ... 92

       7.5 ... Zuweisungsoperatoren ... 93

       7.6 ... Post- und Präinkrement sowie Post- und Prädekrement ... 94

       7.7 ... Relationale Operatoren ... 95

       7.8 ... Logische Operatoren ... 95

       7.9 ... Pointer- und Dereferenzierungsoperatoren ... 97

       7.10 ... Besondere Operatoren ... 97

       7.11 ... Funktionsähnliche Operatoren ... 99

       7.12 ... Operatorreihenfolge ... 100

       7.13 ... Aufgaben ... 101



  8.  Eingebaute Typen ... 103


       8.1 ... Eingebaute Datentypen ... 105

       8.2 ... Eingebaute Datentypen initialisieren ... 105

       8.3 ... Ein schneller Überblick ... 106

       8.4 ... Ganzzahlen ... 107

       8.5 ... Wahrheitswerte ... 118

       8.6 ... Zeichentypen ... 119

       8.7 ... Aufgaben ... 122



  9.  Strings und Streams ... 124


       9.1 ... Der Zeichenkettentyp 'string' ... 124

       9.2 ... Streams ... 129

       9.3 ... Eingabe- und Ausgabeoperatoren ... 130

       9.4 ... Aufgaben ... 134



10.  Behälter und Zeiger ... 135


       10.1 ... Parametrisierte Typen ... 136

       10.2 ... Die einfachen Sequenzcontainer ... 136

       10.3 ... Weitere Container ... 141

       10.4 ... Container-Gemeinsamkeiten ... 144

       10.5 ... Algorithmen ... 145

       10.6 ... Zeiger und C-Arrays ... 146

       10.7 ... Aufgaben ... 147



11.  Funktionen ... 148


       11.1 ... Deklaration und Definition einer Funktion ... 149

       11.2 ... Funktionstyp ... 150

       11.3 ... Funktionen verwenden ... 150

       11.4 ... Eine Funktion definieren ... 151

       11.5 ... Mehr zu Parametern ... 152

       11.6 ... Funktionskörper ... 156

       11.7 ... Parameter umwandeln ... 158

       11.8 ... Funktionen überladen ... 160

       11.9 ... Default-Parameter ... 162

       11.10 ... Beliebig viele Argumente ... 163

       11.11 ... Alternative Schreibweise zur Funktionsdeklaration ... 164

       11.12 ... Spezialitäten ... 165

       11.13 ... Aufgaben ... 167



12.  Anweisungen im Detail ... 169


       12.1 ... Anweisungsblock ... 171

       12.2 ... Die leere Anweisung ... 174

       12.3 ... Deklarationsanweisung ... 175

       12.4 ... Ausdrucksanweisung ... 176

       12.5 ... Die if-Anweisung ... 176

       12.6 ... 'while'-Schleife ... 179

       12.7 ... 'do-while'-Schleife ... 180

       12.8 ... 'for'-Schleife ... 181

       12.9 ... Die bereichsbasierte 'for'-Schleife ... 182

       12.10 ... Die 'switch'-Verzweigung ... 183

       12.11 ... 'break'-Anweisung ... 187

       12.12 ... Die 'continue'-Anweisung ... 188

       12.13 ... Die 'return'-Anweisung ... 189

       12.14 ... Die 'goto'-Anweisung ... 190

       12.15 ... 'try-catch'-Block und 'throw' ... 192

       12.16 ... Zusammenfassung ... 193

       12.17 ... Aufgaben ... 193



13.  Ausdrücke im Detail ... 196


       13.1 ... Berechnungen und Seiteneffekte ... 197

       13.2 ... Arten von Ausdrücken ... 198

       13.3 ... Literale ... 199

       13.4 ... Bezeichner ... 200

       13.5 ... Klammern ... 201

       13.6 ... Funktionsaufruf und Index-Zugriff ... 201

       13.7 ... Zuweisung ... 201

       13.8 ... Typumwandlung ... 203

       13.9 ... Aufgaben ... 204



14.  Fehlerbehandlung ... 205


       14.1 ... Fehlerbehandlung mit Rückgabewerten ... 207

       14.2 ... Was ist eine Ausnahme? ... 210

       14.3 ... Kleinere Fehlerbehandlungen ... 213

       14.4 ... Weiterwerfen -- 'rethrow' ... 213

       14.5 ... Die Reihenfolge im 'catch' ... 214

       14.6 ... Typen für Exceptions ... 216

       14.7 ... Wenn eine Exception aus 'main' herausfällt ... 217

       14.8 ... Aufgaben ... 217



15.  Programmiertechnik, 2. Dan: Modularisierung ... 219


       15.1 ... Programm, Bibliothek, Objektdatei ... 219

       15.2 ... Bausteine ... 220

       15.3 ... Trennen der Funktionalitäten ... 221




TEIL III  Datenstrukturen ... 223



16.  Erste eigene Datentypen ... 225


       16.1 ... Initialisierung ... 226

       16.2 ... Rückgabe eigener Typen ... 227

       16.3 ... Methoden statt Funktionen ... 228

       16.4 ... Das bessere 'drucke' ... 231

       16.5 ... Eine Ausgabe wie jede andere ... 232

       16.6 ... Methoden inline definieren ... 233

       16.7 ... Implementierung und Definition trennen ... 234

       16.8 ... Initialisierung per Konstruktor ... 235

       16.9 ... Struktur oder Klasse? ... 241

       16.10 ... Zusammenfassung ... 245

       16.11 ... Aufgaben ... 245



17.  Verwendung eigener Datentypen ... 248


       17.1 ... Klassen als Werte verwenden ... 251

       17.2 ... Konstruktoren nutzen ... 253

       17.3 ... Typumwandlungen ... 254

       17.4 ... Kapseln und entkapseln ... 256

       17.5 ... Typen lokal einen Namen geben ... 260

       17.6 ... Typdeduktion mit 'auto' ... 263

       17.7 ... Eigene Klassen in Standardcontainern ... 266

       17.8 ... Aufgaben ... 268



18.  Namespace und Static ... 270


       18.1 ... Der Namensraum 'std' ... 270

       18.2 ... Anonymer Namensraum ... 274

       18.3 ... 'static' macht lokal ... 275

       18.4 ... 'static' teilt gern ... 276

       18.5 ... 'static' macht dauerhaft ... 279

       18.6 ... Zusammenfassung ... 281

       18.7 ... Aufgaben ... 281



19.  Const ... 284


       19.1 ... Const-Parameter ... 285

       19.2 ... Const-Methoden ... 286

       19.3 ... Const-Variablen ... 288

       19.4 ... Const-Rückgaben ... 289

       19.5 ... Const-Korrektheit ... 296

       19.6 ... Zusammenfassung ... 297

       19.7 ... Aufgaben ... 298



20.  Vererbung ... 300


       20.1 ... Beziehungen ... 301

       20.2 ... Vererbung in C++ ... 303

       20.3 ... Hat-ein versus ist-ein ... 304

       20.4 ... Gemeinsamkeiten finden ... 304

       20.5 ... Abgeleitete Typen erweitern ... 307

       20.6 ... Methoden überschreiben ... 308

       20.7 ... Wie Methoden funktionieren ... 309

       20.8 ... Virtuelle Methoden ... 310

       20.9 ... Konstruktoren in Klassenhierarchien ... 312

       20.10 ... Typumwandlung in Klassenhierarchien ... 314

       20.11 ... Wann virtuell? ... 315

       20.12 ... Andere Designs zur Erweiterbarkeit ... 317

       20.13 ... Aufgaben ... 318



21.  Der Lebenszyklus von Klassen ... 321


       21.1 ... Erzeugung und Zerstörung ... 322

       21.2 ... Temporary: Kurzlebige Werte ... 324

       21.3 ... Der Destruktor zum Konstruktor ... 325

       21.4 ... Yoda-Bedingung ... 330

       21.5 ... Konstruktion, Destruktion und Exceptions ... 331

       21.6 ... Kopieren ... 333

       21.7 ... Zuweisungsoperator ... 335

       21.8 ... Streichen von Methoden ... 339

       21.9 ... Verschiebeoperationen ... 340

       21.10 ... Operatoren ... 344

       21.11 ... Eigene Operatoren in einem Datentyp ... 348

       21.12 ... Besondere Klassenformen ... 353

       21.13 ... Aufgaben ... 356



22.  Programmiertechnik, 3. Dan: Die Nuller-Regel ... 359


       22.1 ... Die großen Fünf ... 359

       22.2 ... Hilfskonstrukt per Verbot ... 360

       22.3 ... Die Nullerregel und ihr Einsatz ... 361

       22.4 ... Ausnahmen von der Nullerregel ... 362




TEIL IV  Fortgeschrittene Themen ... 365



23.  Zeiger ... 367


       23.1 ... Adressen ... 368

       23.2 ... Zeiger ... 369

       23.3 ... Heapspeicher und Stapelspeicher ... 372

       23.4 ... Smarte Pointer ... 376

       23.5 ... Rohe Zeiger ... 385

       23.6 ... C-Arrays ... 390

       23.7 ... Iteratoren ... 396

       23.8 ... Zeiger im Container ... 400

       23.9 ... Die Ausnahme: Wann das Wegräumen nicht nötig ist ... 400

       23.10 ... Aufgaben ... 402



24.  Makros ... 405


       24.1 ... Der Präprozessor ... 406

       24.2 ... Vorsicht vor fehlenden Klammern ... 410

       24.3 ... Vorsicht vor Mehrfachausführung ... 410

       24.4 ... Typvariabilität von Makros ... 411

       24.5 ... Zusammenfassung ... 413

       24.6 ... Aufgaben ... 414



25.  Schnittstelle zu C ... 416


       25.1 ... Mit Bibliotheken arbeiten ... 417

       25.2 ... C-Header ... 418

       25.3 ... C-Ressourcen ... 421

       25.4 ... 'void'-Pointer ... 422

       25.5 ... Daten lesen ... 423

       25.6 ... Das Hauptprogramm ... 424

       25.7 ... Zusammenfassung ... 425

       25.8 ... Aufgaben ... 425



26.  Template-Funktionen ... 427


       26.1 ... Überladung ... 428

       26.2 ... Ein Typ als Parameter ... 429

       26.3 ... Funktionskörper einer Template-Funktion ... 429

       26.4 ... Zahlen als Template-Parameter ... 431

       26.5 ... Viele Funktionen ... 432

       26.6 ... Parameter mit Extras ... 432

       26.7 ... Template-Methoden sind auch nur Funktionen ... 435

       26.8 ... Template-Funktionen in der Standardbibliothek ... 436

       26.9 ... Iteratoren statt Container als Template-Parameter ... 437

       26.10 ... Beispiel: Informationen über Zahlen ... 439

       26.11 ... Aufgaben ... 440



27.  Eine Klasse als Funktion ... 442


       27.1 ... Werte für einen 'function'-Parameter ... 443

       27.2 ... C-Funktionspointer ... 444

       27.3 ... Die etwas andere Funktion ... 445

       27.4 ... Praktische Funktoren ... 448

       27.5 ... Algorithmen mit Funktoren ... 450

       27.6 ... Anonyme Funktionen alias Lambda-Ausdrücke ... 451

       27.7 ... Aufgaben ... 455



  Anhang ... 457


       A ... C++11-Besonderheiten ... 458

       B ... Operator-Präzedenzen ... 470

       C ... Lösungen ... 472



  Index ... 515

Autorenporträt  
Mehr Angebote zum Thema