Parameter (Computerprogrammierung)

In der Computerprogrammierung ist ein Parameter eine spezielle Art der Variable, die in einem Unterprogramm verwendet ist, um sich auf eines der Stücke von zur Verfügung gestellten wie eingegebenen Daten dem Unterprogramm zu beziehen. Diese Stücke von Daten werden Argumente genannt. Eine geordnete Liste von Rahmen wird gewöhnlich in die Definition eines Unterprogramms eingeschlossen, so dass jedes Mal das Unterprogramm genannt wird, können seine Argumente für diesen Anruf den entsprechenden Rahmen zugeteilt werden.

Ebenso im mathematischen Standardgebrauch ist das Argument so der Ist-Wert, der zu einer Funktion, Verfahren oder Routine passiert ist (solcher als 37 im Klotz (37)), wohingegen der Parameter eine Verweisung auf diesen Wert innerhalb der Durchführung der Funktion (Klotz in diesem Fall) ist. Sieh die Rahmen- und Argument-Abteilung für mehr Information.

Im allgemeinsten Fall, Anruf durch den Wert, handelt ein Parameter innerhalb des Unterprogramms als eine lokale (isolierte) Kopie des Arguments, aber in anderen Fällen z.B kann Anruf durch die Verweisung, das vom Anrufer gelieferte Argument durch Handlungen innerhalb des genannten Unterprogramms (wie besprochen, in der Einschätzungsstrategie) betroffen werden.

Die Semantik dafür, wie Rahmen erklärt werden können, und wie die Argumente zu den Rahmen von Unterprogrammen passiert werden, wird durch die Sprache definiert, aber die Details dessen, wie das in jedem besonderen Computersystem vertreten wird, hängen von der Benennen-Vereinbarung dieses Systems ab.

Beispiel

Das folgende Programm auf der C Programmiersprache definiert eine Funktion, die "sales_tax" genannt wird und einen Parameter genannt "Preis" hat. Der Typ des Preises ist (d. h. eine doppelte Genauigkeit "doppelt", die Punkt-Zahl schwimmen lässt). Der Rücktyp der Funktion ist auch ein doppelter.

verdoppeln Sie sales_tax (doppelter Preis)

{\

kehren Sie 0.05 * Preis zurück;

}\

</Quelle>

Nachdem die Funktion definiert worden ist, kann sie wie folgt angerufen werden:

sales_tax (10.00);

</Quelle>

In diesem Beispiel ist die Funktion mit der Nummer 10.00 angerufen worden. Wenn das geschieht, 10.00 wird dem Preis zugeteilt, und die Funktion beginnt, sein Ergebnis zu berechnen. Die Schritte, für das Ergebnis zu erzeugen, werden unter dem beiliegenden in {} "0.05 * angegeben Preis" zeigt an, dass das erste Ding zu tun ist, multiplizieren 0.05 durch den Wert des Preises, der 0.50 gibt. "Rückkehr" bedeutet, dass die Funktion das Ergebnis von "0.05 * Preis" erzeugen wird. Deshalb ist das Endresultat 0.50.

Rahmen und Argumente

Diese zwei Begriffe werden manchmal austauschbar lose gebraucht; insbesondere "Argument" wird manchmal im Platz "des Parameters" verwendet. Dennoch gibt es einen Unterschied. Richtig erscheinen Rahmen in Verfahren-Definitionen; Argumente erscheinen in Verfahren-Anrufen.

Ein Parameter ist ein inneres Eigentum des Verfahrens, das in seine Definition eingeschlossen ist. Zum Beispiel, auf vielen Sprachen, würde ein minimales Verfahren, um zwei gelieferte ganze Zahlen zusammen hinzuzufügen und die ganze Summe zu berechnen, zwei Rahmen, ein für jede erwartete ganze Zahl brauchen. Im Allgemeinen kann ein Verfahren mit jeder Zahl von Rahmen oder keinen Rahmen überhaupt definiert werden. Wenn ein Verfahren Rahmen, den Teil seiner Definition hat, die angibt, die Rahmen wird seine Parameter-Liste genannt.

