Com programar a Fortran (amb imatges)

Taula de continguts:

Com programar a Fortran (amb imatges)
Com programar a Fortran (amb imatges)

Vídeo: Com programar a Fortran (amb imatges)

Vídeo: Com programar a Fortran (amb imatges)
Vídeo: Как использовать MacBook приложение для заметок (с субтитрами) 2024, Abril
Anonim

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

El programa Fortran hola world write corrected
El programa Fortran hola world write corrected

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.

Fortran hola world compile run
Fortran hola world compile run

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.
Fortran comments
Fortran comments

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

Fortran data types
Fortran data types

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

Fortran if construction
Fortran if construction

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.

Programa de comprovació del número Fortran test
Programa de comprovació del número Fortran test

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".

Fortran do loop code
Fortran do loop code

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

Fortran afegeix números codi test
Fortran afegeix números codi test

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

Programa a Fortran Pas 13
Programa a Fortran Pas 13

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.

Lloc web de referència Fortran screenshot
Lloc web de referència Fortran screenshot

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.

Subrutines de Fortran example
Subrutines de Fortran example

Pas 3. Obteniu informació sobre les subrutines i les funcions

Fortran format string string example
Fortran format string string example

Pas 4. Apreneu a llegir i escriure des de / a fitxers

Apreneu també a formatar la vostra entrada / sortida.

Exemple modern de fortran screenshot
Exemple modern de fortran screenshot

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

Fortran book online screenshot
Fortran book online screenshot

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.

Fortran compila el programa en diversos fitxers
Fortran compila el programa en diversos fitxers

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.

Recomanat: