MuPAD Education Group: Kostenlose Materialen für MuPAD Pro:
www.sciface.com/education, schule.mupad.de, studium.mupad.de, mupad.zum.de.

________________________________________________________________________________

 

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]

math

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]

math

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)

math

math

math

math

math

math

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

math

Korrekt! Auch die anderen Ergebnisse prüfen wir nach:

 

L_1[2] = 2;

L_2[1] = a

math

math

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

math

math

math

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)

math

math

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)

math

math

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)

math

op(L_2)

math

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)}

math

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]

math

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]]

math

direkt an den Konstrukor matrix für Matrizen übergeben

 

matrix(L_4)

math

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]

math

________________________________________________________________________________

 

Aufgaben:

1. Definieren Sie in MuPAD die Listen, die die Elemente der Mengen 

    image

    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

 

_______________________________________________________________________________

 

 

 

MuPAD Education Group: Kostenlose Materialen für MuPAD Pro:
www.sciface.com/education, schule.mupad.de, studium.mupad.de, mupad.zum.de.