Baie mense beskou Fortran as 'n argaïese en 'dooie' programmeertaal. Die meeste wetenskaplike en ingenieurswese -kode is egter in Fortran geskryf. As sodanig bly programmering in F77 en F90 'n noodsaaklike vaardigheid vir die meeste tegniese programmeerders. Boonop stel die nuutste Fortran-standaarde (2003, 2008, 2015) die programmeerder in staat om hoogs doeltreffende kode met minimale inspanning te skryf, terwyl hy al die moderne taalkenmerke gebruik, soos OOP (objekgeoriënteerde programmering). FORTRAN is 'n akroniem vir "FORmula TRANslation", en is die beste geskik vir wiskundige en numeriese toepassings eerder as grafiese of databasistoepassings. Die meeste fortrankodes neem teksinvoer uit 'n lêer of opdragreël eerder as uit 'n spyskaart of GUI-koppelvlak.
Stappe
Deel 1 van 4: Skryf en saamstel van 'n eenvoudige program

Stap 1. Skryf 'n "Hello World" program
Dit is gewoonlik die eerste program wat in enige taal geskryf is, en dit druk slegs 'Hallo wêreld' op die skerm. Skryf die volgende kode in enige teksredakteur en stoor dit as helloworld.f. Let daarop dat daar presies 6 spasies voor elke reël moet wees.
program helloworld implisiete geen karakter*13 hello_string hello_string = "Hallo, wêreld!" skryf (*, *) hello_string eindprogram helloworld
Wenk: Die spasies is slegs nodig in weergawes van Fortran tot FORTRAN 77. As u 'n nuwer weergawe gebruik, kan u die spasies laat val. Stel programme op uit nuwer weergawe met f95, nie f77 nie; gebruik.f95 as die lêeruitbreiding in plaas van net.f.
Stap 2. Stel die program saam
Om dit te doen, tik f77 helloworld.f in die opdragreël. As dit 'n fout gee, het u waarskynlik nog nie 'n Fortran -samesteller soos byvoorbeeld gfortran geïnstalleer nie.

Stap 3. Begin u program
Die samesteller het 'n lêer genaamd a.out. Begin hierdie lêer deur./a.out te tik.
Stap 4. Verstaan wat u so pas geskryf het
-
program helloworld
dui die begin van die program "helloworld" aan. Net so,
beëindig program helloworld
- dui die einde daarvan aan.
-
As u nie 'n veranderlike tipe verklaar nie, behandel Fortran standaard 'n veranderlike met 'n naam wat begin met 'n letter van i tot n as 'n heelgetal en alle ander as 'n reële getal. Dit word aanbeveel om te gebruik
implisiete geen
- as u nie hierdie gedrag nodig het nie.
-
karakter*13 hallo_snaar
- verklaar 'n verskeidenheid karakters wat hello_string genoem word.
-
hello_string = "Hallo, wêreld!"
- ken die waarde "Hallo, wêreld!" na die verklaarde skikking. Anders as in ander tale soos C, kan dit nie op dieselfde lyn as die verklaring van die skikking gedoen word nie.
-
skryf (*, *) hello_string
- druk die waarde van hello_string na die standaarduitset. Die eerste * beteken om na standaarduitset te skryf, in teenstelling met sommige lêers. Die tweede * beteken dat u geen spesiale opmaak moet gebruik nie.

Stap 5. Voeg 'n opmerking by
Dit is nie nodig in so 'n eenvoudige program nie, maar dit sal handig wees as u iets ingewikkelder skryf, dus u moet weet hoe u dit kan byvoeg. Daar is twee maniere om 'n opmerking by te voeg.
- Om 'n opmerking met 'n hele reël op sigself by te voeg, skryf 'n c direk in 'n nuwe reël, sonder die 6 spasies. Skryf daarna u kommentaar. U moet 'n spasie tussen die c en u opmerking laat vir 'n beter leesbaarheid, maar dit is nie nodig nie. Let daarop dat u 'n! in plaas van 'n c in Fortran 95 en nuwer.
- Om 'n opmerking in dieselfde reël as kode by te voeg, voeg a! waar u wil hê dat u kommentaar moet begin. Weereens, 'n spasie is nie nodig nie, maar dit verbeter die leesbaarheid.
Deel 2 van 4: Gebruik insette en as-konstruksies

Stap 1. Verstaan verskillende datatipes
- INTEGER word gebruik vir heelgetalle, soos 1, 3 of -3.
- REAL kan ook 'n getal bevat wat nie heel is nie, soos 2.5.
- COMPLEX word gebruik om komplekse getalle te stoor. Die eerste getal is die werklike en die tweede die denkbeeldige deel.
- KARAKTER word gebruik vir karakters, soos letters of leestekens.
- LOGIES kan óf.waar wees. of.false.. Dit is soos die booleaanse tipe in ander programmeertale.
Stap 2. Kry die gebruiker se insette
In die 'Hallo wêreld' -program wat u voorheen geskryf het, is dit nutteloos om gebruikersinvoer te kry. Maak dus 'n nuwe lêer oop en noem dit compnum.f. As u klaar is, sal die gebruiker weet of die getal wat hy ingevoer het positief, negatief of gelyk aan nul is.
- Voer die reëls program compnum in en eindig program compnum.
- Verklaar dan 'n veranderlike van die tipe REAL. Maak seker dat u verklaring tussen die begin en die einde van die program is.
- Verduidelik die gebruiker wat hy moet doen. Skryf teks met die skryffunksie.
- Lees die invoer van die gebruiker in die veranderlike wat u verklaar het met die leesfunksie.
program compnum real r skryf (*, *) "Voer 'n reële getal in:" lees (*, *) r beëindig program

