Klausur Informatik I - Hochschule Karlsruhe
Transcrição
Klausur Informatik I - Hochschule Karlsruhe
Hochschule Karlsruhe – Klausur Informatik I – Prof. Dr. Christian Pape Klausur Informatik I – SS06 Aufgabe 1 2 3 Max. Punkte 57 53 10 Punkte Gesamtpunkte (max. 120): Note: Bearbeitungszeit 120 Minuten Keine Hilfsmittel Tragen Sie als erstes Ihren vollständigen Namen und Ihre Matrikelnummer ein. Name: Matrikelnummer: Fragen Sie bei Unklarheiten in der Aufgabenstellung sofort nach. Tragen Sie Ihre Lösungen nur in diese Aufgabenblätter ein und verwenden Sie auch die Rückseite (mit Bezug zur Teilaufgabe). Sollte der Platz nicht ausreichen, so erhalten Sie weitere Blätter. Geben Sie alle Aufgabenblätter ab. Falls Sie die Heftung der Klausur entfernen, dann schreiben Sie bitte auf jedes einzelne Blatt Ihren Namen und Matrikelnummer. Verwenden Sie keine Bleistifte und keine rote Farbe. Halten Sie Ihren Studentenausweis zur Kontrolle bereit. - 1 von 11 - Hochschule Karlsruhe – Klausur Informatik I – 1. UML, Java a) Aktivitätsdiagramm (10 Punkte) Prof. Dr. Christian Pape Beschreiben Sie folgenden Ablauf aus dem Arbeitsleben von Gabelstaplerfahrer Klaus mit einem UML 2.0 Aktivitätsdiagramm. Verwenden Sie dabei keine Abkürzungen oder Kurzschreibweisen der UML. Klaus beginnt seine Arbeit immer mit einer rigorosen Überprüfung seines Gabelstaplers. Wenn alles in Ordnung ist, dann macht er eine Frühstückspause. Falls etwas nicht in Ordnung ist, beseitigt er das Problem – die Pause fällt dann aus. Bei seiner anschließenden Arbeit holt Klaus immer eine Palette oben von einem Stapel von Paletten und stapelt die Palette wieder oben auf einen anderen Stapel. Dieses wiederholt sich so lange, bis die Sirene den Feierabend einläutet (die letzte von einem Stapel entnommene Palette stapelt er aber pflichtbewusst noch auf einen Stapel bevor er geht). - 2 von 11 - Hochschule Karlsruhe – Klausur Informatik I – b) Prof. Dr. Christian Pape UML Klassendiagramm (12 Punkte) Da die Arbeit von Klaus insbesondere für alle anderen Mitarbeiter sehr gefährlich ist, soll das Stapeln von Paletten automatisiert werden. Sie sind dafür verantwortlich, den rein zum Stapeln der Paletten notwendigen Softwareteil zu entwerfen – alles andere dürfen Sie ignorieren. Die Stapel in der Werkhalle sind am Anfang leer - sie werden erst bei Anlieferung durch fortgesetztes stapeln und entstapeln gefüllt. Die Stapel haben jeweils eine maximale Höhe, die je nach Werkshalle aber variiert. Die Höhe ist direkt proportional zur Anzahl Paletten. Es wird immer nur genau eine Palette gestapelt. Geben Sie ein vollständigen UML Klassendiagramm mit dem sich Paletten stapeln lassen. Halten Sie sich bei Ihrem Entwurf an die Java-Namenskonventionen. Der Entwurf muss in jedem Fall objekt-orientiert sein und das Geheimnisprinzip wahren. - 3 von 11 - Hochschule Karlsruhe – Klausur Informatik I – c) Prof. Dr. Christian Pape Implementierung (25 Punkte) Implementieren Sie von Ihrem Entwurf diejenige Klasse in Java, welche die Methoden zum Stapeln von Paletten enthält. Jeder Aufruf einer Methode, die eine Palette auf den Stapel schiebt oder wieder herunterholt, darf nur maximal O(1) Laufzeit haben. Da die automatisiert fahrenden Gabelstapler keine Paletten über die maximale Deckenhöhe stapeln können und auch nicht mehr Paletten abholen als wirklich da sind, brauchen Sie diese Fälle im Programm nicht behandeln. - 4 von 11 - Hochschule Karlsruhe – Klausur Informatik I – - 5 von 11 - Prof. Dr. Christian Pape Hochschule Karlsruhe – Klausur Informatik I – d) Prof. Dr. Christian Pape JUnit (10 Punkte) Schreiben Sie eine JUnit-Testmethode, die bei einer Deckenhöhe von 10 Paletten einen Stapel von zwei Paletten schrittweise auf einen anderen Stapel „entstapelt“ und überprüft, dass danach der Stapel die beiden Paletten in der richtigen Reihenfolge enthält. - 6 von 11 - Hochschule Karlsruhe – Klausur Informatik I – 2. Prof. Dr. Christian Pape Variante der Binärsuche a) Problemstellung (6 Punkte) Gegeben: Eine Folge aufsteigend sortierter, unterschiedlicher int-Zahlen. Gegeben als int-Feld a. Gesucht: true, falls ein i mit a[i] = i existiert; false, falls kein solcher Index existiert (i = 0, 1, …) Markieren Sie in den nächsten Zahlenfolgen jeweils alle Vorkommen von Zahlen mit a[i] = i mit einem Kreis. b) -7 -3 -1 0 1 4 6 8 -1 0 4 7 9 12 16 19 -1 1 2 5 7 8 10 12 Implementierung, Java (30 Punkte) Implementieren Sie eine rekursive Methode, die obiges Problem löst. Der Zeitaufwand der Methode darf O(log n) nicht überschreiten. - 7 von 11 - Hochschule Karlsruhe – Klausur Informatik I – - 8 von 11 - Prof. Dr. Christian Pape Hochschule Karlsruhe – Klausur Informatik I – c) Prof. Dr. Christian Pape Aufrufbaum (10 Punkte) Geben Sie den vollständigen Aufrufbaum für Ihre Methode und die Folge -1, 0, 4, 7, 9, 12, 16, 19 an. d) Laufzeitkeller (5 Punkte) Geben Sie den Zustand des Laufzeitkellers an, den Ihre Methode bei Rekursionstiefe 3 hat. - 9 von 11 - Hochschule Karlsruhe – Klausur Informatik I – e) Prof. Dr. Christian Pape (2 Punkte) Um welchen Rekursionstyp handelt es sich bei Ihrer Implementierung? - 10 von 11 - Hochschule Karlsruhe – Klausur Informatik I – 3. Prof. Dr. Christian Pape UTF-8 (10 Punkte) Gegeben sei das Unicodezeichens FEB1 als Hexadezimalzahl. Geben Sie den UTF-8-Code für dieses Zeichen an. Geben Sie jeden Einzelschritt Ihrer Berechnung an. - 11 von 11 -