Skip to main content

1999 | Buch | 4. Auflage

Effektiv Programmieren in C und C++

Eine aktuelle Einführung mit Beispielen aus Mathematik, Naturwissenschaft und Technik

verfasst von: Dietmar Herrmann

Verlag: Vieweg+Teubner Verlag

Buchreihe : Ausbildung und Studium

insite
SUCHEN

Über dieses Buch

C hat sich schon seit vielen Jahren als die wichtigste profes­ sionelle Programmiersprache bewährt. Seit langem hat C sein textgebundenes UNIX-Image überwunden und ist an allen Maschinen in einer grafisch-visuellen Benutzeroberfläche vertreten. Das Buch ist als Arbeitsbuch für alle Leser geschrieben, die selbst am Rechner Erfahrungen in dieser wichtigen Program­ miersprache sammeln wollen. Das Buch ist kein Lehrbuch, das mit einigen wenigen Programmfragmenten enzyklopä­ disch alle Sprachelernente in systematischer Weise abhandelt. Der Leser kann sich vielmehr an über 150 C- Programmen beispielorientiert in die Sprache einarbeiten. Die Neuerungen der ANSI C-Norm, die fast alle in C++ ihren Niederschlag ge­ funden haben, werden ausführlich referiert. Die Darstellung setzt voraus, daß der Leser seinen Rechner und sein Betriebs­ system kennt und nach dem Laden des Quelltexts in einen Editor das Programm mittels eines C- bzw. C++-Compilers zum Laufen bringt. Das Buch ist ursprünglich aus Aufzeichnungen für Kurse aus dem Bereich Lehrerausbildung entstanden, es wurde mehrfach als Basis für eine Vorlesung "Programmieren 1 und 2" an der Fachhochschule München verwendet. Die vorliegende 4. Auf­ lage wurde gänzlich überarbeitet, aktualisiert und erweitert. Die Bedeutung von C ist in den letzten Jahren durch die Einführung der Programmiersprache C++ noch wesentlich gewachsen. B. STROUSTRUP wählte bewußt C als Basis für sei­ ne objektorientierte Spracherweiterung. Eine vertiefte Kennt­ nis von C ist sicher ein idealer Einstieg in C++. Das Buch bietet in den Kapiteln 18 bis 20 einen elementaren Einstieg in die objektorientierte Programmierweise.

Inhaltsverzeichnis

