Вы находитесь на странице: 1из 17

SIMULACIÓN

NUMÉRICA DE YNF
2da. Investigación
CONSTANTES Y VARIABLES

Los programas en FORTRAN manejan datos de dos tipos: constantes y variables.


Las constantes tienen un valor fijo, mientras que las variables se identifican con
nombres y pueden cambiar de valor durante la ejecución del programa.
Constantes y variables deben tener tipos específicos que indican al programa
como almacenarlas y manejarlas.

Declaración de variables

Las variables utilizadas en un programa FORTRAN deben declararse como uno


de los tipos mencionados a continuación. Por compatibilidad con versiones viejas
de FORTRAN, se asume que aquellas variables que no han sido declaradas
tienen un tipo implícito de acuerdo a la siguiente regla: variables cuyos nombres
empiezan con {i,j,k,l,m,n} se asumen enteras, y todas las demás se asumen
reales.

El uso de declaraciones implícitas es indeseable, pues hace más difícil detectar


posibles errores de tecleo. Para evitar usar declaraciones implícitas se debe poner
al principio de las declaraciones la línea:

implicit none
LOGICAL

¿Qué es?

son variables binarias, o sea, solo toman dos valores posibles: verdadero (.true.) o
falso (.false.)

¿Para qué se usa?

Se usan para almacenar el resultado de alguna comprobación. Por ejemplo, puede


guardar si el usuario a introducido un valor o no. Verdadero si lo introdujo, en caso
contrario falso.

Sintaxis

logical lista de variables

Ejemplo
INTEGER

¿Qué es?

Integer es “entero” en inglés, por lo tanto, las variables declaradas de este tipo son
considerados números enteros.

¿Para qué se usa?

Se utiliza para la declaración de variables enteras

como el -1,01,2,3… o sea, sin cifras decimales. Es importante recalcar que las
operaciones que se hagan entre números enteros, incluida la división, darán
números enteros, por ejemplo 3+5=8, pero 3/5=0, o sea, solo conserva la parte
entera del número resultante.

Por defecto usara 4 bites de memoria para guardar los números. Esto quiere decir
que el rango de valores que puede almacenar es → (-2147483648 : 2147483647)

Sintaxis

integer lista de variables

Ejemplo
REAL

¿Qué es?

números reales que pueden tomar valores positivos o negativos entre límites que
dependen de la computadora y el compilador.

¿Para qué se usa?

Valores reales guardados en 4 bytes y con 8 cifras significativas. Se indican con


punto decimal, y de ser necesario el exponente de la potencia de 10 después de
una E: 1., -3.1416, 6.25E-10, etc.

Sintaxis

real lista de variables

Ejemplo
CHARACTER

Variables que corresponden a cadenas de caracteres. Al declarar una variable de


este tipo se debe especificar cuantos caracteres puede tener. Estas variables
deben estar contenidas en comillas: “hola”, “abcdfe”, “Me llamo Luis”, “128.3”, etc.

Las variables en las que se pueden almacenar caracteres se llaman


alfanuméricas; su nombre sigue las mismas convenciones que el de las variables
numéricas, pero se definen mediante la instrucción CHARACTER, especificándose
la longitud de la variable mediante el descriptor (LEN=n), siendo n el número de
caracteres que puede almacenar la variable. Así, p. ej.,

CHARACTER (LEN=10) :: NOMBRE

define una variable llamada NOMBRE que puede contener hasta diez caracteres.
Los caracteres almacenados en las variables alfanuméricas pueden ser
cualesquiera y han de estar incluidos entre comillas simples, p. ej., '1', 'El resultado
es:', etc.

EJEMPLO
ARREGLOS

FORTRAN puede almacenar en memoria vectores y matrices utilizando variables


llamadas “arreglos” que contienen muchos elementos. Los arreglos pueden ser de
cualquiera de los tipos aceptados por FORTRAN.

Arreglos de tamaño fijo

La manera más directa de declarar un arreglo es dando su tamaño desde el


principio. Por ejemplo, para declarar un vector de 3 componentes y una matriz de
4 por 5 se escribe:

real, dimension(3) :: v

real, dimension(4,5) :: m

Es posible declarar arreglos con un número arbitrario de dimensiones. Por


ejemplo, un arreglo de 4 índices cuyos valores van de 1 a 2 se declara como:

real, dimension(2,2,2,2) :: R

También se puede dar explícitamente el rango permitido para los índices:

real, dimension(0:8), v1

real, dimension(2:5), v2

Esto declara al vector v1 con índices que van de 0 a 8, y al vector v2 con índices
que van de 2 a 5. Existe una abreviación de la declaración de arreglos. Por
ejemplo, los arreglos v,m,R de los ejemplos anteriores se pueden también declarar
como:

real :: v(3), m(4,5), R(2,2,2,2)

Para referirse a un miembro especifico del arreglo, se utilizan expresiones del tipo:

a = v(1) + m(1,1) + R(1,2,1,2)