Im Vergleich sind die Argumente die dem Verfahren wirklich gelieferten Werte, wenn es genannt wird. Verschieden von den Rahmen, die einen unveränderlichen Teil der Definition des Verfahrens, der Argumente bilden, und häufig tun, kann sich vom Anruf bis Anruf ändern. Jedes Mal wird ein Verfahren, der Teil des Verfahren-Anrufs genannt, der angibt, die Argumente wird die Argument-Liste genannt.

Obwohl Rahmen auch allgemein Argumente genannt werden, wird von Argumenten als die Ist-Werte oder den Parameter-Variablen zugeteilten Verweisungen richtiger gedacht, wenn das Unterprogramm an der Durchlaufzeit genannt wird. Wenn sie Code besprechen, der in ein Unterprogramm ruft, sind irgendwelche Werte oder ins Unterprogramm passierte Verweisungen die Argumente und der Platz im Code, wo diese Werte oder Verweisungen gegeben werden, ist die Parameter-Liste. Wenn sie den Code innerhalb der Unterprogramm-Definition besprechen, sind die Variablen in der Parameter-Liste des Unterprogramms die Rahmen, während die Werte der Rahmen an der Durchlaufzeit die Argumente sind. Zum Beispiel in C, wenn, sich mit Fäden befassend, es üblich ist, in einem Argument des Typs void* zu gehen und es zu einem erwarteten Typ zu werfen:

leerer ThreadFunction (void* pThreadArgument)

{\

//Das Namengeben des ersten Parameters 'pThreadArgument', ist aber nicht 'pThreadParameter' richtig.

//In der Durchlaufzeit ist der Wert, den wir verwenden, ein Argument. Bestellen Sie wie oben erwähnt den vor

//Begriff-Parameter, wenn man Unterprogramm-Definitionen bespricht.

}\</Quelle>

Viele Programmierer verwenden Parameter und Argument austauschbar abhängig vom Zusammenhang, um die Bedeutung zu unterscheiden. Der Begriff, den formeller Parameter auf die Variable, wie gefunden, in der Funktionsdefinition (Parameter) verweist, während sich wirklicher Parameter auf den Ist-Wert bezieht, ist (Argument) gegangen.

Um den Unterschied besser zu verstehen, betrachten Sie die folgende Funktion als geschrieben in C:

int Summe (interne Nummer addend1, interne Nummer addend2)

{\

geben Sie addend1 + addend2 zurück;

}\</Quelle>

Die Funktionssumme hat zwei Rahmen, genannt addend1 und addend2. Es fügt hinzu, dass die Werte in die Rahmen gegangen sind, und das Ergebnis dem Anrufer des Unterprogramms zurückgeben (eine Technik verwendend, die automatisch durch den C Bearbeiter geliefert ist).

Der Code, der die Summe-Funktion nennt, könnte wie das aussehen:

interne Nummer sumValue;

interne Nummer value1 = 40;

interne Nummer value2 = 2;

sumValue = Summe (value1, value2);

</Quelle>

Die Variablen value1 und value2 werden mit Werten initialisiert. value1 und value2 sind beide Argumente für die Summe-Funktion in diesem Zusammenhang.

An der Durchlaufzeit werden die diesen Variablen zugeteilten Werte zur Funktionssumme als Argumente passiert. In der Summe-Funktion werden die Rahmen addend1 und addend2 bewertet, die Argumente 40 und 2, beziehungsweise nachgebend. Die Werte der Argumente werden hinzugefügt, und das Ergebnis wird dem Anrufer zurückgegeben, wo es der Variable sumValue zugeteilt wird.

