Mucha gente percibe Fortran como un lenguaje de programación arcaico y "muerto". Sin embargo, la mayor parte del código científico y de ingeniería está escrito en Fortran. Como tal, la programación en F77 y F90 sigue siendo una habilidad necesaria para la mayoría de los programadores técnicos. Además, los últimos estándares de Fortran (2003, 2008, 2015) permiten al programador escribir código altamente eficiente con el mínimo esfuerzo, mientras utiliza todas las características del lenguaje moderno, como OOP (programación orientada a objetos). FORTRAN es un acrónimo de "FORmula TRANslation" y es más adecuado para aplicaciones matemáticas y numéricas en lugar de aplicaciones gráficas o de bases de datos. La mayoría de los códigos de fortran toman la entrada de texto de un archivo o línea de comandos en lugar de un menú o interfaz GUI.
Pasos
Parte 1 de 4: Escribir y compilar un programa simple
Paso 1. Escriba un programa "Hola mundo"
Este suele ser el primer programa que escribe en cualquier idioma y simplemente imprime "Hola mundo" en la pantalla. Escriba el siguiente código en cualquier editor de texto y guárdelo como helloworld.f. Preste atención a que debe haber exactamente 6 espacios delante de cada línea.
programa helloworld implícito ningún carácter * 13 hello_string hello_string = "¡Hola, mundo!" escribir (*, *) hello_string finalizar el programa helloworld
Propina: Los espacios solo son necesarios en las versiones de Fortran hasta FORTRAN 77. Si está usando una versión más nueva, puede eliminar los espacios. Compile programas de una versión más reciente con f95, no con f77; use.f95 como extensión de archivo en lugar de solo.f.
Paso 2. Compile el programa
Para hacer esto, escriba f77 helloworld.f en la línea de comando. Si esto da un error, probablemente aún no haya instalado un compilador de Fortran como, por ejemplo, gfortran.
Paso 3. Ejecute su programa
El compilador ha producido un archivo llamado a.out. Ejecute este archivo escribiendo./a.out.
Paso 4. Comprenda lo que acaba de escribir
-
programa helloworld
indica el inicio del programa "helloworld". Similar,
final del programa helloworld
- indica su final.
-
De forma predeterminada, si no declara un tipo de variable, Fortran trata una variable con un nombre que comienza con una letra de la i a la n como un número entero y todas las demás como un número real. Se recomienda utilizar
ninguno implícito
- si no necesitas ese comportamiento.
-
carácter * 13 hello_string
- declara una matriz de caracteres que se llama hello_string.
-
hello_string = "¡Hola, mundo!"
- asigna el valor "¡Hola, mundo!" a la matriz declarada. A diferencia de otros lenguajes como C, esto no se puede hacer en la misma línea que declarar la matriz.
-
escribir (*, *) hello_string
- imprime el valor de hello_string en la salida estándar. El primer * significa escribir en la salida estándar, a diferencia de algún archivo. El segundo * significa no utilizar ningún formato especial.
Paso 5. Agrega un comentario
Esto no es necesario en un programa tan simple, pero será útil cuando escriba algo más complejo, por lo que debe saber cómo agregarlos. Hay dos formas de agregar un comentario.
- Para agregar un comentario que tiene una línea completa por sí solo, escriba una c directamente en una nueva línea, sin los 6 espacios. Después de eso, escribe tu comentario. Debe dejar un espacio entre la cy su comentario para una mejor legibilidad, pero esto no es obligatorio. Tenga en cuenta que debe utilizar un! en lugar de una c en Fortran 95 y versiones posteriores.
- Para agregar un comentario en la misma línea que el código, agregue un! donde quieres que comience tu comentario. Nuevamente, no se requiere un espacio, pero mejora la legibilidad.
Parte 2 de 4: Uso de construcciones de entrada y if
Paso 1. Comprender los diferentes tipos de datos
- INTEGER se usa para números enteros, como 1, 3 o -3.
- REAL también puede contener un número que no es entero, como 2.5.
- COMPLEJO se utiliza para almacenar números complejos. El primer número es la parte real y el segundo la imaginaria.
- CARACTER se utiliza para caracteres, como letras o puntuación.
- LOGICAL puede ser.verdadero. o.false.. Esto es como el tipo booleano en otros lenguajes de programación.
Paso 2. Obtenga la entrada del usuario
En el programa "Hola mundo" que escribiste antes, obtener la entrada del usuario sería inútil. Así que abra un nuevo archivo y asígnele el nombre compnum.f. Cuando lo haya terminado, le dirá al usuario si el número que ingresó es positivo, negativo o igual a cero.
- Ingrese el compnum del programa de líneas y el compnum del programa final.
- Luego, declare una variable de tipo REAL. Asegúrese de que su declaración esté entre el principio y el final del programa.
- Explique al usuario lo que se supone que debe hacer. Escribe un texto con la función de escritura.
- Lea la entrada del usuario en la variable que declaró con la función de lectura.
programa compnum real r escribir (*, *) "Ingresar un número real:" leer (*, *) r finalizar el programa
Paso 3. Procese la entrada del usuario con una construcción if
Ponlo entre el
leer (*, *) r
y el
final del programa
- La comparación se realiza con.gt. (mayor que),.lt. (menor que) y.eq. (es igual a) en Fortran.
- Fortran admite if, else if y else
- Una construcción if de Fortran siempre termina con end if.
si (r.gt. 0) entonces escribe (*, *) "Ese número es positivo". de lo contrario, si (r.lt. 0) entonces escriba (*, *) "Ese número es negativo". de lo contrario, escriba (*, *) "Ese número es 0". terminara si
Propina: No es necesario sangrar el código dentro de las construcciones if con más espacios, pero mejora la legibilidad.
Paso 4. Compile y ejecute su programa
Ingrese algunos números para probarlo. Si ingresa una letra, generará un error, pero está bien porque el programa no verifica si la entrada es una letra, un número u otra cosa.
Parte 3 de 4: Uso de bucles y matrices
Paso 1. Abra un archivo nuevo
Dado que este concepto es diferente, tendrá que escribir un nuevo programa nuevamente. Nombra el archivo addmany.f. Inserte el programa correspondiente y las instrucciones del programa final, así como un ninguno implícito. Cuando haya terminado, este programa leerá 10 números e imprimirá su suma.
Paso 2. Declare una matriz de longitud 10
Aquí es donde almacenarás los números. Dado que probablemente desee una suma de números reales, debe declarar la matriz como real. Declaras tal matriz con
números reales (50)
(números es el nombre de la matriz, no una expresión).
Paso 3. Declare algunas variables
Declare numSum como un número real. Lo usará para almacenar la suma más tarde, pero como la suma ya está tomada por una expresión de Fortran, debe usar un nombre como numSum. Póngalo en 0. Declare i como un número entero y no le asigne ningún valor todavía. Eso se hará en el do-loop.
Paso 4. Cree un bucle de ejecución
El equivalente a eso en otros lenguajes de programación sería un bucle for.
- Un do-loop siempre comienza con do.
- En la misma línea que el do, separada de él por un espacio, está la etiqueta a la que irá el programa cuando esté terminado. Por ahora, solo escribe un 1, establecerás la etiqueta más tarde.
-
Después de eso, nuevamente solo separados por un espacio, escriba
i = 1, 10
. Esto hará que la variable i, que había declarado antes del ciclo, vaya de 1 a 10 en pasos de 1. Los pasos no se mencionan en esta expresión, por lo que Fortran usa el valor predeterminado de 1. También podría haber escrito
i = 1, 10, 1
-
Ponga algo de código dentro del ciclo (sangría con espacios para una mejor legibilidad). Para este programa, debe aumentar la variable numSum con el elemento i-ésimo de los números de la matriz. Esto se hace con la expresión
numSum = numSum + número (i)
- Termine el ciclo con una declaración de continuación que tenga una etiqueta. Escriba solo 4 espacios. Después de eso, escriba un 1. Esa es la etiqueta a la que le dijo al bucle de ejecución que vaya después de que termine. Luego, escriba un espacio y continúe. La expresión continue no hace nada, pero ofrece un buen lugar para colocar una etiqueta, además de mostrar que el do-loop terminó.
Su bucle do ahora debería verse así:
hacer 1 i = 1, 10 numSum = numSum + números (i) 1 continuar
Propina: En Fortran 95 y versiones posteriores, no es necesario utilizar etiquetas. Simplemente no ponga uno en la instrucción do y termine el ciclo con "end do" en lugar de "continue".
Paso 5. Imprima numSum
Además, tendría sentido dar algún contexto, por ejemplo, "La suma de sus números es:". Utilice la función de escritura para ambos. Su código completo ahora debería verse de la siguiente manera:
programa addmany implícito ninguno números reales (10) real numSum integer i numSum = 0 write (*, *) "Ingresa 10 números:" lee (*, *) números do 1 i = 1, 10 numSum = numSum + números (i) 1 continúe escriba (*, *) "Su suma es:" escriba (*, *) numSum finalice el programa addmany
Paso 6. Compile y ejecute su código
No olvide probarlo. Puedes presionar ↵ Enter después de cada número que ingreses o ingresar muchos números en la misma línea y separarlos con un espacio.
Parte 4 de 4: Comprensión de conceptos avanzados
Paso 1. Tenga una buena idea de lo que hará su programa
Piense en qué tipo de datos se necesitan como entrada, cómo estructurar la salida e incluya alguna salida intermedia para que pueda monitorear el progreso de su cálculo. Esto será muy útil si sabe que su cálculo se ejecutará durante mucho tiempo o implica varios pasos complicados.
Paso 2. Encuentre una buena referencia de Fortran
Fortran tiene muchas más funciones de las que se explican en este artículo, y pueden ser útiles para el programa que desea escribir. Una referencia enumera todas las funciones que tiene un lenguaje de programación. Este es uno para Fortran 77 y este es uno para Fortran 90/95.
Paso 3. Aprenda sobre subrutinas y funciones
Paso 4. Aprenda a leer y escribir desde / hacia archivos
También aprenda a formatear su entrada / salida.
Paso 5. Conozca las nuevas funciones de Fortran 90/95 y versiones posteriores
Omita este paso si sabe que solo estará escribiendo / manteniendo el código de Fortran 77.
Recuerde que Fortran 90 introdujo el código fuente "Free Form", que permite escribir el código sin espacios y sin el límite de 72 caracteres
Paso 6. Lea o busque algunos libros sobre programación científica
Por ejemplo, el libro "Recetas numéricas en Fortran" es tanto un buen texto sobre algoritmos de programación científica como una buena introducción a cómo armar códigos. Las ediciones más recientes incluyen capítulos sobre cómo programar en un entorno de lenguaje mixto y programación paralela. Otro ejemplo es "Modern Fortran en la práctica" escrito por Arjen Markus. El libro da una idea de cómo escribir programas de Fortran al estilo del siglo XXI de acuerdo con los últimos estándares de Fortran.
Paso 7. Aprenda a compilar un programa distribuido en varios archivos
Supongamos que su programa Fortran se distribuye entre los archivos main.f y morestuff.f, y que desea que el binario resultante se llame allstuff. Entonces tendrás que escribir los siguientes comandos en la línea de comandos:
f77 -c morestuff.f f77 -c main.f f77 -c morestuff.f f77 -o allstuff main.o morestuff.f
Luego ejecute el archivo escribiendo./allstuff.
Propina: Esto funciona de la misma manera con las versiones más recientes de Fortran. Simplemente reemplace.f con la extensión correcta y f77 con la versión correcta del compilador.
Paso 8. Utilice la optimización que proporciona su compilador
La mayoría de los compiladores incluyen algoritmos de optimización que mejoran la eficiencia de su código. Por lo general, estos se activan al incluir un indicador -O, -O2 o -O3 al compilar (nuevamente, dependiendo de su versión de fortran).
-
Generalmente, el nivel más bajo -O o -O2 es el mejor. Tenga en cuenta que el uso de la opción de optimización más agresiva puede introducir errores en códigos complejos e incluso ralentizar las cosas. Prueba tu código.
Consejos
- Empiece con programas pequeños. Cuando esté creando su propio código, intente identificar la parte más esencial del problema: si es la entrada de datos o la llamada de las funciones, la estructura del ciclo (estos son algunos ejemplos muy elementales) y comience desde allí. Luego, construya sobre eso en pequeños incrementos.
- Fortran no distingue entre mayúsculas y minúsculas. Por ejemplo, podría declarar una variable "Num real" y escribir "num = 1" en la siguiente línea para asignarle un valor. Pero ese es un mal estilo, así que evítalo. Más importante aún, Fortran tampoco se preocupa por el caso de funciones y declaraciones. Es bastante común escribir funciones y declaraciones en MAYÚSCULAS y variables en minúsculas.
- EMACS es un buen editor de texto gratuito para usar en lugar del Bloc de notas.
- Es posible que al principio le resulte más fácil utilizar un IDE (entorno de desarrollo integrado) en línea. Una buena opción es Coding Ground. Allí encontrará una gran cantidad de lenguajes de programación, incluido Fortran-95. Otra opción es Ideone.