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.