inkl. MwSt., ggf. zzgl. Versandkosten
ready to ship
Das Lehrbuch orientiert sich u.a. an Lehrplänen von Fachhochschulen für technische Studiengänge und bietet eine Einführung in C/C++ unter Windows mit Microsoft Visual C++. Daneben werden auch Themen wie Entwicklungsverfahren und die Planung von Softwareentwicklung angesprochen.
Bei der Einführung in C/C++ beschränken sich die meisten Programmbeispiele auf Win32 Konsolenanwendungen. Dabei werden nur Konstrukte aus C verwendet, Zeichenketten beispielsweise nur als character array bzw pointer, nicht aber als std::string aus C++. Ein weiteres Beispiel ist die Verwendung von printf aus C, in einem der späteren Beispiele wird dann iostream und std::cout aus C++ ohne vorherige Einführung verwendet (zumindest habe ich keine gefunden).
Der Abschnitte bzgl der Methodenbeschreibung zur Softwareentwicklung beschränkt sich auf eine Darstellung des Wasserfall-Modells, auch wenn sie hier nicht so genannt wird. Moderne Ansätze wie beispielsweise iterative Vorgehensmodelle werden nicht eingeführt. Breit werden Struktogramm und Programmablaufplan eingeführt, neuere Ansätze wie UML nur am Rande erwähnt.
Im Lehrbuch habe ich darüber hinaus eine Einführung in Qualitätssicherung durch Unittests vermisst oder in eine Quellcodeverwaltung wie beispielsweise git. Auch machten die Bildschirmfotos einen inkonsistenten Eindruck. Gerade bei der Einführung in Visual Studio C++ sind die Bildschirmfotos teilweise farbig und teilweise schwarz-weiß, letzter stammen vermutlich aus einer älteren Fassung des Buches.
Das Buch versucht viele Themen anzusprechen, geht für ein Lehrbuch für C/C++ aber nicht genügend auf C und insbesondere C++ ein. Für einen Einstieg in C oder modernes C++ im Selbststudium eignet sich das Buch in meinen Augen nicht gegebenenfalls begleitend zu einer darauf aufbauenden Lehrveranstaltung. Die Beispiele im Buch sind zum Teil interessante numerische Probleme, zum Teil aber auch einfach Bubble- und Ripplesort.
Mir wurde das Lehrbuch vom Verlag als Rezensionsexemplar (PDF) zur Verfügung gestellt. Ich arbeite seit mehr als 10 Jahren als C/C++ Entwickler.
Es behandelt dabei im Schwerpunkt prozedurale (auch rekursive) Algorithmen, nicht objektorientierte Softwareentwicklung. Als Entwicklungsumgebung wird Visual Studio benutzt. Die aktuelle Version (2022) unterscheidet sich erheblich von der Version, die in dem Buch benutzt wurde. Es werden viele C-Befehle benutzt, die so wie im Buch beschrieben, nicht den Sicherheitsanforderungen moderner Software entsprechen. Das Buch ist nicht auf dem Stand der aktuellen Softwareentwicklung, zeigt aber eine große Menge an algorithmischen Lösungen mit gut erklärten Beispielen auf. Die Stärken des Buchs
1. Die Stärken des Buchs sind die Menge des Inhalts. Von Methoden der Softwareentwicklung über eine Einführung in C/C++ und eine Beschreibung der grundlegenden Sprach- und Kontrollstrukturen. Die strukturierte Programmentwicklung mit dem Werkzeug Struktogramm und sehr vielen Beispielen.
2. Die Lösung von „Einfachen Problemen“ sind im Wesentlichen Übungen zur strukturierten Programmierung. Temperaturskalen umrechnen, PI-Algorithmen, Primzahlen, Lottozahlen usw. sind bekannte „Fingerübungen“ auch in anderen Lehrbüchern.
3. Eine Einführung in die Objektorientierte Programmierung mit Klassendiagrammen, Klassenhierarchien und Klassenaggregationen werden sehr theoretisch und sehr knapp beschrieben. Das Beispiel „Bruchrechner“ findet sich in vielen Lehrbüchern.
4. Richtig gut gefallen hat mir die Beschreibung der Koordinatentransformation in der Darstellung funktionaler Abhängigkeiten.
Das ist umfassend und genau beschrieben und zeigt die Mächtigkeit einer kleinen Funktion oder Methode. Es zeigt auch wie wichtig grundlegende mathematische Kenntnisse sind, um Programme zu realisieren.
5. Die Ermittlung der Fourier-Koeffizienten einer zeitabhängigen Funktion ist gut demonstriert und in eine Anwendung realisiert.
6. Nullstellenermittlung, Regula Falsi und das Newton-Verfahren sind ausführlich dargestellt. Diese Verfahren finden sich aber auch in fast jeder Einführung in die numerische Mathematik. Ebenso gut ist die Numerische-Integration an einem Beispiel erörtert.
7. Weitere Beispiele sind Simpsonsche Regel, Effektivwert-Berechnung, Flächen- und Volumenberechnung.
8. Ein „Platinen-Projekt“ demonstriert die Erweiterung einer Konsolenanwendung durch eine grafische Oberfläche.
Unterschiedliche Ansichten
1. Ein inhaltlich umfangreiches Werk wird fast immer unterschiedliche Ansichten provozieren. Alle Themen sind keineswegs umfassend dargestellt. Schon die Software-Entwurfstechniken lassen moderner Techniken aus (Rapid Prototyping, Agile Verfahren…).
2. C/C++ hat einige historische Besonderheiten, die es besonders schwierig machen, sichere Programme zu erstellen (Keine Prüfung auf Indexüberlauf, Speicherallokationsfehler, keine automatische Speicherbereinigung (Garbage Collection) usw. Das gilt nicht unbedingt für C++/CLI.
3. Der Titel des Buchs „Technische Probleme lösen mit C/C++“ kann falsche Erwartungen erwecken. Es handelt sich um ein Lehrbuch, mit dem man Grundlagen zu C/C++ erlernen kann.
Ob das Aufzeigen von Lösungen (sehr vielen Lösungen) didaktisch geschickt ist, ist eine andere Frage. Es gibt nur wenige Aufgaben. Daher lernt man eher Beispiellösungen als Muster für die Lösung ähnlicher Aufgaben zu benutzen, als eigene Lösungen zu finden. Als ein begleitendes Buch während der Ausbildung oder des Studiums kann es dienen.
4. Ist der Schwerpunkt des Inhalts richtig gesetzt? Von der Anzahl der Seiten liegt der Schwerpunkt bei der „Lösung fortgeschrittener Probleme“ (78 Seiten). Diese Problemstellungen haben in der Mehrzahl prozedurale Lösungsansätze. Mathematische Gleichungen werden in Algorithmen umgesetzt und diese werden dann prozedural als Programme realisiert. Es gibt nur ein Projekt, das einen objektorientierten Ansatz verfolgt. Das „Platinen-Projekt“ verwendet eine Datenstruktur und zeigt den Umgang mit der Datenkapselung.
Bei den Sortieralgorithmen (umfangreiches Kapitel) wird z.B. eine Struktur (struct), der Vorgänger der Klassen benutzt, um Datenstrukturen zu sortieren. Das kann mit Befehlen von C++ relativ einfach für sortierbare Datenstrukturen erledigt werden.
Die Schwächen des Buches
1. Entwicklungsumgebung Visual Studio
Alle Anwendungen basieren auch in der 6. Auflage auf Visual Studio 2015.
Die (heute 2024) aktuelle Ausgabe der Community Edition von Visual Studio ist die Version 2022. Dies Version unterscheidet sich gravierend von Visual Studio 2015.
In der Standard-Installation sind Win32- und CLR-Projekttypen nicht verfügbar.
Diese müssen nachträglich hinzugefügt werden und dazu braucht man zusätzliche Kenntnisse über Visual Studio und die installierbaren C++-Projekttypen.
Nutzt man eine leere Konsolenanwendung, dann treten Fehler und Warnungen auf, die man durch Anpassungen bei den #include-Zeilen und durch Änderungen der Befehle beseitigen muss. Hat man die Projekttypen CLR- und Windows-Forms Anwendungen zusätzlich installiert, dann muss die inkludierte Headerdatei stdafx.h durch pch.h ersetzt werden (ab Visual Studio Version 2017).
2. Dann gibt es ein Beispiel, das zeigt, dass eine short int-Variable nur 16 Bit zur Verfügung hat. Das ist bei den aktuellen Implementierungen nicht mehr der Fall. Die Implementierung hier ist 32 Bit. Da die Autoren einen Überlauf bei einer Variable zeigen wollten (was eine sehr gute Idee ist), funktioniert das Beispiel aber nicht. Der Überlauf bleibt aus und man muss herausbekommen, warum das so ist.
Auf diese Weise kann man auch lernen.
3. Viele Befehle, die noch aus der Programmiersprache C stammen, sind veraltet und werden heute (2024) unter anderem aus Sicherheitsgründen nicht mehr benutzt (depricated). Z.B. die Funktion scanf(). Es gibt sichere Alternativen wie fget() oder sscanf(). C++ stellt moderne Funktionen für die Ein- und Ausgabe zur Verfügung
(cin >>, cout
Sehr guter Überblick von den ersten Schritten in C++ bis zu komplexeren Implementierungen. Mit detailierten Fallbeispielen. Perfekte Ergänzung zu anderen Standardwerken zum Erlernen und Verwenden von C++.
Der Titel verspricht Lösungsansätze in C/C++ für die technische Probleme und was dies
betrifft, ist es eine gute Sammlung dessen. Zu Beginn wird auf Motivation und Formalismen
eingegangen. das ist für ein Grundverständnis in Ordnung. Anschließend geht es recht umfangreich
und verständlich an die Basisbefehle von C. Die Einführung zu Visual C ist nachvollziehbar
erläutert, allerdings besteht bei der Verwendung eines festgelegten Programms (hier die Programmierumgebung) das Problem der Aktualität.
Anscheinend sind die Programmbeispiele schon älter und bei der Implementierung mit einer Version von 2022
gab es einige Warnungen und vereinzelt Fehlermeldungen. Ebenso treffen einige Querverweise zum Beispielcode nicht die Zeilennummer.
Ein Ausflug in die objektorientierte Welt wird kurz vollständig umrissen, aber ein praktischer Nutzen für den Anfänger ergibt sich kaum. Hier ist man
mit zusätzlicher Literatur besser bedient, wie auch bei der Erstellung von Programmen mit graphischen Oberflächen.
Die praktischen Beispiele sind aber gut nachzuvollziehen und können für Aha-Effekte sorgen. Letzten Endes hält das Buch, was derTitel verspricht und wer C++ und den Umgang mit MS Visual C++ erlernen möchte, wird zunächst andere Literatur bemühen.
Dem Anspruch in der Hochsprache C bzw. C++ naturwissenschaftlich-technische Fragestellungen und Verfahren zur Anwendung zu bringen, sind die Autoren in exemplarisch umfassendster Weise entgegengekommen. Wohl aus langer Hochschultätigkeit erwachsen, finden sich bis ins Detail ausgearbeitete Umsetzungen vielfältigster Themen aus Mathematik, angewandter Geometrie sowie zu physikalisch-elektrotechnischen Fragestellungen und IT-Verfahren, die zu eigenen Programmierversuchen anregen und den Weg bereiten.
Anhand eines Links werden dem Leser zudem alle relevanten Codedateien und insbesondere auch die VisualStudio-Projektdateien zur Verfügung gestellt, deren Einsicht und Verwendung zu grundlegendem Verständnis unabdingbar sind. Obwohl sich das Buch zum Einen an Technikinteressierte wendet, zum Anderen aber auch ein tieferes Verständnis von C/C++ nicht zwingend voraussetzt, sind die ersten gut einhundert Seiten (ca. 1/4tel des Gesamwerks) der kompakten Einführung in diese Programmiersprache gewidmet.
Alsdann wird unter der Annahme eines Windows-Betriebssystems die universelle Entwicklungsumgebung VisualStudio in der Version 15 systematisch vorgestellt und erklärt, wobei anzumerken wäre, dass sich neuere VS-Versionen graphisch (weniger funktionstechnisch) unterscheiden können und beim Kompilieren der Graphikbeispiele ggf. auch die Nachinstallation der SDK-Erweiterung in der Version 7.4.2 erforderlich sein mag. Keine Verwendung gemacht wurde von iostream-Klassen (cin, cout) und gleichfalls verzichtet wurde auf eine umfaßende Darstellung der Containerklassen aus der C++Standardbibliothek, die zwar auch ihrerseits Sortier- und Suchalgorithmen bereitstellen, dies aber gerade als Black-Box, wogegen es Anliegen vorliegenden Buches ist, von Modellbildung und Struktogrammen ausgehend das Transponieren wissenschaftlich-technischer Fragesstellungen in die EDV mittels der Programmiersprache C/C++ transparent zu erklären.
Dipl.-Math. Norbert Heiderich arbeitet als Lehrer u.a. für Programmierung am Berufskolleg des Kreises Kleve in Kleve.
Dipl.-Ing. Wolfgang Meyer war Leiter des Heinz-Nixdorf-Berufskollegs. Er unterrichtete Datenverarbeitungstechnik und Programmieren. Er ist Beauftragter für Ingenieur-Studiengänge der FOM Hochschule.
Dipl.-Math. Norbert Heiderich arbeitet als Lehrer u.a. für Programmierung am Berufskolleg des Kreises Kleve in Kleve.
Dipl.-Ing. Wolfgang Meyer war Leiter des Heinz-Nixdorf-Berufskollegs. Er unterrichtete Datenverarbeitungstechnik und Programmieren. Er ist Beauftragter für Ingenieur-Studiengänge der FOM Hochschule.