Beschreibung
Dieses Buch ist ein klassisches Lehrwerk für Studenten der Informatik. Es vermittelt ausführlich die Grundlagen der Programmiersprachen C und C++ und die Grundlagen der Programmierung überhaupt. Von der Kunst, den richtigen Algorithmus zu finden, bis zur sinnvollen Nutzung der C++-Standard-Library. Alle Themen werden Sie sich anhand von Codebeispielen praktisch erarbeiten. Wo Theorie an Bord ist, erleben Sie ihren Nutzen im großen Zusammenhang.
Aus dem Inhalt:
Algorithmen
Performanz- und Leistungsanalyse
Kombinatorik
Sortierverfahren
Graphentheoretische Probleme
Variablen, Schleifen & Co.
Speicherverwaltung
Bäume, Heaps und Treaps
Die Standardbibliotheken
Objektorientierung, Kapselung, Vererbung
Exceptions und Templates
Strukturiertes Programmieren
Programmaufbau und wartbare Software
Umfangreiche Referenz
Rezension
»Buchtipp!«
»Das Buch ist nicht nur ein umfangreiches Nachschlagewerk zu C und C++, sondern auch für das Selbststudium hervorragend geeignet. Die zahlreichen Beispiele mit oftmals mathematischem Hintergrund werden von den Autoren auch für Nicht-Mathematiker verständlich dargestellt und durch gelungene Abbildungen veranschaulicht. Das Buch hat auch in der fünften Auflage nichts von seiner gewohnten Qualität verloren. Gesamtnote: Sehr gut!«
»Bei dem Mammutwerk von Ulrich Kaiser und Martin Guddat zu C und C++ bleiben auf über 1200 Seiten kaum Fragen offen. Erschöpfend werden alle Aspekte der C- und C++-Programmierung behandelt, angefangen von den Grundbegriffen der Software-Entwicklung bis zu fortgeschritteneren Themen wie der Objektorientierung in C++. Das Buch enthält viele Codebeispiele und Illustrationen, die Sprache ist klar und einfach, das erleichtert das Verständnis. Alles in allem ein sehr empfehlenswerter Titel für alle, die C/C++ von Grund auf lernen wollen.«
Inhalt
1.1 ... Algorithmus ... 24
1.2 ... Datenstruktur ... 28
1.3 ... Programm ... 30
1.4 ... Programmiersprachen ... 31
1.5 ... Aufgaben ... 33
2.1 ... Softwareentwicklung ... 35
2.2 ... Die Programmierumgebung ... 40
3.1 ... Programmrahmen ... 45
3.2 ... Zahlen ... 46
3.3 ... Variablen ... 46
3.4 ... Operatoren ... 48
3.5 ... Kontrollfluss ... 56
3.6 ... Elementare Ein- und Ausgabe ... 67
3.7 ... Beispiele ... 73
3.8 ... Aufgaben ... 81
4.1 ... Folgen ... 85
4.2 ... Summen und Produkte ... 96
4.3 ... Aufgaben ... 100
5.1 ... Aussagen ... 108
5.2 ... Aussagenlogische Operatoren ... 108
5.3 ... Boolesche Funktionen ... 116
5.4 ... Logische Operatoren in C ... 119
5.5 ... Beispiele ... 120
5.6 ... Aufgaben ... 126
6.1 ... Zahlendarstellungen ... 130
6.2 ... Bits und Bytes ... 137
6.3 ... Skalare Datentypen in C ... 139
6.4 ... Bitoperationen ... 146
6.5 ... Programmierbeispiele ... 150
6.6 ... Zeichen ... 156
6.7 ... Arrays ... 159
6.8 ... Zeichenketten ... 164
6.9 ... Programmierbeispiele ... 173
6.10 ... Aufgaben ... 178
7.1 ... Funktionen ... 181
7.2 ... Arrays als Funktionsparameter ... 186
7.3 ... Lokale und globale Variablen ... 190
7.4 ... Rekursion ... 192
7.5 ... Der Stack ... 198
7.6 ... Beispiele ... 200
7.7 ... Aufgaben ... 218
8.1 ... Zeigerarithmetik ... 230
8.2 ... Zeiger und Arrays ... 232
8.3 ... Funktionszeiger ... 235
8.4 ... Aufgaben ... 239
9.1 ... Der Präprozessor ... 241
9.2 ... Ein kleines Projekt ... 249
10.1 ... Mathematische Funktionen ... 254
10.2 ... Zeichenklassifizierung und -konvertierung ... 256
10.3 ... Stringoperationen ... 257
10.4 ... Ein- und Ausgabe ... 260
10.5 ... Variable Anzahl von Argumenten ... 263
10.6 ... Freispeicherverwaltung ... 265
10.7 ... Aufgaben ... 271
11.1 ... Kombinatorische Grundaufgaben ... 274
11.2 ... Permutationen mit Wiederholungen ... 274
11.3 ... Permutationen ohne Wiederholungen ... 275
11.4 ... Kombinatorische Algorithmen ... 283
11.5 ... Beispiele ... 293
12.1 ... Leistungsanalyse ... 308
12.2 ... Leistungsmessung ... 320
12.3 ... Laufzeitklassen ... 324
13.1 ... Sortierverfahren ... 347
13.2 ... Leistungsanalyse der Sortierverfahren ... 376
13.3 ... Leistungsmessung der Sortierverfahren ... 383
13.4 ... Grenzen der Optimierung von Sortierverfahren ... 388
14.1 ... Strukturdeklarationen ... 395
14.2 ... Zugriff auf Strukturen ... 400
14.3 ... Datenstrukturen und Funktionen ... 405
14.4 ... Ein vollständiges Beispiel (Teil 1) ... 409
14.5 ... Dynamische Datenstrukturen ... 415
14.6 ... Ein vollständiges Beispiel (Teil 2) ... 421
14.7 ... Die Freispeicherverwaltung ... 432
14.8 ... Aufgaben ... 435
15.1 ... Listen ... 439
15.2 ... Bäume ... 448
15.3 ... Treaps ... 470
15.4 ... Hash-Tabellen ... 482
16.1 ... Der Stack als abstrakter Datentyp ... 495
16.2 ... Die Queue als abstrakter Datentyp ... 500
17.1 ... Graphentheoretische Grundbegriffe ... 510
17.2 ... Die Adjazenzmatrix ... 511
17.3 ... Beispielgraph (Autobahnnetz) ... 512
17.4 ... Traversierung von Graphen ... 514
17.5 ... Wege in Graphen ... 516
17.6 ... Der Algorithmus von Warshall ... 518
17.7 ... Kantentabellen ... 522
17.8 ... Zusammenhang und Zusammenhangskomponenten ... 523
17.9 ... Gewichtete Graphen ... 530
17.10 ... Kürzeste Wege ... 532
17.11 ... Der Algorithmus von Floyd ... 533
17.12 ... Der Algorithmus von Dijkstra ... 539
17.13 ... Erzeugung von Kantentabellen ... 546
17.14 ... Der Algorithmus von Ford ... 548
17.15 ... Minimale Spannbäume ... 551
17.16 ... Der Algorithmus von Kruskal ... 552
17.17 ... Hamiltonsche Wege ... 557
17.18 ... Das Travelling-Salesman-Problem ... 562
19.1 ... Schlüsselwörter ... 677
19.2 ... Kommentare ... 678
19.3 ... Datentypen, Datenstrukturen und Variablen ... 679
19.4 ... Funktionen ... 690
19.5 ... Operatoren ... 701
19.6 ... Auflösung von Namenskonflikten ... 711
20.1 ... Ziele der Objektorientierung ... 717
20.2 ... Objektorientiertes Design ... 719
20.3 ... Klassen in C++ ... 725
20.4 ... Aufbau von Klassen ... 725
20.5 ... Instanziierung von Klassen ... 740
20.6 ... Operatoren auf Klassen ... 745
20.7 ... Ein- und Ausgabe in C++ ... 748
20.8 ... Der this-Pointer ... 755
20.9 ... Beispiele ... 756
20.10 ... Aufgaben ... 771
21.1 ... Modellierung von Beziehungen ... 775
21.2 ... Komposition eigener Objekte ... 776
21.3 ... Eine Klasse text ... 786
21.4 ... Übungen/Beispiel ... 797
21.5 ... Aufgabe ... 803
22.1 ... Darstellung der Vererbung ... 805
22.2 ... Vererbung in C++ ... 808
22.3 ... Beispiele ... 831
23.1 ... Klassen und Instanzen ... 879
23.2 ... Member ... 881
23.3 ... Vererbung ... 900
23.4 ... Zugriffsschutz und Vererbung ... 916
23.5 ... Der Lebenszyklus von Objekten ... 922
23.6 ... Typüberprüfung und Typumwandlung ... 946
23.7 ... Typumwandlung in C++ ... 948
24.1 ... Generische Klassen (Templates) ... 954
24.2 ... Ausnahmebehandlung (Exceptions) ... 962
24.3 ... Die C++-Standardbibliothek ... 973
24.4 ... Iteratoren ... 973
24.5 ... Strings (string) ... 976
24.6 ... Dynamische Arrays (vector) ... 990
24.7 ... Listen (list) ... 998
24.8 ... Stacks (stack) ... 1014
24.9 ... Warteschlangen (queue) ... 1017
24.10 ... Prioritätswarteschlangen (priority_queue) ... 1019
24.11 ... Geordnete Paare (pair) ... 1024
24.12 ... Mengen (set und multiset) ... 1025
24.13 ... Relationen (map und multimap) ... 1030
24.14 ... Algorithmen der Standardbibliothek ... 1032
Kapitel 1 ... 1042
Kapitel 3 ... 1055
Kapitel 4 ... 1069
Kapitel 5 ... 1090
Kapitel 6 ... 1103
Kapitel 7 ... 1120
Kapitel 8 ... 1144
Kapitel 10 ... 1155
Kapitel 14 ... 1162
Kapitel 20 ... 1186
Kapitel 21 ... 1203