Was bedeutet "Dummy-Argument"?


8

Was bedeutet es, wenn ein Argument für eine Funktion als Dummy-Argument bezeichnet wird ? Ich bin diesem Begriff außerhalb von Fortran nicht begegnet. Ist er ein allgemeiner Begriff in der Informatik? Was wären Beispiele für Argumente, die als Dummy übergeben und nicht als Dummy übergeben werden?

Ich habe diese Definition gefunden , von der ich nicht sicher bin, ob ich sie verstehe, aber es klingt so, als ob ein Dummy-Argument eine Variable ist, die als Referenz übergeben wird. In diesem Fall sind in Fortran alle Variablen Dummy-Variablen? (verwirrt)

Bearbeiten: Ich bin gerade auf den folgenden Aufsatz gestoßen, der mir geholfen hat, Fortrans Argument / Funktion, die Teminologie aufruft , besser zu verstehen: Dortor Fortran: Ich bin wegen eines Arguments hierher gekommen


Fand diesen Beitrag auf der Intel-Website als hilfreich! software.intel.com/en-us/…
user515577

Antworten:


15

"Dummy" als "unbenutzt"

Im Allgemeinen (nicht in Fortran) ist ein Dummy-Argument ein Argument, das vom Hauptteil der Funktion nicht verwendet wird.

Zum Beispiel ist in der folgenden Funktion zein Dummy-Argument, aber xund ysind nicht.

int f(int x, int y, int z) {
  return (x + y);
}

Sie können aus mehreren Gründen verwendet werden:

  • Abhängig von einem anderen Argument oder einer Konfiguration wird das Argument verwendet (kein Dummy) und manchmal auch nicht (Dummy), aber die Programmiereinstellung schreibt vor, dass ein Argument trotzdem übergeben wird. In diesem Fall können Sie normalerweise alles an die Funktion übergeben, dh NULLoder 0, abhängig von der Einstellung;

  • Das Argument wird nicht mehr benötigt, aber Sie müssen aus Gründen der Abwärtskompatibilität eines angeben.

  • Die Funktion akzeptiert kein Argument (sie kann als Prozedur bezeichnet werden), aber die Einstellung legt fest, dass mindestens ein Argument angegeben wird. Sie finden dies in unreinen funktionalen Programmiersprachen, aber im Allgemeinen wird es nicht als "Dummy" bezeichnet, da der Typ ( unitin ocaml ) dies vorschlägt.

"Dummy" in Fortran und Pascal

In Fortran und Pascal, und wahrscheinlich in Ihrem Fall, gibt es eine dunkelere Vorstellung von Dummy-Argumenten für übergebene Objekte , die ich nicht verstanden habe. Es scheint jedoch mehr um die Spezifikation als um das eigentliche Verfahren zur Übergabe von Argumenten zu gehen. (Einige Erklärungen: Link 1 mit beiden Sprachen , Link 2 auf Französisch ).

Ich weiß nicht, ob dieser Begriff noch verwendet wird.

"Dummy" als "gebunden"

Ich würde diese Terminologie auf keinen Fall empfehlen, aber "Dummy-Variable" kann "gebundene Variable" bedeuten, aber dieser Begriff ist eher eine Sache der Mathematik und Informatik.


Mein Verständnis (Anmerkung: Ich kenne die Semantik von Französisch und Programmiersprache, aber nicht Fortran) ist, dass "Dummy-Argument" in allen drei Links in Ihrem Fortran / Pascal-Abschnitt ein Argument bedeutet, das ein lokaler Name für ein Objekt ist, das als Referenz übergeben wird.
Gilles 'SO - hör auf böse zu sein'

15

In fortran ist ein Dummy- Argument das, was andere Sprachen als formales Argument bezeichnen . Die Dummy-Argumente sind also die Liste der Argumente in der Funktions- (oder Unterprogramm-) Definition.

Die tatsächlichen Argumente sind die Liste der Argumente in der aufrufenden Liste an der Stelle im Quellcode, an der eine Funktion aufgerufen wird (dh verwendet wird).


2
Dies ist hier die einzig richtige Antwort bezüglich der Fortran-Bedeutung.
Vladimir F

3

Eine Funktion ist gut definiert als: Beziehung zwischen einer Reihe von Eingaben und einer Reihe von zulässigen Ausgängen . Eine Dummy-Variable wäre eine Eingabe, die keinen Einfluss auf die Ausgabe hat.

In "C" nimmt die Zeitfunktion einen Zeiger auf ein time_t-Objekt als Eingabe. Da dieser Zeiger nur zum Abrufen der Ausgabe verwendet wird, kann er als "Dummy-Variable" betrachtet werden.


Wäre es nicht genauer, es als Ausgabevariable zu bezeichnen? In einigen Einstellungen (z. B. in C #) wird das Schlüsselwort "out" angegeben, um es als out-Parameter zu kennzeichnen.
Joe

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.