¿Cuál es la estructura básica de una función en FORTRAN?
Pregunta
Esto es algo que he querido conocer recientemente, sobre todo por curiosidad. Estoy en el estado de ánimo de aprender algunos estilos de codificación de edad, y FORTRAN parece ser un buen lugar para empezar.
Creo que debería ayudar a ustedes a cabo proporcionando un buen punto de partida.
Entonces, ¿cómo sería este procedimiento C escribirse 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 ;
}
Sé que la función entera podría ser una sola línea:
return ( x + ( y / 2 ) ) * ( y - ( x * 3 ) ) ;
Pero el punto de que me haga esta pregunta es para ver cómo esos cuatro estados pueden ser escritos individualmente en FORTRAN, sin combinar necesariamente siempre en un solo estado.
Solución
Cuando se aprende a partir de FORTRAN? Basta con echar un vistazo a la wikibooks !
Derivado del ejemplo, diría:
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
Otros consejos
No me culpen - Dijiste de edad estilos de codificación:
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
tiemblo mientras escribo esto, pero
- todas las variables son números enteros de forma implícita, ya que comienzan con las letras entre I y N
- FORTRAN pasa por referencia, por lo que restablece
I
yJ
al final para dar el mismo efecto que la función original (es decir, pasan por valor, por lox
yy
se mantuvieron sin cambios en la rutina de llamada) - Los comentarios comienzan en la columna 1, las declaraciones reales comienzan en la columna 7
Por favor, por favor, por favor, nunca escribir nuevo código como este a menos como una broma.
Su función podría tener este aspecto en Fortran
integer function foo(m, n)
integer i
i = m
m = m + n/2
n = n - i*3
foo = m*n
end function foo
Usted debe ser capaz de empezar a trabajar con cualquier clase particular en Fortran. Algo como esto podría ayudar http: //www.cs .mtu.edu / ~ Shene / CURSOS / cs201 / NOTAS / fortran.html
aplausos
Similar al anterior, pero con un programa principal para ilustrar cómo se llamaría.
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
Tenga en cuenta que esto es Fortran 77, que es lo que aprendí hace 23 años.
Es cierto estilo antiguo en la aplicación de la regla para IJKLMN entero
C2345678
FUNCTION IFOO(I,J)
II = I + J/2
JJ = J - I*3
IFOO = II*JJ
END