Qual è la struttura di base di una funzione in FORTRAN?
Domanda
Questa è una cosa che è ho voluto sapere di recente, per lo più per curiosità. Sono in vena di imparare alcuni vecchi stili di codifica, e FORTRAN sembra un buon punto di partenza.
Credo che dovrei aiutare voi ragazzi fuori, fornendo un buon punto di partenza.
Così come sarebbe questa procedura C essere scritto in 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 ;
}
So che l'intera funzione potrebbe essere una sola riga:
return ( x + ( y / 2 ) ) * ( y - ( x * 3 ) ) ;
Ma il punto a me questa domanda è quello di vedere come quei quattro affermazioni sarebbero scritti individualmente in FORTRAN, non neccessarily combinate in una singola istruzione.
Soluzione
Dove si impara FORTRAN da? Basta dare uno sguardo al Wikibooks !
Derivato dal esempio, direi:
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
Altri suggerimenti
Non dare la colpa a me - lei ha detto vecchia di codifica stili:
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
mi vengono i brividi mentre scrivo questo, ma
- tutte le variabili sono implicitamente interi, dal momento che iniziano con le lettere tra I e N
- FORTRAN passa per riferimento, quindi resettato
I
eJ
alla fine per dare lo stesso effetto come la funzione originale (cioè passano per valore, cosìx
ey
sono rimasti invariati routine chiamante) - I commenti iniziano nella colonna 1, le dichiarazioni attuali iniziano nella colonna 7
Per favore, per favore, non scrivere nuovo codice come questo a meno che non come uno scherzo.
La funzione potrebbe essere simile a questa in Fortran
integer function foo(m, n)
integer i
i = m
m = m + n/2
n = n - i*3
foo = m*n
end function foo
Si dovrebbe essere in grado di iniziare con qualsiasi tutorial su Fortran. Qualche cosa come questa potrebbe aiutare http: //www.cs .mtu.edu / ~ Shene / CORSI / cs201 / NOTE / fortran.html
applausi
Simile alla precedente, ma con un programma principale per illustrare come si sarebbe chiamato.
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
Si noti che questo è Fortran 77, che è quello che ho imparato 23 anni fa.
La vera vecchio stile nell'applicazione della IJKLMN regola per intero
C2345678
FUNCTION IFOO(I,J)
II = I + J/2
JJ = J - I*3
IFOO = II*JJ
END