Name
: _____________________________________________ Matrikel-Nr.: __________Platz: _______ erster ( ) zweiter ( ) letzter ( ) Versuch
Pseudonym: __________________ (nur wenn Sie möchten, daß Ihr Klausurergebnis als Aushang veröffentlicht wird)
Unterlagen und Hilfsmittel sind nicht zugelassen. Kommunikation während der Klausur ist nur mit dem Dozenten erlaubt, der Mißverständnisse und Unklarheiten klären kann. Schreiben Sie die Lösungen auf diese Blätter, gegebenenfalls auf ein numeriertes leeres Blatt mit Ihrem Namen; kennzeichnen Sie die Aufgabennummer eindeutig. Geben Sie alle Blätter (auch die Schmierblätter) ab. Für falsche oder nicht einleuchtende Lösungen bekommen Sie grundsätzlich keine Punkte. Wenn aber aus Ihren Notizen oder Bemerkungen ersichtlich ist, daß Ihr Gedankengang richtig war, können Sie Teilpunkte bekommen. Sie verlieren jedoch diese Möglichkeit, wenn Abschreiben oder Kommunikation während der Klausur nachgewiesen werden kann. Der Kern der Fragen wurde kursiv gesetzt. Neben der Punktzahl der einzelnen Aufgaben steht als Orientierung ein geschätzter maximaler Zeitaufwand (insg. 90 Minuten). Bei manchen Aufgaben steht als Orientierungder Anzahl der Programmzeilen in der Musterlösung. In den letzten 15 Minuten werden keine Fragen mehr beantwortet.
Klausurtermin: 20. Juni 1997 um 12:15 im Raum B-301
Ergebnisse: 27. Juni 1997 um 12:15 im Vorlesungsraum
Die Klausurnote (rot) wird abwärts gerundet vergeben. Übungsnote (blau), Semesternote (gelb):
5 15 25 35 45 55 65 75 85 95 105 115 125 135 145 155 165 175 185 195
0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200
6,0 5,7 5,3 5,0 4,7 4,3 4,0 3,7 3,3 3,0 2,7 2,3 2,0 1,7 1,3 1,0
Aufgabe 1
. (40 Punkte, 20 Min, ca. 7 Programmzeilen):Der private Teil der Spezifikation für das Modul
GUWarteschlange aus der Musterlösung definiert den uneingeschränkten abstrakten Datentyp UWarteschlange folgendermaßen:private
subtype
type USpeicher is array (TIndex range <>) of TElement;
type UWarteschlange (Groesse: Positive) is record
Speicher: USpeicher (TIndex'First .. Groesse);
Erstes: TIndex := TIndex'First;
Letztes: TIndex := TIndex'Last;
Anzahl: Natural := 0;
end record;
Implementieren Sie nun für diesen Datentyp die Operation
procedure
Eintragen (Schlange: in out UWarteschlange; Element: in TElement); -- raises:ESchlange_voll: exception;
Fertigen Sie auch eine Zeichnung an, die die Aktionen Ihrer Implementierung illustriert.
Lösung auf dem Extrablatt Nr. _________ ( 0 5 10 15 20 25 30 35 40 )
Aufgabe 2
. (20 Punkte, 5 Min, ca. 3 Programmzeilen): Erweitern Sie den Datentyptype
TGeraet is tagged recordBeschreibung: String := "";
end record;
um eine neue Komponente
Ersatz, der ein Verweis auf ein anderes Gerät darstellt.Lösung:
( 0 5 10 15 20 )
Name: _____________________________________________ Matrikel-Nr.: __________
Aufgabe 3
. (40 Punkte, 15 Min): Kreuzen Sie die richtigen Antworten an und geben Sie Ihre Begründung mit Stichworten dazu. Ohne Begründung gilt Ihre Antwort als falsch.( ) Richtig Verkettete Listen sollen nur als eingeschränkt private Typen implementiert werden.
( ) Falsch
Grund:
( ) Richtig Ein dazwischengeschobenes Leerzeichen verändert den Wert eines Ganzzahlliterals nicht.
( ) Falsch
Grund:
( ) Richtig Jedes Objekt vom Typ File_Type beinhaltet genau eine Datei auf der
( ) Falsch Festplatte oder auf der Diskette.
Grund:
( ) Richtig Mit einer Ausprägung von Sequential_IO.Float_IO können keine Dateien beschrieben werden.
( ) Falsch
Grund:
( ) Richtig Jede Schleife kann mit Hilfe von Rekursion simuliert werden.
( ) Falsch
Grund:
( ) Richtig Es gibt Verweise, die Objekte unterschiedlicher, aber nicht aller Datentypen referieren können.
( ) Falsch
Grund:
( ) Richtig Die Anzahl der Wiederholungen in einer Zählschleife steht bei der Übersetzung fest.
( ) Falsch
Grund:
( ) Richtig Jeder Ada-Prozeß wird mit Hilfe eines Pakets realisiert.
( ) Falsch
Grund:
( 0 5 10 15 20 25 30 35 40 )
Aufgabe 4
. (30 Punkte, 10 Min, ca. 7 Programmzeilen): Entwickeln Sie ein exportloses Paket, das im Benutzerprogramm ein Prozeß startet, von dem der Benutzer nichts merkt.Lösung:
Fortsetzung auf dem Extrablatt Nr. _________ ( 0 5 10 15 20 25 30 )
Aufgabe 5
. (20 Punkte, 10 Min, ca. 8 Programmzeilen): Schreiben Sie den Rumpf der Persistenzoperation Laden (String-Parameter als Dateiname) für den abstrakten Datentyp mit der folgenden Definition auf:type
TMultibehaelter is recordSpeicher: is array (Natural range 1 .. Max) of TElement;
Index: Natural range 1 .. Max;
end record;
Benutzen Sie eine geeignete Ausprägung von
Sequential_IO. Die Ausnahmen können Sie vernachlässigen.Lösung auf dem Extrablatt Nr. ________________ ( 0 5 10 15 20 )
Aufgabe 6
. (20 Punkte, 10 Min, ca. 4 Programmzeilen): Definieren Sie die Datenstruktur des Pakets MZahl_Eimer mit Hilfe des Datentyps Long_Integer so, daß es auch größere Ganzzahlen als Long_Integer'Last verarbeiten kann.( 0 5 10 15 20 )
Aufgabe 7
. (30 Punkte, 20 Min, ca. 11 Programmzeilen): Ersetzen Sie die Schleife in der folgenden Prozedur mit Rekursion:type
TFeld is array (Natural range <>) of Integer;procedure Verdoppeln (Feld: TFeld) is
begin
for Index in TFeld'Range loop
Feld (Index) := 2 * Feld (Index); -- raises Constraint_Error
end loop;
end Verdoppeln;
Lösung
:( 0 5 10 15 20 25 30 )