Stap 3. Verwerk die invoer van die gebruiker met 'n if-konstruksie
Sit dit tussen die
lees (*, *) r
en die
program eindig
- Vergelyking word gedoen met.gt. (groter as),.lt. (minder as) en.ekv. (gelyk) in Fortran.
- Fortran ondersteun if, else if, and else
- 'N Fortran as-konstruksie eindig altyd met die einde as.
as (r. 0) skryf dan (*, *) "Die getal is positief." anders as (r.lt. 0) dan skryf (*, *) "Die getal is negatief." anders skryf (*, *) "Die getal is 0." eindig as
Wenk: U hoef nie die kode binne-in as-konstruksies met meer spasies in te trek nie, maar dit verbeter die leesbaarheid.

Stap 4. Stel u program saam en voer dit uit
Voer 'n paar getalle in om dit te toets. As u 'n letter invoer, sal dit 'n fout oplewer, maar dit is goed, want die program kyk nie of die invoer 'n letter, 'n getal of iets anders is nie.
Deel 3 van 4: Die gebruik van lusse en skikkings
Stap 1. Maak 'n nuwe lêer oop
Aangesien hierdie konsep anders is, moet u weer 'n nuwe program skryf. Noem die lêer addmany.f. Voeg die ooreenstemmende program- en eindprogramverklarings in, asook 'n implisiete geen. As u klaar is, lees hierdie program 10 nommers en druk hulle som.
Stap 2. Gee 'n skikking van lengte 10
Dit is waar u die nommers sal stoor. Aangesien u waarskynlik 'n som van reële getalle wil hê, moet u die skikking as werklik verklaar. U verklaar so 'n skikking met
reële getalle (50)
(getalle is die naam van die skikking, nie 'n uitdrukking nie).
Stap 3. Gee 'n paar veranderlikes
Verklaar numSum as 'n reële getal. U sal dit later gebruik om die som op te slaan, maar aangesien die som reeds deur 'n Fortran -uitdrukking geneem word, moet u 'n naam soos numSum gebruik. Stel dit op 0. Verklaar i as 'n heelgetal en ken dit nog nie toe nie. Dit sal in die do-lus gedoen word.
Stap 4. Skep 'n do-lus
Die ekwivalent daarvan in ander programmeertale is 'n voor-lus.
- 'N Do-lus begin altyd met doen.
- Op dieselfde lyn as die do, geskei daarvan deur 'n spasie, is die etiket waarna die program sal gaan wanneer dit klaar is. Skryf vir eers 'n 1, u sal die etiket later stel.
-
Tik daarna weer slegs deur 'n spasie geskei
ek = 1, 10
. Dit sal die veranderlike i, wat u voor die lus verklaar het, van 1 tot 10 in stappe van 1. Die stappe word nie in hierdie uitdrukking genoem nie, dus gebruik Fortran die standaardwaarde van 1. U kon ook geskryf het
ek = 1, 10, 1
-
Plaas 'n paar kode in die lus (inspring met spasies vir beter leesbaarheid). Vir hierdie program moet u die veranderlike numSum verhoog met die i-de element van die skikkinggetalle. Dit word gedoen met die uitdrukking
numSum = numSum + getal (i)
- Beëindig die lus met 'n voortgesette stelling met 'n etiket. Tik slegs 4 spasies in. Tik daarna 'n 1. Dit is die etiket waarop u die do-loop gesê het om te gaan nadat dit klaar is. Tik dan 'n spasie en gaan voort. Die voortdurende uitdrukking doen niks, maar dit gee 'n goeie plek om 'n etiket te plaas, asook om aan te dui dat die do-loop geëindig het.
Jou do loop moet nou so lyk:
doen 1 i = 1, 10 numSum = numSum + getalle (i) 1 gaan voort
Wenk: In Fortran 95 en nuwer hoef u nie etikette te gebruik nie. Moet net nie een in die do -verklaring plaas nie en eindig die lus met 'end do' in plaas van 'continue'.

Stap 5. Druk numSum
Dit sal ook sinvol wees om 'n konteks te gee, byvoorbeeld "Die som van u getalle is:". Gebruik die skryffunksie vir beide. U hele kode moet nou soos volg lyk:
program byvoeg baie implisiete geen reële getalle (10) reële numSum heelgetal i numSum = 0 skryf (*, *) "Voer 10 getalle in:" lees (*, *) getalle doen 1 i = 1, 10 numSum = numSum + getalle (i) 1 gaan voort met skryf (*, *) "Hul som is:" skryf (*, *) numSum eindprogram addmany

Stap 6. Stel u kode saam en voer dit uit
Moenie vergeet om dit te toets nie. U kan óf op ↵ Tik druk na elke getal wat u invoer, óf baie getalle op dieselfde reël invoer en dit met 'n spasie skei.
Deel 4 van 4: Begrip van gevorderde konsepte

Stap 1. Het 'n goeie idee van wat u program gaan doen
Dink na oor watter soort data nodig is as invoer, hoe om die uitset te struktureer, en sluit 'n mate van tussenuitset in, sodat u die vordering van u berekening kan monitor. Dit sal baie handig wees as u weet dat u berekening vir 'n lang tyd sal duur of as dit ingewikkelde stappe behels.

Stap 2. Soek 'n goeie Fortran -verwysing
Fortran het baie meer funksies as wat in hierdie artikel verduidelik word, en dit kan nuttig wees vir die program wat u wil skryf. 'N Verwysing bevat alle funksies wat 'n programmeertaal het. Dit is een vir Fortran 77 en hierdie een vir Fortran 90/95.

Stap 3. Leer meer oor subroutines en funksies

Stap 4. Leer hoe om van/na lêers te lees en te skryf
Leer ook hoe u u invoer/uitset kan formateer.

Stap 5. Leer meer oor die nuwe funksies van Fortran 90/95 en nuwer
Slaan hierdie stap oor as u weet dat u slegs die Fortran 77 -kode sal skryf/onderhou.
Onthou dat Fortran 90 die bronkode "Free Form" bekendgestel het, sodat kode sonder die spasies en sonder die limiet van 72 tekens geskryf kan word

Stap 6. Lees of soek 'n paar boeke oor wetenskaplike programmering
Die boek "Numeriese resepte in Fortran" is byvoorbeeld 'n goeie teks oor wetenskaplike programmeringsalgoritmes en 'n goeie inleiding tot die samestelling van kodes. Meer onlangse uitgawes bevat hoofstukke oor hoe om te programmeer in 'n gemengde taalomgewing en parallelle programmering. 'N Ander voorbeeld is' Modern Fortran in Practice ', geskryf deur Arjen Markus. Die boek gee 'n insig in hoe u Fortran-programme in die een-en-twintigste-eeuse styl skryf volgens die nuutste Fortran-standaarde.

Stap 7. Leer hoe om 'n program saam te stel wat oor verskeie lêers versprei is
Kom ons neem aan dat u Fortran -program versprei is oor die lêers main.f en morestuff.f, en dat u wil hê dat die gevolglike binêre allstuff genoem word. Dan moet u die volgende opdragte in die opdragreël skryf:
f77 -c morestuff.f f77 -c main.f f77 -c morestuff.f f77 -o allstuff main.o morestuff.f
Begin dan die lêer deur./allstuff in te tik.
Wenk: Dit werk op dieselfde manier met nuwer weergawes van Fortran. Vervang net.f met die korrekte uitbreiding en f77 met die korrekte samestellerweergawe.
Stap 8. Gebruik die optimalisering wat u samesteller bied
Die meeste samestellers bevat optimaliseringsalgoritmes wat die doeltreffendheid van u kode verbeter. Dit word gewoonlik aangeskakel deur 'n -O-, -O2- of -O3 -vlag in te sluit tydens die opstel (weer afhangend van u weergawe van fortran).
-
Oor die algemeen is die laagste vlak -O of -O2 -vlak die beste. Hou in gedagte dat die gebruik van die meer aggressiewe optimaliseringsopsie foute in komplekse kodes kan veroorsaak en selfs dinge kan vertraag! Toets u kode.
Wenke
- Begin met klein programme. As u u eie kode maak, probeer om die belangrikste deel van die probleem te identifiseer - is dit die data -invoer of die oproep van die funksies, die struktuur van die lus (dit is 'n paar elementêre voorbeelde) en begin daarvandaan. Bou dan daarop voort in klein stappe.
- Fortran is nie hooflettergevoelig nie. U kan byvoorbeeld 'n veranderlike 'reële getal' verklaar en 'num = 1' in die volgende reël skryf om 'n waarde daaraan toe te ken. Maar dit is 'n slegte styl, so vermy dit. Belangriker nog, Fortran gee ook nie om in die geval van funksies en stellings nie. Dit is redelik algemeen om funksies en stellings in hoofletters en veranderlikes in kleinletters te skryf.
- EMACS is 'n goeie gratis teksredakteur om te gebruik in plaas van Notepad.
- Miskien vind u dit aanvanklik makliker om 'n aanlyn IDE (geïntegreerde ontwikkelingsomgewing) te gebruik. 'N Goeie opsie is Coding Ground. U vind daar 'n menigte programmeertale, waaronder Fortran-95. 'N Ander opsie is Ideone.