Diskussion:C++-Programmierung: Projektdefinition Archiv:Aufbau
Abschnitt hinzufügenAufbau
[Bearbeiten]Lest erst mal die nächste untergeordneten Überschriften, schreibt darunter das euch gefällte und was ihr warum anders machen würdet. Ich könnte noch viele weitere Abschnitte aufzählen, aber ich denke, das würde dann nicht mehr auf diese Seite gehören und zum Verständnis wie der Aufbau gedacht ist reichen, wie ich denke, diese Beschreibungen der ersten Abschnitte. Wenn ihr alles bis zur Überschrift „Einheitlicher Code“ gelesen habt, könnt ihr euch an dieser Stelle über die grundlegende Aufbauidee auslassen. --Prog 23:18, 12. Jan. 2007 (CET)
Einführung zum Buch
[Bearbeiten]Ich 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. --Prog 23:18, 12. Jan. 2007 (CET)
- Bemerkungen von funkysapien
- Also ich finde das Konzept erstmal gut, aber mir fällt auf, daß sich kaum objektorientierte Elemente darin finden. Das ganze sieht für mich ausschließlich prozedural aus, ich finde man sollte möglichst früh (im Programmieranfänger-kapitel) einen Abschnitt einfügen, der erstmal die wichtigsten Konzepte und die Terminologie des objektorientierten Programmierens anreißt und kurz erklärt (Unterschied Funktion-Klasse, "Black Box"-Prinzip, Konstruktor, Destruktor, Methoden, Klassenvariablen, Instanzen, Vererbung, Überladung, Polymorphismus), und dann im Kapitel "Einführung in C++" auch schon die ersten bewussten Verwendungen von Klassen und eine ausfühliche Erklärung des Klassenkonzeptes in der Praxis in einem eingenen Abschnitt. Außerdem finde ich es sollte unbedingt ein Kapitel zur STL rein, vielleicht nach "Theorie & Praxis", oder kurz davor, dann könnte man die STL auch schon in den Übungen in Theorie und Praxis verwenden.
- Das sind nur die ersten paar Abschnitte, sie sollen sich vor allem an Programmieranfänger richten und Ihnen die grundlegenden Element (Variablen, if, Schleifen...) klar machen. Danach geht sofort mit Klassen & Co los. Ich schreib demnächst das neue Inhaltsverzeichnis auf der Hauptseite unter das aktuelle. Wenn du bis dahin schon mal was tun willst, kannst du die bisherigen Kapitel verbessern, die sind die Grundlage. --Prog 13:58, 14. Jan. 2007 (CET)
- Hm, ok, aber ich finde trotzdem, daß Objektorientierung schon in diesen ersten Kapiteln vorgestellt werden sollte. So wie das ganze dasteht lernt der Leser erstmal C in C++-Schreibweise, arbeitet 4 oder 5 Übungen lang rein prozedural mit Funktionen, nur um dann irgendwo im 10. Kapitel gesagt zu bekommen "So, und was wir bis jetzt gemacht haben war eine nette Einführung, aber eigentlich ist C++ ja objektorientiert, und da macht man das alles ganz anders, also fangen wir nochmal von vorne an". Der Leser wird sich grandios veralbert vorkommen. Mir ist natürlich klar das C++ sowohl das prozedurale als auch das objektorientierte Paradigma pflegt, und es dem Programmierer freistellt, welches er verwenden möchte. Aber gerade deshalb sollten wir uns auf das objektorentierte Programmieren konzentrieren, schon sehr früh die STL einführen, und die prozedurale Vorgehensweise bestenfalls als Vergleich gegenüberstellen, damit sich der Leser garnicht erst an prozedurales Programmieren gewöhnt. Für rein prozedurales Programmieren gibt es schon ein Buch über C-Programmierung, das müssen wir nicht nochmal machen. Ich hoffe Du bist mir nicht böse, daß ich deinem Inhaltsverzeichnis so vehement widerspreche, aber ich sehe diese Vorgehensweise wirklich als problematisch an, weil sie (speziell komplette Programmieranfänger) zuerst zu sehr von der objektorientierten Programmierung wegführt. Ich werd mal innerhalb der nächsten Stunden einen alternativen Vorschlag für ein Inhaltsverzeichnis unter Deines drunterschreiben. --Funkysapien 19:09, 14. Jan. 2007 (CET)
- Darüber musste ich jetzt gut 1 Minute lang herzlich lachen. Ich streite mich in Programmierung andauernd mit meinem Lehrer, nur sind die Rollen genau vertauscht. Er hält nichts von OOP und ich schreibe meine Programme ausschließlich so. Als Lehrer ist er Klasse, aber was Programmierung angeht eben noch vom alten schlag (void main(), Standards gibt es keine und Microsoft ist nun mal die dominierende Kraft <- sind keine Zitate nur sinngemäß, darüber haben wir schon zu oft diskutiert als das ich es weiter versuchen würde) Wie auch immer, wahrscheinlich hast du recht aber ich dachte, ich bau das ganze so auf das ab und an mal Abschnitte dabei sind in denen man mehr übt als zu lernen („Theorie und Praxis“ und „Sortieralgorithmen“) sollten das darstellen. Vielleicht sollten wir damit aber such warten bis Klassen eingeführt wurden. Währe ohne hin das nächste gewesen, ab dem nächstem Abschnitt sollte das Buch sich mit objektorientierter Programmierung beschäftigen (und nur damit). Ein Thema wie Zeiger und Referenzen sollte wahrscheinlich weiter nach hinten (hinter Klassen). Ich schreib mal eine Seite auf der konkrete Abschnitte mit Konkreten Kapitelüberschriften stehen, aber das soll dich nicht davon abhalten deinen Alternativvorschlag auszuarbeiten. Morgen hab ich in der Schule ein bisschen Zeit das zu erledigen, ich setz dann hier einen Link. Viele Grüße --Prog 19:58, 14. Jan. 2007 (CET)
Für Programmieranfänger
[Bearbeiten]In 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)
Einführung in C++
[Bearbeiten]Hier wird zum ersten mal C++ verwendet. Als erstes ein „Hello World“-Programm, dann einfache Ein und Ausgabe, Kommentare, Rechnen, {Variablen, Konstanten und ihre Datentypen}, Rechnen mit unterschiedlichen Datentypen, Verzweigungen, Schleifen und Auswahl (switch-case). --Prog 23:18, 12. Jan. 2007 (CET)
Weitere Grundelemente
[Bearbeiten]Prozeduren, Funktionen, globale und lokale Variablen, Zeichenketten (C++-Strings als Datentyp zum Arbeiten mit Strings), erweiterte Ausgabe (Escapesequenzen und Ausgabemanipulatoren), erweiterte Eingabe (Eingabemanipulatoren), Fehlerausgabe (die Streams cerr und clog) --Prog 23:18, 12. Jan. 2007 (CET)
Theorie und Praxis
[Bearbeiten]In 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)
Felder und Adressen
[Bearbeiten]Arrays, Zeiger, Referenzen. Das dürfte reichen um einen eigenen Abschnitt zu füllen... --Prog 23:18, 12. Jan. 2007 (CET)
Sortieralgorithmen
[Bearbeiten]Hier 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. Die Algorithmen sollen als Funktion vorliegen, eine Hilfestellung soll in so fern gegeben werden, als das dem Leser gesagt wird welche Parameter die Funktion benötig um das Array zu sortieren. Im letzten Kapitel dieses Abschnitts soll ein Menü zu Auswahl eines Algorithmus durch den Benutzer gestaltet werden. --Prog 23:18, 12. Jan. 2007 (CET)