7. Programmeinheiten
 
zurück
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".

function Maximum (Links : in Integer;
   Rechts : in Integer) return Integer is
   Max : Integer;
begin
   if Links > Rechts then
      Max := Links;
   else
      Max := Rechts;
   end if;
   return Max;
end Maximum;

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.

Ergebnis := Maximum (Links => 1, Rechts => 2);

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:
  • Er dokumentiert die beabsichtigte Rolle des Parameters und erhöht damit die Transparenz des Programms;
  • Dem Übersetzer wird ermöglicht, die Einhaltung dieser Absicht zu überwachen und so eventuelle Fehler schon zur Übersetzungszeit zu entdecken.
Der Parametermodus kann Auswirkungen auf die Parameterübergabe haben. In der Regel ist es nicht erforderlich, daß sich der Entwickler mit der zur Laufzeit stattfindenden Parameterübergabe auseinandersetzt, ob also ein Aktualparameter durch Kopieren oder Verweis an den Formalparameter übergeben wird.
Das Ada-Laufzeitsystem wählt einen effizienten Übergabemechanismus, wobei dieser Übergabemechanismus für einige Parametertypen vorgeschrieben ist.


 
zurück
 Index   Ada Tour - Dokumentation  
© 2003 Förderverein Ada Deutschland e.V.