Listen und Listenbefehle: Gruppen von Objekten erzeugen
In Listen lassen sich mehrere Objekte (Zahlen, Punkte, …) gleichzeitig in Gruppen speichern.
- Leere Liste anlegen:
liste = {}
-
Liste mit Zahlen anlegen:
liste = {6, 2, 8, 3}
liste = {-2, -1, 0, 1, 2, 3, 4}
-
liste = -2..4
(äquivalent zur Definition davor) -
liste = a..b
(Liste in flexiblem Bereich)
- Liste mit Punkten anlegen:
-
liste = {A, B, C}
(für schon definierte PunkteA
,B
undC
) liste = {(0, 0), (-2, 3), (5, 4)}
-
-
Liste mit hinten angehängtem Wert:
liste = {1, 2, 3}
ergaenzteListe = Anfügen(liste, 42)
- Wert von
ergaenzteListe
:{1, 2, 3, 42}
Listen mit dem Zip-Befehl weiterverarbeiten
Mit dem Zip
-Befehl werden alle Elemente einer Liste auf neue Objekte in einer neuen Liste abgebildet.
Struktur
Zip(AUSDRUCK, VARIABLENNAME, LISTE)
Aus der eingegebenen Liste (drittes Argument) wird sukzessive ein Element herausgegriffen und im angegebenen Variablennamen (zweites Argument) gespeichert. Abhängig von dieser Variable wird jeweils ein neues Objekt (eine Zahl, ein Punkt, etc.) gebildet. Alle diese Objekte werden in einer neuen Liste gespeichert.
Beispiel 1: Quadratzahlen
Ausgangsliste: zahlen = {-6, -4, -2, 0, 2, 4, 6} (Zahlen von -6 bis 6 in Zweierschritten)
Neue Listen:
-
Liste der Quadrate der Zahlen:
quadratzahlen = Zip(z^2, z, zahlen)
- Quadrat
z^2
… - …für jede Zahl
z
… - …in der Liste
zahlen
.
quadratzahlen = {36, 16, 4, 0, 4, 16, 36}
- Quadrat
-
Liste von entsprechenden Punkten auf der Normalparabel:
parabelpunkte = Zip((z, z^2), z, zahlen)
- Punkt
(z, z^2)
… - …für jede Zahl
z
… - …in der Liste
zahlen
.
parabelpunkte = {(-6, 36), (-4, 16), (-2, 4), (0, 0), (2, 4), (4, 16), (6, 36)}
- Punkt
Beispiel 2: Liste von Punkten verarbeiten
Ausgangsliste: punkte = {(-0.5, 1), (0, 2), (0.5, 3)}
-
$x$-Koordinaten aller Punkte:
xKoordinaten = Zip(x(P), P, punkte)
- $x$-Koordinate
x(P)
… - …für jeden Punkt
P
… - …in der Liste
punkte
.
xKoordinaten = {-0.5, 0, 0.5}
- $x$-Koordinate
-
Dreiecke mit zwei weiteren Punkten:
dreiecke = Zip(Vieleck((-1, 0), P, (1, 0)), P, punkte)
- Dreieck mit weiteren Eckpunkten $A(-1 | 0)$ und $B(1 | 0)$:
Vieleck((-1, 0), P, (1, 0))
… - …für jeden Punkt
P
… - …in der Liste
punkte
.
- Dreieck mit weiteren Eckpunkten $A(-1 | 0)$ und $B(1 | 0)$:
Beispiel-Applet
Mit dem folgenden Applet kann der Satz des Thales und seine Umkehrung erkundet werden:
Applet nachbauen
Es fehlen noch die Skripte zum Speichern und Löschen der markierten Punkte an den Schaltflächen. Außerdem fehlen die von den Punkten abhängigen Dreiecke und Winkel.
-
Die Schaltflächen im Applet verwalten eine Liste von markierten Punkten, die per
SetzeWert
-Befehl ergänzt oder geleert wird.Tipp
- Leere Liste für markierte Punkte anlegen:
punktspeicher = {}
- Skript bei Punkt markieren:
SetzeWert(punktspeicher, Anfügen(…, …))
- Skript bei Markierungen löschen:
SetzeWert(punktspeicher, …)
- Leere Liste für markierte Punkte anlegen:
-
Die Winkel und Dreiecke gehen jeweils per
Zip
-Befehl aus der Liste der gespeichterten Punkte hervor. Sie werden per Anzeigebedingung mit Kontrollkästchen ein- und ausgeblendet.Tipp
winkelmarkierungen = Zip(Winkel(…, …, …), …, …)
dreiecke = Zip(Vieleck(…, …, …), …, …)
- Anzeige der beiden Listen an die Kontrollkästchen-Variablen
zeigeWinkelmarkierungen
undzeigeDreiecke
koppeln
- Im Zweifelsfall oben in den Eigenschaften der Schaltflächen und anderen Objekte nachsehen, wie das Applet funktioniert.
Mögliche Erweiterungen
- Winkel hervorheben, wenn er nahe 90° ist
- Punkte nur setzen lassen, wenn der Winkel nahe 90° ist
- Infotext, wenn falscher Winkel markiert werden soll
Mehrere Listen gleichzeitig durchlaufen
Die bisher beschriebene Struktur von Zip-Befehlen ist eigentlich nur ein Spezialfall. Im Allgemeinen kann auch auf mehrere Listen gleichzeitig wie mit einem Reißverschluss (engl. Zip) zugegriffen werden: Zuerst wird aus den jeweils ersten Elementen ein Objekt gebildet, dann aus den zweiten, dann aus den dritten und so weiter.
Ausgangslisten:
-
xWerte = {-6, -4, -2, 0, 2, 4, 6}
-
yWerte = Zip(z^2, z, xWerte)
-
Punkte aus $x$- und $y$-Koordinaten:
punkte = Zip((x, y), x, xWerte, y, yWerte)
- Punkt
(x, y)
… - …für jeden $x$-Wert
x
… - …in der Liste
xWerte
… - …und entsprechenden $y$-Wert
y
… - …in der Liste
yWerte
.
punkte = {(-6, 36), (-4, 16), (-2, 4), (0, 0), (2, 4), (4, 16), (6, 36)}
- Punkt
Andere Projekte
- Listen nutzen, um Ergebnisse in Würfelspielen zu verwalten