Es posible también realizar operaciones con arreglos completos a la vez (esto no
era posible en FORTRAN 77). Por ejemplo, si a, b, c son arreglos con las mismas
dimensiones, podemos escribir:

a = b+c

a = b*c

a = b**2

La primera operación suma uno a uno los elementos de los arreglos b y c y los
coloca en los elementos correspondientes de a. La segunda operación hace lo
mismo, pero multiplicando los elementos de b y c (Ojo: esto NO es una
multiplicación de matrices, sino una multiplicación elemento a elemento). La última
operación eleva cada elemento de b al cuadrado y los asigna al elemento
correspondiente de a. Para este tipo de operaciones es muy importante que los
arreglos involucrados tengan las mismas dimensiones, o habrá un error.

EJEMPLO
ARREGLOS (ARRAY) – 1 DIMENSIÓN

El arreglo es un tipo estructurado de dato, el cual es capaz de almacenar una


colección de datos del mismo tipo.
 Es la estructura de datos más utilizada por los Programadores.
 Es la forma más simple de agrupar componentes de un mismo tipo y
asociarles un número de orden de cada componente llamado índice.
 Posee un tamaño

El arreglo es una estructura multidimensional.


En una dimensión puede ser visto como un vector, necesita de un índice (la
posición) para recorrer sus elementos.

VECTORES
ARREGLOS BIDIMENSIONALES
Las matrices son muy importantes en álgebra lineal. Las matrices son usualmente
representadas por arreglos bidimensionales. Por ejemplo, la declaración
real A (3,5)
define un arreglo bidimensional de 3 x 5 = 15 números del tipo real. Es útil pensar
que el primer índice es el índice del renglón, y el segundo índice corresponde a la
columna. Por lo tanto, se vería como:

Un arreglo bidimensional podría también tener índices de rango arbitrario. La


sintaxis general para declarar el arreglo es:

El tamaño total del arreglo es de:

Es muy común en Fortran declarar arreglos que son más grandes que la matriz
que se va a guardar. Lo anterior es porque Fortran no tiene almacenamiento
dinámico de memoria como el lenguaje C. Por ejemplo:

Los elementos en la submatriz A (1:3,4:5) no están definidas. No se debe


considerar que estos elementos están inicializados a cero por el compilador
(algunos compiladores lo hacen, pero otros no).
Forma de Almacenamiento para un arreglo bidimensional
Fortran almacena los arreglos de más de una dimensión como una secuencia
contigua lineal de elementos. Es importante saber que los arreglos
bidimensionales son guardados por columnas. Por lo tanto, en el ejemplo anterior,
el elemento del arreglo (1,2) esta después del elemento (3,1), luego sigue el resto
de la segunda columna, la tercera columna y así sucesivamente.
Considerando otra vez el ejemplo donde solamente se usa la submatriz de 3 x 3
del arreglo de 3 x 5. Los primeros 9 elementos que interesan se encuentran en las
primeras nueve localidades de memoria, mientras que las últimas seis celdas no
son usadas. Lo anterior funciona en forma transparente porque la dimensión
principal es la misma para ambos, el arreglo y la matriz que se guarda en el
arreglo. Sin embargo, frecuentemente la dimensión principal del arreglo será más
grande que la primera dimensión de la matriz. Entonces la matriz no será
guardada en forma contigua en memoria, aún si el arreglo es contiguo. Por
ejemplo, supongamos que la declaración hubiera sido A (5,3) entonces hubiera
habido dos celdas "sin usar" entre el fin de la primera columna y el principio de la
siguiente columna (suponiendo que asumimos que la submatriz es de 3 x 3).

Esto podría parecer complicado, pero actualmente es muy simple cuando se


empieza a usar. Si se tiene en duda, puede ser útil hallar la dirección de un
elemento del arreglo. Cada arreglo tendrá una dirección en la memoria asignada a
partir del arreglo, que es el elemento (1,1). La dirección del elemento (i,j) está
dada por la siguiente expresión:

donde princ es la dimensión principal (la columna) de A. Observar que princ es en


general diferente de la dimensión actual de la matriz. Muchos errores de lógica en
Fortran son causados por lo anterior, por lo tanto, es importante entender la
diferencia.
Arreglos Multi-dimensionales
Fortran 77 permite arreglos de hasta 7 dimensiones. La sintaxis y forma de
almacenamiento es análoga al caso de dos dimensiones.
La sentencia dimensión.
Hay una forma alterna para declarar un arreglo en Fortran 77. Las siguientes
sentencias

son equivalentes a
¿COMO EL VALOR DE UNA VARIABLE SE GUARDA EN LA
MEMORIA?

ALMACENAMIENTO DE VARIABLES EN MEMORIA


