IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Fortran Discussion :

Passage de fonction en paramètre


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 3
    Par défaut Passage de fonction en paramètre
    J'ai besoin de passer une fonction en paramètre pour du Fortran 90, compilé avec xlf90.

    En gros j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function grad(x)
    !calcul d'un gradient en fonction de x
    end function grad
     
    program mpg(x,grad)
    !ma fonction de calcul de minimisation dans laquel je voudrais utiliser grad
    !je fais donc:
    external grad
    real(kind=8) :: grad
     
    !mais il veut pas
    G = grad(x)

    Par contre, j'ai essayé de passer une subroutine en paramètre (external masubroutine puis call subroutine) et ça marche.

  2. #2
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    Ton exemple n'a bien sur aucune chance de compiler.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    program mpg(x,grad)
    program est le point d'entree du programme. En Fortran, il ne peut pas prendre d'arguments (contrairement au C). De plus, on ne peut pas passer le nom d'une fonction ou sous-routine comme argument.
    Typiquement, si tu as une sous-routine (appellee par un CALL), il faut la lister dans les EXTERNAL. En Fortran90, il est egalement conseille (parfois obligatoire) de fournir son interface (l'equivalent du prototype du C).
    Si tu as une fonction (renvoit une valeur), il suffit de declarer son type de retour - sans la lister dans les external.

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Août 2006
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 974
    Par défaut
    program est le point d'entree du programme. En Fortran, il ne peut pas prendre d'arguments (contrairement au C).
    Angle intéressant. Je croyais plutôt que c'était une coquille, que Optalix voulait dire subroutine...

    De plus, on ne peut pas passer le nom d'une fonction ou sous-routine comme argument.
    Si "mpg" était une subroutine ou une function, ce qu'a fait Optalix deviendrait cependant valide.

    Par contre, j'ai essayé de passer une subroutine en paramètre (external masubroutine puis call subroutine) et ça marche.
    Comme l'a soulevé DaZumba, ton code n'est pas compilable, et tu n'indique pas le message d'erreur, sauf pour dire "mais il ne veut pas". Si tu veux qu'on t'aide, tu devrais soumettre le code exacte (exemple simplifié si possible) et/ou le message d'erreur exacte.

  4. #4
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    Citation Envoyé par Sylvain Bergeron
    Angle intéressant.
    Interessant? Non! Ceci dit tu as raison, ce que j'ecris est imprecis. Evidemment, un programme ecrit en Fortran peut prendre des arguments, mais leur acces ne se fait pas comme cela.

    Je croyais plutôt que c'était une coquille, que Optalix voulait dire subroutine...
    Peut-etre, le message original n'est pas clair.

Discussions similaires

  1. Passage de fonction en paramètre
    Par rreennaauudd dans le forum Langage
    Réponses: 5
    Dernier message: 27/06/2014, 22h11
  2. Passage de fonctions comme paramètres
    Par Snyper dans le forum Scala
    Réponses: 4
    Dernier message: 31/01/2013, 17h16
  3. Passage de fonction en paramètre d'une fonction.
    Par Berzerk_ dans le forum C++
    Réponses: 9
    Dernier message: 04/06/2007, 13h31
  4. [VB]Passage de Fonction en paramètre (d'une autre fonction)
    Par Australia dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 21/03/2006, 18h55
  5. [FLASH 8] Pb passage d'une fonction en paramètre
    Par segphault dans le forum Flash
    Réponses: 2
    Dernier message: 17/02/2006, 11h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo