Mnogi ljudje dojemajo Fortran kot arhaičen in "mrtev" programski jezik. Vendar je večina znanstvenih in inženirskih kodeksov napisanih v Fortranu. Tako programiranje v F77 in F90 ostaja nujna veščina za večino tehničnih programerjev. Poleg tega najnovejši standardi Fortran (2003, 2008, 2015) omogočajo programerju, da z minimalnimi napori napiše visoko učinkovito kodo, pri tem pa uporabi vse sodobne jezikovne funkcije, kot je OOP (objektno usmerjeno programiranje). FORTRAN je kratica za "FORmula TRANslation" in je najbolj primeren za matematične in numerične aplikacije, ne pa za grafične ali baze podatkov. Večina kod Fortran vnaša besedilo iz datoteke ali ukazne vrstice in ne iz menija ali vmesnika grafičnega vmesnika.
Koraki
1. del od 4: Pisanje in sestavljanje enostavnega programa
Korak 1. Napišite program "Hello World"
To je ponavadi prvi program, ki piše v katerem koli jeziku, in na zaslon natisne samo "Hello world". Naslednjo kodo napišite v kateri koli urejevalnik besedil in jo shranite kot helloworld.f. Bodite pozorni, da mora biti pred vsako vrstico točno 6 presledkov.
program helloworld implicitno brez znakov*13 hello_string hello_string = "Pozdravljeni, svet!" write (*, *) hello_string zaključni program helloworld
Nasvet: Presledki so potrebni le v različicah Fortrana do FORTRAN 77. Če uporabljate novejšo različico, lahko presledke izpustite. Sestavite programe iz novejše različice s f95, ne f77; uporabite.f95 kot pripono datoteke namesto.f.
Korak 2. Sestavite program
Če želite to narediti, v ukazno vrstico vnesite f77 helloworld.f. Če pride do napake, verjetno še niste namestili prevajalnika Fortran, kot je na primer gfortran.
Korak 3. Zaženite program
Prevajalnik je izdelal datoteko z imenom a.out. Zaženite to datoteko tako, da vnesete./a.out.
Korak 4. Razumeti, kaj ste pravkar napisali
-
program helloworld
označuje začetek programa "helloworld". Podobno,
končajte program helloworld
- označuje njen konec.
-
Privzeto, če ne deklarirate vrste spremenljivke, Fortran obravnava spremenljivko z imenom, ki se začne s črko od i do n kot celo število, vse ostale pa kot resnično število. Priporoča se uporaba
implicitno nič
- če tega vedenja ne potrebujete.
-
znak*13 hello_string
- razglasi niz znakov, ki se imenuje hello_string.
-
hello_string = "Pozdravljeni, svet!"
- dodeli vrednost "Pozdravljeni, svet!" v deklarirano matriko. Za razliko od drugih jezikov, kot je C, tega ni mogoče narediti v isti vrstici kot razglasitev matrike.
-
write (*, *) hello_string
- natisne vrednost hello_string na standardni izhod. Prvi * pomeni pisanje v standardni izhod, v nasprotju z neko datoteko. Drugi * pomeni, da ne uporabljate posebnega oblikovanja.
Korak 5. Dodajte komentar
V tako preprostem programu to ni nujno, vendar bo koristno, če napišete kaj bolj zapletenega, zato morate vedeti, kako jih dodati. Komentar lahko dodate na dva načina.
- Če želite dodati komentar, ki ima sam celo vrstico, vnesite c neposredno v novo vrstico, brez 6 presledkov. Po tem napišite svoj komentar. Za boljšo berljivost morate pustiti presledek med c in vašim komentarjem, vendar to ni potrebno. Upoštevajte, da morate uporabiti a! namesto c v Fortranu 95 in novejšem.
- Če želite dodati komentar v isto vrstico kot kodo, dodajte znak! kjer želite, da se začne vaš komentar. Spet prostor ni potreben, vendar izboljša berljivost.
2. del od 4: Uporaba vhodnih in če-konstrukcij
Korak 1. Razumeti različne vrste podatkov
- INTEGER se uporablja za cela števila, na primer 1, 3 ali -3.
- REAL lahko vsebuje tudi številko, ki ni cela, na primer 2,5.
- COMPLEX se uporablja za shranjevanje kompleksnih številk. Prva številka je resnična, druga pa namišljena.
- CHARACTER se uporablja za znake, na primer črke ali ločila.
- LOGIČNO je lahko. ali.false.. To je kot boolean tip v drugih programskih jezikih.
Korak 2. Pridobite vnos uporabnika
V programu "Hello world", ki ste ga napisali prej, bi bilo pridobivanje uporabniškega vnosa neuporabno. Odprite torej novo datoteko in jo poimenujte compnum.f. Ko končate, bo uporabniku povedal, ali je vneseno število pozitivno, negativno ali enako nič.
- Vnesite compnum programa line in compnum programa.
- Nato razglasite spremenljivko tipa REAL. Prepričajte se, da je vaša izjava med začetkom in koncem programa.
- Pojasnite uporabniku, kaj naj naredi. Napišite nekaj besedila s funkcijo pisanja.
- Preberite uporabnikov vnos v spremenljivko, ki ste jo deklarirali s funkcijo branja.
program compnum real r write (*, *) "Enter real number:" read (*, *) r končaj program
Korak 3. Obdelajte uporabnikov vnos s konstrukcijo if
Postavite med
preberi (*, *) r
in
zaključni program
- Primerjava je narejena z.gt. (več kot),.lt. (manj kot) in. ekv. (enako) v Fortranu.
- Fortran podpira if, else if, and else
- Fortranova konstrukcija if se vedno konča s koncem if.
če (r.gt. 0) potem napišite (*, *) "Ta številka je pozitivna." sicer, če (r.lt. 0) potem napišite (*, *) "Ta številka je negativna." else write (*, *) "To število je 0." konec če
Nasvet: Ni vam treba zamikati kode znotraj konstrukcij if z več presledki, vendar izboljša berljivost.
Korak 4. Prevedite in zaženite program
Vnesite nekaj številk, da ga preizkusite. Če vnesete črko, bo nastala napaka, vendar je to v redu, ker program ne preveri, ali je vnos črka, številka ali kaj drugega.
3. del 4: Uporaba zank in nizov
Korak 1. Odprite novo datoteko
Ker je ta koncept drugačen, boste morali znova napisati nov program. Poimenujte datoteko addmany.f. Vstavite ustrezne izjave programa in zaključek programa ter implicitnega nič. Ko končate, bo ta program prebral 10 številk in natisnil njihovo vsoto.
Korak 2. Razglasite niz dolžine 10
Tu boste shranili številke. Ker verjetno želite vsoto realnih števil, morate matriko razglasiti za resnično. Takšno matriko razglasite z
realne številke (50)
(številke so ime matrike, ne izraz).
Korak 3. Razglasite nekaj spremenljivk
Navedite numSum kot realno število. Uporabili ga boste za shranjevanje vsote pozneje, ker pa vsota že jemlje izraz Fortran, morate uporabiti ime, kot je numSum. Nastavite ga na 0. Razglasite i kot celo število in mu še ne dodelite nobene vrednosti. To bo storjeno v do-zanki.
Korak 4. Ustvarite do-zanko
Enakovreden v drugih programskih jezikih bi bil for-loop.
- Do-zanka se vedno začne z do.
- V isti vrstici kot do, ločena s presledkom, je oznaka, na katero bo šel program, ko bo končan. Zaenkrat samo napišite 1, oznako boste nastavili kasneje.
-
Po tem, spet samo ločeno s presledkom, vnesite
i = 1,10
. Tako bo spremenljivka i, ki ste jo deklarirali pred zanko, prešla od 1 do 10 v korakih po 1. Koraki v tem izrazu niso omenjeni, zato Fortran uporablja privzeto vrednost 1. Lahko bi tudi zapisali
i = 1, 10, 1
-
V zanko vnesite nekaj kode (za boljšo berljivost zamaknite s presledki). Za ta program bi morali spremenljivko numSum povečati z i-tim elementom številk matrike. To se naredi z izrazom
numSum = numSum + število (i)
- Zanko zaključite z stavkom continue z oznako. Vnesite samo 4 presledke. Nato vnesite a 1. To je oznaka, na katero ste do-zanki povedali, naj gre po koncu. Nato vnesite presledek in nadaljujte. Izraz continue ne naredi ničesar, vendar daje dobro mesto za postavitev oznake in pokaže, da se je do-zanka končala.
Vaša zanka do bi morala izgledati tako:
do 1 i = 1, 10 numSum = numSum + številke (i) 1 nadaljuj
Nasvet: V Fortranu 95 in novejših vam ni treba uporabljati nalepk. Samo ne dajte enega v stavek do in končajte zanko z "end do" namesto "continue".
Korak 5. Natisnite numSum
Prav tako bi bilo smiselno podati nekaj konteksta, na primer "Vsota vaših številk je:". Za oboje uporabite funkcijo pisanja. Celotna koda bi morala izgledati tako:
program doda veliko implicitnih nobenih realnih števil (10) realno numSum celo število i numSum = 0 write (*, *) "Vnesite 10 številk:" preberite (*, *) številke do 1 i = 1, 10 numSum = numSum + številke (i) 1 continue write (*, *) "Njihova vsota je:" write (*, *) numSum konec programa addmany
Korak 6. Sestavite in zaženite kodo
Ne pozabite ga preizkusiti. Lahko pritisnete ↵ Enter po vsaki vneseni številki ali vnesete več številk v isto vrstico in jih ločite s presledkom.
4. del od 4: Razumevanje naprednih konceptov
Korak 1. Dobro si predstavljajte, kaj bo vaš program naredil
Pomislite, kakšni podatki so potrebni kot vhodni podatki, kako strukturirati izhodne podatke in vključite nekaj vmesnih izhodov, da boste lahko spremljali napredek svojega izračuna. To bo zelo koristno, če veste, da bo vaš izračun trajal dlje časa ali vključuje več zapletenih korakov.
Korak 2. Poiščite dobro referenco Fortrana
Fortran ima veliko več funkcij, kot je razloženo v tem članku, in bi bile lahko koristne za program, ki ga želite napisati. Sklic navaja vse funkcije, ki jih ima programski jezik. To je eno za Fortran 77 in to je za Fortran 90/95.
Korak 3. Spoznajte podprograme in funkcije
Korak 4. Naučite se brati in pisati iz/v datoteke
Naučite se tudi formatirati vhod/izhod.
Korak 5. Spoznajte nove funkcije Fortrana 90/95 in novejših
Ta korak preskočite, če veste, da boste pisali/vzdrževali samo kodo Fortran 77.
Ne pozabite, da je Fortran 90 uvedel izvorno kodo "Free Form", ki omogoča pisanje kode brez presledkov in brez omejitve 72 znakov
Korak 6. Preberite ali poiščite nekaj knjig o znanstvenem programiranju
Na primer, knjiga "Številčni recepti v Fortranu" je hkrati dobro besedilo o algoritmih znanstvenega programiranja in dober uvod v sestavljanje kod. Novejše izdaje vključujejo poglavja o programiranju v mešanem jezikovnem okolju in vzporednem programiranju. Drug primer je "Modern Fortran in Practice", ki ga je napisal Arjen Markus. Knjiga daje vpogled v to, kako napisati fortranske programe v slogu enaindvajsetega stoletja v skladu z najnovejšimi fortranškimi standardi.
Korak 7. Naučite se sestaviti program, ki se razprostira po več datotekah
Predpostavimo, da je vaš program Fortran razširjen po datotekah main.f in morestuff.f in da želite, da se nastala binarna datoteka imenuje allstuff. Nato morate v ukazno vrstico zapisati naslednje ukaze:
f77 -c morestuff.f f77 -c main.f f77 -c morestuff.f f77 -o allstuff main.o morestuff.f
Nato zaženite datoteko tako, da vnesete./allstuff.
Nasvet: To deluje na enak način z novejšimi različicami Fortrana. Zamenjajte.f s pravilno razširitvijo in f77 s pravilno različico prevajalnika.
Korak 8. Uporabite optimizacijo, ki jo ponuja prevajalnik
Večina prevajalnikov vključuje optimizacijske algoritme, ki izboljšajo učinkovitost vaše kode. Ti se običajno vklopijo z vključitvijo zastavice -O, -O2 ali -O3 pri sestavljanju (spet odvisno od vaše različice fortrana).
-
Na splošno je najnižja raven -O ali -O2 najboljša. Zavedajte se, da lahko uporaba agresivnejše možnosti optimizacije povzroči napake v zapletenih kodah in lahko celo upočasni stvari! Preizkusite svojo kodo.
Nasveti
- Začnite z majhnimi programi. Ko izdelujete svojo kodo, poskusite prepoznati najpomembnejši del težave - ali gre za vnos podatkov ali klic funkcij, strukturo zanke (to je nekaj zelo osnovnih primerov) in začnite od tam. Nato na tem gradite v majhnih korakih.
- Fortran ne razlikuje med velikimi in malimi črkami. Lahko bi na primer razglasili spremenljivko "real Num" in v naslednjo vrstico zapisali "num = 1", da bi ji dodelili vrednost. Ampak to je slab slog, zato se mu izogibajte. Še pomembneje je, da Fortran ne skrbi niti za primere funkcij in izjav. Pogosto je pisanje funkcij in stavkov z velikimi tiskanimi črkami, spremenljivke pa z malimi črkami.
- EMACS je dober brezplačen urejevalnik besedil namesto Beležnice.
- Morda boste sprva lažje uporabljali spletno IDE (integrirano razvojno okolje). Dobra možnost je Coding Ground. Tam boste našli številne programske jezike, vključno s Fortran-95. Druga možnost je Ideone.