Parameter und Argumente
Der Name einer Operation kann selber auch wieder als ein Kern angesehen werden, zu dem sich noch ein Satellit gesellen kann, der dann Argument genannt wird.
Die folgende Produktion zeigt, eine Wertangabe mit vorangestelltem Kern und einem eingeklammertem Argument.
- 〈Wertangabe mit Argument 〉 ::=
- 〈Operation 〉 "(" 〈Argument 〉 ")".
Man bezeichnet solch einen Aufruf auch als einen Aufruf mit einem Argument und sagt, die Operation werde mit dem Argument 〈Argument 〉 aufgerufen oder die Operation werde auf das Argument angewendet. Falls es möglich ist, eine bestimmte Operation mit einem Argument aufzurufen, sagt man auch, daß diese Operation ein Argument akzeptiere oder erwarte.
Die Stelle des Arguments in einer Anwendung einer Operation wird der Parameter der Operation genannt. Ein Parameter bestimmt eine bestimmte Rolle einer Angabe. Der Satellit, der in einer bestimmten Beschreibung an dieser Stellen tatsächlich geschrieben wird, um diese Rolle auszufüllen, wird Argument genannt.
Man kann einen Parameter auch mit einem Einwurf eines Münzautomaten vergleichen: Ein bestimmter eingeworfener Betrag ist dann das Argument. Der Typ des Einwurfs ist „Münze“, das heißt: es werden nur Münzen als akzeptiert. Darüber hinaus sind auch nur Münzen mit bestimmten Werten erlaubt. Falls in den Einwurf etwas anderes eingeworfen wird als Münzen der zulässigen Werte, so ist das ein Fehler des Bedieners und nicht des Automaten.
- Ein Muenzautomat mit einem "Muenzparameter"
Muenzautomat( ) ^
| Muenze
Manchmal wurde früher (und wird gelegentlich auch noch heute) für das Argument auch die Bezeichnung „tatsächlicher Parameter “ [actual parameter ] verwendet, und der Parameter auch als Formalparameter oder „formaler Parameter “ [formal parameter ] bezeichnet. Die Bezeichnung „Aktualparameter “ oder „aktueller Parameter “ ist eine falsche Übersetzung von “actual parameter ”, bei der “actual ” durch „aktuell“ „übersetzt“ wurde.
Wenn eine Operation einen Parameter hat, so bedeutet dies, daß sie ein Argument erwartet, also daß bei einer Wertangabe mit dieser Operation ein Argument anzugeben ist. Dann ist es im allgemeinen ein Fehler, die Operation ohne ein Argument aufzurufen. Umgekehrt ist es im allgemeinen ein Fehler, ein Argument zu verwenden, wenn die Operation gar keinen Parameter hat.
Der Parameter gibt an, was erwartet wird. Das Argument ist dann das tatsächlich dafür angegeben.
Der Unterschied zwischen Parameter und Argument soll noch einmal beschrieben werden:
Ein Parameter gibt eine bestimmte Stelle oder Rolle an, für die beim Aufruf ein Wert angegeben werden kann. Ein Argument ist dann ein Ausdruck, der bei einem bestimmten Aufruf tatsächlich angegeben wird, um den Wert eines Parameters für diesen Aufruf festzulegen. Wenn eine Operation einen Parameter hat, dann muß bei ihrem Aufruf ein Argument angegeben werden, hat sie hingegen keinen Parameter, dann darf bei ihrem Aufruf kein Argument angegeben werden.
Das Argument kann sich von Aufruf zu Aufruf unterscheiden.
In der Abbildung „Der Aufruf "f( 2 )"“ wird versinnbildlicht, wie ein bestimmter Argumentwert für die Stelle eines Parameters festgelegt wird.
- Der Aufruf "f( 2 )"
f( ) Der Parameter (Die Stelle zwischen den runden Klammern) ^
| 2 Das Argument
Nicht in allen Texten wird sorgfältig zwischen Parametern und Argumenten unterschieden, daher muß bei der Lektüre von anderen Texten jeweils geprüft werden, was dort mit „Parameter“ und „Argument“ gemeint ist.
Datentypen
Falls etwas Aufrufbares einen Parameter hat (also ein Argument akzeptiert), dann ist es auch meistens spezifiziert (festgelegt), welchen Datentyp dieser Parameter hat. Das für den Parameter angegebene Argument muß dann entweder vom selben oder von einem verträglichen Datentyp sein. Es werden noch Argumente gewisser anderer Datentypen akzeptiert: Wenn sie dem erwarteten Datentyp hinreichend ähnlich sind, dann werden sie entsprechend uminterpretiert.
Wenn eine Operation beispielsweise einen Gleitkommaparameter hat, so wird als Argument zunächst auch ein Gleitkommawert erwartet. Es wird jedoch beispielsweise auch eine ganze Zahl akzeptiert, die dann stillschweigend als Gleitkommazahl interpretiert wird.
Semantik
Der Wert des Arguments kann die Bedeutung des Aufrufs beeinflussen, wobei die genaue Art der Beeinflussung von der Operation abhängt und ihrer Dokumentation entnommen werden kann.
Manchmal darf als Argument nicht jeder Ausdruck des Parametertyps angegeben werden. Der Aufruf mit einem unzulässigen Argumentwert ist falsch und sinnlos, wie auch der Aufruf mit einem Argument, das nicht vom richtigen Typ ist.
Es ist die Aufgabe (Verantwortung) des Autors einer Anwendung dafür zu sorgen, daß der Typ und der Wert eines Arguments im vorgesehenen Bereich liegt. Diesen Bereich kann der Autor der Dokumentation der Operation entnehmen.
Wenn man einen Aufruf schreiben will, muß man sich also zunächst über den Typ und die Bedeutung des Parameters informieren und die zulässigen Argumentwerte ermitteln. Dann ist sicherzustellen, daß das verwendete Argument von einem verträglichen Typ ist und der Wert des Argumentes in der Menge der zulässigen Werte enthalten ist.
Beispiel
Das Negative einer Zahl, also das Produkt der Zahl mit −1, ist ihre Gegenzahl. Beispielsweise ist die Gegenzahl von 4 gleich −4 und die Gegenzahl von −4 ist 4.
In einer formalen Sprache könnte eine Anwendung "gegenzahl( 4 )" mit einem ganzzahligen Parametern möglich sein, welche die Operation "gegenzahl" mit dem Argument "4" verbindet und damit „Die Gegenzahl von 4“ beschreibt (also −4) ist. Die Schreibweise "gegenzahl( 4 )" erlaubt es dann also, mit einen Ausdruck die Gegenzahl von 4 anzugeben.
Übungsfrage Welchen Wert hat der Ausdruck "gegenzahl( gegenzahl( 4 ))"?
In verschiedenen Ausdrücken können für denselben Parameter unterschiedliche Argumentwerte angegeben werden.
- Zwei verschiedene Argumente fuer den gleichen ganzzahligen Parameter
gegenzahl( 2 ) gegenzahl( 4 )
Verschachtelte Beschreibungen
In dem Ausdruck "gegenzahl( gegenzahl( 4 ))" ist das Argument "gegenzahl( 4 )" selber wieder ein Ausdruck. Der äußere (erste) Kern „sieht“ als den Wert seines Arguments dann den Wert der inneren Beschreibung "gegenzahl( 4 )" an.
Kompliziertere Dinge oder Sachverhalte lassen sich meist durch die Verschachtelung (Kombination) mehrerer Beschreibungen angeben und letztendlich sind Quelldatei einer formalen Sprache nichts anderes als solche ineinander verschachtelten Angaben.
Wortkunde
Der Parameter
Genitiv „des Parameters“, Mehrzahl „die Parameter“.
Aussprache pa'ra:metɐ
Herkunft „παρά “ (griechisch für „neben“) + „τὸ μέτρον “ (griechisch für „Maß“), d.h. „begleitende Maßangabe“.
Übungsaufgaben
- / actual
- Verwenden Sie ein Wörterbuch, um die Bedeutung des englischen Wortes „actual“ zu ermitteln.