Las variables se representan con identificadores que hacen referencia a un lugar
de la memoria del programa en donde se almacena un dato. Una variable está
asociada a un tipo de datos, el cual y en función del tamaño del mismo determina
la cantidad de bytes que serán necesarios para almacenar la variable. En el caso
de colecciones y al contrario que con el resto de tipo de datos, ya sean primitivos u
objetos complejos, la memoria asignada a almacenar tales variables no se conoce
de antemano, lo cual lleva a establecer políticas de reserva de memoria:

 Reserva fija de memoria. - Implica predeterminar la cantidad de memoria que


se asignará a la colección. Es una política extremadamente rígida, ya que
llegados al final de la zona de memoria no se podrían almacenar nuevos
elementos.
 Reserva variable de memoria. - Se dedica una zona de memoria, pudiendo ser
de un tamaño predeterminado o no, y en caso de sobrepasarse dicha zona de
memoria se vuelve a asignar otra zona, contigua o no, para impedir la
restricción mencionada arriba.

DEFINICIÓN DE VARIABLE
Una variable es un espacio para guardar información. Entrando más a detalle una
variable es una ubicación en la memoria de la computadora en la cual se puede
grabar un valor y por la cual se puede recuperar ese valor más tarde.

La memoria RAM de la computadora puede ser vista como una serie de pequeñas
casillas, cada una de las casillas esta numerada secuencialmente, este número
que se le asigna representa su dirección de memoria y su objetivo es identificarla.

Una variable reserva uno o más casillas en las cuales es posible grabar datos.

Los nombres de las variables (por ejemplo, myVariable) es una etiqueta en una
sola casilla, para que se pueda encontrarla fácilmente sin saber su actual dirección
de memoria.
RAM es la memoria de acceso aleatorio. Un programa cuando es ejecutado o
está corriendo, es grabado temporalmente en la memoria RAM. Todas las
variables, son también, creadas en la memoria RAM. Cuando los programadores
hablan de memoria, generalmente se están refiriendo a la memoria RAM.

RESERVANDO MEMORIA
Se reserva memoria en el momento de definición de las variables, en este
momento es donde se debe de especificar al compilador que clase de variable es:
un entero (int), un carácter (char), etc. Esta información le dice al compilador
cuanto de espacio debe separar o reservar, y que tipo de valor se va ha guardar
en la variable.

Cada casilla de memoria tiene un byte de capacidad. Si el tipo de variable que se


crea es de dos bytes te tamaño, este necesita de dos bytes de memoria, o de dos
casillas. El tipo de variable (por ejemplo, entero) le dice al compilador cuanta
memoria (o cuantas casillas) tiene que reservar para la variable.

Porque los computadores usan los bits y los bytes para representar los valores, y
porque la memoria es medida en bytes, es importante entender y sentirse cómodo
con este concepto.
ARREGLO DINÁMICO
Hasta aquí el tamaño de los arrays se ha especificado en las sentencias de
declaración de tipo. El tamaño se fija en tiempo de compilación y a partir de
entonces no se puede modificar. Se dice que estos son arrays estáticos.
A partir del Fortran 90, es posible usar arrays cuyo tamaño se fija en tiempo de
ejecución, estos son los llamados arrays dinámicos.
Sintaxis general:

Con ALLOCATABLE se declara que los arrays de la lista serán dimensionados


dinámicamente. Cada una de sus dimensiones se declara con dos puntos (:), sin
especificar sus límites.
Para asignar memoria en tiempo de ejecución a los arrays dinámicos se usa la
sentencia ALLOCATE, en la que se especifican los tamaños. Su sintaxis es:

Esta instrucción asigna memoria en tiempo de ejecución para la lista de arrays


previamente declarada con el atributo ALLOCATABLE. Establece para cada array
su tamaño, con los límites inferior y superior de cada dimensión.

STAT= estado. Cualquier fallo en la localización de memoria causa un error en


tiempo de ejecución, a menos que se use este parámetro. La variable entera
estado devuelve un cero si se ha conseguido reservar espacio suficiente en
memoria, en otro caso devuelve un número de error que depende del compilador.

Asignar y liberar espacio de memoria para arrays es útil en programas grandes


con necesidades grandes de memoria. Para liberar espacio se utiliza la instrucción
DEALLOCATE-

Sintaxis general:

A partir de su ejecución, los arrays relacionados ya no juegan ningún papel y se


libera su espacio de memoria que queda disponible para realizar nuevas reservas
de espacio. Cualquier fallo al intentar liberar la memoria causa un error en tiempo
de ejecución, a menos que el parámetro STAT= estado esté presente. La variable
estado devuelve un cero si la liberación de memoria se hizo con éxito, en otro
caso devuelve un número de error que depende del compilador.
BIBLIOGRAFÍA

 Introducción a FORTRAN. Recuperado el 09 de enero de 2018, desde:


http://pelusa.fis.cinvestav.mx/tmatos/LaSumA/LaSumA2_archivos/Sup
ercomputo/Fortran.pdf
 Variables de FORTRAN. Recuperado el 09 de enero de 2018, desde:
https://www.uam.es/personal_pdi/ciencias/ppou/CNC/TEMA1/FORTRA
N90.html

Вам также может понравиться