Curso de Fortran - Subprogramas y funciones en fortran

5 - Subprogramas y funciones en fortran

[editar]
Curso gratis creado por Anónimo.
04 de Noviembre de 2005
UNIDADES DE PROGRAMA.

-Ante la necesidad de una organización jer rquica Fortran permite
 dividir el programa en módulos llamados unidades de programa. Hay dos
 clases de unidades de programa:

-Programa principal.
 -Subprograma.

-Cada programa tiene un sólo programa principal que puede contener cero
 o m s Subprogramas que pueden ser:

-Funciones.
 -Subrutinas.

-Las Funciones pueden ser de varios tipos:

-Externas, es un módulo independiente.

-Intr¡nsecas, es un módulo independiente.

-Unil¡neas, son locales al módulo o unidad de programa donde est n
  definidas.

-Las Subrutinas son Subprogramas que pueden ser usados para devolver un
 conjunto de cero a n datos y suelen ser de propósito general.

-Los módulos pueden estar uno a continuación del otro y no estar n
 separados a nivel lógico aunque s¡ lo estar n a nivel f¡sico.

-La Función se usa cuando se necesita devolver un sólo valor, mientras
 que las Subrutinas se utilizan para devolver m s valores o en su
 defecto ninguno.

FUNCIONES SENTENCIA (UNILINEA)

-Es un procedimiento especificado en una sentencia simple, con forma
 similar a una sentencia de asignación aritm‚tica, lógica o car cter.
 Este tipo de Funciones representan una fórmula.

-Se escribe en la misma unidad de programa que va a ser usada, son
 locales a la unidad de programa en la que est  definida.

-Es una sentencia de tipo no ejecutable y ha de ser escrita antes de ser
 invocada, su sintaxis suele ser:

- Tipo  Identificador (Lista de par metros actuales)=Expresión.

-Si no se colocan par metros, habr  que poner par‚ntesis igualmente.

-El tipo de dato del identificador de la Función sentencia y los
 argumentos ficticios est n determinados por el tipo impl¡cito del
 identificador.

-La invocación se realiza escribiendo su identificador y entre
 par‚ntesis los argumentos verdaderos o actuales que sustituyen a los
 argumentos que son ficticios.

-Los argumentos actuales pueden ser expresiones y han de corresponderse
 en número, orden y tipo con los argumentos ficticios. La llamada a la
 Función debe formar parte de una sentencia ejecutable.

-Se puede invocar el paso de varios par metros separados por una coma
 o no ser invocados.

FUNCIONES INTRINSECAS

-Son las Funciones propias del lenguaje Fortran, que ya fueron descritas
 en el tema 2.

-Estas Funciones se usan con el identificador de la Función seguido de
 los valores de los par metros.

-Habr  que tener en cuenta que los argumentos sean del mismo tipo y que
 correspondan dentro del rango.

FUNCIONES EXTERNAS

-Este tipo de Funciones devuelve un valor a trav‚s del identificador de
 la Función aunque puede devolver otros valores. Su sintaxis es:

- Tipo  FUNCTION Identificador (Lista de par metros formales)
  acción1
  acción2
  .......
  acciónn
  Identificador=Expresión
  .......
  RETURN
  END

-El tipo es opcional y especifica el tipo de datos del valor que se
 devuelve. Si no se especifica se siguen las normas del tipo impl¡cito
 de los identificadores.

-Esta sentencia debe ser la sentencia inicial de una Subrutina FUNCTION.
 El tipo de la Función est  determinado por la especificación tipo en la
 cabecera.

-Puede tener cualquier sentencia excepto las definiciones de otras
 Subrutinas. El valor asignado debe ser del mismo tipo que el de la
 Función.

-El f¡n lógico de una Función es RETURN que puede aparecer m s veces.
 La última sentencia de código fuente de definición de una Función es
 END que ser  el f¡n f¡sico.

-Desde una Función se puede invocar otra Subrutina pero no a la misma
 Función y no se permite la recursividad.

LLAMADA A FUNCIONES EXTERNAS

