Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ahora hemos cumplido con los tres tipos principales de datos que pueden ser procesados
por los programas de Fortran, aunque hay tres más que veremos más adelante. Estos
seis tipos de datos se denominan tipos de datos intrínsecos, y fueron los únicos tipos de
datos en todas las versiones anteriores de Fortran. Sin embargo, Fortran 90 también
incluye la capacidad para que los programadores creen sus propios tipos de datos para
complementar los tipos intrínsecos proporcionados dentro del lenguaje Fortran. ¡Porque
estos nuevos tipos de datos deben derivarse de los tipos de datos intrínsecos y! o tipos de
datos nuevos previamente definidos se llaman tipos derivados.
Un tipo derivado se define mediante una secuencia especial de declaraciones, que en su
forma más simple son las siguientes:
TYPE new_type
definición_component
END TYPE new_type
Procedimientos, subprogramas y funciones.
Las declaraciones que conocimos en el último capítulo nos permiten escribir
programas que consisten en una serie de líneas de instrucciones que serán
obedecidas en secuencia para que se realicen las adiciones requeridas. Sin embargo,
esta no es siempre la forma en que hacemos las cosas en la vida real. Por ejemplo,
mire la Figura 4.1. Esta es una nota que tal vez se deje para enseñar a alguien cómo
preparar la cena. Es una secuencia de instrucciones pero con una diferencia
importante: no todas las instrucciones
hay. La parte principal de la preparación está cubierta en un libro de cocina (The
SilverPalate Cookbook, de Julee Rosso y Sheila Lukins), por lo que, en lugar de
escribirlo todo, el escritor simplemente se refirió a la página correspondiente del libro.
No tenía sentido copiarlo o describir qué hacer con diferentes palabras; fue mucho
más fácil hacer uso de lo que ya habían escrito los autores del libro.
La Figura 4.2 muestra parte de la receta adual para Pollo a la Frambuesa referida a la
nota en la Figura 4.1, y podemos ver que incluso aquí la receta completa no está
incluida. En este caso, los detalles de cómo preparar el caldo de pollo y el
CremeFraiche se encuentran en otra parte del libro, en las páginas 342 y 339, de
manera respetuosa, y sería un desperdicio seguir repitiéndolos en las muchas recetas
que usan uno o ambos. Una referencia cruzada a las otras recetas, por lo tanto,
ahorra espacio y, por cierto, también mantiene la receta principal menos abarrotada y,
por lo tanto, más fácil de seguir.
Ambas situaciones (el uso de procedimientos estándar y evitar la duplicación con las
consiguientes mejoras estructurales) también aparecen en la programación. Un seccion
especial de programa al que, de alguna manera, se hace referencia cuando se requiere
se conoce como un procedimiento.
Los procedimientos se dividen en dos grandes categorías, a saber, los que están escritos
por el programador (o por alguna otra persona que luego permite que el programa los
use) y los que forman parte del lenguaje Fortran. Hay una nueva categorización, basada
en su modo de uso, en lo que se llama subrutinas y funciones. Casi todos los
procedimientos que forman parte del lenguaje Fortran 90 son iones de fondos y se
denominan funciones intrínsecas. También hay cinco subrutinas intrínsecas.
El propósito de una función es tomar uno o más valores (argumentos) y crear un solo
resultado, y Fortran, por ejemplo, contiene una serie de funciones intrínsecas para
funciones matemáticas elementales, como:
Una de las grandes ventajas de los subprogramas es que nos permiten dividir el diseño
de un programa en varias secciones más pequeñas y manejables, y luego escribir y
probar cada una de estas secciones independientemente del resto del programa.
Esto allana el camino para un enfoque conocido como desarrollo de programas
modulares, que es un concepto clave de la ingeniería de software.
Este enfoque divide el problema en sus principales subproblemas o componentes, cada
uno de los cuales puede ser tratado independientemente de los demás.
En un proyecto grande, estos componentes pueden ser desarrollados por diferentes
personas. Si es necesario, un componente puede subdividirse en otros componentes,
como en cualquier otra pieza de diseño de ingeniería. Todo lo que es necesario es que la
interfaz entre cada componente y el resto del programa esté bien definida.
Un ejemplo de este enfoque en ingeniería mecánica es la fabricación del Airbus A-300.
Las alas de este avión se fabrican en el Reino Unido, mientras que parte del fuselaje se
fabrica en Italia y el resto en Francia. Para que las partes delantera y trasera del fuselaje
se unan correctamente, y que las alas se sujeten correctamente al fuselaje, solo es
necesario proporcionar una especificación detallada de cómo se unirán exactamente las
partes relevantes la interfaz entre estos subconjuntos.
La interfaz para un componente de un programa Fortran consta de dos partes:
El primero, la interfaz propiamente dicha, es la lista de argumentos suministrados al
componente (o más bien al subprograma que es, en efecto, la unidad principal del
programa del componente); Este es un concepto que ya hemos discutido en el contexto
de una interfaz de procedimiento. El segundo es la especificación de la acción del
componente.
Un plan de estructura brinda una gran ayuda en el desarrollo modular, ya que identifica,
de manera natural, los componentes principales del programa. En lugar de expandir estos
componentes dentro de un plan de estructura única, como lo hemos estado haciendo
hasta ahora, podemos tratar cada uno de estos componentes principales como un
subproblema separado cuya solución se debe desarrollar de forma independiente.
Una vez desarrollados, se pueden integrar para formar el programa completo de acuerdo
con el plan de estructura de nivel superior. Desarrollaremos esta idea más adelante en
capítulos posteriores, pero por el momento simplemente combinaremos el concepto de un
plan de estructura con el de una estructura de programa modular.
Módulos
Como hemos visto, las funciones y subrutinas son muy similares en muchos aspectos y
representan dos tipos diferentes de procedimientos. Aunque conoceremos otras formas
de escribir procedimientos en el Capítulo 11, normalmente se escriben como unidades de
programas independientes en forma de subprogramas externos.
Otra forma de unidad de programa, que se utiliza para un propósito bastante diferente y
no existía en FORTRAN 77, es un módulo.
De manera similar a una función o una subrutina, un módulo comienza con una
declaración inicial del formulario.
Como de costumbre, recomendamos que siempre se use la primera forma.
El propósito de un módulo es bastante diferente de una función o una subrutina. En pocas
palabras, existe un módulo para hacer que algunas o todas las entidades declaradas
dentro de él sean accesibles para más de una unidad de programa. Se puede declarar
una amplia gama de elementos dentro de un módulo y hacerlos accesibles a otras partes
del programa de una manera que proporcione una funcionalidad extremadamente
poderosa. Sin embargo, antes de discutir la potencia total de los módulos, es necesario
comprender más acerca de algunas de las otras características de Fortran, por lo que la
discusión principal de los módulos se postergará hasta el Capítulo 12. Un uso muy
importante de los módulos que podemos presentar en este, Sin embargo, la etapa se
relaciona con la accesibilidad global de variables, constantes y definiciones de tipo
derivadas.
Como ya hemos señalado, los únicos elementos en un procedimiento que son accesibles
fuera del procedimiento son aquellos que se especifican como argumentos ficticios o
como la variable de resultado de una función. Del mismo modo, los únicos elementos en
una unidad de programa de llamada que son accesibles dentro de un procedimiento son
aquellos que se especifican como argumentos reales en la llamada de subrutina o
referencia de función. Un módulo permite que un conjunto definido de variables y / o
constantes esté disponible para cualquier unidad de programa que acceda a ellas
mediante una instrucción USE apropiada.
La declaración USE toma la forma
Use nombre
donde nombre es el nombre del módulo en el que se declaran las variables, constantes y /
o definiciones de tipo derivadas.