Wegen des Unterschieds zwischen Rahmen und Argumenten ist es möglich, unpassende Argumente für ein Verfahren zu liefern. Der Anruf kann zu viele oder zu wenige Argumente versorgen; ein oder mehr von den Argumenten kann ein falscher Typ sein; oder Argumente können in der falschen Ordnung geliefert werden. Einige dieser Situationen verursacht eine Fehlanpassung zwischen dem Parameter und den Argument-Listen, und das Verfahren wird häufig eine unbeabsichtigte Antwort zurückgeben oder einen Laufzeitfehler erzeugen.

Alternative Tagung in Eiffel

Innerhalb der Softwareentwicklungsmethode von Eiffel und Sprache haben die Begriffe Argument und Parameter verschiedenen durch die Tagung gegründeten Nutzen. Der Begriff Argument wird exklusiv in der Verweisung auf Eingänge einer Routine gebraucht, und der Begriff Parameter wird exklusiv im Typ parameterization für allgemeine Klassen gebraucht.

Denken Sie die folgende alltägliche Definition:

Summe (addend1: GANZE ZAHL; addend2: GANZE ZAHL): GANZE ZAHL

tun Sie

Ergebnis: = addend1 + addend2

Ende

</syntaxhighlight>

Die Routine nimmt zwei Argumente und, die die formellen Argumente der Routine genannt werden. Ein Anruf gibt wirkliche Argumente, wie gezeigt, unten mit an und.

sum_value: GANZE ZAHL

value1: GANZE ZAHL = 40

value2: GANZE ZAHL = 2

sum_value: = Summe (value1, value2)

</syntaxhighlight>Von

Rahmen wird auch entweder als formell oder als wirklich gedacht. Formelle allgemeine Rahmen werden in der Definition von allgemeinen Klassen verwendet. Im Beispiel unten wird die Klasse als eine allgemeine Klasse erklärt, die zwei formelle allgemeine Rahmen hat, Daten von Interesse vertretend und den Kuddelmuddel-Schlüssel für die Daten vertretend:

Klasse HASH_TABLE [G, K-> HASHABLE]

</syntaxhighlight>

Wenn eine Klasse ein Kunde dafür wird, werden die formellen allgemeinen Rahmen mit wirklichen allgemeinen Rahmen in einer allgemeinen Abstammung eingesetzt. In der folgenden Attribut-Behauptung, soll verwendet werden, weil eine Charakter-Schnur Wörterbuch gestützt hat. Als solcher, beide Daten und Schlüssel werden formelle allgemeine Rahmen mit wirklichen allgemeinen Rahmen des Typs eingesetzt.

my_dictionary: HASH_TABLE [SCHNUR, SCHNUR]

</syntaxhighlight>

Datatypes

Auf stark getippten Programmiersprachen muss der Typ jedes Parameters in der Behauptung des Verfahrens angegeben werden. Sprachverwenden-Typ-Schlussfolgerung versucht, die Typen automatisch vom Körper und Gebrauch der Funktion zu entdecken. Dynamisch getippte Programmiersprachen schieben Typ-Entschlossenheit bis zur Durchlaufzeit auf. Schwach getippte Sprachen leisten wenig zu keiner Typ-Entschlossenheit, sich stattdessen auf den Programmierer für die Genauigkeit verlassend.

Einige Sprachen verwenden ein spezielles Schlüsselwort (z.B Leere), um anzuzeigen, dass das Unterprogramm keine Rahmen hat; in der formellen Typ-Theorie nehmen solche Funktionen eine leere Parameter-Liste (dessen Typ, aber eher Einheit nicht leer ist).

Argument-Übergang

Der genaue Mechanismus, um Argumente für Rahmen, genannt Argument-Übergang zuzuteilen, hängt von der für diesen Parameter verwendeten Einschätzungsstrategie ab (normalerweise Anruf durch den Wert), der mit Schlüsselwörtern angegeben werden kann.

Verzug-Argumente

