Übung Wörterbuch Professional ◦ ?

Lernziele

- Inordnungs-Traversierung
- Breitentraversierung
- Rekursion

Wiederholungsfragen

Ein Klick auf den roten Hyperlink zeigt die richtige Lösung.

1. Welche Aussage ist richtig?

   1. Die Breitentraversierung kann nur auf sortierte Binärbäume angewendet werden.
   2. Die Inordnungs-Traversierung kann nur auf sortierte Binärbäume angewendet.
   3. Alle vier Traversierungsverfahren können auf unsortierte Binärbäume angewendet werden.
   4. Alle vier Traversierungsverfahren können auf beliebige Bäume angewendet werden.

2. Betrachten Sie die folgende Abbildung. Mit welchem Traversierungsverfahren wurden die folgenden Listen ausgegeben?

   1. ......... g, h, k, m, p, r, s, u, x
   2. ......... h, m, k, g, r, u, x, s, p
   3. ......... p, g, s, k, r, x, h, m, u
   4. ......... p, g, k, h, m, s, r, x, u

3. Betrachten Sie folgenden Entwurfscode. Welche Funktion hat der Algorithmus bei einem sortierten Binärbaum?

       Falls Baum NICHT leer
         setze Knoten = Wurzel
         Solange Knoten ein rechtes Kind hat
           setze Knoten = rechtes Kind
         gib Knoten zurück
       Falls
         gib Nothing zurück

   1. Der Algorithmus gibt das erste Element zurück.
   2. Der Algorithmus gibt das letzte Element zurück.
   3. Der Algorithmus gibt immer 'Nothing' zurück.
   4. Der Algorithmus gerät in eine Endlosschleife.

Vertiefungsfragen

Bevor wir mit der eigentlichen Aufgabe beginnen, möchten wir die Begriffe 'Programmentwurf' und 'Abstraktion' vertiefen. Lösen Sie dazu die Aufgabe Entwurf.

Wir bauen unser WoerterbuchStandard-Projekt zu einer Professional-Version aus. Das nächste Bild zeigt die erweiterte Benutzerschnittstelle:

Die folgenden Funktionen sind neu:

- Liste deutsch-englisch: Listet alle Einträge des Baumes, sortiert nach den (deutschen) Begriffen auf.
- Liste englisch-deutsch: Listet alle Einträge des Baumes, sortiert nach den (englischen) Definitionen auf.
- entferne: Sucht im Baum den Eintrag mit dem angegebenen Begriff und entfernt den Eintrag.
- speichern: Listet die Einträge des Baumes in einer Reihenfolge auf, in der sie später wieder eingelesen werden können, so dass dabei die ursprüngliche Struktur des Baumes wieder entsteht.

Aufgaben

1. Öffnen Sie die Arbeitsmappe WoerterbuchProfessionalSkelett.xls, und machen Sie sich mit ihrem Inhalt vertraut:

   - Welche Namen haben die hellblauen und die hellavendelfarbenen Bereiche?
   - Welche Makros sind den Schaltflächen zugeordnet?
   - Die Befehlsschaltflächen 'füge Hinzu', 'übersetze', 'erster Begriff', 'Liste deutsch-englisch' und 'speichern' funktionieren bereits. Geben Sie einige Begriff-/Definitions-Paare ein, und testen Sie die Anwendung soweit. Welche Funktion hat die Schaltfläche 'erster Begriff'?

   - Geben Sie folgende Begriffs/Definitions-Paare exakt wie unten abgedruckt ein, und lassen Sie sich die deutsch-englische Liste ausgeben.

     kind/child, Baum/Tree, ast/branch

     Weshalb erscheint 'Baum' vor 'ast'?

   - Geben Sie folgende Begriffs/Definitions-Paare exakt wie unten abgedruckt ein, und lassen Sie sich die 'speichern'-Liste ausgeben.

     kind/child, wurzel/root, baum/tree

     Weshalb erscheint 'baum' vor 'wurzel'?

2. Nach dem Klicken der Schaltfläche 'letzter Begriff' soll im hellblauen Bereich der letzte Begriff im Wörterbuch und dessen Definition angezeigt werden. Implementieren Sie die Methode OLetzter der Klasse cWörterbuch mit Hilfe der Rekursion.

   - letzterBegriff_Klick im Modul Prozeduren ruft die Methode OLetzter der Klasse cWörterbuch auf. OLetzter ruft OLetzterRek auf. Schauen Sie sich die drei Prozeduren an, und machen Sie sich damit vertraut.

   - Welche Knoten muss die Funktion OLetzterRek zurückgeben, wenn man ihr als Argument folgende Teilbäume des unten abgebildeten Baumes übergibt:

     1. m
     2. g
     3. u
     4. einen leeren Baum
   - Formulieren Sie entwurfssprachlich einen Algorithmus für die Funktion OLetzterRek, und testen Sie ihn anhand der obigen Beispiele.
   - Implementieren Sie Ihren Algorithmus in der Prozedur OLetzterRek im Klassenmodul cWörterbuch.
   - Testen Sie Ihre Implementation.

3. Das Thema Inordnungs-Traversierung beschreibt und implementiert die Inordnungs-Traversierung für das Modul cWörterbuch. Geben Sie den unten abgebildeten Baum ein, und verfolgen Sie die Arbeitsweise des Algorithmus mit dem Debugger.

   - Setzen Sie im Prozedurkopf der Methode ONächster einen Haltepunkt, definieren Sie dann die Überwachungsausdrücke

     Knoten.Begriff
     ONächster.Begriff

     und klicken Sie schliesslich die Schaltfläche 'Liste deutsch-englisch'.

4. Bei Klicken der Schaltfläche 'Liste englisch-deutsch' soll eine Liste aller Einträge nach den englischen Definitionen sortiert ausgegeben werden. Implementieren Sie diese Funktion. Der Algorithmus arbeitet in zwei Schritten (siehe Bild).

   1. Im ersten Schritt kopiert er die Einträge des Wörterbuches 'Deutsch-Englisch' in ein zweites Wörterbuch 'Englisch-Deutsch', in dem die Begriffs-Paare nach den englischen Wörtern sortiert sind.
   2. Im zweiten Schritt gibt er die Einträge des neuen Wörterbuches der Reihe nach aus.

   - Formulieren sie die beiden Algorithmen zuerst wieder entwurfssprachlich.
   - Testen Sie die Algorithmen an einem Beispielbaum mit einigen deutsch-/englischen-Begriffspaaren.
   - Implementieren Sie die Algorithmen in der Prozedur listeEnglisch-Deutsch_Klick im Modul Prozeduren.

5. Das Thema Breitentraversierung beschreibt die Implementierung der Breitentraversierung. Geben Sie den abgebildeten Baum ein, und verfolgen Sie die Arbeitsweise des Algorithmus mit dem Debugger.

   - Setzen Sie im Prozedurkopf der Methode NNächster einen Haltepunkt, definieren Sie dann die Überwachungsausdrücke

     Knoten.Begriff
     Läufer.Begriff
     NNächster.Begriff

     und klicken Sie schliesslich die Schaltfläche 'speichern'.

LWoerterbuch.xls

©abo