Question

Ceci est quelque chose qui je voulais savoir récemment, la plupart du temps sur curiousity. Je suis d'humeur à apprendre quelques anciens styles de codage, et Fortran semble être un bon endroit pour commencer.

Je suppose que je devrais vous aider gars en fournissant un bon point de départ.
Alors, comment cette procédure C est écrit en FORTRAN?

int foo ( int x , int y )
{
    int tempX = x ;
    x += y / 2 ;
    y -= tempX * 3 ;    // tempX holds x's original value.
    return x * y ;
}

Je sais que toute la fonction pourrait être une seule ligne:

return ( x + ( y / 2 ) ) * ( y - ( x * 3 ) ) ;

Mais le point de me poser cette question est de voir comment ces quatre déclarations seraient rédigées individuellement en FORTRAN, non neccessarily combinés en une seule instruction.

Était-ce utile?

La solution

Où pouvez-vous apprendre FORTRAN de? Il suffit de jeter un oeil à la Wikibooks !

Dérivé de l'exemple, je dirais:

function func(x, y) result(r)
   integer, intent(in) :: x, y 
   integer             :: r 
   integer             :: tempX
   tempX = x
   x = x / 2
   y = y - tempX * 3
   r = x * y
end function foo

Autres conseils

Ne me blâmez pas - vous avez dit vieux styles de codage:

C234567
      SUBROUTINE FOO(I,J,K)
C SAVE THE ORIGINAL VALUES
      IORIG = I
      JORIG = J
C PERFORM THE COMPUTATION
      I = I + J/2
      J = J - IORIG*3
      K = I * J
C RESTORE VALUES
      I = IORIG
      J = JORIG
      END SUBROUTINE FOO

Je frémis que je vous écris, mais

  • toutes les variables sont implicitement entiers, car ils commencent par lettres entre I et N
  • FORTRAN passe par référence, donc remis à zéro I et J à l'extrémité pour obtenir le même effet que la fonction d'origine (à savoir passer par valeur, de sorte x et y sont restés inchangés dans la routine d'appel)
  • Les commentaires commencent dans la colonne 1, les déclarations réelles commencent dans la colonne 7

S'il vous plaît, s'il vous plaît, s'il vous plaît ne jamais écrire un nouveau code comme celui-ci, à moins comme une plaisanterie.

Votre fonction pourrait ressembler à ceci dans Fortran

 integer function foo(m, n)
 integer i

 i = m
 m = m + n/2
 n = n - i*3
 foo = m*n

 end function foo

Vous devriez être en mesure de commencer avec un tutoriel sur Fortran. Quelque chose comme cela pourrait aider http: //www.cs .mtu.edu / ~ Shene / COURS / cs201 / NOTES / fortran.html

hourras

Voir Fonctions et sous-routines :

INTEGER FUNCTION foo(i, j)
...
foo = 42
END

puis plus tard:

k = foo(1, 2)

Tout comme ci-dessus, mais avec un programme principal pour illustrer comment il serait appelé.

C2345678
       program testfoo
         implicit none   
         integer r, foo 
         r = foo(4,5)
         print *, 'result = ', r
       end

       integer function foo(x,y)
         integer x, y
         integer tx, ty
         tx = x + y / 2
         ty = y - x * 3
         foo = tx * ty
         return
       end

Notez que ceci est Fortran 77, qui est ce que j'ai appris il y a 23 ans.

True style ancien dans l'application de la règle IJKLMN pour entier

C2345678
      FUNCTION IFOO(I,J)
      II = I + J/2
      JJ = J - I*3
      IFOO = II*JJ
      END
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top