Einige Programmiersprachen wie Ada, C ++, Clojure, Allgemeines Lispeln, Fortran 90, Pythonschlange, Rubin und Windows PowerShell berücksichtigen ein in einer Behauptung eines Unterprogramms ausführlich oder implizit zu gebendes Verzug-Argument. Das erlaubt dem Anrufer, dieses Argument wegzulassen, wenn es das Unterprogramm nennt. Wenn das Verzug-Argument ausführlich gegeben wird, dann wird dieser Wert verwendet, wenn es vom Anrufer nicht zur Verfügung gestellt wird. Wenn das Verzug-Argument (manchmal durch das Verwenden eines Schlüsselwortes solcher als Fakultativ) dann implizit ist, stellt die Sprache einen wohl bekannten Wert zur Verfügung (solcher als ungültig, Leer, Null, eine leere Schnur, usw.), wenn ein Wert vom Anrufer nicht zur Verfügung gestellt wird.

Beispiel von PowerShell:

fungieren Sie der Doktor ($g = 1.21) {\

"$g gigawatts? $g gigawatts? Großer Scott!"

}\

PS> der Doktor

1.21 gigawatts? 1.21 gigawatts? Großer Scott!

PS> der Doktor 88

88 gigawatts? 88 gigawatts? Großer Scott!

Verzug-Argumente können als ein spezieller Fall der Argument-Liste der variablen Länge gesehen werden.

Parameter-Listen der variablen Länge

Einige Sprachen erlauben Unterprogrammen, definiert zu werden, um eine variable Zahl von Argumenten zu akzeptieren. Für solche Sprachen müssen die Unterprogramme durch die Liste von Argumenten wiederholen.

Beispiel von PowerShell:

fungieren Sie marty {\

$args | foreach {"zurück zum Jahr-$ _" }\

}\

PS> marty 1985

zurück bis das Jahr 1985

PS> marty 2015 1985 1955

zurück bis das Jahr 2015

zurück bis das Jahr 1985

zurück bis das Jahr 1955

Genannte Rahmen

Einige Programmiersprachen erlauben Unterprogrammen, Rahmen genannt zu haben. Das erlaubt dem Benennen-Code, mehr sprechend zu sein. Es stellt auch mehr Flexibilität dem Anrufer zur Verfügung, häufig der Ordnung der Argumente erlaubend, oder für wie erforderliche wegzulassende Argumente geändert zu werden.

Beispiel von PowerShell:

fungieren Sie jennifer ($young, $old) {\

"Young Jennifer: Ich bin $young!"

"Alte Jennifer: Ich bin $old!"

}\

PS> jennifer 'alter' 'junger'

Young Jennifer: Ich bin alt!

Alte Jennifer: Ich bin jung!

PS> jennifer - alter 'Junger' - junger 'alter'

Young Jennifer: Ich bin alt! Alte Jennifer: Ich bin jung!

Vielfache Rahmen auf funktionellen Sprachen

In der Lambda-Rechnung hat jede Funktion genau einen Parameter. Wovon gedacht wird, weil Funktionen mit vielfachen Rahmen gewöhnlich in der Lambda-Rechnung als eine Funktion vertreten werden, die das erste Argument nimmt, und eine Funktion zurückgibt, die den Rest der Argumente nimmt; das ist eine als mit Currysoße zuzubereiten bekannte Transformation. Einige Programmiersprachen, wie ML und Haskell, folgen diesem Schema. Auf diesen Sprachen hat jede Funktion genau einen Parameter, und was wie die Definition einer Funktion von vielfachen Rahmen aussehen kann, ist wirklich syntaktischer Zucker für die Definition einer Funktion, die eine Funktion zurückgibt, usw. ist Funktionsanwendung auf diesen Sprachen sowie in der Lambda-Rechnung so nach links assoziativ, was aussieht, dass eine Anwendung einer Funktion zu vielfachen Argumenten als die Funktion richtig bewertet wird, die auf das erste Argument, dann die resultierende Funktion angewandt ist, die auf das zweite Argument usw. angewandt ist.

Siehe auch


Mc Callum / Wilhelm Waiblinger
Impressum & Datenschutz