This is documentation for Mathematica 4, which was
based on an earlier version of the Wolfram Language.
View current documentation (Version 11.1)

 Documentation /  Mathematica /  Das Mathematica Buch /  Die Prinzipien von Mathematica /  Modularität und die Benennung von Dingen /

InhaltLokale Konstanten

2.6.1 Module und lokale Variablen

Mathematica nimmt normalerweise an, daß Ihre Variablen alle global gültig sind. Das heißt, Mathematica nimmt an, daß Sie sich stets auf dasselbe Objekt beziehen, wenn Sie einen Namen wie x benutzen.

Insbesondere wenn Sie Programme schreiben, wollen Sie jedoch möglicherweise nicht, daß alle Variablen global sind. Vielleicht möchten Sie beispielsweise den Namen x für zwei unterschiedliche Variablen in zwei verschiedenen Programmen verwenden. In diesem Fall muß x in jedem Programm als lokale Variable behandelt werden.

In Mathematica können Sie mit Modulen Variablen als lokale Variablen deklarieren. Innerhalb eines jeden Moduls können Sie eine Liste jener Variablen angeben, die dann bezüglich des Moduls als lokal behandelt werden.

Erzeugung von Modulen in Mathematica

Hier wird definiert, daß die globale Variable t den Wert 17 hat.

In[1]:= t = 17

Out[1]=

Das t innerhalb des Moduls ist lokal, so daß es unabhängig vom globalen t behandelt werden kann.

In[2]:= Module[{t}, t=8; Print[t]]

Das globale t hat weiterhin den Wert 17.

In[3]:= t

Out[3]=

Am häufigsten werden Module dazu verwendet, temporäre Variablen oder Zwischenvariablen innerhalb selbstdefinierter Funktionen anzulegen. Es ist wichtig, darauf zu achten, daß diese Variablen lokal bleiben. Andernfalls dürfte es jedesmal zu Schwierigkeiten kommen, wenn ihr Name mit den anderen Variablen übereinstimmt.

Die Zwischenvariable t wurde als lokal bezüglich des Moduls spezifiziert.

In[4]:= f[v_] := Module[{t}, t = (1 + v)^2; t = Expand[t] ]

Dies führt die Funktion f aus.

In[5]:= f[a + b]

Out[5]=

Das globale t hat weiterhin den Wert 17.

In[6]:= t

Out[6]=

Lokale Variablen können Sie in Modulen genauso wie andere Symbole behandeln. So können Sie sie zum Beispiel als Namen für lokale Funktionen benutzen, ihnen Attribute zuweisen usw.

So legt man ein Modul an, das eine lokale Funktion f definiert.

In[7]:= gfac10[k_] :=
Module[{f, n}, f[1] = 1; f[n_] := k + n f[n-1]; f[10]]

In diesem Fall ist die lokale Funktion f lediglich eine gewöhnliche Fakultät.

In[8]:= gfac10[0]

Out[8]=

In diesem Fall wird f als verallgemeinerte Fakultät aufgestellt.

In[9]:= gfac10[2]

Out[9]=

Wenn Sie eine lokale Variable in einem Modul einrichten, so wird Mathematica dieser Variablen anfangs keinen Wert zuweisen. Deshalb können Sie diese Variable rein symbolisch verwenden, auch wenn ein globaler Wert für sie außerhalb des Moduls definiert ist.

So benutzt man den bereits definierten globalen Wert von t und erzeugt eine Zahl.

In[10]:= Expand[(1 + t)^3]

Out[10]=

Hier erhält Length als Argument einfach eine Zahl.

In[11]:= Length[Expand[(1 + t)^3]]

Out[11]=

Die lokale Variable t hat keinen Wert, also wirkt sie als ein Symbol, und Expand erzeugt das erwartete algebraische Ergebnis.

In[12]:= Module[{t}, Length[Expand[(1 + t)^3]]]

Out[12]=

Zuweisung von Anfangswerten zu lokalen Variablen

Dies spezifiziert t als lokale Variable, mit dem Anfangswert u.

In[13]:= g[u_] := Module[{ t = u }, t += t/(1 + u)]

Dies verwendet die Definition von g.

In[14]:= g[a]

Out[14]=

Sie können für jede beliebige der lokalen Variablen in einem Modul Anfangswerte definieren. Die Anfangswerte werden immer vor Ausführung des Moduls evaluiert. Folglich wird das globale x benutzt, wenn es in einem Ausdruck für einen Anfangswert erscheint, auch wenn eine Variable x als lokal bezüglich des Moduls definiert wird.

Als Anfangswert für u wird der globale Wert von t genommen.

In[15]:= Module[{t = 6, u = t}, u^2]

Out[15]=

Benutzung lokaler Variablen in Definitionen mit Bedingungen

Wenn Sie /;-Bedingungen für Definitionen formulieren, müssen Sie oft temporäre Variablen einführen. In vielen Fällen möchte man diese temporären Variablen auch im Rumpf der rechten Seite der Definition nutzen. In Mathematica können Sie die gesamte rechte Seite Ihrer Definition, einschließlich der Bedingung, in ein Modul einfügen.

Dies definiert eine Funktion mit einer beigefügten Bedingung.

In[16]:= h[x_] := Module[{t}, t^2 - 1 /; (t = x - 4) > 1]

Der Wert der lokalen Variablen t kann von der Bedingung und dem rechtsseitigen Rumpf gemeinsam genutzt werden.

In[17]:= h[10]

Out[17]=

InhaltLokale Konstanten