Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Capítulo 3
En este capítulo se discutirá sobre tres tipos básicos de datos que pueden ser
usados en cálculos o en otro tipo de expresiones y las instalaciones que contiene
Fortran para la entrada y salida de información numérica y textual. Hay dos tipos
fundamentales de valores numéricos, los que son enteros y los que no, estos se
conocen en Fortran como “enteros” y “números reales” respectivamente, y la
diferencia entre ellos es de vital importancia en los lenguajes de programación.
También existe un tipo de dato fundamental que permite el guardado y la
manipulación de caracteres no numéricos.
En resumen:
Un entero: se mantiene exacto en la memoria del computador, y tiene un rango
limitado que depende de la escritura de la computadora, son declaradas con la
sentencia Integer.
Un número real: es almacenado por el computador como un numero de punto
flotante, es decir, como una aproximación a un número fijo de dígitos significativos,
además tiene un rango bastante extendido que también depende de la escritura de
la computadora, son declaradas con la sentencia Real.
Variables: Las variables son un lugar en donde los datos pueden ser almacenados
dentro de la memoria del computador, todas las variables deben ser declaradas con
una declaración de tipo (valga la redundancia) antes de su primer uso. Solo hay dos
formas en las que se le puede dar algún valor a las variables, ya sea por asignación
o por la sentencia READ.
Existen también variables de valor fijo, llamadas constantes, las constantes
almacenan valores que no pueden ser modificadas durante la ejecución del
programa.
Por otra parte, las variables no numéricas son declaradas de manera similar a las
numéricas, con la sentencia Character sin embargo es necesario también
especificar la longitud de los caracteres que la variable podrá almacenar, esto se
hace con la sentencia LEN y el número de caracteres que se desea almacenar.
En total hay seis tipos de datos intrínsecos que son procesados por Fortran, de los
cuales ya se han mencionado los tres más importantes: Integer, Real y Character.
Sin embargo, también existe un dato que puede ser creado por el programador, los
datos derivados, cuyos componentes son datos de tipo intrínseco, para crear un
dato de tipo derivado se usa la sentencia TYPE.
Estos datos derivados tienen como componentes datos intrínsecos y otros datos
derivados, su función varía según la necesidad del programador. Un dato derivado
puede ser tanto una variable como un tipo, esto le da al programador mayor
sensación de personalización a la hora de escribir un programa.
Capítulo 4
Todas las unidades de programa tienen la misma estructura, iniciando con una
declaración inicial, alguna declaración de especificación, alguna declaración de
ejecución y una declaración de fin. Para el caso de una funcion externa tenemos la
siguiente estructura:
--------------------------------------------------------------------------------------------------------------
tipo FUNCTION nombre(argumento1, argumento2, …)
IMPLICIT NONE
...
Declaracion de specificacion
...
Declaracion de ejecucion
...
END FUNCTION nombre
--------------------------------------------------------------------------------------------------------------
Donde estos argumentos son argumentos falsos cuya función es representar otros
argumentos que serán usados cuando la función sea usada o referenciada, y el tipo
es el tipo de resultado de la función. Cada función debe contener una variable que
tenga el mismo nombre de la función y esta variable debe ser asignada o de otra
manera, un valor a devolver como el valor de la antes de salir de la función. Aunque
no es necesario, es posible añadir una especificación de atributos EXTERNAL a
dicha declaración; esta adición informa al compilador que el nombre es que de una
función y no de una variable. Por ejemplo:
--------------------------------------------------------------------------------------------------------------
REAL, EXTERNAL:: Nombre_de_la_funcion
--------------------------------------------------------------------------------------------------------------
La diferencia entre una función y una subrutina radica en la forma de referirse a ellas
y cómo se devuelven los resultados, si los hay. Los argumentos de una subrutina
se utilizan tanto para recibir información para operar como para devolver los
resultados. La estructura de una subrutina es similar a la de la funcion como
cualquier otra unidad de programa:
--------------------------------------------------------------------------------------------------------------
SUBROUTINE nombre(argumento1, argumento2, . . . )
IMPLICIT NONE ...
Declaracion de specificacion
...
Declaracion de ejecucion
...
END SUBROUTINE nombre
--------------------------------------------------------------------------------------------------------------
Una subrutina puede no tener argumentos, para este caso usamos la sentencia
CALL que da el nombre de la subrutina y una lista de argumentos que se utilizarán
para transmitir la información entre la llamada de la unidad del programa y la
subrutina. Por ejemplo:
--------------------------------------------------------------------------------------------------------------
CALL nombre ( arg 1, arg 2, . . . )
--------------------------------------------------------------------------------------------------------------
- INTENT(OUT): que informa al procesador que este argumento falso sólo para
devolver la información del procedimiento al programa de llamadas. Su valor
será indefinido al entrar en el procedimiento y se le debe dar un valor por
algún medio antes de ser usado en una expresión, o ser referido de otra
manera en un contexto que requerirá que se evalúe su valor.
La declaración que consiste en la única palabra SAVE siempre debe ser incluida en
cualquier módulo que declara cualquier variable. Los objetos de tipos derivados sólo
pueden utilizarse como argumentos para procedimientos si su tipo se define en un
MÓDULO que es utilizado por las unidades de programa pertinentes.
En general los módulos son de gran ayuda en el diseño y control de los datos ya
que permiten una programador para agrupar los datos de tal manera que todos los
procedimientos que requieren el acceso a un grupo particular puede hacerlo
simplemente usando el módulo apropiado.