Que signifie «argument factice»?

8

Qu'est-ce que cela signifie lorsqu'un argument d'une fonction est appelé un argument factice ? Je n'ai pas rencontré ce terme en dehors de Fortran, est-ce un terme général en informatique? Quels seraient des exemples d'arguments passés comme factices et non passés comme factices?

J'ai trouvé cette définition , que je ne suis pas sûr de comprendre, mais cela ressemble à un argument fictif est une variable qui est passée par référence, auquel cas dans Fortran toutes les variables sont des variables fictives? (confus)

Edit: Je viens de rencontrer l'essai suivant qui m'a aidé à mieux comprendre l'argument / la fonction de Fortran appelant la téminologie: Dortor Fortran: Je suis venu ici pour un argument

Kyss Tao
la source
J'ai trouvé cet article sur le site Internet pour être utile! software.intel.com/en-us/…
user515577

Réponses:

15

"Dummy" comme "inutilisé"

En général (pas dans Fortran), un argument factice est un argument qui ne sera pas utilisé par le corps de la fonction.

Par exemple, dans la fonction suivante, zest un argument factice mais xet yne sont pas.

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

Ils peuvent être utilisés pour plusieurs raisons:

  • en fonction d'un autre argument ou d'une configuration, l'argument sera utilisé (pas factice) et parfois il ne le sera pas (factice) mais le paramètre de programmation impose de passer un argument de toute façon. Dans ce cas, vous pouvez généralement transmettre n'importe quoi à la fonction, c'est-à-dire NULLou 0, selon le paramètre;

  • l'argument n'est plus nécessaire, mais vous devez en donner un pour des raisons de compatibilité descendante;

  • la fonction ne prend aucun argument (on peut l'appeler une procédure) mais le paramètre impose de donner au moins un argument. Vous pouvez trouver cela dans des langages de programmation fonctionnels impurs, mais en général, il n'est pas appelé "factice" car le type ( uniten ocaml ) le suggère.

"Dummy" dans Fortran et Pascal

Dans Fortran et Pascal, et probablement dans votre cas, il y a une notion plus obscure d' argument factice d'objet passé que je n'ai pas compris. Mais cela semble concerner plus la spécification que la procédure de passage d'argument proprement dite. (Quelques explications: lien 1 avec les deux langues , lien 2 en français ).

Je ne sais pas si cette notion est toujours utilisée.

"Dummy" comme "lié"

Je ne conseillerais pas cette terminologie dans tous les cas, mais "variable fictive" peut signifier "variable liée", mais cette notion relève davantage des mathématiques et de l'informatique.

jmad
la source
Ma compréhension (note: je connais le français et la sémantique du langage de programmation mais pas Fortran) est que «l'argument factice», dans les 3 liens de votre section Fortran / Pascal, signifie un argument qui est un nom local pour un objet passé par référence.
Gilles 'SO- arrête d'être méchant'
16

Dans fortran, un argument factice est ce que les autres langages appellent un argument formel . Ainsi, les arguments factices sont la liste des arguments dans la définition de la fonction (ou du sous-programme).

Les arguments réels sont la liste des arguments de la liste des appels, au point du code source où une fonction est appelée (c'est-à-dire utilisée).

Paul
la source
2
C'est la seule bonne réponse ici concernant la signification de Fortran.
Vladimir F
3

Une fonction est bien définie comme: relation entre un ensemble d'entrées et un ensemble de sorties autorisées . Une variable fictive serait toute entrée n'ayant aucun effet sur la sortie.

En "C", la fonction temporelle prend en entrée un pointeur sur un objet time_t. Comme ce pointeur n'est utilisé que pour obtenir une sortie, il pourrait être considéré comme une "variable fictive".

gam3
la source
ne serait-il pas plus précis de l'appeler une variable de sortie? En fait, dans certains paramètres (par exemple en C #), il serait en fait donné le mot clé "out" pour l'étiqueter comme paramètre out.
Joe
1

Un argument factice est en fait un argument dans une fonction qui n'est pas utilisé dans la fonction, mais il est plutôt substitué dans l'expression de fonction quand il est référencé

David
la source
Salut. Merci pour la réponse, mais qu'est-ce que cela apporte par-dessus les réponses existantes? Voir notre FAQ et comment écrire une bonne réponse FAQ .
Ran G.28