Mange mennesker opfatter Fortran som et arkaisk og "dødt" programmeringssprog. Den mest videnskabelige og tekniske kode er dog skrevet i Fortran. Som sådan er programmering i F77 og F90 fortsat en nødvendig færdighed for de fleste tekniske programmører. Desuden giver de nyeste Fortran-standarder (2003, 2008, 2015) programmereren mulighed for at skrive yderst effektiv kode med minimal indsats, samtidig med at alle moderne sprogfunktioner udnyttes, f.eks. OOP (objektorienteret programmering). FORTRAN er et akronym for "FORmula TRANslation", og er bedst egnet til matematiske og numeriske applikationer frem for grafik eller databaseapplikationer. De fleste fortran-koder tager tekstindtastning fra en fil eller kommandolinje frem for fra en menu eller GUI-grænseflade.
Trin
Del 1 af 4: Skrivning og kompilering af et simpelt program
Trin 1. Skriv et "Hello World" -program
Dette er normalt det første program til at skrive på et hvilket som helst sprog, og det udskriver bare "Hej verden" til skærmen. Skriv følgende kode i en hvilken som helst tekstredigerer, og gem den som helloworld.f. Vær opmærksom på, at der skal være præcis 6 mellemrum foran hver linje.
program helloworld implicit ingen karakter*13 hello_string hello_string = "Hej, verden!" skriv (*, *) hello_string afslut program helloworld
Tip: Mellemrummene er kun nødvendige i versioner af Fortran op til FORTRAN 77. Hvis du bruger en nyere version, kan du slippe mellemrummene. Kompiler programmer fra nyere version med f95, ikke f77; brug.f95 som filtypenavn i stedet for bare.f.
Trin 2. Kompilér programmet
For at gøre dette skal du skrive f77 helloworld.f i kommandolinjen. Hvis dette giver en fejl, har du sandsynligvis ikke installeret en Fortran -kompilator som f.eks. Gfortran endnu.
Trin 3. Kør dit program
Kompilatoren har produceret en fil kaldet a.out. Kør denne fil ved at skrive./a.out.
Trin 4. Forstå, hvad du lige har skrevet
-
program helloworld
angiver starten på programmet "helloworld". Tilsvarende
afslutte programmet helloworld
- angiver dens slutning.
-
Som standard, hvis du ikke erklærer en variabeltype, behandler Fortran en variabel med et navn, der begynder med et bogstav fra i til n som heltal og alle andre som et reelt tal. Det anbefales at bruge
implicit ingen
- hvis du ikke har brug for den adfærd.
-
tegn*13 hej_streng
- erklærer en række tegn, der kaldes hello_string.
-
hello_string = "Hej, verden!"
- tildeler værdien "Hej, verden!" til det deklarerede array. I modsætning til andre sprog som C kan dette ikke gøres på samme linje som at deklarere arrayet.
-
skriv (*, *) hello_string
- udskriver værdien af hello_string til standardoutput. Den første * betyder at skrive til standardoutput, i modsætning til nogle filer. Den anden * betyder ikke at bruge nogen særlig formatering.
Trin 5. Tilføj en kommentar
Dette er ikke nødvendigt i et så enkelt program, men det vil være nyttigt, når du skriver noget mere komplekst, så du bør vide, hvordan du tilføjer dem. Der er to måder at tilføje en kommentar.
- Hvis du vil tilføje en kommentar, der har en hel linje alene, skal du skrive c direkte i en ny linje uden de 6 mellemrum. Herefter skriver du din kommentar. Du bør efterlade et mellemrum mellem c og din kommentar for bedre læsbarhed, men dette er ikke påkrævet. Bemærk, at du skal bruge en! i stedet for en c i Fortran 95 og nyere.
- Hvis du vil tilføje en kommentar i samme linje som kode, skal du tilføje en! hvor du vil have din kommentar til at begynde. Igen kræves der ikke plads, men forbedrer læsbarheden.
Del 2 af 4: Brug af input og if-konstruktioner
Trin 1. Forstå forskellige datatyper
- INTEGER bruges til hele tal, f.eks. 1, 3 eller -3.
- REAL kan også indeholde et tal, der ikke er helt, f.eks. 2.5.
- COMPLEX bruges til at gemme komplekse tal. Det første tal er det reelle og det andet den imaginære del.
- KARAKTER bruges til tegn, f.eks. Bogstaver eller tegnsætning.
- LOGISK kan være enten. Sand. eller.false.. Dette er ligesom den boolske type i andre programmeringssprog.
Trin 2. Få brugerens input
I programmet "Hej verden", som du skrev før, ville det være nytteløst at få brugerinput. Så åbn en ny fil, og navngiv den compnum.f. Når du er færdig med det, vil det fortælle brugeren, om det indtastede tal er positivt, negativt eller lig med nul.
- Indtast linjerne programkomp. Og afslut programkomp.
- Angiv derefter en variabel af typen REAL. Sørg for, at din erklæring er mellem programmets begyndelse og slutning.
- Forklar brugeren, hvad de skal gøre. Skriv noget tekst med skrivefunktionen.
- Læs brugerens input til den variabel, du erklærede med læsefunktionen.
program compnum reel r skrive (*, *) "Indtast et reelt tal:" læs (*, *) r afslut program
Trin 3. Behandl brugerens input med en if-konstruktion
Sæt det mellem
læs (*, *) r
og
afslutte program
- Sammenligning foretages med.gt. (større end),.lt. (mindre end) og.ekv. (lig) i Fortran.
- Fortran understøtter if, else if, og else
- En Fortran if-konstruktion slutter altid med ende hvis.
hvis (r.gt. 0) så skriv (*, *) "Det tal er positivt." ellers hvis (r.lt. 0) så skriv (*, *) "Det tal er negativt." ellers skriv (*, *) "Det tal er 0." Afslut Hvis
Tip: Du behøver ikke at indrykke kode inde i if-konstruktioner med flere mellemrum, men det forbedrer læsbarheden.
Trin 4. Kompilér og kør dit program
Indtast nogle tal for at teste det. Hvis du indtaster et bogstav, vil det medføre en fejl, men det er okay, fordi programmet ikke kontrollerer, om input er et bogstav, et tal eller noget andet.
Del 3 af 4: Brug af loops og arrays
Trin 1. Åbn en ny fil
Da dette koncept er anderledes, bliver du nødt til at skrive et nyt program igen. Navngiv filen addmany.f. Indsæt det tilhørende program og afslut programudsagn, samt et implicit ingen. Når du er færdig, vil dette program læse 10 tal og udskrive deres sum.
Trin 2. Angiv en matrix med længde 10
Det er her, du vil gemme numrene. Da du sandsynligvis vil have en sum af reelle tal, bør du erklære arrayet som reelt. Du erklærer sådan en matrix med
reelle tal (50)
(tal er navnet på arrayet, ikke et udtryk).
Trin 3. Angiv nogle variabler
Angiv numSum som et reelt tal. Du vil bruge den til at gemme summen senere, men da summen allerede er taget af et Fortran -udtryk, skal du bruge et navn som numSum. Indstil det til 0. Deklarér i som et helt tal, og tildel det ikke nogen værdi endnu. Det vil blive gjort i do-loop.
Trin 4. Opret en do-loop
Tilsvarende for det i andre programmeringssprog ville være en for-loop.
- En do-loop starter altid med do.
- På samme linje som do, adskilt fra det med et mellemrum, er etiketten, som programmet vil gå til, når det er færdigt. For nu skal du bare skrive en 1, du sætter etiketten senere.
-
Efter det, igen kun adskilt af et mellemrum, skriv
jeg = 1, 10
. Dette får variablen i, som du havde erklæret før sløjfen, til at gå fra 1 til 10 i trin på 1. Trinene nævnes ikke i dette udtryk, så Fortran bruger standardværdien på 1. Du kunne også have skrevet
i = 1, 10, 1
-
Læg en kode inde i sløjfen (indryk med mellemrum for bedre læsbarhed). For dette program skal du øge variablen numSum med det i-th element i matrixnumrene. Dette gøres med udtrykket
numSum = numSum + nummer (i)
- Afslut løkken med en fortsæt -sætning, der har en etiket. Skriv kun 4 mellemrum. Derefter skriver du en 1. Det er etiketten, som du fortalte do-loop at gå til, når den er færdig. Indtast derefter et mellemrum og fortsæt. Fortsæt-udtrykket gør ingenting, men det giver et godt sted at placere en etiket, samt viser, at do-loop sluttede.
Din do loop skal nu se sådan ud:
gør 1 i = 1, 10 numSum = numSum + tal (i) 1 fortsæt
Tip: I Fortran 95 og nyere behøver du ikke bruge etiketter. Bare læg ikke en i do -sætningen, og afslut loop med "end do" i stedet for "fortsæt".
Trin 5. Udskriv numSum
Det ville også være fornuftigt at give en kontekst, f.eks. "Summen af dine tal er:". Brug skrivefunktionen til begge. Hele din kode skal nu se sådan ud:
program addmany implicit ingen reelle tal (10) reelt numSum heltal i numSum = 0 skriv (*, *) "Indtast 10 tal:" læs (*, *) tal gør 1 i = 1, 10 numSum = numSum + tal (i) 1 fortsæt med at skrive (*, *) "Deres sum er:" skriv (*, *) numSum slut program addmany
Trin 6. Kompilér og kør din kode
Glem ikke at teste det. Du kan enten trykke på ↵ Enter efter hvert nummer, du indtaster, eller indtaste mange tal på den samme linje og adskille dem med et mellemrum.
Del 4 af 4: Forståelse for avancerede begreber
Trin 1. Hav en god idé om, hvad dit program vil gøre
Tænk over, hvilken slags data der er brug for som input, hvordan du strukturerer output, og inkluder noget mellemliggende output, så du kan overvåge fremdriften i din beregning. Dette vil være meget nyttigt, hvis du ved, at din beregning vil køre i lang tid eller involverer flere komplicerede trin.
Trin 2. Find en god Fortran -reference
Fortran har mange flere funktioner end forklaret i denne artikel, og de kan være nyttige til det program, du vil skrive. En reference viser alle funktioner, som et programmeringssprog har. Dette er et til Fortran 77, og dette er et til Fortran 90/95.
Trin 3. Lær om underrutiner og funktioner
Trin 4. Lær at læse og skrive fra/til filer
Lær også, hvordan du formaterer dit input/output.
Trin 5. Lær mere om de nye funktioner i Fortran 90/95 og nyere
Spring dette trin over, hvis du ved, at du kun skriver/vedligeholder Fortran 77 -kode.
Husk, at Fortran 90 introducerede kildekoden "Free Form", så kode kan skrives uden mellemrum og uden grænsen på 72 tegn
Trin 6. Læs eller slå nogle bøger om videnskabelig programmering op
For eksempel er bogen "Numeriske opskrifter i Fortran" både en god tekst om videnskabelige programmeringsalgoritmer og en god introduktion til, hvordan man sammensætter koder. Nyere udgaver inkluderer kapitler om, hvordan man programmerer i et blandet sprogmiljø og parallel programmering. Et andet eksempel er "Modern Fortran in Practice" skrevet af Arjen Markus. Bogen giver et indblik i, hvordan man skriver Fortran-programmer i enogtyvende århundredes stil i overensstemmelse med de nyeste Fortran-standarder.
Trin 7. Lær, hvordan du kompilerer et program spredt over flere filer
Lad os antage, at dit Fortran -program er spredt over filerne main.f og morestuff.f, og at du vil have den resulterende binære til at blive navngivet allstuff. Derefter skal du skrive følgende kommandoer i kommandolinjen:
f77 -c morestuff.f f77 -c main.f f77 -c morestuff.f f77 -o allstuff main.o morestuff.f
Kør derefter filen ved at skrive./allstuff.
Tip: Dette fungerer på samme måde med nyere versioner af Fortran. Bare erstat.f med den korrekte udvidelse og f77 med den korrekte kompilerversion.
Trin 8. Brug den optimering, din kompilator giver
De fleste kompilatorer indeholder optimeringsalgoritmer, der forbedrer effektiviteten af din kode. Disse tændes typisk ved at inkludere et -O, -O2 eller -O3 flag ved kompilering (igen afhængigt af din version af fortran).
-
Generelt er det laveste niveau -O eller -O2 -niveau bedst. Vær opmærksom på, at brug af den mere aggressive optimeringsmulighed kan indføre fejl i komplekse koder og endda kan bremse tingene ned! Test din kode.
Tips
- Start med små programmer. Når du laver din egen kode, skal du prøve at identificere den væsentligste del af problemet - er det dataindtastningen eller kaldet til funktionerne, loopens struktur (dette er nogle meget elementære eksempler) og start derfra. Byg derefter på det i små trin.
- Fortran er ikke store og små bogstaver. Du kan for eksempel erklære en variabel "reelt Num" og skrive "num = 1" i den næste linje for at tildele en værdi til den. Men det er en dårlig stil, så undgå det. Endnu vigtigere er Fortran heller ikke ligeglad med sagen om funktioner og udsagn. Det er ret almindeligt at skrive funktioner og udsagn i STORE og variabler i små bogstaver.
- EMACS er en god gratis tekstredigerer at bruge i stedet for Notesblok.
- Du finder det måske lettere at bruge et online IDE (integreret udviklingsmiljø) i starten. En god mulighed er Coding Ground. Du finder et væld af programmeringssprog der, herunder Fortran-95. En anden mulighed er Ideone.