You are on page 1of 24

PROCEDIMIENTOS CON OPCIONES EXTERNAS.

CRISTIAN HERRERA PEREZ


Diseo descendente
En programacin es muy importante elegir el diseo a
cada problema. Para esta tarea se utiliza un diseo
descendente, top-down, que consiste en dividir el
problema en subproblemas mas pequeos, que se
pueden tratar de forma separada.
Hasta ahora, no haba manera de compilar, testear y
depurar cada uno de esos subproblemas
separadamente hasta construir el programa final
combinando adecuadamente secciones de cdigo.
Hoy se pretende ejecutar un programa con varios
subproblemas con diferentes procedimientos externos,
y cada procedimiento puede ser compilado, testeado y
depurado.
Procedimientos externos principales
Los procedimientos mas usados los subprogramas
funciones o simplemente funciones y las subrutinas.
Su ejecucin se controla desde alguna otra unidad de
programa (puede ser el programa principal u otro
procedimiento externo).
Los beneficios del diseo serian los siguientes
Es mucho mas fcil encontrar errores en el codigo, sobre todo
en programas largos.
Permite usar procedimientos construidos por otros
programadores.
Evita cambios indeseables en las variables del programa. Solo
algunas de ellas se transfieren entre las diferentes unidades del
programa, aquellas variables que son necesarias para realizar
los clculos previstos.

FUNCIONES
Existen dos tipos de funciones:
Intrnsecas: Todas aquellas funciones que suministra el
propio lenguaje (Sin, Cos, Tan,)
Definidas por el propio programador : estos
procedimientos permiten responder a necesidades
particulares del usuario.

El resultado de toda funcin es un valor numrico,
lgico, una cadena de caracteres o array. Las funciones
generadas por el programador pueden usarse igual que
las funciones intrnsecas y pueden formar parte de
expresiones.


Estructura general de una funcin.
1) Cabecera de una funcin.
2) Seccin de especificaciones
3) Seccin de ejecucin.
4) Terminacin de la funcin.

La funcin de cabecera identifica la unidad del
programa como un procedimiento funcin.
TIPO es cualquier tipo Fortran valido relativo al
nombre de la funcin. Si no aparece tipo en la cabecera
debe especificarse despus.
Nombre de la funcin. Es un identificador dentro del
programa .
Lista de argumentos formales: Es una lista (puede ser
vaca) de constantes, variables arrays o expresiones,
separados por comas. Se emplean para pasar
informacin al cuerpo de la funcin se les llama
formales por que no conllevan a un reserva de espacio
en la memorial

La seccin de ejecucin debe incluir al menos una
sentencia de asignacin en la que se encargue al
nombre de la funcin resultado de una expresin del
mismo tipo (de ah la necesidad de declarar el tipo del
nombre de la funcin.).
Nombre_funcin = Expresin.
Finalmente, la terminacin de la funcin tiene una
sintaxis general.
END FUNCTION [ Nombre _funcin]
Una funcin se invoca escribiendo
Nombre_funcin( [Lista de argumentos actuales])

Esta invocacin puede ser parte de una expresin o en
cualquier lugar donde puede aparecer una expresin.
Como resultado de la evaluacin se devuelve un valor
que es usado para evaluar, a su vez, la expresin de la
que forme parte.

Debe haber una concordancia en el numero, tipo y
orden de los argumentos actuales que aparecen en la
llamada a la funcin y los argumentos formales que
aparecen en cabecera de la misma. De igual forma el
tipo del nombre de la funcion debe ser el mismo en las
unidades de programa que se invoca.
La ejecucin de la llamada ocurre de la siguiente forma
Se evalan los argumentos actuales que son expresiones.
Se asocian los argumentos actuales con sus
correspondientes argumentos formales.
Se ejecuta el cuerpo de la funcin especifica
Se devuelve el control a la unidad de programa que hizo
la llamada, en concreto, a la sentencia donde se invoco a
la funcin, sustituyendo su nombre por el resultado de
la ejecucin de la funcin.

Sintaxis general para los argumentos
formales

