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 :

Transformation d'une subroutine en function


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Octobre 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2017
    Messages : 6
    Par défaut Transformation d'une subroutine en function
    Bonjour, j'ai un programme utilisant une subroutine qui fonctionne. J'aimerais la transformer en fonction pour pouvoir stocker le résultat dans une variable. Le programme modifie juste une matrice A. La structure du code est la suivante :


    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    program  phonetransport
    implicit none
    complex :: A(2,2)
     
    A=...
     
    call change(2,2,A,-1)
     
    end program phonetransport
     
     
      subroutine change(N,M,CP,IS)
        implicit none
        integer :: N,M,IS,i1,i2
        complex :: CP(n1,n2)
     
        do i2= 1,n2
         ....
        end do
     
        do i1= 1,n1
        ...
        end do
       print*,ABS(cp)
        return
     
      end subroutine change
    Dans le subroutine, la matrice CP est modifiée. J'utilise alors la fonction print pour la visualiser. Comment transformer ma subroutine en function ?

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    489
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 489
    Par défaut
    Bonjour

    Citation Envoyé par jimino Voir le message
    Dans le subroutine, la matrice CP est modifiée. J'utilise alors la fonction print pour la visualiser. Comment transformer ma subroutine en function ?

    Une fonction, tout comme une subroutine, agit sur (et donc potentiellement modifie) les arguments qui lui sont transmis.
    La seule différence est que la fonction renvoie en plus une valeur à l'appelant. Il faut donc savoir quelle est cette valeur supplémentaire que tu souhaites "faire remonter" à l'appelant.

    Si par exemple c'est juste un entier pour signifier que tout va bien (si ==0) ou non (!=0):
    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
    19
    20
    21
    22
    23
     
      integer function change(N,M,CP,IS)
        implicit none
        integer :: change
        integer :: N,M,IS,i1,i2
        complex :: CP(N,M) ! J'imagine que c'est plutôt ça que le CP(n1,n2) de ton exemple
     
        do i2= 1,M
         ....
        end do
     
        do i1= 1,N
        ...
        end do
       print*,ABS(cp)
     
       if (...) ! contitions pour évaluer si tout s'est bien passé
         change = 0
      else
        change = 1
      endif
     
      end function change
    Et dans le programme principal:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    program  phonetransport
    implicit none
    complex :: A(2,2)
    integer :: ok
     
    A=...
     
    ok=change(2,2,A,-1)
     
    end program phonetransport

Discussions similaires

  1. [Crystal] transformation d'une date en numéro de semaine
    Par barna dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 24/03/2017, 09h41
  2. transformation d'une expréssion arithmétique
    Par extradamus dans le forum C
    Réponses: 2
    Dernier message: 02/12/2005, 16h23
  3. Transformation d'une appli en service NT
    Par Kayato dans le forum EDI
    Réponses: 2
    Dernier message: 18/07/2005, 11h30
  4. Transformation d'une structure(définie en xml) en formulaire
    Par boniface dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 06/07/2005, 07h39
  5. transformation sur une requete SELECT
    Par juniorAl dans le forum Langage SQL
    Réponses: 8
    Dernier message: 08/04/2005, 18h12

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