Lösung von Aufgabenblock 1 zum Downloaden

Lösung Block 1 downloaden

Tipps zur Aufgabe 3 im 1. Block des PI2

Die letzte Aufgabe im 1. Block ist kurz und leicht umzusetzen. Dann fangen wir mal an.

  1. Hier soll der Ausgabeoperator überladen werden. Wie dies für diesen Operator gemacht wird, sieht man am Beispiel im Skript ab Seite 43 bis zur Seite 45.
  2. Hier wird nun der Vergleichsoperator überladen, was analog zu 1.) funktioniert, bloß dass dieser in der Klasse deklariert wird.
  3. Der Zuweisungsoperator wird auch analog zum Vergleichsoperator überladen, man muss sich nur Gedanken machen, was man wie zuweist. Für die Entscheidung wie der Copy-Konstruktor implementiert wird, sollte man sich das Skript ab Seite 27 nochmal anschauen.
  4. Einfach nur anwenden.
Dann sind wir auch schon fertig mit dem ersten Block.

Tipps zur Aufgabe 2 im 1. Block des PI2

Und weiter geht es mit der 2. Aufgabe, ich hoffe ihr seid noch dabei.
Keine Angst auch diesmal wird es nicht kompliziert.

Also Aufgabe 2:
  1. Hier müssen 2 Klassen (PKW & Fahrrad), die Unterklassen von Klasse Fahrzeug sein sollen, erzeugt werden. Vererbung wird im Unterkapitel 2.2 ab Seite 32 im Skript angesprochen. Da diese Unterklassen unter demselben Methodennamen verschiedene Dinge tun sollen, kommt das Schlüsselwort virtual zum Einsatz. Mehr erfährt man dazu im PI2 Skript ab Seite 36
  2. Dort sollen einfach zu der Klasse PKW noch ein paar Eigenschaften und Methoden hinzugefügt werden. Dies ist analog zu den bisherigen Eigenschaften und Methoden. Die Methode dTanken(double dMenge = 0.0) soll jedoch einen Defaultparameter bekommen. Was dies ist und wie man das umsetzt wird auf Seite 21 im Skript erklärt. Bitte beachten dass alle Fahrzeuge "tanken" können müssen, also auch das Fahrrad. Die Methode vAbfertigung() ist dann noch für die Unterklassen PKW und Fahrrad neu zu implementieren. Innerhalb dieser Methoden sollte jedoch auch die Methode aus der Oberklasse Fahrzeug::vAbfertigung() aufgerufen werden
  3. Die Klassenstruktur soll um eine Methode dGeschwindigkeit() erweitert werden. Die sowohl in der Klasse Fahrzeug, als auch ggf. in den Unterklassen implementiert werden soll. Am einfachsten ist es innerhalb der Klasse Fahrzeug::dGeschwindigkeit() die maximale Geschwindigkeit zurückzugeben, in PKW nichts zu machen und einfach nur in der Klasse Fahrrad die Berechnung für die Geschwindigkeitsverminderung zu implementieren. Die Methode vAusgabe() für PKW und Fahrrad funktioniert analog zu vAbfertigung(). Erst wird in PKW::vAusgabe(), bzw. Fahrrad::vAusgabe(), Fahrzeug::vAusgabe() aufgerufen und dann die eigenen Ausgaben gemacht.
  4. Jetzt soll innerhalb EINES vectors sowohl Zeiger von PKW als auch von Fahrrad gespeichert werden. Also: vector vecFhz;. Mehr zum vector steht auf Seite 76 im Skript. Beim Tanken nach 2,5 Stunden sollte beachtet werden, dass dies auch bei unterschiedlichen Zeitintervallen funktioniert. Also auch Intervalle, wie 0.4, 0.8 oder 0.9 testen, die nicht auf exakt 2,5 kommen. Und nicht mit == die Zeit vergleichen, sondern die Zeiten subtrahieren und dann mit einem frei gewählten kleinen Wert vergleichen.

Tipps zur Aufgabe 1 im 1. Block des PI2

Da der Einstieg in so ein Praktikum nicht immer leicht ist, hier mal ein paar kleine Tipps zu der ersten Aufgabe. Hier gibt es keine Komplettlösung des Praktikum Informatik 2, sondern einfach gute Tipps.

Tipp: Immer die Deklaration in Headerdateien (*.h) und die Implementierung in CPP-Dateien (*.cpp, *.cc) schreiben.

Nun zu der Aufgabe:
  1. Zuerst wird verlangt dass man die Klasse Fahrzeug erstellt. Das Erstellen von Klassen wird im PI2 Skript auf Seite 25 erklärt.
  2. Die Klasse soll nun durch zwei Konstruktoren und einem Desktruktor erweitert werden, was ab Seite 27 beschrieben wird.
  3. Bei der main-Funktion, in main.cpp Datei, in C++ handelt es sich um eine spezielle Funktion. Den Aufbau von Funktionen in C++, speziell auch den der main-Funktion, ist ab Seite 19 im Praktikumsskript nachzulesen. Das verlangte Erzeugen von Elementen, statisch sowie dynamisch, wird im Skript auf den Seiten 10 und 11 gezeigt.
  4. Der Abschnitt ist nur eine Erweiterung der bisherigen Aufgaben. Zu beachten ist eigentlich nur die Verwendung des Defaultparameters wie es im Skript ab Seite 21 gezeigt wird.
  5. Wie die verlangte Ausgabe gemacht wird erfährt man im Skript ab Seite 62.
  6. -
  7. Um die Variabel für die Uhrzeit überall nutzen zu können, muss diese wie im Hinweis in den anderen Quelltexten (Klassen) mit extern bekannt gemacht werden. Auf Seite 19 im Skript wirds erklärt.
  8. Hier muss einfach überprüft werden, ob die Differenz zwischen globaler Uhr und letztem Abfertigungszeitpunkt größer als ein selbstgewählter kleiner Wert ist. Bitte beachten das nicht direkt mit 0 (Null) verglichen wird, da spielt die Genauigkeit von den Datentypen nicht mit. Und nicht vergessen den Wert für die letzte Abfertigung auch innerhalb der Methode zu aktualisieren, dann stört es nicht wenn die Methode mehrmals aufgerufen wird.
  9. -
  10. -
