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 :

Retour de valeur d'une subroutine


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de nyme92
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 177
    Par défaut Retour de valeur d'une subroutine
    Bonjour,
    Gros trou :
    comment récupérer "une_valeur" calculée dans "machin" dans le prog principal
    Merci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    program truc
    integer valeur
    .
    .
    call machin(avec ou sans parametres)
    valeur=une_valeur
    .
    .
    end
     
    subroutine machin(...)
    une_valeur=f(variable interne ou externe)
    end

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    98
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 98
    Par défaut
    Salut,

    Je te propose les 2 méthodes suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    program truc
    implicit none
    integer :: valeur, une_valeur
    .
    call machin(avec ou sans parametres)
    valeur=une_valeur
    .
    contains
     
    subroutine machin(...)
    implicit none
    une_valeur=f(variable interne ou externe)
    end
     
    end program
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    program truc
    implicit none
    integer :: valeur, une_valeur
    .
    call machin(une_valeur)
    valeur=une_valeur
    .
    end program
     
    subroutine machin(une_valeur)
    implicit none
    integer, intent(out) :: une_valeur
    une_valeur=f(variable interne ou externe)
    end

  3. #3
    Membre confirmé Avatar de nyme92
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 177
    Par défaut
    Merci.
    Cependant, c'est du 77? J'utilise gfortran. DE ce que je comprends de ton code tu déclare une_valeur comme globale mais tu la passes comme parametre quant même.
    Et intent(out), je ne connais pas, mais apparemment cela permet de la renvoyer ?
    Merci.

  4. #4
    Membre émérite Avatar de genteur slayer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 710
    Par défaut
    alors, les intent, c'est du F90 cela permet de déclarer une variable paramètre d'une subroutine/fonction comme entrante sortante ou les deux...

    cela dit, si tu est en 77 tu peux utiliser la seconde solution de afransico sans les intent et ce devrai être bon...

    sinon troisième solution, tu transforme ta subroutine en fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    program truc
    implicit none
    integer valeur
    .
    .
    valeur= machin(avec ou sans parametres)
     
    .
    .
    end
     
    function machin(...)
    impliciti none
    integer machin
    une_valeur=f(variable interne ou externe)
    machin=une_valeur
    return
    end
    il est préférable, de mettre return en fin de fonction, mais aussi de subroutine...

  5. #5
    Membre confirmé Avatar de nyme92
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 177
    Par défaut
    Merci.
    Le :: ce n'est pas du 77 il me semble ? Et désigne quoi? J'ai déjà vu cela en c++ mais je ne pense pas que cela fasse la même chose puisque c'est dans le contexte de la création d'objet à partir d'une classe (évidemment).
    Donc, je retiens qu'en 77 ma question n'a pas de réponse, et qu'une façon est de transformer la routine en fonction.
    Il est vrai que si je n'ai qu'une valeur à ressortir cela paraît le choix logique.
    A confirmer, je vais essayer.
    Merci.

  6. #6
    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 nyme92 Voir le message
    Donc, je retiens qu'en 77 ma question n'a pas de réponse, et qu'une façon est de transformer la routine en fonction.
    Tu peux passer par un COMMON BLOCK, mais c'est moche. Sinon, il semble en effet assez logique de passer la valeur que tu souhaites retourner en argument d'une subroutine ou en valeur retournee par une fonction.

Discussions similaires

  1. Réponses: 4
    Dernier message: 17/02/2011, 16h39
  2. [MySQL] Retour de valeur pour une requête "select"
    Par Truebison dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 05/09/2008, 16h57
  3. Retour de valeur d'une fonction
    Par guigouz dans le forum SQL
    Réponses: 5
    Dernier message: 10/06/2008, 15h21
  4. [Tableaux] Retour de valeur d'une fonction
    Par Trebor_ dans le forum Langage
    Réponses: 5
    Dernier message: 10/03/2008, 14h24
  5. [Mail] Retour de valeur d'une fonction
    Par pat06 dans le forum Langage
    Réponses: 3
    Dernier message: 14/12/2007, 11h32

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