Diskussion:C++-Programmierung: Projektdefinition Archiv:Aufbau - Alternativer Vorschlag von Funkysapien
Aufbau - Alternativer Vorschlag von Funkysapien aufbauend auf dem Vorschlag von Prog (In Arbeit)
BearbeitenSo, das ist mal mein Vorschlag zum Inhaltsverzeichnis. Ich das darüberstehende Inhaltsverzeichnis von Prog als Basis genommen und modifiziert, um den Leser früher an die objektorientierte Programmierung heranzuführen, und nicht erst eine Gewöhnung an prozedurales Programmieren entstehen zu lassen.
Das ganze ist noch in Arbeit (Ich ändere diese Zeile wenn es fertig ist). Schreibt einfach zu den einzelnen Anschnitten oder unter diese Zeile, wie euch der Vorschlag gefällt, und was ihr anders machen würdet.
- Was du geschrieben hast gefällt mir sehr gut, ich habe es leider noch nicht geschafft das neue Inhaltsverzeichnis komplett umzusetzen (morgen folgt mehr). Schau dir bitte an wie ich es bisher Aufgebaut habe und trage da noch die Punkte ein die dir Fehlen. Bedenke aber das wir unsere Leser nicht zu früh mit der STL konfrontieren sollten (soll nicht heißen das wir sie nicht einsetzen, z. B. string). Ich halte es für besser wenn der Leser erst mal, zumindest ein grundlegendes Verständnis zu Klassen und Templates hat, bevor wir die STL näher erläutern. Ich denke wir können auch ruhig schon mal anfangen das eine oder andere Kapitel zu schreiben. Was im Moment schon blau ist gehört zum alten Buch, die Kapitel können wir vielleicht erst mal Verschieben. --Prog 19:33, 15. Jan. 2007 (CET)
- Mir gefällt die Aufteilung auch ganz gut, ich habe nur einen Nachtrag. Ich finde das Thema Templates wird nicht abgedeckt. Dies ist aber für den fortgeschrittenen Teil, besonders für den Überblick über die STL, absolut notwending. Daher würde ich vorschlagen, dort noch ein Unterkapitel Funktions- und Klassentemplates einzufügen. -- Elementarteilchen(Dis.) 16:31, 5. Feb. 2007 (CET)
Einführung zum Buch
BearbeitenIch gedachte hier erst einmal so etwas wie ein Vorwort zu gestallten in dem vor allem Erklärt wird, wie dieses Buch zu lesen ist. Zusätzlich einige kurze Kapitel die Hintergrundwissen vermitteln das nicht unbedingt zum Verständnis des restlichen Buches von Nöten ist. Ein kurzer Abriss über die Geschichte von C++, wo C++ heute eingesetzt wird, warum man sagt es sei keine Sprache für Anfänger (dieses Buch soll beweisen das auch ein Einsteiger das schaffen kann), Alternative Programmiersprachen falls man beim lesen feststellt das man überhaupt keinen Durchblick hat usw. Das muss natürlich nicht alles rein, sind ja erst mal nur Vorschläge. Was ich für Wichtig halte ist klar zu machen das es hier nicht um die Gestaltung Graphischer Oberflächen geht, sondern nur um das Programmieren in C++. Zum Interagieren mit dem Programm wird ausschließlich die Kommandozeile (Shell oder DOS-Box) genutzt. (Eine kurze Vorstellung der wichtigsten GUIs, mit denen C++-Programmierer zutun haben können (Windows(.Net), Mac OS X (Carbon), Linux/Unix(X-Win, Qt,...) kann als Exkurs in Anhang stehen.) --Prog 23:18, 12. Jan. 2007 (CET) Bearbeitet Funkysapien 19:09, 14. Jan. 2007 (CET)
Für Programmieranfänger
BearbeitenIn diesem Abschnitt geht es auch noch nicht speziell um C++, sondern um die grundlegenden Dinge der Programmierung. Es soll klar gemacht werden wie ein Computerprogramm im groben funktioniert. Verzweigungen, Schleifen, Datentypen... --Prog 23:18, 12. Jan. 2007 (CET) Unverändert Funkysapien 19:09, 14. Jan. 2007 (CET)
Einführung in C++
BearbeitenHier wird zum ersten mal C++ verwendet. Grundsätzliche Konzepte, die praktisch in allen Programmiersprachen vorhanden sind werden mit Beispielen vorgestellt
- „Hello World“-Programm
- globale und lokale Variablen
- einfache Ein und Ausgabe
- Kommentare
- Rechnen {Variablen, Konstanten und ihre Datentypen}
- Rechnen mit unterschiedlichen Datentypen
- Arrays, Zeiger, Referenzen
- Verzweigungen, Auswahl (switch-case)
- Schleifen
- Praktisches Beispiel: Einfacher Taschenrechner mit den Grundrechenarten
Weitere Grundelemente
BearbeitenIn diesem Kapitel werden weitere Grundelemente vorgestellt, die der Leser immer wieder brauchen wird. Hier wird auch erstmalig das Klassenkonzept allgemein und speziell an hand der wohl am häuigsten verwendeten Klasse (string) vorgestellt.
- Prozeduren, Funktionen
- Klassenkonzept(Blackbox-Prinzip mit Vorteilen, Klassenmethoden und -attribute, Instanzen)
- Praktisches Beipiel Zeichenketten (C++-Strings als Klassentyp aus der STL, Verwendung der Instanzen als Datentyp zum Arbeiten mit Strings, Vergleich Variablen-Instanzen)
- erweiterte Ausgabe (Escapesequenzen und Ausgabemanipulatoren), erweiterte Eingabe (Eingabemanipulatoren)
- Fehlerausgabe (die Streams cerr und clog)
- Praktisches Beispiel: "Textspiegel" (Umkehren eines Strings)
Objektorientierung & Standard Template Library
BearbeitenHier sollen dem Leser die grundsätzlichen Konzepte des objektorientierten Programmierens genauer erläutert werden. Danach wird ihm der Nutzen von Vererbung durch die Vorstellung der STL und ihres hierarchischen Aufbaus verdeutlicht.
- Klassen als zentrales Element
- Vererbung - Überschreibung - Polymorphismus
- Überladung - Operatorüberladung
- Die STL als wichtigste Klassenbibliothek
- Die Klassengruppen in der STL und ihr Zweck
- Praktisches Beispiel: Instanziierung einer Containerklasse, füllen mit (eingegebenen) Strings, ausgeben der Strings
Theorie und Praxis
BearbeitenIn diesem Abschnitt sollen mal keine neuen Bestandteile erklärt werden, sondern mit den bisher bekannten programmiert. Anhand einiger Beispiel soll gezeigt werden wie man die einzelnen Bestandteile praktisch anwendet. Es sollen 3 bis 4 kleine Programme geschrieben werden, die verschiedene bisher kennengelernte Elemente benutzen. Am Ende jedes Kapitels (=Programmes) soll der Leser als Aufgabe noch eine Erweiterung hinzufügen. Auf diese Weise ist dann auch der gesamte Programmcode in der Musterlösung zusammenhängend dargestellt und muss nicht am Ende des Kapitels noch mal zusammenhängend stehen. --Prog 23:18, 12. Jan. 2007 (CET)
Exkurs:Grammatik und Semantik der Sprache C++
BearbeitenDieser Abschnitt dient dazu, dem Leser systematische Regeln an die Hand zu geben um triviale Fehler zu beschränken und die Art und Weise zu verstehen wie ein Compiler C++-Code "liest". Außerdem sollen Regeln der Strukturierung eingeführt werden, die dem Leser helfen, seinen Code lesbar und wartbar zu halten.
- Möglichkeiten, C++-Code zu schreiben
- An welchen Stellen können Lehrzeichen, Lehrzeilen etc. eingefügt werden
- Einheitliche und gute Formatierung des Codes
- Einheitliche Namen
- Namensräume
Sortieralgorithmen
BearbeitenHier geht es wieder um Praxis, diesmal sollen die Elemente eines Arrays (10 int-Werte) mit den selbstgeschrieben Algorithmen Simplesort, Bubblesort und Insertsort in die richtige Reihenfolge (aufsteigend – also von klein nach groß) gebracht werden. Pro Kapitel wird ein Algorithmus erklärt, aber nicht in C++ sondern mit Worten. Den Algorithmus in C++ umzusetzen ist Aufgabe des Lesers, es wird zunächst schrittweise eine abstrakte Basisklasse aufgebaut die einen STL-Container mit den Elementen als Argument einer Methode annimmt, und die zunächst alle gemeinsamen Elemente enthält. Dann wird eine Klasse abgeleitet, die von der Basisklasse erbt, und jeweils einen der Algorithmen implementiert der den STL-Container sortiert. Die erste abgeleitete Klasse wird zusammen mit dem Leser entwickelt, um die Umwandlung eines komplexeren Algorithmus in Code aufzuzeigen, für die beiden nächsten Klassen bekommt der Leser nur die Beschreibung des Algorithmus und muss diesen selbst in C++ umsetzen. Dadurch soll der Leser seine praktischen Kenntnisse des Klassenaufbaus aus dem Kapitel "Theorie und Praxis" vertiefen, und zum ersten mal eine selbstgeschriebene abstrakte Basisklasse und abgeleitete Klassen verwenden. Außerdem soll das sequentielle logische Denken geübt werden. Im letzten Kapitel dieses Abschnitts sollen die Klassen in einem Kommandozeilenprogramm verwendet werden, zu dem ein Menü zu Auswahl eines Algorithmus durch den Benutzer gestaltet werden muss.