Listen können mehrere Werte speichern, die über ihre Position in der Liste abrufbar sind. Listen lassen sich also als Abbildungen von Ganzzahlen (die Position) auf beliebige Werte interpretieren.
Eine ähnlich Datenstruktur, die für viele Anwendungszwecke hilfreich ist, stellt das “Wörterbuch” (engl. dictionary oder auch “assoziatives Array”) dar: Ein Wörterbuch speichert wie eine Liste mehrere Werte, die aber nicht über Positionen, sondern über Schlüssel abrufbar sind. Dabei können die Schlüssel einen beliebigen Datentyp haben.
Ein einfaches Beispiel stellt ein Fremdsprachlexikon dar: Hier werden Wörter auf Wörter abgebildet, beispielsweise “Katze” auf “cat”, “Hund” auf “dog” usw. Wenn wir ein englisches Wort wissen möchten, schauen wir beim deutschen Wort nach. Auf die gespeicherten Werte wird hier also über Zeichenketten-Schlüssel zugegriffen. Die deutschen Wörter sind hier die Schlüssel, die englischen die zugeordneten Werte.
Ein Wörterbuch lässt sich mit zwei Listen modellieren: Eine Liste enthält die Schlüssel, die andere die entsprechenden Werte in genau derselben Reihenfolge:
Um nun den Wert für einen Schlüssel abzurufen (z. B. für “Maus”) wird zuerst in der ersten Liste nach der Position des Schlüssels gesucht (hier: Position 5). Anschließend wird der Wert, der an dieser Position in der zweiten Liste steht, ausgegeben (hier: “mouse” an Position 5).
In dieser Aufgabe sollen in Scratch Unterprogramme zu Verwaltung eines solches Wörterbuchs umgesetzt werden. Laden Sie dazu die Projektdatei Wörterbuch.sb3 als Vorlage herunter: Download
Das Objekt “Wörterbuch” besitzt zwei Listen “Schlüssel” und “Werte”, in die bereits ein paar Schlüssel-Werte-Paare eingetragen sind:
Definieren Sie die folgenden Unterprogramme, um Schlüssel-Werte-Paare zum Wörterbuch hinzufügen, abzufragen, zu ändern oder zu löschen:
Aufgabe: TextVerschlüsseln.sb3
Aufgabe: FormelAuswerten.sb3
Aufgabe: Kommaliste.sb3
Aufgabe: Objektliste.sb3 (benötigt Vorwissen über Objektklone)
Aufgabe: WörterRaten.sb3 (größere Projektaufgabe, ggf. in Teilaufgaben aufteilen)