7. Programmeinheiten

MATLAB kennt zwei Typen von Programmeinheiten, Skripts und Funktionen, die sich in ihrem Verhalten wesentlich unterscheiden. Beiden gemeinsam ist, dass sie in Files ``filename.m'' gespeichert sein müssen. Die Extension muss immer ``.m'' sein. Liegt ein solcher File im MATLAB-Pfad, so kann er innerhalb von MATLAB mit seinem Namen ohne die Extension ``.m'' ausgeführt werden.

Für eigene Skripts und Funktionen sollten keine Namen verwendet werden, die in MATLAB selbst Verwendung finden, da ansonsten MATLAB-Routinen ``lahmgelegt'' werden können. Falls man sich nicht sicher ist, ob ein Name bereits existiert, kann man den Befehl exist('name') verwenden. Falls exist den Wert 0 retourniert, kann man ihn beruhigt verwenden, falls der Wert 5 retourniert wird, handelt es sich um eine interne MATLAB-Routine.

Sowohl Skripts als auch Funktionen helfen, wiederkehrende Aufgaben zu erledigen und dienen daher einer besseren Strukturierung und der Arbeitserleichterung.

Skripts:
Sie enthalten eine Abfolge von MATLAB-Befehlen und werden ohne Übergabeparameter aufgerufen. Die Befehle laufen in gleicher Weise hintereinader ab, wie wenn man sie Schritt für Schritt eingeben würde.

Skripts können alle bereits im Workspace definierten Variablen verwenden und verändern.

Nach ihrem Ablauf sind alle dort definierten Variablen bekannt. Werden mehrere Skripts exekutiert, kann es zu unliebsamen Überschneidungen kommen, wenn z.B. ungewollt in mehreren Skripts die gleichen Variablennamen verwendet werden.

Dadurch, dass die Variablen nicht in einem eigenen Workspace gekapselt sind, eignen sich Skripts nicht wirklich für eine schöne modulare Trennung von Programmen in selbständige Teile.

Funktionen:
Im Unterschied zu Skripts enthalten Funktionen eine Deklarationszeile, die sie klar als Funktion kennzeichnet.

Ihre Deklaration enthält normalerweise auch sogenannte Übergabeparameter, die in Eingabe- und Ausgabeparameter gegliedert sind.

Funktionen laufen in einem lokalen Workspace ab, der zum jeweiligen Funktionsaufruf gehört. Dadurch findet eine totale Kapselung der Variablen statt und es kann zu keinen Überschneidungen mit anderen Programmen kommen, solange auf die Deklaration und die Verwendung globaler Variablen verzichtet wird.

Die einzige Verbindung zwischen den Variablen innerhalb einer Funktion und dem Workspace einer aufrufenden Funktion (bzw. dem MATLAB-Workspace) sind die Ein- und Ausgabeparameter. Die Variablen innerhalb einer Funktion existieren nur temporär während der Funktionsausführung.

Durch diese Art der Kapselung ist es auch möglich, dass Funktionen sich selbst aufrufen. Dies nennt man Rekursion.



Subsections
Winfried Kernbichler 2005-04-26