arrays - producto - Declaración de matriz en Fortran
memoria dinamica en fortran (2)
Sí, es idéntico. Incluso por supuesto, diferido y cualquier forma posible.
Considerar
INTEGER,DIMENSION(3) :: NumberVector
y
INTEGER :: NumberVector(3)
¿Hay alguna diferencia entre estas dos declaraciones o son exactamente las mismas? (Me refiero a CUALQUIER contexto y variación posibles: por ejemplo, en el caso de que esos dos fueran idénticos, ¿qué ocurre si declaro una matriz con un tamaño implícito como uno de los parámetros de entrada de una subrutina? ¿Sería irrelevante cuál de ellos? ¿Solía?)
El atributo DIMENSION
se agregó a Fortran 90 para mejorar la claridad del código y permitir el ahorro de código al declarar múltiples matrices del mismo tipo (no poco común en la informática científica), por ejemplo, en lugar de
REAL :: mat1(10,20), mat2(10,20), mat3(10,20), mat4(10,20), mat5(10,20)
uno podría escribir
REAL, DIMENSION(10,20) :: mat1, mat2, mat3, mat4, mat5
Además de reducir el tamaño del código fuente y el tiempo de compilación (menos análisis, no tan relevante hoy en día), esto reduce la posibilidad de cometer un error en cualquiera de las declaraciones. De lo contrario, ambas formas son iguales y las variables declaradas se comportan exactamente de la misma manera en todas partes del programa.