________________________________________________________________________________
Inhalt....: Elementare Datenstrukturen in MuPAD - Listen
Kategorie.: Handwerkskasten
Mathematik: Programmierung
MuPAD.....: 3.0.0
Datum.....: 2002-02-06
Autoren...: Kai Gehrs <acrowley@mupad.de>
Funktionen: contains, nops, _concat, matrix, op
________________________________________________________________________________
Elementare Datenstrukturen in MuPAD:
Listen
Listen sind nicht nur für den Bereich der Informatik wichtige Datenstrukturen. Wir
wollen kurz die wichtigsten Operationen auf Listen vorstellen.
Listen in MuPAD werden z.B. bei der Definition von Matrizen verwendet.
Sie können nahezu beliebige Elemente aufnehmen.
Wir definieren eine Liste L durch die eckigen Klammern [...]:
L_1:= [3, 2, 1, 4, 5, 1/2, 1/3, E, PI, 0.2, 1, 2, 3]
![]()
Ein wichtiger Unterschied zu Mengen lässt sich hier bereits beobachten:
In einer Liste können Elemente (im Gegensatz zu Mengen) auch mehrfach
enthalten sein. Ferner verbleiben die Elemente der Liste in der Reihen-
folge, in der sie eingegeben wurden. Wir definieren eine zweite Liste
L_2:= [a, b, c, E, PI, 1/3, 1, 2]
![]()
Mit Hilfe des Befehl contains können wir prüfen, ob ein bestimmtes
Element in einer Liste enthalten ist. contains erhält zwei Argumente:
1. Argument: Die Liste, von der geprüft werden soll, ob sie ein
bestimmtes Element enthält
2. Argument: Das Element, von dem geprüft werden soll, ob es in
der Liste enthalten ist
Als Rückgabewert erhalten wir stets eine nicht negative ganze Zahl.
Ist das gefragte Element in der Liste enthalten, so erhalten wir die
kleinste Zahl i, d.h. das Element in der Liste taucht an der Stelle i
zum ersten Mal auf. Ist das Element nicht in der Liste enthalten,
so liefert uns MuPAD die Ausgabe 0. Ein Funktionsaufruf der Funktion
contains besitzt folglich stets die Form contains( Liste, Element ).
Wir testen einige Beispiele:
contains(L_1, 1);
contains(L_1, 2);
contains(L_2, 3);
contains(L_2, 23);
contains(L_1, f);
contains(L_2, a)
![]()
![]()
![]()
![]()
![]()
![]()
Mit Hilfe des Indexoperators greifen wir auf die Elemente einer Liste zu.
Wir überprüfen die obigen Ausgaben: Ist das dritte Element von L_1
tatsächlich 1?
L_1[3] = 1
![]()
Korrekt! Auch die anderen Ergebnisse prüfen wir nach:
L_1[2] = 2;
L_2[1] = a
![]()
![]()
Mit Hilfe des Indexoperators können wir auch Elemente einer Liste
verändern. Wollen wir, dass das fünfte Elemente in L_1 von nun
an 37 ist, so schreiben wir
L_1;
L_1[5]:= 37;
L_1
![]()
![]()
![]()
wobei die erste und dritte Befehlszeile lediglich der Ausgabe der Liste
zwecks Vergleich gelten.
Die Anzahl der Elemente einer Liste bestimmt man mit dem Befehl
nops. nops erhält ein Argument, nämlich die Liste, deren Element-
anzahl zu bestimmen ist. Als Rückgabewert erhalten wir stets eine
nicht negative ganze Zahl.
Für unsere Listen L_1 und L_2 erhalten wir
nops(L_1);
nops(L_2)
![]()
![]()
Wichtig ist, dass auch Elemente, die mehrfach vorkommen, mehrfach
gezählt werden.
Die Liste [1, 1, 1, 1] enthält vier Elemente, während die Menge
{1, 1, 1, 1} = {1} nur ein Element enthält.
Zur Verkettung von Listen bietet MuPAD den Befehl _concat.
_concat erhält stets zwei Argumente:
1. Argument: Eine Liste L_1
2. Argument: Eine Liste L_2
Rückgabewert ist eine Liste, die Verkettung der beiden Eingabelisten.
Ein Aufruf ist typischerweise von der Gestalt _concat(Liste L_1, Liste L_2)
oder von der Form _concat(Liste L_2, Liste L_1). Dabei kommt es
entscheidend auf die Reihenfolge an, denn der erste Aufruf bewirkt,
dass L_2 hinten an L_1 angefügt wird. Bei dem zweiten Aufruf geschieht
genau das umgekehrte.
Wir führen beide Operationen einmal mit unseren Beispiellisten aus:
_concat(L_1, L_2);
_concat(L_2, L_1)
![]()
![]()
Mit Hilfe des Befehls op können wir die Operanden einer Liste
extrahieren. op erhält stets ein Argument, in unserem Fall eine Liste.
Der Rückgabewert ist dann die Sequenz der Elemente der Liste.
Wir testen dies an unseren Beispielen:
op(L_1)
![]()
op(L_2)
![]()
Dies ist vor allem dann wichtig, wenn wir die Elemente einer Liste in
eine andere Datenstruktur, z.B. in eine Menge, einfügen möchten.
Aus der Liste L_1 mit den gegebenen Elementen machen wir im
Handumdrehen eine Menge mit diesen Elementen:
M:= {op(L_1)}
![]()
Weitere Informationen zur Definition und zum Umgang mit Mengen
kann man dem entsprechenden Notebook
Elementare_Datenstrukturen_in_MuPAD_Mengen.mnb
entnehmen, welches auf dem Schul-Server ebenfalls zum Download
bereit liegt.
Die Datenstruktur Liste lässt sich auch ineinander verschachteln, d.h.
wir können Listen von Listen betrachten:
L_3:= [L_1, L_2]
![]()
L_3 ist die Liste, deren Einträge die Listen L_1 und L_2 sind. Diese
Schreibweise wird uns bei der Definition von Matrizen in MuPAD
wieder begegnen - dort wird nämlich jede Zeile der Matrix in Form einer
Liste eingegeben und diese Einzellisten werden schließlich noch zu
einer Gesamtliste zusammengefügt, die die Matrix repräsentiert.
So können wir die Liste
L_4:= [[1, 2], [3, 4], [5, 6]]
![]()
direkt an den Konstrukor matrix für Matrizen übergeben
matrix(L_4)

