C++ Programmieraufgaben
Vorgestellt werden mehrere Aufgaben, die als vierwöchige Projektarbeit zu lösen sind. Programmiert werden soll entweder im Sinne der strukturierten Programmierung oder (besser) im Sinne der objekt-orientierten Programmierung.
Einordnung des Artikels
- Einführung in die Informatik
- C++ Programmieraufgaben
Allgemeines zu den Programmieraufgaben
- Zu bearbeiten ist eine der unten genannten und verlinkten Programmieraufgaben.
- Die Aufgaben können in Zweier-Gruppen bearbeitet werden, wobei eine gemeinsame Ausarbeitung abzugeben ist.
- Die Bearbeitungszeit beträgt 4 Wochen.
- Die Aufgaben sollen im Sinne der strukturierten oder objekt-orientierten Programmierung gelöst werden.
- Abzugeben sind:
- Sämtliche Quelltexte als Code::Blocks Projekt (.zip-Datei des Projekt-Ordners).
- Die Quelltexte sind ausführlich zu kommentieren.
- Die Beschreibung der Vorgehensweise beim Programm-Entwurf.
- Die Lösungen zu den Teil-Aufgaben, die nicht als Programmieraufgaben formuliert sind.
Die Programmieraufgaben
- C++ Programmieraufgabe: Das Rucksackproblem
- C++ Programmieraufgabe: Das Travelling Salesman Problem (TSP)
- C++ Programmieraufgabe: Auswertung einer Fahrradtour
- C++ Programmieraufgabe: Simulation einer Heizung und eines Heizungsreglers
- C++ Programmieraufgabe: Matching
- C++ Programmieraufgabe: Wettermodell
Lernziele
Das Lesen von Quelltexten und deren Beschreibung führt leicht dazu, dass man sich selbst betrügt: alle Schritte erscheinen völlig einleuchtend und es ist schwer vorstellbar, dass man ähnliche Aufgaben nicht selber lösen kann. Doch gerade der Programmier-Anfänger macht oft die schmerzlichen Erfahrungen:
- Man hat die genauen Regeln der Sprache doch nicht im Kopf und muss bei der Verwendung beinahe aller Sprachkonstrukte nachschlagen.
- Die Entwicklungsumgebung macht mehr Schwierigkeiten als dass sie beim Entwickeln eines Programmes hilft.
- Man unterschätzt die Vorarbeit des Programmierens: ein Algorithmus sollte immer erst trocken (mit Pseudocode) entwickelt werden, bevor man ihn in eine Programmiersprache übersetzt.
- Für die Aufteilung der Aufgaben eines Programmes in Funktionen und Klassen gibt es eine Unzahl von Möglichkeiten: man weiß eigentlich nie, welche Variante man wählen soll.
Diese Liste typischer Einsteiger-Schwierigkeiten könnte man beliebig fortsetzen. Es gehört daher zu jedem Anfänger-Kurs in Programmierung, einmal ein größeres Projekt zu bewältigen, um die Arbeitsweise eines Programmierers besser zu verstehen.
Die hier vorgestellten Aufgaben dienen dazu:
- Sich selbst zu disziplinieren, um die folgenden Aufgaben möglichst gut voneinander zu trennen:
- Kennenlernen der Entwicklungsumgebung
- Entwickeln eines Algorithmus im Pseudocode
- syntaktisch fehlerfreie Anwendung der Programmiersprache.
- Die im Theorie-Teil entwickelten Konzepte (von fundamentalen Datentypen über Kontrollstrukturen bis zur strukturierten beziehungsweise objekt-orientierten Programmierung) anzuwenden.
- Insbesondere soll der Umgang mit Vektoren (beziehungsweise Feldern) und Schleifen gründlich eingeübt werden.
- Die Aufgaben sollen dazu anregen, selbständig in der Dokumentation zu stöbern — der Theorie-Teil hat nicht alle Konzepte abgehandelt und womöglich finden sich in der Dokumentation weitere hilfreiche Konstrukte, die man zur Lösung der Aufgaben sinnvoll einsetzen kann.