HOME Copyright© 2008 by Doina Logofătu www.doina-logofatu.de |
Vorwort
Der vorliegende Titel basiert auf meinem Buch
„Bazele programării în C. Aplicaţii” („Grundlagen der
Programmierung in C. Anwendungen”), das Anfang 2006 im Polirom-Verlag
in Rumänien erschienen ist. Es ist als Lern- und Arbeitsbuch der
C-Programmierung konzipiert und versetzt Sie in die Lage, eine Vielzahl
praktischer Probleme zu lösen. Das theoretische Gerüst und
die Vielfältigkeit der vorgestellten Themen machen das Buch auch
für fortgeschrittene Leser interessant. Ich empfehle es
Schülern, Studenten, Programmierern, Informatiklehrern und allen
Interessierten für das individuelle Studium, als Arbeitsmaterial
in der Lehre oder als Nachschlagewerk. Da C Basis für die modernen
objektorientierten Sprachen C++, Java und C# und außerdem
flexibel und effizient ist, bin ich der Ansicht, dass sich die
Programmiersprache ausgezeichnet für Einsteiger eignet. Bevor Sie
sich mit dem Thema Objektorientierung befassen, sollten Sie sich
algorithmisches, strukturiertes Denken aneignen und die Basiskonzepte
(Algorithmenentwurf, Variablen, Anweisungen, Modularität,
Speicherplatzmanipulation) beherrschen. Wenn Sie der Programmierung
treu bleiben, werden Sie nahezu automatisch zu C++, Java oder C#
gelangen, denn diese Sprachen bieten Konzepte wie Datenabstraktion oder
generische Programmierung. Die 100 Probleme, die Sie mit
vollständigen Lösungen im Buch finden, sind unterschiedlich
schwer. Zu jeder Problembeschreibung gehört ein
repräsentatives Eingabe- und Ausgabe-Datenset, mit dem Sie Ihre
eigene Lösung überprüfen können. Danach wird das
Problem analysiert, dazu schlage ich eine mögliche Lösung
vor. Und schließlich finden Sie für diese Lösung das
komplette C-Programm aufgelistet, bevor wieder Ihr Hirnschmalz bei den
verwandten Aufgaben und Übungen gefragt ist. Übungen gibt es
auch am Ende jedes Kapitels, insgesamt über 330 im Buch. Die
Programme sind kompakt und vollständig, um eine gute Lesbarkeit zu
gewährleisten und die C-Sprache zu vertiefen. Sie sind,
außer das letzte Programm mit Fraktalen (Kapitel 10), mit der
Microsoft Visual C++ 2005 Express Edition kompiliert worden, die
Microsoft kostenlos zur Verfügung stellt. Sie halten sich an den
ANSI-C-Standard und sollten mit jedem C-Compiler funktionieren. Entlang
der zehn Kapitel lade ich Sie zu einer Reise ein, die Sie mit der
Sprache C vertraut macht. Das erste Kapitel startet kurz und
bündig mit den Grundelementen von C und zahlreichen Beispielen.
Die nächsten sechs Kapitel (2 bis 7) enthalten viele gelöste
Probleme (einfache Anweisungen, Zeichenketten, Arrays, Strukturen,
Unionen, Zeiger, Bit-Operationen, Zeitfunktionen, Zufallszahlen), damit
Sie sich mit C und dem Lösungsentwurf für konkrete
Aufgabenstellungen anfreunden können. In den letzten drei Kapiteln
(Kapitel 8 bis 10) befassen wir uns mit schwierigeren Dingen:
verketteten Listen, komplexeren Datenstrukturen und ihrer Verarbeitung,
Fraktale. Ein Grund dafür ist auch, dass ich mir dadurch erhoffe,
Sie mit diesen interessanten Themen für die Programmierung
begeistern zu können. Kapitel 8 behandelt verkettete Strukturen
(einfach und doppelt verkettete, kreisförmige, Hash-Tabellen,
Kellerspeicher, Bäume). In Kapitel 9 erstellen wir eine
umfangreiche Anwendung, die verkettete Listen nutzt, um die Wurzel
k-ten Grades einer großen Zahl zu berechnen. Wir implementieren
dabei alle arithmetischen Operationen für solch große
Zahlen. Die Applikation im letzten Kapitel zeichnet fraktale Strukturen
und macht u. a. von Bitoperatoren und graphischen Routinen Gebrauch.
Das Programm ist in Borland-C geschrieben, weil die grafische
Bibliothek überschaubar und lehrreich ist. Sie können den
grafischen Anteil mit einem anderen ersetzen, um die Fraktale zu
zeichnen. „Eine praktische Einführung in C“
enthält viele wichtige Konzepte aus der elementaren
Datenverarbeitung, wie z.B. Suchen eines Elements, Sortieren,
Löschen, Hinzufügen, Operationen mit Dateien usw. Dazu werden
auch verschiedene Datenstrukturen vorgestellt: Strukturen, Bitfelder,
Unionen, Arrays, Zeichenketten, Kellerspeicher, Hash-Tabellen oder
Binärbäume. Die oft verwendeten Zeichenkettenoperationen,
Bit-Operationen und Zeitfunktionen werden in mehreren ausgewählten
Problemstellungen vorgestellt. Funktionen erstellen wir selbst, um
klassische Aufgaben zu lösen, und wir lernen auch, wie wir
bestehende Funktionen aus den Header-Dateien verwenden können
(z.B. für Zeichenkettenoperationen, Zeit- und
Zufallszahlenfunktionen, Sortieren oder Suchen in einem Array).
Für einen Programmierer ist Mathematik sehr wichtig. Die vielen
Übungen und Beispiele im Buch tragen dazu bei, mehrere
grundlegende Konzepte der Mathematik aufzufrischen, u.a. Teilbarkeit
und Primalität natürlicher Zahlen, Rekurrenzen, Reihen,
Berechnung des Wertes π, Fibonacci-Zahlen, vollkommene und befreundete
Zahlen, Operationen mit Polynomen und Matrizen, Goldbachsche Vermutung,
Gleichungen, Brüche und Mengen, Geometrie, Sieb des Eratosthenes.
Die einzige Möglichkeit, eine Programmiersprache zu beherrschen,
ist kontinuierliches Üben. Es ist wichtig, immer wieder
selbständig verschiedene Aufgaben zu lösen und Programme zu
entziffern, zu erweitern, damit zu „spielen“. Dieses Buch bietet Ihnen
dazu eine große Anzahl von oft auftretenden und vielschichtigen
Programmieraufgaben an, die meisten davon sind vollständig
gelöst und mit Erklärungen zur Sprache C, Mathematik und
Algorithmik versehen. Alle Programme des Buches finden Sie auf der
beiliegenden CD, so dass Sie sie ausprobieren, ändern und
erweitern können. Ab und zu finden Sie als Belohnung für Ihren Fleiß zwischen zwei Kapiteln Bilder wie „Hof des Königspalastes in Madrid“, „Winterlandschaft in Ried“, „Wellensurfer in München“, „Kuppel der blauen Moschee“ oder „Garten in Alhambra“. Vergessen Sie nicht, gelegentlich den Online-Service zum Buch zu besuchen:
http://www.algorithmen-und-problemloesungen.de
Dort finden Sie Erweiterungen,
Ergänzungen, Lösungen usw. Bitte schicken Sie Ihre Ideen und
Vorschläge an . Vielen Dank im Voraus! München, im Juni 2008
Doina Logofătu |