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 :

[Débutant] Quelques questions d'ordre général


Sujet :

Fortran

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 298
    Points : 886
    Points
    886
    Par défaut [Débutant] Quelques questions d'ordre général
    Bonjour, je suis débutant en Fortran, et en lisant un poly de Fortran (cours de l'IDRIS) j'ai déjà qq questions.

    question 1 :
    comment mettre plusieurs lignes consecutives en commentaire ?

    question 2 :
    Supposons que l'on ait
    integer, dimension(10) :: ints, ints2

    quelle est la difference entre
    data (ints(i), i=1,4)/4*6.0/ et
    ints2(1:4)=6
    je trouve que la version avec ints2 est plus lisible que celle avec ints.

    question 3 :
    quelle est la difference entre l'operateur = et l'utilisation du mot-cle DATA ?

    question 4 :
    Dans mon cours, a propos du mot-cle DATA il est marque :
    "on peut utiliser l'instruction DATA pour initialiser les tableaux lors de leur declaration. Elle permet d'initialiser tout ou partie de tableaux a l'aide d'une liste de constantes encadree par le caractere /

    Pourtant si je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    real, dimension(2,3) :: mat
     
    data mat/1., 2., 3., 4., 5., 6./ 
    print *,"mat = ",mat ! affiche 1. 2. 3. 4. 5. 6.
     
    data ((mat(i,j),j=1,3),i=1,2)/7., 8., 9, &
                                  10., 11., 12./
    print *,"mat = ",mat ! affiche 1. 2. 3. 4. 5. 6.
     
    mat(2,3)=7
    print *,"mat = ",mat ! affiche 1. 2. 3. 4. 5. 7.

    donc si j'ai pu changer le 6 en 7, cela veut dire que les valeurs de mon tableau ne sont pas constantes ?

    question 5 :
    comment ecrire plus simplement le programme suivant :

    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 operation_tableau
     
    implicit none
     
    integer i
    integer, dimension(10) :: tab
     
    do i=1,10
      tab(i)=i
    end do
     
    print *,"tab = ",tab
     
    END PROGRAM operation_tableau
    Dois-je obligatoirement passer par le mot-cle DATA ?

    question 6 :
    a propos des fonctions, est-ce la meme chose de faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    integer function myint(a,b)
    implicit none
    integer a,b,myint
    myint=a+b
    end function myint
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    integer function myint(a,b)
    implicit none
    integer a,b ! ici je n'ai pas declarer myint comme un integer
    myint=a+b
    end function myint
    Merci beaucoup.

  2. #2
    Membre expérimenté
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Points : 1 664
    Points
    1 664
    Par défaut
    Citation Envoyé par salseropom Voir le message
    Bonjour, je suis débutant en Fortran, et en lisant un poly de Fortran (cours de l'IDRIS) j'ai déjà qq questions.
    Assure-toi que le cours concerne le Fortran 90. Cette nouvelle norme introduit plusieurs changements par rapport au Fortran 77. Si tu decides d'apprendre le Fortran 90, il faut abandonner les anciennes methodes.

    question 1 :
    comment mettre plusieurs lignes consecutives en commentaire ?
    Il faut les commenter une par une.

    question 2 :
    quelle est la difference entre
    data (ints(i), i=1,4)/4*6.0/ et
    ints2(1:4)=6
    La premiere methode initialise la variable ints a la facon Fortran 77. La seconde methode est une affectation.

    question 3 :
    quelle est la difference entre l'operateur = et l'utilisation du mot-cle DATA ?
    L'operateur d'affectation = fait plus de choses. DATA est utilise en Fortran 77 lors de l'initialisation uniquement.

    question 4 :
    Dans mon cours, a propos du mot-cle DATA il est marque :
    "on peut utiliser l'instruction DATA pour initialiser les tableaux lors de leur declaration. Elle permet d'initialiser tout ou partie de tableaux a l'aide d'une liste de constantes encadree par le caractere
    Ben oui, on initialise avec des constantes (i.e. valeurs connues a la compilation). Mais cela ne signifie pas que la variable initialisee est constante, evidemment (c'est le role du mot-cle parameter).

    question 5 :
    comment ecrire plus simplement le programme suivant :
    Ce programme est deja suffisamment simple.

    question 6 :
    a propos des fonctions, est-ce la meme chose de faire
    Oui (<type> function myfunc() est Fortran 90, cependant).

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 298
    Points : 886
    Points
    886
    Par défaut
    Salut,
    merci pour tes réponses. Effectivement, je désire apprendre le Fortran 95 (tant qu'à faire) sachant que je n'ai jamais fait de Fortran. Le cours que j'utilise est celui de l'IDRIS mais à te lire, j'ai l'impression que ce cours mélange le fortran 77 et 90...

    Merci de tes réponses.

  4. #4
    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
    Points : 1 346
    Points
    1 346
    Par défaut
    Citation Envoyé par salseropom Voir le message
    question 2 :
    Supposons que l'on ait
    integer, dimension(10) :: ints, ints2

    quelle est la difference entre
    data (ints(i), i=1,4)/4*6.0/ et
    ints2(1:4)=6
    je trouve que la version avec ints2 est plus lisible que celle avec ints.

    question 3 :
    quelle est la difference entre l'operateur = et l'utilisation du mot-cle DATA ?
    En complément aux réponses de DaZumba.

    L'instruction DATA «s'execute» à la compilation. Elle permet d'initialiser l'image mémoire chargé. Si tu appelles une fonction contenant un DATA et que tu modifie la variable après le DATA, tu auras donc l'impression que le DATA ne s'exécute qu'une fois. Ça permet donc des choses comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    subroutine WriteResult(R)
    ...
    logical PremiereFois
    save PremiereFois
    data PremiereFois/.true./
    ...
    if (PremiereFois) then
      open(...)
      PremiereFois = .false.
    endif
    ...
    Un DATA est donc très différent d'une affectation. La façon « plus F90 » de coder un data est d'initialiser la variable à la déclaration :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    logical PremiereFois=.true.
    Cette initialisation est, tout comme le DATA, exécuté au chargement (ou plutôt à la compilation). De mémoire, le SAVE est implicit quand il y a un DATA ou une initialisation comme ci-haut.

Discussions similaires

  1. [Débutant] Quelques questions bêtes...
    Par Stomp dans le forum Windows
    Réponses: 2
    Dernier message: 02/08/2019, 11h47
  2. [Portlet] Questions d'ordre général sur les portlets
    Par Chabin dans le forum Portails
    Réponses: 1
    Dernier message: 25/06/2007, 23h20
  3. Trier des chaînes et questions d'ordre général sur l'algorithmique
    Par katrena99 dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 19/03/2007, 10h00
  4. [Oracle] Questions d'ordre général pour un DBA
    Par korrigan dans le forum Oracle
    Réponses: 7
    Dernier message: 06/11/2006, 14h31
  5. [Débutant]Quelques questions de principe sur l'API win32
    Par silver_dragoon dans le forum Windows
    Réponses: 4
    Dernier message: 19/03/2004, 18h38

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