Los subprogramas son una serie de sentencias que forman una unidad que puede
ser llamada desde un programa principal o desde otro subprograma.
EXTERNA
FUNCION
N
umero de argumentos1 = Numero de argumentos2
Tipo de argumentos1 = Tipo de argumentos2
Observaciones:
Una funcion externa no puede llamarse a s misma, ni directa ni indirecta-
mente.
No deben modificarse los argumentos de entrada dentro de la funcion externa.
Si no se define el TIPO, el valor devuelto sera del mismo tipo que NOMBRE
(regla por defecto seg
un sea la letra inicial de NOMBRE).
PROGRAM ejemplo
REAL X,Y,MAXAB
PRINT*, x,y ?
READ*,x,y
PRINT*, El maximo en valor absoluto es: ,MAXAB(x,y)
END
FacMat - Curso 2007/08 - Metodos Numericos I - Practicas de FORTRAN - Sesion 3 3
PROGRAM ejemplo
INTEGER N
REAL X(10),MAXVEC
PRINT*, Numero de componentes: ?
READ*,N
PRINT*, Componentes del vector ?
READ*, (X(i),i=1,N)
PRINT*, El maximo en valor absoluto es: ,MAXVEC(N,X)
END
FacMat - Curso 2007/08 - Metodos Numericos I - Practicas de FORTRAN - Sesion 3 4
PROGRAM ejemplo
INTEGER N,M
REAL X(10,10),maximo,MAXMATRIZ
PRINT*, Numero de filas, columnas: ?
READ*,N,M
.... Se leen los elemntos de la matriz (X(i,j),i=n),j=M)
maximo=MAXMATRIZ(10,10,N,M,X)
PRINT*, El maximo en valor absoluto es: ,maximo
END
FacMat - Curso 2007/08 - Metodos Numericos I - Practicas de FORTRAN - Sesion 3 5
N
umero de argumentos1 = Numero de argumentos2
Tipo de argumentos1 = Tipo de argumentos2
- Una subrutina no puede llamarse a s misma, ni directa ni indirectamente.
- No deben modificarse los argumentos de entrada dentro de la subrutina. Para
proteger estos valores.
- Las reglas para pasar variables dimensionadas son las mismas que para la
funcion externa.
FacMat - Curso 2007/08 - Metodos Numericos I - Practicas de FORTRAN - Sesion 3 6
Programa principal
PROGRAM ejemplo
REAL*8 X(10,10),Y(10,10),XY(10,10)
INTEGER F1,C1F2,C2
.... Leemos F1,C1F2,C2 (Filas de X, Columnas de X = Filas de Y,
Columnas de Y)
... Leemos la matrix X y la matriz Y
CALL MULMATRIZ(10,10,F1,C2,C1F2,X,Y,XY)
... En (XY(i,j),I=1,F1),j=1,C2) esta la matriz producto
END