-La llamada a una Función ha de formar parte de una sentencia siendo la
 sintaxis de la llamada la siguiente:

-Identificador (Lista de par metros actuales).

-La referencia a la Función se puede realizar desde cualquier otra
 unidad de programa. La lista de par metros deber  estar separada por
 comas.

-Los par metros se pueden pasar por valor colocando la palabra reservada
 VALUE delante de las variables. No se debe modificar los valores de las
 variables de la lista. Es mejor duplicarlos o protegerlos.

-Los par metros actuales deben coincidir con los argumentos ficticios
 con las siguientes especificaciones:

-Constantes, variables o expresiones, excepto la concatenación
  de operandos.
 -Nombre de array.
 -Funciones intr¡nsecas o externas.
 -Subrutinas.

PASO DE ARGUMENTOS A LAS SUBRUTINAS

-Las llamadas por valor realizan unas copias del argumento verdadero
 con lo que ‚ste no cambia durante la ejecución de la Subrutina.

-Las llamadas por referencia no realizan esa copia y el argumento
 verdadero puede cambiar durante la ejecución de la Subrutina.

-Para saber cuando se deben pasar valores por valor o referencia nos
 fijaremos en la siguiente tabla:

-Por referencia si es una variable, array, elemento de array o
  caracteres.

-Por valor si es una constante o una expresión.

SUBRUTINAS.

-Las Subrutinas empiezan con la sentencia SUBROUTINE y puede tener
 cualquier sentencia excepto las usadas para definir otros módulos o
 unidades de programa.

-Puede devolver cero, uno o m s valores siendo la transmisión por
 par metros de cabecera. La ejecución termina con un f¡n lógico o RETURN
 siendo la última sentencia el f¡n f¡sico o END.

-Si sólo hay un RETURN se puede omitir porque END funcionar  como si
 fuera RETURN. La sintaxis de las Subrutinas es:

-SUBROUTINE Identificador (Lista de par metros formales)
  acción1
  acción2
  .......
  acciónn
  RETURN
  .......
  END

-El identificador del procedimiento ha de ser único, el primer car cter
 debe ser una letra.

-En la Subrutina no se asocia un valor al identificador de la misma,
 devuelve los datos de salida modificando sus argumentos si son:

-Nombres de variable.
 -Nombres de array.
 -Subrutinas ficticias.
 -Asteriscos.

-El tipo de los argumentos se especifica expl¡cita o impl¡citamente. El
 argumento array se define con un tama¤o fijo, anidado o ajustable.

-El argumento asterisco se usa para la salida múltiple de una Subrutina
 no permitiendo la autollamada o la recursión.

LLAMADA A SUBRUTINAS

-Una Subrutina puede ser invocada desde otra Subrutina o unidad de
 programa principal con la siguiente sintaxis:

-CALL Identificador (Lista de par metros actuales).

-Los argumentos deben coincidir en orden y tipo con los argumentos
 ficticios de la Subrutina referenciada. La ejecución de CALL causa que
 el control de la ejecución pase a la Subrutina referenciada.
Los argumentos de CALL pueden ser:
-Expresiones.
 -Arrays.
 -Subrutinas.

-El argumento correspondiente al asterisco ha de ser del tipo *N siendo
 N una etiqueta de una sentencia ejecutable. Los valores se transmiten
 por referencia.
Un ejemplo de la utilización de Subrutinas podr¡a ser:
-CHARACTER *20 Cab
  REAL Gwr
  PARAMETER (Cab='Especificación de la gravedad')
  Gwr=9.82337
  WRITE (*, *) Cab, Gwr
  CALL Lista (Cab, Gwr)
  WRITE (*, *) Cab, Gwr

SUBROUTINE Lista (T¡tulo, Datos)
  CHARACTER *20 T¡tulo
  REAL Datos
  T¡tulo='Densidad Kg/cm'
  Datos=0.57975
  WRITE (*, *) T¡tulo, Datos
  RETURN
  END

-El resultado que proporcionar  el anterior trozo de código ser  un
 resultado imprevisible, puesto que no se puede modificar una constante
 a una variable.
