Listen können als Elemente nicht nur konkrete Zahlen, Texte oder Wahrheitswerte enthalten,
sondern auch komplexere Dinge wie Bilder, Sprites oder Listen.
Das folgende Programmierfenster zeigt dies.
Besonders hilfreich ist es, dass Elemente einer Liste wiederum selbst Listen sein können.
In diesem Beispiel hat die gesamte Liste den Bezeichner a.
Das erste Element ist eine Liste der beiden Zahlen 2 und 13.
Das zweite Element der Liste a ist eine Liste der Zahlen 4 und 9.
Das dritte Element der Liste a ist eine Liste der Zahlen 12 und 7.
Durch Rechtsklick auf die Darstellung der Liste im Grafikfenster kann man
die Liste auch als Tabelle darstellen.
Dabei bildet jede Zeile einen
Eintrag der gesamten Liste. Die Spalten einer Zeile sind die Elemente
einer inneren Liste.
Listen von Listen erscheinen vielleicht zunächst etwas kompliziert, sie
bieten aber viele interessante Anwendungsmöglichkeiten.
So kann man als Eintrag einer Liste gleichzeitig mehrere Informationen
speichern. Beim späteren Lesen muss man zunächst den Eintrag über den
Index der Liste herausholen und erhält dann eine eindimensionale Liste.
Für die einzelnen Information muss man auf die Element dieser Liste zugeifen.
Wir nutzen das für ein Programm, das bei einem Mausklick die Positionen des Mauszeigers auf dem Bildschirm (x- und y-Koordinate) aufzeichnet und später wiedergibt.
Zunächst deklariern wir eine Variable für die Mauspositionen .
und weisen ihr eine leere Liste zu: .Bei Drücken der Leertaste lassen wir ein Skript starten, dass eine zweielementige Liste aus der x- und y-Position des Mauszeigers der Liste der Mauspositionen hinzufügt:
Das zweite Skript startet beim Drücken der Taste p (Play). Dabei
werden alle Elemente der Liste
durchlaufen. Mit Hilfe des Blocks
wird das Sprite innerhalb einer bestimmten Zeite an die nächste gespeicherte Position der Maus bewegt:
Das Aufzeichnen von Mauspositionen (engl. Mousetracking) wird zum Beispiel verwendet, um die bei Webseiten zu untersuchen, wie effizient diese gestaltet sind. Beim Abschnitt Projekte gibt es dazu eine Umsetzung dieser Idee.
Ein ganz ähnliches Verfahren wenden wir zum Abschluss noch auf unseren Mähroboter an, um
seine Fahrtroute aufzuzeichnen und später zu untersuchen.
Dazu soll bei jeder Kollision mit der Begrenzung, die Position des Mähroboters in einer Liste
eingetragen werden.
Nach der Mäharbeit des Roboters soll die Fahrtroute sowie die Stellen, an denen
der Mähroboter auf die Begrenzung traf (Stempeln), dargestellt werden.
Dazu deklarieren wir zunächst eine globale Variable
und initialisieren sie mit einer leeren Liste.
Beim Skript zum Mähen muss die x- und y-Position der Richtungsänderung in der Liste gespeichert werden.
Beim späteren Nachverfolgen des Weges der Mähroboters wird die Liste der Positionen durchlaufen
und an diesen Stellen das Sprite mit dem Block
im Grafikfenster eingezeichnet. Mit Hilfe des Stiftes werden dabei auch die Wege zwischen zwei Richtugnsänderungen
visualisiert.
Listen können nicht nur Zahlen, Texte und Wahrheitswerte sondern auch andere Dinge,
insbesondere wieder Listen als Elemente enthalten.
Auf diese Weise können Tabellen mit einer bestimmten Anzahl von Spalten und
Zeilen realisiert werden.
Ein Element der äußeren Liste repräsentiert dabei eine Zeile, ein Element einer inneren Liste die entsprechende Spalten in dieser Zeile.