Frontmatter
1. Überblick
Zusammenfassung
Die Entstehung von C erfolgte simultan zur Entwicklung des Betriebssystems UNIX. In den Jahren 1969–72 schrieb Ken Thomson in den AT&T-Bell-Laboratories mit Hilfe von Dennis Ritchie ein Betriebssystem (die erste Version von UNIX) für den Rechner DEC PDP–7 von Digital Equiment. Dazu entwickelte Thomson die Programmiersprache BCPL (Basic Combined Programming Language) von M. Richards (1967) weiter und nannte sie B. B war wie BCPL für Systemprogrammierung gedacht; daher war der einzige verwendete Datentyp das Maschinenwort. Bei der Einführung der DEC PDP-11 1972 stellte sich das Problem, wie man das Betriebssystem am einfachsten an die Architektur der neuen Maschinen anpassen sollte. Da die PDP-11 nunmehr auch Zeichen, Ganz- und Fließkommazahlen unterstützte, war klar, daß B um dieses Datentypkonzept erweitert werden mußte. Das Resultat dieser Erweiterung war C, wie die neue Programmiersprache nun folgerichtig genannt wurde.
Dietmar Herrmann
2. Syntax
Zusammenfassung
Die Syntax einer Programmiersprache zählt stets zu den etwas trockenen Kapiteln eines Buches. Jedoch ist die Kenntnis der Syntax unerläßlich, um korrekte Programme schreiben und die Arbeitsweise des Compilers verstehen zu können. Gerade in C, das sich durch eine Vielzahl von Operatoren, eine Kurzschreibweise und eine spezielle Interpretation von Ausdrükken wesentlich von anderen Programmiersprachen unterscheidet, ist die genaue Kenntnis aller Grammatikregeln der Sprache wichtig.
Dietmar Herrmann
3. Einfache Datentypen
Zusammenfassung
Der einfachste Datentyp ist die Ganzzahl (engl. integer). Bei den meisten 16-Bit-Rechnern werden int-Zahlen durch ein Rechnerwort implementiert und haben somit eine 16-Bit-Darstellung. Berücksichtigt man, daß ein Bit davon zur Speicherung des Vorzeichens benötigt wird, lassen sich 215 = 32768 unterschiedliche Werte darstellen. Unter Einbeziehung der Null lassen sich damit die positiven Zahlen 0 bis 32767 darstellen. Zusammen mit den negativen Zahlen ergibt sich für int-Zahlen der Wertebereich -32768 bis 32767 Das Überschreiten dieses Bereichs heißt Integer-Overflow und führt nicht zu einer Fehlermeldung des Compilers. Zählt man 32767 um eins weiter, entsteht das sinnlose Ergebnis -32786.
Dietmar Herrmann
4. Kontrollstrukturen
Dietmar Herrmann
5. Reihungen und Zeichenketten
Zusammenfassung
Gleichartige Elemente wie Folgenglieder, Polynom-Koeffizienten, Vektorkomponenten usw. können zu Reihungen zusammengefaßt werden.
Dietmar Herrmann
6. Pointer
Zusammenfassung
Von vielen Leuten werden Pointer als das am schwersten zu verstehende Kapitel der Programmiersprache C betrachtet. Wie das obenstehende Zitat von Hoare zeigt, lehnen einige Informatiker das Arbeiten mit Zeigern als Rückschritt in die Assemblerzeit generell ab. Dies kommt zum einen daher, daß viele Programmiersprachen wie BASIC oder FORTRAN überhaupt keine Pointer kennen und neuere Sprachen — wie PASCAL — den Gebrauch von Pointern wesentlich einschränken. Zum anderen gilt, daß durch die in C verwendete Syntax für Pointer das Verständnis des Lernenden nicht gerade erleichtert wird.
Dietmar Herrmann
7. Funktionen
Zusammenfassung
Eine Funktion ist mathematisch gesehen eine Vorschrift, die zu einem gegebenen Argument einen bestimmten Funktionswert liefert. Entsprechend versteht man in der Informatik darunter einen selbständigen Programmteil, der in Abhängigkeit von gewissen Parametern einen wohlbestimmten Wert liefert.
Dietmar Herrmann
8. Speicherklassen
Zusammenfassung
C kennt zwei verschiedene Gültigkeitsbereiche von Variablen. Variablen, die nur in dem Block gültig sind, in dem sie vereinbart wurden, heißen automatisch (engl. automatic). Die Speicherklasse auto wird in C als Voreinstellung (Default) gewählt, wenn die Variable nicht explizit in eine andere Speicherklasse gesetzt wird.
Dietmar Herrmann
9. Operatoren und Ausdrücke
Zusammenfassung
C kennt, wie kaum eine andere Programmiersprache, eine Vielzahl von Operatoren.
Dietmar Herrmann
10. Rekursion
Zusammenfassung
Eine Funktion, die sich zur Berechnung eines Funktionswertes selbst aufruft, heißt rekursiv.
Dietmar Herrmann
11. Höhere Datentypen
Zusammenfassung
Den Datentyp enum (englisch enumerated aufgezählt) gab es schon bei zahlreichen älteren C-Compilern; er wird nun durch die neue ANSI C-Norm vollständig unterstützt.
Dietmar Herrmann
12. Dynamische Datenstrukturen
Zusammenfassung
Da die obere Indexgrenze einer Reihung zur Compilierzeit festliegen muß und auch zur Laufzeit nicht geändert werden kann, ist der Speicherbedarf einer Reihung genau festgelegt. Hinzu kommt, daß unter MS-DOS bei den kleineren Speichermodellen die Größe eines Arrays auf ein Segment, d. h. auf 64K, beschränkt ist. Die Reihung stellt daher einen statischen Datentyp dar, im Gegensatz zu dynamischen Datentypen, bei denen der benötigte Speicherplatz nach Bedarf vergrößert oder verkleinert werden kann. Solche dynamische Datenstrukturen werden (meist) rekursiv definiert und mit Hilfe von Pointern realisiert. Als Beispiel solcher dynamischen Datentypen sollen Stacks, verkettete Listen und Binärbäume besprochen werden.
Dietmar Herrmann
13. Präprozessor und Bibliotheken
Zusammenfassung
Der Präprozessor ist ein Programm, das den Quellcode für die Compilerübersetzung vorbereitet.
Dietmar Herrmann
14. Dateien und stdin
Zusammenfassung
Die am meisten verwendete Standard-Funktion, die eine formatierte Ausgabe liefert, ist printf ( ).
Dietmar Herrmann
15. Programmier-Prinzipien
Zusammenfassung
Stößt man auf eine besonders elegante Formulierung eines Algorithmus, fragt man sich oft, wie der Autor auf die entsprechende Programmidee gekommen ist. Mustert man jedoch eine Vielzahl von Programmen genauer, erkennt man bald, daß es im Grunde nur wenige grundlegende Programmierprinzipien gibt. Einige dieser Programmiertechniken sollen im folgenden dargestellt werden.
Dietmar Herrmann
16. System-Programmierung (MS-DOS)
Zusammenfassung
Obwohl die in diesem Abschnitt verwendeten Schlüsselwörter MS-DOS-spezifisch sind und daher nicht der ANSI C-Norm entsprechen, soll an einigen Beispielen gezeigt werden, wie man in C Zugang zum MS-DOS-Betriebssystem erhält. Eine vollständige Darstellung ist im Rahmen des Buchs natürlich nicht möglich. Es wird hier auf die Literatur [13] bzw. [22] verwiesen.
Dietmar Herrmann
17. C-Programme aus verschiedenen Bereichen
Zusammenfassung
In diesem Abschnitt findet der Leser Programme aus Numerik, Wahrscheinlichkeitsrechnung und Grafik. Da die Grafik unter ANSI C nicht standardisiert ist, lassen sich Grafik-Programme nur für spezielle Compiler schreiben. Hier im Buch wird jeweils die Turbo C / Borland C-Version dargestellt. Auf der Diskette finden Sie im Verzeichnis MSGRAF die Version für Microsoft C beziehungsweise Visual C++.
Dietmar Herrmann
18. Von C nach C++
Zusammenfassung
In diesem Abschnitt sollen einige wichtige Änderungen besprochen werden, die sich beim Übergang von C nach C++ ergeben. Dabei sollen die objektorientierten Sprachelemente von C++ noch ausgeklammert, diese werden Inhalt des nächsten Kapitels sein.
Dietmar Herrmann
19. Einführung in OOP
Zusammenfassung
Was ist eigentlich ein Objekt? Ein Objekt in Sinne der objektorientierten Programmierung (OOP) ein materieller oder geistiger Gegenstand, der jeweils einen vorgegebenen, änderbaren Zustand hat und mit genau definierten Aktionen mit seiner Umgebung kommuniziert. Diese Kommunikation besteht aus dem Austausch von „Nachrichten“, auf die das Objekt mittels seiner vorgegebenen Methoden reagiert. Präziser als durch diese allgemeine Beschreibung, wird das Verhalten von Objekten wird in der OOP durch folgende Begriffe (unabhängig von speziellen Programmiersprachen) charakterisiert
  • Datenkapselung, d.h. Abschirmung der internen Eigenschaften nach außen.
  • Datenabstraktion, d.h. Unterstützung abstrakter Modellierungen eines Problembereichs.
  • Modularität, d.h. Zerlegbarkeit in wiederverwendbare und erweitbare Einheiten.
  • Vererbung, d.h. Objekte können selbst Methoden erben oder an andere weitergeben.
  • Polymorphismus; d.h. Objekte können in mehreren Formen auftreten.