und erhalten eine Matrix mit 3 Zeilen und 2 Spalten. Näheres zu
Matrizen soll uns an dieser Stelle nicht interessieren. Zum Umgang
und zur Definition von Matrizen findet sich ebenfalls Material in Form
von Notebooks auf dem MuPAD Schule-Server.
Hinzuzufügen ist, dass bei Zugriff auf Elemente einer doppelt
geschachtelten Liste wie L_4 auch ein doppelter Platzindex
angegeben werden muß. Zum Beispiel ist L_4 [2] [2] das
zweite Element der zweiten Liste in L_4:
L_4[2][2]
![]()
________________________________________________________________________________
Aufgaben:
1. Definieren Sie in MuPAD die Listen, die die Elemente der Mengen

enthalten. Verketten Sie einige dieser Listen und schreiben Sie neue Elemente in einige dieser Listen.
2. Fügen Sie allen Listen, die Liste mit den Elementen [1, 2, 3] an. Wandeln Sie danach die
Listen in Mengen um. Was stellen Sie im Falle der Listen fest, die zuvor die Elemente 1, 2 oder 3
bereits enthielten?
_______________________________________________________________________________
Anmerkungen:
1. Weitere Anregungen finden Sie unter: http://schule.mupad.de bzw. http://studium.mupad.de
_______________________________________________________________________________