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 :

IF (npoutre-je) 1700,2000,1100 ?


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Inscrit en
    Février 2004
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 79
    Par défaut IF (npoutre-je) 1700,2000,1100 ?
    J'ai une petite application en fortran dont j'ai le code source et je dois aller chercher des infos dedans.

    Or, il y a de nombre ligne dont je ne comprends pas trop la significaition dont:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IF (npoutre-je) 1700,2000,1100
    bon, 1700, 2000 et 1100 sont des lignes indiquées, j'imagine que ça va faire des GOTO vers ces lignes selon que la condition est vrai ou fausse..

    Mais, pourquoi 3?
    au fait, npoutre et je sont des entiers.

    Quelqu'un peux m'expliquer ce que cette ligne fait exactement?

    Merci

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    ça s"appelle un "GOTO calculé" :


    Dans ton exemple :

    • si (npoutre - je) = 1 alors va en 1700
    • si (npoutre - je) = 2 alors va en 2000
    • si (npoutre - je) = 3 alors va en 1100



    Tu peux en mettre autant que tu veux.

    Par contre, c'est obsolète depuis Fortran 90 (remplacé par select case).

    Un bon cours :

    http://www.obs-nice.fr/pichon/Cours_F95.pdf

    et aussi ici :

    http://fortran.developpez.com/


  3. #3
    Membre actif
    Inscrit en
    Février 2004
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 79
    Par défaut
    Ok merci beaucoup!!


    Vraiment, le code que j'ai à comprendre est vraiment mal fait! C'est à n'y rien comprendre...

    Décidément, je n'aime pas le Fortran, du moins le vieux.

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
                npoutre = nelem - nconnec - nbbar
                lele=0
                je=1
                IF ( npoutre.GT.0 ) THEN
    1100          CONTINUE
                  READ(15,*) je,(node(i,je),i=1,npele),
         &         itype(je),loibet(je),etype(je)
                  IF (itype(je).GT.ntype) THEN
                     PRINT*,'ERREUR dans la section de lelement ',je
                     STOP
                  ENDIF
                  IF (etype(je).EQ.1 .AND. loibet(je).GT.nbloibet) THEN
                     PRINT*,'ERREUR dans la loi de lelement ',je
                     STOP
                  ENDIF
                  incele=0
                  IF (incele .LE. 0) THEN
                    incele=1
                  ENDIF
    1200          CONTINUE
                  lele= lele+1
                  IF (je-lele) 1500,1500,1300
    1300          CONTINUE
                  itype(lele)=itype(lele-1)
                  loibet(lele)=loibet(lele-1)
                  etype(lele)=etype(lele-1)
                  DO 10 i=1,npele
                     node(i,lele)=node(i,lele-1)+incele
    10            CONTINUE
    1500          CONTINUE
                  IF (je-lele) 1600,1600,1200
    1600          CONTINUE
                  IF (npoutre-je) 1700,2000,1100
    1700          CONTINUE
                  STOP
    2000          CONTINUE
                  nodmax=0
                  DO 20 ii=1,npoutre
                  DO 20 jj=1,npele
                  DO 20 ll=1,npele
                     noddiff=IABS(node(jj,ii)-node(ll,ii))
                     IF (noddiff .GT. nodmax) nodmax=noddiff
    20            CONTINUE
                ENDIF
    Ça c'est un bout du code que je dois déméler et comprendre. Il a beaucoup trop de GOTO là-dedans!!!! C'est tellement mal fait ce code là, c'est le fouilli!!

  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
    Par défaut
    Citation Envoyé par souviron34
    ça s"appelle un "GOTO calculé" :


    Dans ton exemple :

    • si (npoutre - je) = 1 alors va en 1700
    • si (npoutre - je) = 2 alors va en 2000
    • si (npoutre - je) = 3 alors va en 1100



    Tu peux en mettre autant que tu veux.

    Par contre, c'est obsolète depuis Fortran 90 (remplacé par select case).
    Il y a confusion ici. Ce n'est pas un goto calculé mais un if arithmétique et ça s'interprète de la façon suivante :

    if (ExpressionNumérique) EtiquetteSiNegatif, EtiquetteSiNul, EtiquetteSiPositif

    Le goto calculé a plutôt la forme :

    goto (Etiquette1, Etiquette2, ..., EtiquetteN), Selecteur

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    c'est vrai milles excuses j'avais lu trop vite

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

Discussions similaires

  1. pb d'installation d'Oracle 9 sur windows 2000
    Par condor dans le forum Oracle
    Réponses: 1
    Dernier message: 14/12/2006, 11h40
  2. Détecter Windows 2000 Professionnel
    Par FW-S dans le forum Delphi
    Réponses: 9
    Dernier message: 03/11/2006, 23h02
  3. Pb BDE suite a passage en Windows 2000 pro
    Par ARIF dans le forum Paradox
    Réponses: 4
    Dernier message: 18/11/2002, 11h39
  4. [VB6] Gestionnaire des tache de windows 2000 avec VB6
    Par Argonz dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 12/11/2002, 08h21

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