C++ - eine Einführung

Ulrich Breymann

C++

eine Einführung

2016

401 Seiten

Format: PDF, Online Lesen

E-Book: €  7,99

E-Book kaufen

E-Book kaufen

ISBN: 9783446449121

 

Inhalt

6

Vorwort

14

1 Erste Grundlagen

16

1.1 Historisches

16

1.2 Die Programmiersprache C++ und die Maschine

17

1.3 Werkzeuge zum Programmieren

19

1.3.1 Der Editor

19

1.3.2 Der Compiler

20

1.4 Die Beispiele

21

1.5 Wo gibt es Hilfe?

21

1.6 Das erste Programm!

22

1.6.1 Fehlermeldungen

25

1.7 Eingaben und Kommentare

27

1.7.1 Kommentare und Namen

29

1.8 Zahltypen und -bereiche

30

1.8.1 Ganze Zahlen

30

1.8.2 Kommazahlen

34

1.8.3 Bit-Operatoren

0

1.8.4 Vorsicht Falle: Umwandlung des Zahltyps

36

1.9 Zeichen und Zeichenketten

39

1.9.1 Eingabe

42

1.9.2 Zeichen und Zahlen

44

1.10 C++-Quiz

45

2 Zahlen raten – Kontrollstrukturen anwenden

48

2.1 Fallunterscheidung mit if

48

2.1.1 Vergleichsoperatoren

50

2.1.2 Logische Verknüpfungen

51

2.1.3 Bedingungsoperator

53

2.1.4 if und Fehler bei der Eingabe

54

2.1.5 Fehler in Verbindung mit if

56

2.1.6 C++-Quiz

57

2.2 Wiederholungen

58

2.2.1 while-Schleife

58

2.2.2 do-while-Schleife

60

2.2.3 for-Schleife

62

2.2.4 Abbruch mit break

63

2.2.5 Abbruch mit boolescher Variable

64

2.2.6 continue – zurück an den Anfang

64

2.2.7 C++-Quiz

65

2.3 Der Zufall kommt ins Spiel

67

2.3.1 Bereich für Zufallszahlen definieren

70

2.4 Konstante

72

2.5 Auswahl mit switch

74

2.6 Aufzählungstyp

77

2.7 C++-Quiz

79

3 Ein- und Ausgabe

80

3.1 Standardein- und -ausgabe

81

3.1.1 Umleitung auf Betriebssystemebene

82

3.2 Ein- und Ausgabe mit Dateien

83

3.2.1 Schreiben einer Textdatei (Spielerdatenbank)

83

3.2.2 Einlesen der Spielerdatenbank

85

3.2.3 Binärdatei

87

3.3 Formatierung der Ausgabe

89

3.4 C++-Quiz

90

4 Aufgaben strukturieren

92

4.1 Deklaration und Definition

93

4.1.1 Übergabe per Wert

94

4.1.2 Überladen einer Funktion

96

4.2 Trennung von Schnittstelle und Implementation

97

4.2.1 Namensräume

101

4.2.2 Präprozessoranweisungen

102

4.3 Übergabe per Referenz

103

4.4 Dateiübergreifende Sichtbarkeit

105

4.5 Rekursion

107

4.6 Einschränkung der Sichtbarkeit

110

4.7 C++-Quiz

113

5 Das Spielfeld

114

5.1 Eine Zeile

114

5.1.1 Zeilen mit array

115

5.1.2 Zeilen mit vector

117

5.2 Das Spielfeld – viele Zeilen

118

5.2.1 Spielfeld mit vector

120

5.2.2 Feld vorbesetzen

121

5.3 Die Anwendung – TicTacToe

122

5.4 C++-Quiz

131

6 Spieler, Würfel und Klassen

134

6.1 Objektorientierung

135

6.2 Klasse Spieler

137

6.2.1 explicit

142

6.2.2 private oder public?

143

6.3 Trennung von Schnittstelle und Implementation

144

6.4 Mehr über Konstruktoren

146

6.4.1 Allgemeiner Konstruktor

146

6.4.2 Standardkonstruktor

146

6.4.3 Kopierkonstruktor

147

6.4.4 Einheitliche Initialisierung

150

6.5 Die Zerstörung von Objekten

151

6.5.1 Der Laufzeit-Stack

151

6.5.2 Destruktor

152

6.6 Klasse Würfel

154

6.7 Würfelspiel: Mensch gegen Maschine

156

6.7.1 Der Computer spielt gegen sich selbst

157

6.8 C++-Quiz

162

7 Grafik mit C++

164

7.1 Ereignisgesteuerte Programmierung

165

7.2 Einfache Grafik

166

7.3 Klassenvariablen und -funktionen

170

7.4 Ereignisse

172

7.5 Bewegte Grafik

174

7.6 Grafikerzeugung

182

7.7 C++-Quiz

188

8 Dynamische Speicherbeschaffung

190

8.1 Zeiger

191

8.1.1 Zeiger auf Zeichen

193

8.1.2 Zeigerarithmetik und Wahrheitswerte

194

8.2 C-Arrays

196

