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 :

Explications sur un code ancien


Sujet :

Fortran

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 10
    Points : 11
    Points
    11
    Par défaut Explications sur un code ancien
    Bonjour (ou bonsoir ),

    voila je viens de me mettre à Fortran et je viens de rencontrer deux syntaxe qui me paraissent inconnues c'est à dire que je ne les comprend pas.. :/

    la première est celle là :

    do 10 i = 1, n

    je comprend que i varie de 1 à n mais je ne vois pas ce que fais le 10 après le do... j'ai en effet vu cette syntaxe ici :

    http://folk.uio.no/hpl/scripting/doc...ial/loops.html

    L a 2e incompréhension est celle-ci :

    je viens de voir dans un livre ce genre d'instruction :

    open(1, file = 'sol.sol', status = 'unknown') voila ce que je demande serait de me traduire ce charabia (malheureusement c'en est bien pour moi :/ ) en français !

    Je vous suis infiniment reconnaissant !!!

    Un grand merci à vous !!!

  2. #2
    Expert confirmé
    Homme Profil pro
    ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    Juin 2007
    Messages
    2 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 096
    Points : 4 155
    Points
    4 155
    Par défaut
    Bonjour.

    Mes souvenirs de Fortran sont assez lointains mais je vais essayer de t'expliquer sous le contrôle des mes collègues et la doc :

    - pour la première question concernant le DO, le 10 est une étiquette (label, N° de ligne), unique dans le programme et non forcément en séquence ordonnée, jusqu'à laquelle le DO va s'exécuter. C'est l'équivalent du ENDDO qui apparaitra plus tard dans les compilateurs Fortran.
    Cette étiquette contient souvent l'instruction CONTINUE mais cela n'est pas obligatoire, c'est beaucoup plus pour une meilleure commodité de lisibilité et de maintenance.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    1      DO 100 I = 1,L
    2             DO 50 J = 1,M
                        READ(7,*)A(I,J)
    50          CONTINUE
    100    CONTINUE
    Le DO de la ligne étiquetée 1 s'étend jusqu'à la ligne étiquetée 100 et celui de la ligne étiquetée 2 s'étend jusqu'à la ligne étiquetée 50.

    - Pour la deuxième question concernant l'open :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    open(1, file = 'sol.sol', status = 'unknown')
    * Le 1 est le n° d'unité, c'est le n° d'accès (canal) au fichier, il est unique dans tout le programme et ses dépendances et ne peut pas être attribué à un autre fichier. Il est donné arbitrairement.
    * file = 'sol.sol' est le nom du fichier tel qu'il doit exister ou être crée
    * status = 'unknown' est le statut que doit avoir le fichier au moment de son ouverture :
    UNKNOWN : si le fichier, il sera utilisé, sinon il sera crée ;
    OLD : le fichier doit exister, sinon erreur à l'exécution ;
    NEW : le fichier ne doit pas exister et sera crée, sinon erreur à l'exécution.

    Voilà un lien pour une petite doc en français mais très sommaire. ftp://ftp-developpez.com/fortran/cou...et-fortran.pdf
    De toute façon il faut admettre qu'on ne peut pas faire autrement que d'utiliser la doc d'origine qui est toujours en anglais, par exemple : http://www-01.ibm.com/support/docvie...27012855&aid=1

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 10
    Points : 11
    Points
    11
    Par défaut
    Merci ! En gros je peux dire que si j'ai Do 3 I=1,n... je peux traduire ça en français par fais blablabla et arrête toi à la ligne 3 ? Par contre à quoi sert le continue ? C'est pour dire va au delà de la ligne 3 ? Ou juste alors pour dire continue de faire varier I maintenant que tu as pris I=1 tu prend I=2et ainsi de suite jusqu'à I=n ? Merci encore de votre aide !

  4. #4
    Expert confirmé
    Homme Profil pro
    ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    Juin 2007
    Messages
    2 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 096
    Points : 4 155
    Points
    4 155
    Par défaut
    Citation Envoyé par toto456 Voir le message
    Merci ! En gros je peux dire que si j'ai Do 3 I=1,n... je peux traduire ça en français par fais blablabla et arrête toi à la ligne 3 ? Par contre à quoi sert le continue ? C'est pour dire va au delà de la ligne 3 ? Ou juste alors pour dire continue de faire varier I maintenant que tu as pris I=1 tu prend I=2et ainsi de suite jusqu'à I=n ? Merci encore de votre aide !
    L'étiquette 3 sera comprise dans les instructions exécutées par le DO. L'instruction CONTINUE est une instruction blanche et en effet elle veut dire : "continue de faire varier I maintenant que tu as pris I=1 tu prend I=2et ainsi de suite jusqu'à I=n". A la sortie de la boucle, l'exécution continuera par l'instruction juste suivant l'étiquette. On utilise l'instruction CONTINUE pour rendre le code plus lisible et surtout pour pouvoir faire des insertions juste avant sans modifier la ligne de l'étiquette. Il me semble qu'elle peut servir aussi dans un IF pour remplacer l'instruction impérative quand il n'y a rien à faire (à vérifier).

  5. #5
    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
    Le CONTINUE est une instruction qui ne fait rien. Elle ne veut pas dire « continue de faire varier I maintenant que tu as pris I=1 tu prend I=2... ». Elle ne fait rien. C'est l'exécution du code de contrôle de la boucle après le CONTINUE qui incrémente le compteur.

    Elle était très utilisée avant l'apparition des instructions CYCLE, ELSE, ENDIF... En Fortran 66, la seule façon élégante de dire « va à l'itération suivante » (i.e. cycle), était de faire un GOTO à une ligne inactive (donc un CONTINUE) à la fin de la boucle. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
          DO 10 I = 1, N
          ...
          IF (...) GOTO 10
          ...
       10 CONTINUE
    En Fortran moderne, on écrirait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
       do i = 1, n
          ...
          if (...) cycle
          ...
       enddo
    En Fortran non structuré, une bonne habitude de programmation était donc de terminer les boucles par des continue.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 10
    Points : 11
    Points
    11
    Par défaut
    Merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. demande d'explication sur un code
    Par Zilfi63 dans le forum VBA Access
    Réponses: 4
    Dernier message: 08/06/2009, 17h05
  2. explication sur un code perl
    Par Melvine dans le forum Langage
    Réponses: 5
    Dernier message: 05/10/2006, 16h32
  3. Explication sur du code javascript
    Par griese dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 21/07/2006, 09h40
  4. cherche explication sur du code
    Par abdoulzak dans le forum Langage
    Réponses: 1
    Dernier message: 06/07/2006, 10h23
  5. besoin d'explications sur un code
    Par NAHIAG dans le forum C
    Réponses: 8
    Dernier message: 28/05/2006, 12h37

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