Klausur Programmierung I

Aus Infostudium Wiki

Wechseln zu: Navigation, Suche
Bild:Settings.png Dieser Artikel soll in Zukunft noch erweitert bzw. überarbeitet werden. Dies soll aber nicht als Reservierung aufgefasst werden. Mitarbeit ist erwünscht.


Inhaltsverzeichnis

Generelle Tipps

  • Allgemein ist es sinnvoll die Übungsaufgaben und ein paar alte Klausuren, am besten desselben Lehrstuhls, selbstständig gerechnet zu haben.
  • Es ist nahezu unmöglich die Klausur nur mit Java bzw. nur mit Haskell und Prolog zu bestehen. Man sollte alle drei Sprachen beherrschen.
  • In der Klausur: Die Aufgabenstellung umbedingt genau lesen! Das kann dir viel Zeit und Ärger ersparen.

Aufgabentypen

Es gibt einige klassische Aufgabentypen, die in den Klausuren der letzten Jahre immer wieder aufgetaucht sind. Halte dich bei der Klausurvorbereitung aber nicht nur an diesen Artikel, sondern achte auf Hinweise von Seiten des Professors oder der Assistenten.

Programmanalyse (Java)

Ausgabe

Gegeben ist ein kleineres (sinnfreies) Programm, welches meist aus mehreren Klassen besteht. In das Programm sind an verschiedenen Stellen System.out.println()-Aufrufe eingebaut, die die Werte von einigen Variablen und Attributen ausgeben. Die Aufgabe ist, zu analysieren was die Ausgabe des Programms ist.

Um die Aufgabe zu meistern sollte man die Konzepte Vererbung, Überschreibung und Überladung von Methoden und Verdeckung von Attributen im Kopf haben. Desweiteren sollte man den Unterschied zwischen statischen und nicht statischen Klassenelementen kennen. Wurden in der Vorlesung Exceptions behandelt, könnten diese ebenfalls hier auftauchen. Man benötigt sehr genaue Kenntnisse der Sprache Java und vorallem viel Übung!

Fehlererkennung

Meistens wird das Programm aus dem Ausgabe-Teil noch um eine weitere Klasse oder Methode erweitert. Nun soll man Fehler finden die beim compilieren auftreten würden. Hier handelst es sich meistens nicht um triviale Fehler wie ein vergessenes Semikolon. Gerne wird versucht eine final-Methode zu überschreiben, auf nicht (oder nur in Unterklassen) existierende Attribute/Methoden zuzugreifen. Sichtbarkeiten, fehlerhaftes Typcasting oder Instanzierung vom abstrakten Klassen können beispielsweise ebenfalls eine Rolle spielen. (es gibt zuviele Möglichkeiten um hier alle aufzuzählen)

Verifikation (Java)

Korrektheit

Ein einfaches Programm soll verifiziert werden. Hier kann man leicht Punkte holen, da manchmal selbst einfache Variabelzuweisungen schon Punkte geben.

Terminierung

Man soll beweisen, dass das Programm terminiert. Lautet die Aufgabenstellung "Beweisen oder widerlegen Sie (...)", kann es auch sein das man bereits mit einem einfachen Gegenbeispiel (beispielsweise Wert -1 einsetzen) schon die Terminierung widerlegen kann.

Datenstrukturen (Java)

UML-Diagramm

Aus einem längeren Aufgabentext soll ein Klassendiagramm erstellt werden. Dabei sollen Gemeinsamkeiten erkannt und entsprechend in Klassen zusammengefasst werden. Dabei sollte man immer soviel wie möglich zusammenfassen.

Implementierung

Eine einzele Methode soll irgendwie mit dem vorher erstellten Klassendiagramm arbeiten. Meist soll hier Polymorphie zum Einsatz kommen.

Programmierung (Java)

In dieser Aufgaben werden häufig verschiedene Listenoperationen wie Einfügen, Suchen und Löschen abgefragt. Oft wird explizit gefordert, die Methoden auf eine bestimmte Art (rekursiv oder iterativ) zu implementieren. Ebenso könnten diverse Operationen in einem Binärbaum sortierten oder unsortierten abgefragt werden. Diese Aufgabe gibt oft vergleichsweise viele Punkte.

Programmierung (Haskell)

Programmierung (Prolog)

Persönliche Werkzeuge