7. Programmeinheiten | ||||||
|
||||||
7.3 Parameter
Einige Programmeinheiten können Parameter haben, z. B. Unterprogramme, generische Einheiten. Andere Programmeinheiten wie Prozesse und Pakete haben keine Parameter. Parameter werden in Unterprogrammen, Prozeßeingängen und generischen Einheiten verwendet, um mit dem Unterprogrammrumpf, der Annahmeanweisung oder dem generischen Rumpf Daten über eine wohldefinierte Schnittstelle austauschen zu können. Unterschieden werden: Formalparameter - Aktuelle Parameter Der Parameter im Unterprogrammrumpf, in der Annahmeanweisung (accept_statement <BNF>) oder dem generischen Rumpf wird als Formalparameter (parameter_profile <BNF>) bezeichnet und wie ein lokal deklarierter Bezeichner verwendet. Die im folgenden Beispiel aufgeführten Parameter "Links" und "Rechts" sind die Formalparameter der Funktion "Maximum". Im Funktionsrumpf werden sie wie andere Bezeichner der Funktion verwendet, z. B. "Max".
Der in einem Unterprogramm- bzw. Eingangsaufruf oder einer generischen Instantiierung verwendete Parameter wird Aktualparameter oder Argument genannt und dem entsprechenden Formalparameter zur Übersetzungszeit zugeordnet (Parameterzuordnung). Im folgenden Funktionsaufruf werden den Formalparametern "Links" und "Rechts" die ganzzahligen Literale "1" und "2" als Aktualparameter zugeordnet.
In der Spezifikation von Unterprogrammen, Prozeßeingängen kann mit Parametermodi für jeden Parameter festgelegt werden, in welche Richtung(en) Daten ausgetauscht werden. Generische Einheiten haben generische formale Parameter, die nicht nur Objekte (so wie in Unterprogrammen und Prozeßeingängen), sondern zusätzlich Datentypen, Unterprogramme und Pakete umfassen können,die keine Parametermodi haben. Ein Parameter kann in drei verschiedenen Modi deklariert werden: out - in - in out Der formale Parameter kann nur gelesen werden. Im Rumpf der Programmeinheit wird nur der aktuelle Wert des Formalparameters verwendet; Unterprogrammrumpf, Annahmeanweisung oder generischer Rumpf können den Wert des Formalparameters nicht ändern. Der formale Parameter kann nur beschrieben werden. Unterprogrammrumpf, Annahmeanweisung oder generischer Rumpf schreiben in den Formalparameter einen Wert. Der lesende Zugriff auf einen Parameter mit dem Modus out ist - zur Vereinfachung - innerhalb des Unterprogrammrumpfes und der Annahmeanweisung möglich. Der formale Parameter kann gelesen und beschrieben werden. Unterprogrammrumpf, Annahmeanweisung oder generischer Rumpf können den Wert des Formalparameters lesen und verändern. Der Modus eines Parameters (mode <BNF>) informiert über die Richtung des Datenflusses:
Das Ada-Laufzeitsystem wählt einen effizienten Übergabemechanismus, wobei dieser Übergabemechanismus für einige Parametertypen vorgeschrieben ist. |
||||||
|