8.2.1 Parameterübergabe per Zeiger

198

8.3 Speicherbeschaffung

199

8.3.1 Die beste Art!

199

8.3.2 new und delete – tun Sie es nicht!

200

8.3.3 unique_ptr

203

8.3.4 shared_ptr

205

8.4 Grafische Objekte dynamisch erzeugen

207

8.4.1 Speicherplatz besser nutzen

209

8.5 Zeiger als Beobachter

210

8.6 C++-Quiz

212

9 Vererbung

214

9.1 Generalisierung und Spezialisierung

214

9.2 Vererbung am Beispiel

215

9.2.1 Statische Auswertung

221

9.3 Konstruktor erben

221

9.4 Polymorphismus

222

9.4.1 Polymorphismus und >>die großen Drei<<

224

9.4.2 Überschreiben oder nicht überschreiben?

224

9.4.3 Polymorphismus-Anwendung

226

9.4.4 Herausfiltern bestimmter Klassen

227

9.5 Abstrakte Klassen

228

9.6 Mehrfachvererbung

229

9.7 Polymorphismus und SFML – TicTacToe reloaded

230

9.8 Probleme der Modellierung mit Vererbung

237

9.9 C++-Quiz

238

10 Fehlerbehandlung

240

10.1 Fehler erkennen und signalisieren

241

10.2 Fehler behandeln

241

10.3 Vordefinierte Exceptions

245

10.4 Eigene Exception-Klasse

246

10.5 C++-Quiz

248

11 Interaktives Spiel mit Grafik und Sound

250

11.1 Anzeige des Spielergebnisses

252

11.2 Einfache grafische Komponenten

254

11.2.1 Der Mond

254

11.2.2 Die fallenden Objekte

255

11.3 Sprites

257

11.3.1 Der Vogel

260

11.4 Spielablauf

261

12 Überladen von Operatoren

270

12.1 Zeiger als Beobachter: Operatoren -> und *

273

12.2 ++, ==, << und weitere

275

12.2.1 Typumwandlung

280

12.2.2 ++ vorangestellt (Präfix)

280

12.2.3 ++ nachgestellt (Postfix)

282

12.2.4 Gleichheitsoperator

283

12.2.5 Subtraktion

285

12.2.6 Ausgabeoperator <<

285

12.2.7 Eingabeoperator >>

287

12.2.8 Objekte als Funktion

288

12.2.9 Indexoperator []

288

12.2.10 Arithmetische Operatoren += und +

290

12.2.11 Zuweisungsoperator

292

12.2.12 new, delete und die großen Drei

295

12.3 Empfehlungen

299

12.4 C++-Quiz

300

13 Die C++-Standardbibliothek

302

13.1 Templates

303

13.1.1 Funktions-Template

304

13.1.2 Template-Spezialisierung

306

13.1.3 Klassen-Template

308

13.2 Funktionsobjekte und Lambda-Funktionen

310

13.2.1 Funktionsobjekte

311

13.2.2 Lambda-Funktionen

315

13.3 Paare

316

13.4 Iteratoren

318

13.4.1 Iterator-Kategorien

322

13.5 Algorithmen

323

13.5.1 Funktionsweise

323

13.5.2 sort

325

13.5.3 find

325

13.5.4 binary_search und lower_bound

327

13.5.5 copy

329

13.5.6 remove und erase

330

13.5.7 fill

331

13.5.8 Folge mit fortlaufenden Werten füllen

332

13.5.9 generate

332

13.5.10 min und max

333

13.5.11 min_element und max_element

334

13.5.12 accumulate

334

13.5.13 Skalarprodukt

336

13.6 Container

337

13.6.1 Gemeinsame Eigenschaften

337

13.6.2 Sequentielle Container

340

13.6.3 array

342

13.6.4 vector

342

13.6.5 list

343

13.6.6 deque

344

13.6.7 stack

345

13.6.8 Assoziative Container

345

13.6.9 map

346

13.6.10 set

350

13.6.11 unordered_map

351

13.6.12 unordered_set

352

13.7 Zeitmessung und Datum/Uhrzeit

353

13.8 Komplexe Zahlen

355

14 Referenzsemantik

358

14.1 Compiler-generierte Funktionen

359

14.2 Empfehlungen

360

14.3 Praktische Umsetzung

361

15 Ausblick

364

15.1 Template-Erweiterungen

364

15.2 Die C++–Standardbibliothek

365

15.3 Test von C++-Programmen

367

A Anhang

368

A.1 Installationshinweise für Windows

369

A.1.1 Compiler

369

A.1.2 Entwicklungsumgebung

369

A.1.3 SFML

371

A.2 Installationshinweise für Linux

372

A.2.1 Compiler

372

A.2.2 Entwicklungsumgebung

372

A.2.3 SFML

373

A.3 Installationshinweise für OS X

374

A.3.1 Compiler und Entwicklungsumgebung

374

A.3.2 SFML

375

A.4 ASCII-Tabelle

377

Glossar

380

Literatur

392

Stichwortverzeichnis

394

 

© 2009-2019 ciando GmbH