Dietmar Herrmann
20. C++-Programme aus verschiedenen Bereichen
Zusammenfassung
Im folgenden Abschnitt demonstrieren zehn weitere C++-Programme die Vielfalt der objektorientieren Programmierung. Sie stammen aus verschiedenen Bereichen wie Wirtschaft, Informatik, Numerik, Statistik und Physik und zeigen die Spannweite der anzutreffenden Anwendungstypen.
Dietmar Herrmann
21. Die Standard Template Library (STL)
Zusammenfassung
Die Wiederverwendbarkeit von Code durch Anwendung von Templates, d.h. von datentypunabhängigen Funktionen und Klassen, ist ein grundlegendes Ziel der OOP. Durch die Aufnahme von standardisierten Templates in die ANSI C++-Norm wird dem Programmierer eine erprobte, flexible, allgemeingültige Implementierung von Algorithmen und Datenstrukturen an die Hand gegeben. Nach der Verabschiedung des Final Draft im November 1997 ist nun keine Änderung mehr zu erwarten, obwohl viele Entwickler bis zuletzt noch auf die Einbeziehung einer Template-Klasse zur Hashsuche gehofft haben.
Dietmar Herrmann
Backmatter
Metadaten
Titel
Effektiv Programmieren in C und C++
verfasst von
Dietmar Herrmann
Copyright-Jahr
1999
Verlag
Vieweg+Teubner Verlag
Electronic ISBN
978-3-322-92867-2
Print ISBN
978-3-528-34655-3
DOI
https://doi.org/10.1007/978-3-322-92867-2