Molta gent percep Fortran com un llenguatge de programació arcaic i "mort". No obstant això, la majoria dels codis científics i d'enginyeria s'escriuen a Fortran. Com a tal, la programació en F77 i F90 continua sent una habilitat necessària per a la majoria de programadors tècnics. A més, els últims estàndards Fortran (2003, 2008, 2015) permeten al programador escriure codi altament eficient amb el mínim esforç, tot utilitzant totes les funcions del llenguatge modern, com ara OOP (programació orientada a objectes). FORTRAN és un acrònim de "FORmula TRANslation" i és el més adequat per a aplicacions matemàtiques i numèriques en lloc d'aplicacions de gràfics o de bases de dades. La majoria de codis fortran prenen text des d'un fitxer o una línia d'ordres en lloc d'un menú o interfície GUI.
Passos
Primera part de 4: Escriure i compilar un programa senzill
Pas 1. Escriviu un programa "Hello World"
Aquest sol ser el primer programa que escriu en qualsevol idioma i només imprimeix "Hello world" a la pantalla. Escriviu el codi següent en qualsevol editor de text i deseu-lo com a helloworld.f. Fixeu-vos que hi ha d’haver exactament 6 espais davant de cada línia.
programa helloworld implícit cap caràcter * 13 hello_string hello_string = "Hola, món!" write (*, *) hello_string final del programa helloworld
Consell: Els espais només són necessaris en versions de Fortran fins a FORTRAN 77. Si utilitzeu una versió més recent, podeu deixar anar els espais. Compileu programes de la versió més recent amb f95, no f77; utilitzeu.f95 com a extensió de fitxer en lloc de només.f.
Pas 2. Compileu el programa
Per fer-ho, escriviu f77 helloworld.f a la línia d'ordres. Si això provoca un error, és probable que encara no hàgiu instal·lat un compilador Fortran com, per exemple, gfortran.
Pas 3. Executeu el programa
El compilador ha produït un fitxer anomenat a.out. Executeu aquest fitxer escrivint./a.out.
Pas 4. Compreneu el que acabeu d’escriure
-
programa helloworld
indica l'inici del programa "helloworld". De la mateixa manera,
programa final helloworld
- indica el seu final.
-
Per defecte, si no declareu un tipus de variable, Fortran tracta una variable amb un nom que comença amb una lletra de i a n com a enter, i totes les altres com a nombre real. Es recomana utilitzar
cap implícit
- si no necessiteu aquest comportament.
-
caràcter * 13 hello_string
- declara una matriu de caràcters que s'anomena hello_string.
-
hello_string = "Hola, món!"
- assigna el valor "Hola, món!" a la matriu declarada. A diferència d'altres idiomes com C, això no es pot fer a la mateixa línia que declarar la matriu.
-
escriu (*, *) hello_string
- imprimeix el valor de hello_string a la sortida estàndard. El primer * significa escriure a la sortida estàndard, a diferència d'algun fitxer. El segon * significa no utilitzar cap format especial.
Pas 5. Afegiu un comentari
Això no és necessari en un programa tan senzill, però serà útil quan escriviu alguna cosa més complex, de manera que heu de saber afegir-los. Hi ha dues maneres d’afegir un comentari.
- Per afegir un comentari que tingui tota una línia sola, escriviu una c directament en una nova línia, sense els 6 espais. Després, escriviu el vostre comentari. Haureu de deixar un espai entre la c i el vostre comentari per a una millor llegibilitat, però no és necessari. Tingueu en compte que heu d'utilitzar un! en lloc d'una c a Fortran 95 i més recent.
- Per afegir un comentari a la mateixa línia que el codi, afegiu un! on voleu que comenci el vostre comentari. De nou, no cal un espai, però millora la llegibilitat.
Part 2 de 4: Ús de les construccions d'entrada i If
Pas 1. Comprendre els diferents tipus de dades
- INTEGER s’utilitza per a nombres enters, com ara 1, 3 o -3.
- REAL també pot contenir un nombre que no sigui complet, com ara 2.5.
- COMPLEX s’utilitza per emmagatzemar nombres complexos. El primer número és el real i el segon la part imaginària.
- CARÀCTER s’utilitza per a caràcters, com ara lletres o puntuació.
- LOGICAL pot ser.veritable. o.false.. Això és com el tipus booleà en altres llenguatges de programació.
Pas 2. Obteniu l'entrada de l'usuari
Al programa "Hola món" que heu escrit anteriorment, no seria útil obtenir informació de l'usuari. Per tant, obriu un fitxer nou i anomeneu-lo compnum.f. Quan ho hàgiu acabat, indicarà a l'usuari si el número que ha introduït és positiu, negatiu o igual a zero.
- Introduïu les línies del programa compnum i finalitzeu el programa compnum.
- A continuació, declareu una variable del tipus REAL. Assegureu-vos que la declaració estigui entre el principi i el final del programa.
- Expliqueu a l'usuari què se suposa que ha de fer. Escriviu text amb la funció d’escriptura.
- Llegiu l'entrada de l'usuari a la variable que heu declarat amb la funció de lectura.
programa compnum real r write (*, *) "Introduïu un número real:" read (*, *) r final del programa
Pas 3. Processar l'entrada de l'usuari amb una construcció if-construction
Poseu-lo entre
llegir (*, *) r
i la
programa final
- La comparació es fa amb.gt. (superior a),.lt. (menys de) i.eq. (igual) a Fortran.
- Fortran admet if, else if i else
- Una Fortran if-construction sempre acaba amb end if.
si (r.gt. 0) llavors escriviu (*, *) "Aquest nombre és positiu". altrament, si (r.lt. 0), escriviu (*, *) "Aquest número és negatiu". altrament escriviu (*, *) "Aquest nombre és 0." acabar si
Consell: No heu de sagnar codi dins de les construccions if-amb més espais, però millora la llegibilitat.
Pas 4. Compileu i executeu el vostre programa
Introduïu alguns números per provar-lo. Si introduïu una lletra, es generarà un error, però està bé perquè el programa no comprova si l'entrada és una lletra, un número o una altra cosa.
Part 3 de 4: Ús de bucles i matrius
Pas 1. Obriu un fitxer nou
Com que aquest concepte és diferent, haureu de tornar a escriure un programa nou. Anomeneu el fitxer addmany.f. Inseriu les declaracions del programa i del programa de finalització corresponents, així com una declaració implícita. Quan hàgiu acabat, aquest programa llegirà 10 números i n'imprimirà la suma.
Pas 2. Declareu una matriu de longitud 10
Aquí és on guardareu els números. Com que probablement voleu una suma de nombres reals, hauríeu de declarar la matriu com a real. Declareu aquesta matriu amb
nombres reals (50)
(números és el nom de la matriu, no una expressió).
Pas 3. Declareu algunes variables
Declareu numSum com un nombre real. L'utilitzarà per emmagatzemar la suma més endavant, però com que la suma ja la pren una expressió de Fortran, heu d'utilitzar un nom com numSum. Establiu-lo a 0. Declareu i com a enter i encara no li assigneu cap valor. Això es farà al bucle.
Pas 4. Creeu un bucle
L'equivalent a altres llenguatges de programació seria un bucle for.
- Un do-loop sempre comença per do.
- A la mateixa línia que fa, separada per un espai, hi ha l'etiqueta a la qual anirà el programa quan acabi. De moment, només heu d’escriure un 1 i definireu l’etiqueta més endavant.
-
Després d'això, de nou només separats per un espai, escriviu
i = 1, 10
. Això farà que la variable i, que havíeu declarat abans del bucle, passés d'1 a 10 en els passos de 1. Els passos no s'esmenten en aquesta expressió, de manera que Fortran utilitza el valor per defecte de 1. També podríeu haver escrit
i = 1, 10, 1
-
Introduïu una mica de codi dins del bucle (sagnat amb espais per a una millor llegibilitat). Per a aquest programa, haureu d'augmentar la variable numSum amb l'element i-th dels números de matriu. Això es fa amb l’expressió
numSum = numSum + número (i)
- Acabeu el bucle amb una instrucció continue que tingui una etiqueta. Escriviu només 4 espais. Després, escriviu un 1. Aquesta és l'etiqueta a la qual heu indicat que anés el bucle després que finalitzi. A continuació, escriviu un espai i continueu. L'expressió de continuació no fa res, però proporciona un bon lloc per col·locar una etiqueta, a més de mostrar que el bucle final ha finalitzat.
El vostre bucle ara hauria de tenir aquest aspecte:
fer 1 i = 1, 10 numSum = numSum + números (i) 1 continuar
Consell: A Fortran 95 i versions posteriors, no cal que utilitzeu etiquetes. No poseu-ne cap a la sentència do i finalitzeu el bucle amb "end do" en lloc de "continuar".
Pas 5. Imprimiu numSum
A més, tindria sentit donar algun context, per exemple "La suma dels vostres números és:". Utilitzeu la funció d’escriptura per a tots dos. Ara el codi sencer hauria de tenir el següent aspecte:
programa addmany implícit cap nombres reals (10) nombre real suma integer i numSum = 0 escriure (*, *) "Introduïu 10 números:" llegir (*, *) números fer 1 i = 1, 10 numSum = numSum + números (i) 1 continuar escrivint (*, *) "La seva suma és:" write (*, *) numSum final del programa addmany
Pas 6. Compileu i executeu el vostre codi
No oblideu provar-ho. Podeu prémer ↵ Retorn després de cada número que introduïu o introduir molts números a la mateixa línia i separar-los amb un espai.
Part 4 de 4: Comprendre els conceptes avançats
Pas 1. Teniu una bona idea del que farà el vostre programa
Penseu en quin tipus de dades es necessita com a entrada, com estructurar la sortida i incloeu alguna sortida intermèdia perquè pugueu controlar el progrés del vostre càlcul. Això serà molt útil si sabeu que el vostre càlcul s’executarà durant molt de temps o que comporta diversos passos complicats.
Pas 2. Cerqueu una bona referència de Fortran
Fortran té moltes més funcions de les explicades en aquest article i poden ser útils per al programa que voleu escriure. Una referència llista totes les funcions que té un llenguatge de programació. Aquest és un per a Fortran 77 i aquest per a Fortran 90/95.
Pas 3. Obteniu informació sobre les subrutines i les funcions
Pas 4. Apreneu a llegir i escriure des de / a fitxers
Apreneu també a formatar la vostra entrada / sortida.
Pas 5. Obteniu informació sobre les noves funcions de Fortran 90/95 i versions posteriors
Omet aquest pas si saps que només escriuràs / mantindràs el codi Fortran 77.
Recordeu que Fortran 90 va introduir el codi font "Forma lliure", que permet escriure codi sense els espais i sense el límit de 72 caràcters
Pas 6. Llegiu o busqueu alguns llibres sobre programació científica
Per exemple, el llibre "Receptes numèriques a Fortran" és un bon text sobre algorismes de programació científica i una bona introducció a la forma de reunir codis. Les edicions més recents inclouen capítols sobre com programar en un entorn de llenguatge mixt i programació paral·lela. Un altre exemple és "Fortran modern a la pràctica" escrit per Arjen Markus. El llibre dóna una idea de com escriure programes Fortran amb un estil del segle XXI d'acord amb els últims estàndards Fortran.
Pas 7. Apreneu a compilar un programa repartit en diversos fitxers
Suposem que el vostre programa Fortran està repartit pels fitxers main.f i morestuff.f i que voleu que el binari resultant s'anomeni allstuff. A continuació, haureu d’escriure les ordres següents a la línia d’ordres:
f77 -c morestuff.f f77 -c main.f f77 -c morestuff.f f77 -o allstuff main.o morestuff.f
A continuació, executeu el fitxer escrivint./allstuff.
Consell: Funciona de la mateixa manera amb les versions més recents de Fortran. Simplement substituïu.f per l'extensió correcta i f77 amb la versió correcta del compilador.
Pas 8. Utilitzeu l'optimització que proporciona el vostre compilador
La majoria de compiladors inclouen algorismes d’optimització que milloren l’eficiència del vostre codi. Normalment s’activen incloent un senyalador -O, -O2 o -O3 en compilar-se (de nou en funció de la vostra versió de fortran).
-
En general, és millor el nivell més baix -O o -O2. Tingueu en compte que utilitzar l'opció d'optimització més agressiva pot introduir errors en codis complexos i fins i tot pot frenar les coses. Proveu el vostre codi.
Consells
- Comenceu amb programes petits. Quan creeu el vostre propi codi, intenteu identificar la part més essencial del problema, ja sigui l’entrada de dades o la crida a les funcions, l’estructura del bucle (aquests són alguns exemples molt elementals) i comenceu a partir d’aquí. A continuació, construïu-ho en petits increments.
- Fortran no distingeix entre majúscules i minúscules. Per exemple, podeu declarar una variable "Num real" i escriure "num = 1" a la següent línia per assignar-li un valor. Però aquest és un mal estil, així que eviteu-lo. El que és més important, a Fortran tampoc no li importa el cas de les funcions i les afirmacions. És força comú escriure funcions i sentències en majúscula i variables en minúscula.
- EMACS és un bon editor de text gratuït per utilitzar en lloc del Bloc de notes.
- Al principi, és possible que sigui més fàcil utilitzar un IDE en línia (entorn de desenvolupament integrat). Una bona opció és Coding Ground. Hi trobareu una gran quantitat de llenguatges de programació, inclòs el Fortran-95. Una altra opció és Ideone.