Komplexere Listen

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.

Listen von Listen

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:

Erstelle mit Hilfe der vorgegebenen Blöcke die Skripte zum Aufzeichnen und Abspielen der Mausposition.
Nutze die Blöcke für das Skript zum Abspielen der Mausposition, so dass zwischen den gespeicherten Positionen eine Verbindungslinie gezeichnet wird.

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.

Setze die beschriebenen Funktionen mit Hilfe der vorgegebenen Blöcke um.

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.