Donde la intecion_paso se sustituye por
IN: Si el argumento formal es un valor de entrada.
OUT: Si el argumento formal es un valor de salida.
IN OUT Si el argumento formal es un valor de entrada y
salida.
El atributo INTENT ayuda al compilador a encontrar
errores por el uso indebido de los argumentos formales de
un procedimiento




Ejemplo. Una funcin de
temperatura ( F C)






Se observa que la declaracin CENT es real en la
unidad de programa principal en concordancia con su
tipo en la funcin y que el argumento actual en ambas
es real.
subrutinas
Una subrutina es un subprograma externo que permite
ejecutar un algoritmo que retornara un valor o valores dentro
del programa principal.
Una SUBRUTINA en fortran es en realidad un modulo con
algunas caractersticas especiales.
Una subrutina puede cumplir el papel de una funcin.
Las subrutinas se diferencian de las funciones
fundamentalmente en la sintaxis de la definicin y en la forma
de invocarlos; dado que no tienen tipo alguno las subrutinas
no pueden formar parte de expresiones ni aparecer en la parte
derecha de una sentencia de asignacin, deben aparecer nica
y exclusivamente en una sentencia de llamada a
procedimiento.
Caractersticas de una subrutina
Se compila independientemente, puede estar ubicada en
un fichero independiente de extensin .FOR o bien al
igual que las funciones externas pueden estar ubicadas a
continuacin de la sentencia END del programa principal,
con lo que nicamente se compilara un nico fichero.
La forma de llamada es diferente.
Pueden arrojar varios valores, un solo valor o ninguno.
SUBRUTINAS. Estructura y Sintaxis



NOMBRE: Es cualquier nombre valido en fortran, es de
carcter simblico y representa a la subrutina con la cual se
trabajara, identifica a la subrutina.
V1,V2.VN : Nombre que intervienen en la subrutina, en otras
palabras variables ficticias que solo entran en la subrutina.
Parte de entrada y parte de salida,
RETURN: finaliza la subrutina y retorna valores.
END SUBROUTINE: final de la subrutina.
La forma como se convoca en el programa es

CALL : Sentencia para llamar a cualquier subrutina.
NOMBRE: Es el nombre con el cual se identifica la
subrutina
v1,v2.Vn : Son los datos de entrada y salida reales y
deben corresponder a los valores ficticios con los cuales se
entra a la subrutina. De esta forma podremos llamar las
funciones o subrutinas varias veces.



Ejemplo. Subrutina VOLUMEN





El programa del calculo del volumen de 10 esferas con
radio i. Observar que la llamada de la subrutina sirve
como una funcin. Call volumen( i,vol) indica que el
valor de entrada es i y el valor retornado es vol. segn la
subrutina.




Aqu se toman los mismos valores de entrada y salida que
el programa principal pero estos pueden ser diferentes.
Observar que aqu se declaran variables nuevamente.
La opcin return se aconseja colocarla al final debido a
que detiene la subrutina y muestra los resultados, esto
puede generar errores de compilacin o de estructura.
La forma de cmo combinar estos dos hace parte de la
forma de programar del usuario generalmente se hace de
forma sencilla.
Cuando se desea incluir un array completo en los
argumentos formales de las subrutinas se define
solamente su nombre sin incluir sus dimensiones. La
subrutina conocer de antemano puesto que son variables
ya declaradas.
En caso de querer enviar un nico elemento del array la
llamada y la subrutina deben especificarse.




Se observa que el termino a(1,2) se relaciona con elem, y
este se declara como real, los trminos b y c son matrices
de orden 5x5, es claro que el modo de llamada indica un
solo termino pero al momento de declarar la variable
ficticia se considera una sola asignacin.

MODULOS
Los mdulos surgen de la creacin de varios
subprogramas con las mismas notaciones, estos solo
participan en Fortran 90 en adelante, generalmente se
usan para declarar variables que se usan en muchos
subprogramas y agruparlos en una sola unidad.
Los mdulos comienzan con
MODULE nombre y terminan con
END MODULE nombre.
No se usa el termino return, si se coloca en el programa
principal debe colocarse antes de iniciar.
Para hacer uso del modulo se debe colocar la palabra USE
nombre, antes de IMPLICIT NONE
Para su uso entonces,





Generalmente se declaran contantes, valores de
iteracin ,ndices, entre otros.

You might also like