Und schon ist die ersten Aufgabe fertig. War doch gar nicht so schwer.

Tipps zur Abnahme

Ein paar Tipps zu Abnahme:
  • Man sollte sich seinen Code VORHER nochmal anschauen und wissen was man wo gemacht hat, da man in der Abnahme auch seinen Code zeigen muss.
  • Auch die Theorie wird abgefragt. D.h. nicht nur das Umsetzen reicht, sondern man soll auch den Code erklären können.
  • Abnahmen zu zweit sind nur empfehlenswert, wenn man weiß dass der Andere das auch so gut kann wie man selbst.
  • Wenn man ers tmal erzählen soll was gemacht wurde, dann hilft es sich vorher einen "Plan" zu erstellen, den man dann durch geht. Das soll heißen dass man sinnvoll durch seinen Quelltext geht und alles zeigt was man in dieser Aufgabe gemacht hat. Das vermittelt dann einen guten Eindruck beim Prüfer und verhindert eventuell gemeine Nachfragen.

Ablauf des Praktiums Informatik 2

Das Praktikum Informatik 2 wird während des Wintersemester von den Studenten absolviert.

Es werden innerhalb von 12 Wochen, beginnend ab Mitte Oktober, 9 Aufgaben bearbeitet. Pro Woche gibt es einen Termin der 2,25 Zeitstunden lang ist und an dem Anwesenheitspflicht besteht.
Es gibt mehrere Termine innerhalb einer Woche, jedoch muss man sich zu Anfang des Semesters für einen Termin entscheiden. Das Verlegen von Terminen ist im geringeren Umfang möglich. Das Nichterscheinen zu einem Termin muss zeitlich nachgeholt werden.

Die Aufgaben sind vom Umfang her so gestaltet das sie jeweils innerhalb eines Termines von C++ Anfängern mit C Kenntnissen, mit eventueller Vor- und Nachbearbeitungszeit, zu lösen sind.

Die 9 Aufgaben sind in 3 Blöcke unterteilt, die aus jeweils 3 Aufgaben bestehen.
Nach jedem Block, also noch 3 Wochen, wird am nächsten Termin eine Abnahme, Testat, des aktuellen Blocks von den Betreuern abgenommen. Es sind also 3 Testate an den Terminen in den Wochen 4, 8 und 12 abzulegen.
Es werden sowohl die Funktionsfähigkeit der Aufgaben, als auch das theoretische Hintergrundwissen, was die Studenten sich durch das Skript angeeignet haben, überprüft.

Jedes Testat wird mit Punkten bewertet:
  • 0 Punkten,
  • 1 Punkt,
  • 2 Punkten oder
  • 3 Punkten
Wobei im Laufe des PI2 6 Punkte über die 3 Testate hinweg gesammelt werden müssen um das Praktikum erfolgreich zu absolvieren. Auch darf kein Testat mit 0 Punkten abgeschlossen werden.
Also weniger als 6 Punkte oder einmal 0 Punkte führen zum Nichtbestehen des Praktikums Informatik 2.

Der Termin für die Abnahmen sind nur als obere Grenze für die Bearbeitung eines Aufgabenblocks zu sehen. Testate, auch von späteren Blöcken, kann man auch schon an vorherigen Terminen ablegen.
Nachdem man alle 3 Testate abgelegt hat, ist das Praktikum für den jeweiligen Studenten beendet. Man muss nicht zu den restlichen Terminen erscheinen.

Die Abnahmen müssen an den Rechnern im CIP-Pool absolviert werden. Diese laufen unter Windows XP und sind mit Visual Studio 2005 von Microsoft ausgestattet.
Es ist möglich vorher bearbeitete Aufgaben über das Internet abzurufen oder per USB Stick mitzubringen. Gleiches gilt für die Mitnahme von bearbeiteten Aufgaben.

Vorstellung des Praktikums Informatik 2 an der RWTH Aachen

Das Praktikum Informatik 2 an der RWTH Aachen müssen die Studenten der Studienrichtungen
  • Elektrotechnik, Informationstechnik und Technische Informatik (Bachelor of Science) im 3. Semester
  • Wirtschaftsingenieurwesen: FR Elektrische Energietechnik (Bachelor of Science) im 5. Semester
  • Elektrotechnik / Techn.Informatik / Wirtsch.Ing. ET Diplom im 3. Semester
absolvieren.
Ziel ist es den Studenten die objektorientierte Programmierung in der Programmiersprache C++ zu vermitteln.

Innerhalb von 12 Wochen sollen die grundsätzlichen Möglichkeiten der Sprache C++ anhand einer konkreten Aufgabestellung bearbeitet werden.
Es wird eine Verkehrssimulation geschrieben, die mehrere Facetten der modernen Programmierung zeigt. Zum Beispiel die Vererbung von Funktionalitäten, Polymorphie und Operatorüberladung.

Nach Abschluss des Praktikums sind die Studenten fähig vorhandene Problemstellungen in der Programmiersprache zu implementieren. Da dies im späteren Berufsleben eine häufig geforderte Aufgabe ist, werden die Studenten mit dem Praktikum Informatik II ideal darauf vorbereitet.