La relación general para el paso de par metros ser  la siguiente:
Par metros actuales  Par metros formales
 Variables         Nombre variable
 Elementos de array   Nombre variable
 Estructuras       Nombre variable
 Expresiones       Nombre variable
 Arrays         Array
 *Etiqueta         Etiqueta
 Subrutinas        Nombre único
 Funciones         Nombre único

SENTENCIAS "EXTERNAL" E "INTRINSIC"

-Estas sentencias se usan para cuando el argumento es el identificador
 simbólico de un Subprograma o Función.

-La sentencia EXTERNAL declara que un identificador es un nombre de una
 Función externa o de una Subrutina. No es una sentencia ejecutable y
 debe aparecer antes del código de sentencias ejecutables.

-La sintaxis de EXTERNAL es:

-EXTERNAL Identificador1, Identificador2, ..., Identificadorn.

-La sentencia INTRINSIC declara que un identificador es nombre de una
 Función intr¡nseca, apareciendo el identificador en la sintaxis:

-INTRINSIC Función1, Función2, ..., Funciónn.

-Las Funciones intr¡nsecas que no pueden ser argumentos actuales de las
 Subrutinas son los siguientes:

-De conversión de tipos, INT, IFIX, IDINT, FLOAT y CHAR.
 -Lexicogr ficas, LGE, LGT, LLE y LLT.
 -De m ximos y m¡nimos.

ENTRADA MULTIPLE A UNA SUBRUTINA. SENTENCIA "ENTRY"

-Sirve para que el comienzo de una Subrutina sea en una sentencia
 espec¡fica contenida en la Subrutina. Puede estar en cualquier punto
 del programa excepto dentro de un bloque IF o DO.

-Esta sentencia es de tipo no ejecutable siendo su sintaxis:

-ENTRY Identificador (Lista de par metros actuales).

-Los identificadores simbólicos de varios puntos de entrada tienen que
 ser diferentes entre s¡ y del nombre del procedimiento.

-Un punto ENTRY se referencia desde otro módulo. El proceso prosigue
 hasta encontrar un RETURN.

SALIDA MULTIPLE DE UNA SUBRUTINA. SENTENCIA "RETURN N".
Esta sentencia causa que el control de la ejecución retorne a la unidad
 de programa desde donde se invocó. La sintaxis es la siguiente:
-RETURN n.

-La especificación n se usar  en una Subrutina, para devolver el control
 a una sentencia espec¡fica, sin ser la siguiente a la llamada.

-El valor de n ha de estar comprendido entre uno y el número de
 asteriscos de la cabecera de la Subrutina.
[editar]

16 opiniones

ayuda por favor

necesito que me ayuden hacer un programa en fortran mi correo es angelicamacdonald@hotmail.com podras gracias
q desconformidad muchachos eh!!!

mira yo te digo, taba pintado y necesitaba usar fortran y esto me viene dando tremenda mano...los que anden volando que aranquen a quejarse a otro lado
q pendejos los q lean esto

no explik nada acerca de los ciclos y la secuencia logica que lleva un programa medio te dicen pero no esta nada completo
malo

en verdad no tiene mucha informacion no le hagan al buey
les faltan ejemplos

, y decir en que posición del programa declaras los complejos
1 2 3 4 | siguiente >

Cursos gratis relacionados con 'Curso de Fortran'

Completo curso de lenguaje ensamblador. El lenguaje Fortran tiene unos números y signos que utiliza... Más »
El objetivo de este curso es aprender a programar en el lenguaje Ada, desde sus... Más »
Un sistema informático utiliza ordenadores para almacenar datos, procesarlos y ponerlos a disposición de quien... Más »
Aprende a programar en Visual Basic, de forma rapida y sencilla, con tan solo 20... Más »
Mediante este pequeño pero abartcador curso ud. Podra conocer mejor las actualizaciones del C#. NET... Más »

Autor y licencia de 'Curso de Fortran'


Curso gratis de Anónimo. Extraido de: CopyLeft
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.