30.5 Übungen |
|
Aufgabe 1 |
In einem Keller (a) bzw. einer Liste
(b) werden Objekte vom Typ String abgelegt. Implementieren Sie entweder für (a) oder (b) eine Methode, die den Keller
bzw. die Liste nach dem Vorhandensein eines bestimmten String-Wertes
durchsucht. |
Aufgabe 2 |
Es ist leicht, das Generieren von
Fibonaccizahlen (rekursiv) zu programmieren, aber was den zeitlichen
Aufwand angeht, ist es dies nicht optimal. Alternativ könnte man alle
korrekt berechenbare Fibonaccizahlen (vom Typ
long)
einmal berechnen und sie in einem Feld ablegen. So könnte man fib(11) auf
Platz 11 im Feld ablegen. Sind die Fibonaccizahlen einmal berechnet,
reduziert sich eine "erneute Berechnung" auf das Suchen in dem Feld. |
a) |
Implementieren Sie ein Programm, das eine Fibonaccizahl, wenn sie zu ersten Mal berechnet werden soll, die Berechnung rekursiv vornimmt und sie dann in das Feld einträgt. Soll sie ein zweites Mal berechnet werden, wird sie nur noch aus dem Feld ausgelesen. |
b) |
Warum ist dieses Verfahren des Suchens
besonders günstig? Nennen Sie Gründe, warum man es bei Fibonaccizahlen
problemlos anwenden kann. |
Aufgabe 3 |
Nach einer Häufigkeitsanalyse eines
vorgegebenen Textes kann man die relativen Häufigkeiten geschickt in einem
sog. schlüsselindizierten Feld abspeichern, so dass man auf Frage, mit
welcher Häufigkeit der Buchstabe 'e' gemessen wurde, sehr effizient
beantworten kann. Beschreiben Sie in Worten, wie dieses
schlüsselindizierte Ablegen und Suchen geschieht und worin der Vorteil des
Schlüsselindizierten Suchens gegenüber dem vergleichenden Suchen (wie in
Aufgabe 1) liegt. (Keine Hashtabelle benutzen) |
Aufgabe 4 | Implementieren Sie eine Klasse (Swing) Lexikon (Deutsch-Englisch), in der ein deutscher Begriff (Schlüssel) und seine englische Übersetzung (Schlüsselwert) in einer Hashtabelle abgespeichert werden. Das Programm erlaubt das Speichern in der Hastabelle, gibt Hashkode aus. Zusätzlich soll eine Abfrage so realisiert werden, dass die Eingabe eines deutschen Suchbegriffs die englische Übersetzung liefert. Wählen Sie geeignete Eingabe- und Ausgabefelder (letztere nicht editierbar) und benutzen Sie zwei Buttons zum Speichern in der Hastabelle bzw. zum Suchen. |