Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Cap7 Fortran PDF
Cap7 Fortran PDF
Contenido:
1 Funciones De Biblioteca ( Del Lenguaje)
2 Funciones Definidas por el Usuario
3 Comando Function y sus argumentos
4 Manejo y Uso de Sub Programas
5 Comando Subroutine
6 Manejo y Uso de Sus Parmetros
7 Comando Use
8 Programacin Estructurada
9 Comando Module
10 Comando Contains
11 Evidencias Para El Aprendizaje
Pregunta Gua:
Cul es la ventaja de usar subprogramas y/o funciones usuario?
106
Funciones
107
Para llamar a una funcin bastar con solo llamarla, dentro de alguna expresin.
Las funciones pueden realizar cualquier tipo de proceso permitido por el Fortran
90-95 y se usan para algn proceso o clculo muy especifico.
Vgr.
PROGRAM ABSOLUTO
IMPLICIT NONE
INTEGER:: X
READ (*,*) X
ABSO = ABSOL (X)
WRITE (*,*) X
RETURN
END PROGRAM ABSOLUTO
FUNCTION ABSOL(A)
IMPLICIT NONE
INTEGER, INTENT(InOut) :: A
INTEGER :: ABSOL
ABSOL =SQTR (ABSOL**2)
RETURN
END FUNCTION ABSOL
108
Funciones De Librera ( Del Compilador y/ de Biblioteca)
Subprogramas
109
Lista de argumentos reales.- Aqu se encuentra la lista de argumentos que
el subprograma usa para su proceso. Pudiesen llegar a coincidir
en que se llamasen de igual forma que el programa principal,
ms eso no tiene importancia.
Seccin de declaracin.- Aqu se declara el modo de cada variable, as
como si es de entrada de datos, salida o entrada salida.
Seccin de ejecucin (proceso).- En esta etapa debe incluirse la expresin
con la variable que contenga el resultado del proceso pudiendo
ser inclusive arreglos completos.
Return.-Nos indica que el resultado se regresa al programa que realiz la
llamada.
End Subroutine [nombre].- Aqu damos por cerrado el proceso y el nombre
es opcional.
Reglas:
El orden en que se enlistan los argumentos ficticios, es de tipo Posicional,
es decir en esa posicin el auto programa interpreta que recibe y enva.
Es por ello que pueden llamarse distinto los argumentos tanto en el
programa principal como en los subprogramas.
En la seccin de declaracin se indica y refuerza que argumentos son de
entrada [intent (in)], de salida [intent (out)] y de entrada salida [intent
(inout)], as como su modo de variable.
Es recomendable hacer uso del estatuto implicit none tanto en el
programa principal como en el subprograma.
Un subprograma puede contener todos los llamados que sean necesarios
tanto a subprogramas como a funciones.
Ejemplo:
PROGRAM MATRICES
IMPLICIT NONE
INTEGER:: N= 10, I, J
REAL, DIMENSIN (N,N):: A,B
READ (*,*) ((A(I, J), I=1, N), J=1, N)
READ (*,*) ((B(I, J), I=1, N), J=1, N)
CALL SMATRIZ (A, B, S, N) Aqu podemos apreciar el
CALL RMATRIZ (A, B, R, N) llamado a cuatro diferentes
CALL P MATRIZ (A, B, P, N) sub-programas ( sub-rutinas).
CALL SALIDAM (A, B, S, R, P, N)
END PROGRAM MATRICES
110
SUBROUTINE RMATRIZ (X, Y, RESTA, M)
IMPLICIT NONE
INTEGER, INTENT(IN)::M
REAL, INTENT(IN); DIMENSION (M, M):: RESTA
RESTA = X - Y
RETURN
END SUBROUTINE RMATRIZ
Ayuda:
111
La recepcin de resultados se indica en la parte inferior del smbolo de
llamada (programa externo)
En la llamada el subprograma SALIDAM, carece de elementos en la parte
inferior del inferior del smbolo. Esto es por que solo enva y no regresa
resultados, solo el control para terminar el proceso.
Tarea: Diagrame cada proceso de los subprogramas anteriores.
SAVE.- Es el comando que nos indica que va a grabar en forma voltil (se
pierde al termino del proceso), en la memoria alta de la computadora, los datos a
usarse en forma comn por las diferentes estructuras del proceso.
Seccin de declaracin.- Es donde declaramos el modo y que variables y/o
valores vamos a usar en nuestro proceso.
Formato2: Aplicacin del comando USE
112
USE.- Es el comando que nos permite el acceso a los comando
almacenados (voltilmente), en la memoria alta de la computadora.
Ejemplo:
MODULE ARREGLO
IMPLICIT NONE
SAVE
INTEGER, PAREMETER:: N=10
REAL, DIMENSION (N,N):: VECTOR
END MODULE ARREGLO
PROGRAM APLICACIN
USE ARREGLO
IMPLICIT NONE
VECTOR = (/1,2,3,4,5,6,7,8,9,10/)
CALL SALIDA
END PROGRAM APLICACIN
SUBROUTINE SALIDA
USE SALIDA
IMPLICIT NONE
WRITE (*,*) VECTOR
RETURN
END SUBROUTINE SALIDA
Formato: CONTAINS
113
CONTAINS.- Es un estatuto que nos permite adicionar otra serie de
instrucciones no contenidas en una estructura. De tal manera que podemos
incluir todo tipo de subprogramas previamente creados para poder compartirlos
en un determinado proceso.
Ejemplo:
MODULE MATRIZ
IMPLICIT NONE
! DECLARAR (LOS DATOS QUE SE DEBEN COMPARTIR EN EL PROCESO)
CONTAINS
SUBROUTINE MATRIZS (K,Y, SUMA,M)
IMPLICIT NONE
INTEGER, INTENT (IN):: N
REAL, INTENT (IN) DIMENSION (M,M)::X,Y
REAL, INTENT (IOUT),DIMENSION (M,M)::SUMA
SUMA = X + Y
RETURN
END SUBROUTINE MATRIZS
END MODULE MATRIZ
PROGRAM PRINCIPAL
USE MATRIZ
IMPLICIT NONE
---
CALL MATRIZ (A,B,N)
---
END PROGRAM PRINCIPAL Tarea: Diagrame el ejemplo anterior.
Evidencias para el aprendizaje
114
7.19.- Puede una llamada a subprograma no tener ningn dato de regreso?
7.20.- Qu es el tipo de programacin lineal (TOP-DONW)?
7.21.- Qu es el tipo de programacin estructurada ( Modular )?
7.22.- Qu tipo de programacin es ms conveniente para un profesional de
la ciencia (ingeniero)? Por que?
7.23.- Para que sirve el comando MODULE?
7.24.- Para que sirve el comando USE?
7.25.- Para que sirve el comando SAVE?
7.26.- Para que sirve el comando CONTAINS?
7.27.- Puede una llamada a subprograma no enviar ni recibir parmetros y
sin embargo compartir sus resultados?
*** Haciendo uso de los pasos sugeridos para una programacin exitosa
solucione los problemas a continuacin enunciados En forma modular y con
subprogramas:
7.29.- Elabore un programa que calcule la solucin de una matriz por el
mtodo de eliminacin Gaussiana (puede investigar en el libro Fortran
90-95 Stephen Chapman 1998, Pg. 323)
7.30.- Para el arreglo matricial de 4x4, sume los elementos de la diagonal
principal.
A11 A12 A13 A14
A21 A22 A23 A24
A31 A32 A33 A34
A41 A42 A43 A44
115