Mathematics">
Practica 2 Introducción Al Fortran
Practica 2 Introducción Al Fortran
Practica 2 Introducción Al Fortran
PRACTICA 2
Introducción Al Fortran
Grupo: 9EV1
es utilizado, por una parte, debido a la existencia de numerosas bibliotecas de funciones utilizables en FORTRAN, por otra
parte, porque existe compiladores FORTRAN potentes que producen ejecutables muy rápidos. No obstante, se reemplaza
cada vez más, incluso para aplicaciones científicas, por los lenguajes C y C ++
proceso de transformar un programa informático escrito en un lenguaje en un conjunto de instrucciones en otro formato o
lenguaje
Debido a que este texto está destinado al lenguaje de programación FORTRAN se precisara cual es el proceso de
compilación, que permite convertir un programa en código fuente a código máquina. Un compilador es un programa que a su
vez traduce un programa escrito en un lenguaje de programación a otro lenguaje de programación generando un programa
equivalente. Usualmente el segundo lenguaje es código máquina, pero también puede ser simplemente texto. Este proceso
de traducción se conoce como compilación.
Nombre del programa. El nombre del programa es en realidad opcional, pero es muy buena idea tenerlo.
Cuerpo del programa. Comandos para ejecutar en el Código. Los comandos se ejecutan en orden de aparición. El programa
siempre debe terminar con el comando END.
Subprogramas. El cuerpo del programa puede llamar a subprogramas que realicen tareas específicas. Es buena práctica de
programación separar un programa en bloques y poner cada bloque en diferentes subprogramas. De hecho, para programas
largos es buena idea tener cada subprograma en archivos separados.
Operaciones aritméticas. □ Funciones intrínsecas. □ Input y output. □ Iteraciones y bucles. □ Vectores. □ Decisiones. □
Funciones y subrutinas.
Constantes y variables. Las constantes tienen un valor fijo, mientras que las variables se identifican con nombres y pueden
cambiar de valor durante a la ejecución del programa. Constantes y variables deben tener tipos espec´ıficos que indican al
programa como almacenarlas y manejarlas.
logical: Las variables lógicas solo pueden tener dos valores: .true. (verdadero) y .false. (falso).
integer: Valores enteros guardados en 4 bytes. Se indican como números sin punto decimal: 1, 2, -3, 25, etc.
real: 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.
doublé: Valores reales de doble precisión guardados en 8 bytes y con 16 cifras significativas, también se denotan por real(8).
Se indican con punto decimal y el exponente de la potencia de 10 después de una D: 1.D0, -3.1416D0, 6.25D-10, etc. Son
muy ´útiles en cálculos numéricos largos, donde los errores de redondeo pueden hacer que las ´ultimas 4 o 5 cifras
significativas de un número real sean basura.
quadruple: Valores reales de cuádruple precisión guardados en 16 bytes y con 32 cifras significativas, también se denotan por
real (16). Se indican con punto decimal y el exponente de la potencia de 10 después de una Q: 1.Q0, -3.1416Q0, 6.25Q-10,
etc.
complex: Dos valores reales formando un par y que en operaciones matemáticas se tratan como la parte real e imaginaria de
un número complejo: (1.,-2.), (1.0E0,-2.0E0). También existen versiones de doble y cuádruple precisión.
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 utilizadas en un programa FORTRAN deben declararse como uno de los tipos mencionados en la sección
anterior. 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.
un programa FORTRAN ejecuta los comandos en el orden en el que se escribieron, uno a la vez. Sin embargo,
frecuentemente hay situaciones en las que esto es demasiado simple para lo que uno quiere hacer. A veces es necesario
repetir una misma operación muchas veces con ligeras variaciones, y otras veces hay operaciones que solo deben realizarse
si se cumple alguna condición. Para este tipo de situaciones existen los llamados “comandos de control del programa” y que
caen en dos tipos básicos: “loops” y condicionales
10.- Que tipo de ecuaciones se solucionan en el programa FORTRAN
Predicción numérica del tiempo, análisis de elementos finitos, dinámica de fluidos computacional (CFD)
13.-PARA LOS PUNTOS SIGUIENTES, INCLUIR COMO EVIDENCIA LAS PANTALLAS DEL PC:
Dos maneras:
• entrada/salida con formato. El programador define la manera exacta en que quiere leer/escribir los datos.
• entrada/salida dirigida por lista. En este caso, el formato de los datos depende de sus tipos (enteros, reales, etc.) y del
computador. Se dice que es una entrada/salida con formato libre.
• lectura: sentencia READ
El primer asterisco se refiere al dispositivo de salida estándar (generalmente, la pantalla) y el segundo asterisco se refiere al
formato libre con que se mostrarán los elementos de la lista.
El formato puede ser un * (salida dirigida por lista) o una expresión carácter, variable o constante, que contiene los
descriptores de formato de la lista, o la etiqueta de una sentencia FORMAT, es decir, un entero entre 1 y 99999. En este
último caso, debe existir además una sentencia de la forma:
El primer asterisco se refiere al dispositivo de entrada estándar (generalmente, el teclado) y el segundo asterisco se refiere al
formato libre con que se leerán las variables de la lista.
Descriptores de formato
Una vez finalizada la captura del código de nuestro programa, debemos compilar nuestro código; pero antes es necesario
salvar nuestro archivo de texto con extensión .F90; para ello hacemos clic en el menú FILE y posteriormente elegimos la
opción SAVE
Después de salvar nuestro archivo estamos listos para compilar nuestro archivo; primeramente hacemos clic en el menú
BUILD y después elegimos la opción COMPILE
Una vez compilado el programa estamos en condiciones de construir el archivo ejecutable para nuestro programa. Siempre y
cuando nuestro código no haya tenido errores. En caso contrario debemos depurar nuestro programa y eliminar dichos
errores. Para construir el ejecutable debemos hacer clic en el menú BUILD y elegir la opción BUILD [Hola.exe] o bien
REBUILD ALL
Después de compilar y construir nuestro programa estamos en condiciones de ejecutarlo. Para ejecutar nuestro programa,
basta con hacer clic en el menú BUILD y después elegir la opción EXECUTE
16.-DESCRIBA LOS PASOS PARA LAS INSTRUCCIONES BASICAS
• Todas las instrucciones en FORTRAN deben de escribirse entre las columnas 7 hasta la 72. Los caracteres escritos a
partir de la columna 73 no se consideran. Esto se puede obviar usando formato libre.
• Si una instrucción necesita una etiqueta, ésta debe de aparecer en las columnas 1-5. Las etiquetas son números
enteros que van del 1 hasta el 99999.
• Ocasionalmente, una instrucción ocupa más espacio que el correspondiente a una línea (7-72). En este caso, la
instrucción puede continuarse en líneas consecutivas siempre que en la columna 6 de las líneas continuación se
coloque un carácter numérico o alfanumérico (excepto el 0 o el espacio). Un 0 o un espacio indica que se trata de la
primera línea de la instrucción.
• Líneas que están vacías o que tienen una letra C o un asterisco * en la columna 1 representan líneas de comentarios
que no son ejecutadas. 5
En FORTRAN la lectura y escritura de datos se realiza a través de sentencias especiales que permiten al usuario leer o
escribir datos desde o hacia un archivo o dispositivo.
Para leer datos, se utiliza la sentencia "READ", seguida del nombre del archivo o dispositivo y de las variables que se desean
leer. Por ejemplo, supongamos que tenemos un archivo llamado "datos.txt" que contiene tres números enteros separados por
espacios en cada línea. Para leer estos datos y almacenarlos en las variables "a", "b" y "c", se podría utilizar la siguiente
sentencia:
READ(1, *) a, b, c
CLOSE(1)
La sentencia "OPEN" se utiliza para abrir el archivo "datos.txt" en modo lectura, mientras que la sentencia "CLOSE" se utiliza
para cerrar el archivo una vez que se han leído los datos. La sentencia "READ" se encarga de leer los datos y almacenarlos
en las variables correspondientes.
Para escribir datos, se utiliza la sentencia "WRITE", seguida del nombre del archivo o dispositivo y de las variables que se
desean escribir. Por ejemplo, para escribir los valores de las variables "a", "b" y "c" en un archivo llamado "resultados.txt", se
podría utilizar la siguiente sentencia:
WRITE(1, *) a, b, c
CLOSE(1)
En este caso, la sentencia "OPEN" se utiliza para crear un nuevo archivo llamado "resultados.txt" en modo escritura, mientras
que la sentencia "WRITE" se encarga de escribir los valores de las variables "a", "b" y "c" en el archivo. La sentencia "CLOSE"
se utiliza para cerrar el archivo una vez que se han escrito los datos.
Cabe mencionar que existen diferentes opciones para controlar el formato de lectura y escritura de datos en FORTRAN, como
por ejemplo especificar el número de decimales, el ancho de los campos, el separador de campos, etc.
En FORTRAN, las operaciones con tableros se pueden realizar utilizando arreglos o arrays de dos o más dimensiones.
Supongamos que tenemos dos matrices A y B, cada una de tamaño 3x3, y queremos calcular la suma de ambas matrices y
almacenar el resultado en una tercera matriz C. Para hacerlo, podríamos utilizar el siguiente código:
INTEGER :: i, j
A = reshape( (/1., 2., 3., 4., 5., 6., 7., 8., 9./), (/3, 3/) )
B = reshape( (/9., 8., 7., 6., 5., 4., 3., 2., 1./), (/3, 3/) )
DO i = 1, 3
DO j = 1, 3
END DO
END DO
DO i = 1, 3
WRITE(*,*) C(i,:)
END DO
En este ejemplo, utilizamos arreglos de dos dimensiones (3x3) para representar las matrices A, B y C. Primero, inicializamos
las matrices A y B con algunos valores. Luego, utilizamos dos bucles DO anidados para recorrer todas las posiciones de las
matrices A, B y C, y sumar las correspondientes entradas de A y B para almacenar el resultado en la matriz C. Finalmente,
imprimimos la matriz suma C utilizando otra estructura de bucle DO.
También existen en FORTRAN bibliotecas y rutinas especializadas para el manejo de matrices y operaciones matriciales,
como por ejemplo BLAS (Basic Linear Algebra Subprograms) y LAPACK (Linear Algebra PACKage), que pueden ser de gran
utilidad en aplicaciones que involucran cálculo numérico y procesamiento de datos en tableros.
19.-OPERACIONES MATRICIALES
En FORTRAN, las operaciones matriciales se pueden realizar utilizando bibliotecas especializadas como BLAS (Basic Linear
Algebra Subprograms) o LAPACK (Linear Algebra PACKage), que proporcionan rutinas para realizar operaciones de álgebra
lineal como la multiplicación de matrices, la descomposición de matrices, la resolución de sistemas de ecuaciones lineales,
entre otros.
Para utilizar estas bibliotecas, primero es necesario instalarlas en el sistema y luego vincularlas al programa FORTRAN
mediante opciones de compilación específicas. Por ejemplo, para utilizar BLAS, podemos utilizar las siguientes opciones de
compilación:
Una vez que hemos instalado y vinculado la biblioteca, podemos utilizar las rutinas y funciones que proporciona para realizar
operaciones matriciales. A continuación se muestra un ejemplo de cómo realizar la multiplicación de dos matrices utilizando la
función DGEMM de BLAS:
PROGRAM ejemplo
INTEGER :: m, n, k, i, j
DO i = 1, m
WRITE(*,*) C(i,:)
END DO
END PROGRAM
En este ejemplo, utilizamos la función DGEMM de BLAS para realizar la multiplicación de las matrices A y B y almacenar el
resultado en la matriz C. Los parámetros de la función especifican la forma en que se realiza la multiplicación, la matriz A, la
matriz B y la matriz resultado C.
Cabe mencionar que existen muchas otras funciones y rutinas disponibles en BLAS y LAPACK para realizar una amplia
variedad de operaciones matriciales y de álgebra lineal. La elección de una biblioteca específica y las rutinas a utilizar
dependerá de las necesidades específicas de cada aplicación.
FORTRAN cuenta con varias estructuras e instrucciones de control que permiten la toma de decisiones y la repetición de
bloques de código. A continuación, se describen algunas de las estructuras e instrucciones de control más comunes en
FORTRAN:
Estructura IF-THEN-ELSE: Permite tomar decisiones en función del valor de una expresión lógica. La sintaxis básica es la
siguiente:
ELSE
END IF
Estructura DO: Permite repetir un bloque de código un número determinado de veces. La sintaxis básica es la siguiente:
END DO
Donde i es una variable de control que toma valores desde inicio hasta fin con un incremento de paso.
Estructura DO WHILE: Permite repetir un bloque de código mientras se cumpla una expresión lógica. La sintaxis básica es la
siguiente:
END DO
Estructura SELECT CASE: Permite seleccionar un bloque de código en función del valor de una variable. La sintaxis básica
es la siguiente:
CASE (valor1)
CASE (valor2)
CASE DEFAULT
END SELECT
Instrucción CYCLE: Permite saltar a la siguiente iteración de un bucle DO sin ejecutar el resto del código dentro del bucle. La
sintaxis básica es la siguiente:
DO i = 1, n
IF (condición) CYCLE
END DO
Instrucción EXIT: Permite salir de un bucle DO o DO WHILE antes de que se alcance la última iteración. La sintaxis básica es
la siguiente:
DO i = 1, n
IF (condición) EXIT
END DO
Estas son algunas de las estructuras e instrucciones de control más comunes en FORTRAN. Es importante destacar que la
sintaxis y el uso de estas estructuras e instrucciones pueden variar dependiendo de la versión de FORTRAN que se esté
utilizando.