Kako programirati u Fortranu (sa slikama)

Sadržaj:

Kako programirati u Fortranu (sa slikama)
Kako programirati u Fortranu (sa slikama)

Video: Kako programirati u Fortranu (sa slikama)

Video: Kako programirati u Fortranu (sa slikama)
Video: Лучшее приложение для создания заметок — что такое Evernote, как им пользоваться 2024, April
Anonim

Mnogi ljudi smatraju Fortran arhaičnim i "mrtvim" programskim jezikom. Međutim, većina znanstvenih i inženjerskih kodova napisana je na Fortranu. Kao takvo, programiranje u F77 i F90 ostaje neophodna vještina za većinu tehničkih programera. Štaviše, najnoviji Fortran standardi (2003, 2008, 2015) omogućavaju programeru da sa minimalnim naporom napiše visoko efikasan kod, koristeći istovremeno sve savremene jezičke funkcije, poput OOP-a (objektno orijentisano programiranje). FORTRAN je kratica za "FORmula TRANslation" i najprikladniji je za matematičke i numeričke aplikacije, a ne za grafičke ili baze podataka. Većina fortran kodova unosi tekst iz datoteke ili komandne linije, a ne iz menija ili grafičkog sučelja.

Koraci

1. dio od 4: Pisanje i sastavljanje jednostavnog programa

Fortran hello world program write corrected
Fortran hello world program write corrected

Korak 1. Napišite program "Hello World"

Ovo je obično prvi program koji piše na bilo kojem jeziku i samo ispisuje "Hello world" na ekran. Upišite bilo koji kôd u bilo koji uređivač teksta i spremite ga kao helloworld.f. Obratite pažnju da ispred svakog retka mora biti tačno 6 razmaka.

program helloworld implicitno nema znakova*13 hello_string hello_string = "Zdravo, svijete!" write (*, *) hello_string završni program helloworld

Savjet: Razmaci su potrebni samo u verzijama Fortrana do FORTRANA 77. Ako koristite noviju verziju, razmake možete ispustiti. Prevesti programe iz novije verzije sa f95, a ne f77; koristite.f95 kao ekstenziju datoteke umjesto samo.f.

Korak 2. Kompajlirajte program

Da biste to učinili, upišite f77 helloworld.f u naredbenu liniju. Ako ovo daje grešku, vjerojatno još niste instalirali Fortran kompajler kao što je na primjer gfortran.

Fortran hello world compile run
Fortran hello world compile run

Korak 3. Pokrenite program

Kompajler je proizveo datoteku pod nazivom a.out. Pokrenite ovu datoteku upisivanjem./a.out.

Korak 4. Shvatite šta ste upravo napisali

  • program helloworld

    označava početak programa "helloworld". Slično,

    kraj programa helloworld

  • označava njegov kraj.
  • Prema zadanim postavkama, ako ne deklarirate tip varijable, Fortran varijablu tretira imenom koje počinje slovom od i do n kao cijeli broj, a sve ostale kao realan broj. Preporučuje se upotreba

    implicitno nema

  • ako vam takvo ponašanje nije potrebno.
  • znak*13 hello_string

  • deklariše niz znakova koji se naziva hello_string.
  • hello_string = "Zdravo, svijete!"

  • dodjeljuje vrijednost "Hello, world!" na deklarirani niz. Za razliku od drugih jezika poput C -a, to se ne može učiniti na istom retku kao i deklariranje niza.
  • write (*, *) hello_string

  • ispisuje vrijednost hello_string na standardni izlaz. Prvi * znači pisanje u standardni izlaz, za razliku od neke datoteke. Drugi * znači da ne koristite nikakvo posebno oblikovanje.
Fortran comments
Fortran comments

Korak 5. Dodajte komentar

To nije potrebno u tako jednostavnom programu, ali bit će korisno kada napišete nešto složenije, pa biste trebali znati kako ih dodati. Postoje dva načina za dodavanje komentara.

  • Da biste dodali komentar koji ima cijeli redak sam, upišite c izravno u novi redak, bez 6 razmaka. Nakon toga napišite svoj komentar. Ostavite razmak između c i komentara radi bolje čitljivosti, ali to nije potrebno. Imajte na umu da morate koristiti a! umjesto c u Fortranu 95 i novijim.
  • Da biste dodali komentar u isti red kao kod, dodajte a! gde želite da počne vaš komentar. Opet, prostor nije potreban, ali poboljšava čitljivost.

Dio 2 od 4: Korištenje unosa i If-konstrukcija

Fortran tipovi podataka
Fortran tipovi podataka

Korak 1. Shvatite različite tipove podataka

  • INTEGER se koristi za cijele brojeve, poput 1, 3 ili -3.
  • REAL može sadržavati i broj koji nije cijeli, poput 2,5.
  • COMPLEX se koristi za spremanje složenih brojeva. Prvi broj je realan, a drugi imaginarni dio.
  • CHARACTER se koristi za znakove, poput slova ili interpunkcije.
  • LOGIČKO može biti.istina. ili.false.. Ovo je kao boolean tip u drugim programskim jezicima.

Korak 2. Dobijte unos korisnika

U programu "Hello world" koji ste ranije napisali dobivanje korisničkog unosa bilo bi beskorisno. Zato otvorite novu datoteku i dajte joj ime compnum.f. Kada završite, korisnik će reći je li broj koji je unio pozitivan, negativan ili jednak nuli.

  • Unesite programski dodatak linija i završite programski dodatak.
  • Zatim deklarirajte varijablu tipa REAL. Uvjerite se da je vaša deklaracija između početka i kraja programa.
  • Objasnite korisniku šta treba da uradi. Napišite neki tekst s funkcijom pisanja.
  • Pročitajte unos korisnika u varijablu koju ste deklarirali pomoću funkcije čitanja.

program compnum real r pisanje (*, *) "Unesite stvarni broj:" read (*, *) r kraj programa

Fortran if construction
Fortran if construction

Korak 3. Obradite korisnički unos sa if-konstrukcijom

Stavite ga između

pročitajte (*, *) r

i

kraj programa

  • Poređenje se vrši sa.gt. (veće od),.lt. (manje od) i. ekv. (jednako) u Fortranu.
  • Fortran podržava if, else if, and else
  • Fortranova konstrukcija if uvijek završava s krajem ako.

if (r. gt. 0) tada napišite (*, *) "Taj broj je pozitivan." inače if (r.lt. 0) onda napišite (*, *) "Taj broj je negativan." else write (*, *) "Taj broj je 0." kraj ako

Savjet: Ne morate uvlačiti kôd unutar if-konstrukcija s više razmaka, ali poboljšava čitljivost.

Fortran program za provjeru broja test
Fortran program za provjeru broja test

Korak 4. Prevedite i pokrenite svoj program

Unesite neke brojeve da biste to testirali. Ako unesete slovo, pojavit će se greška, ali to je u redu jer program ne provjerava je li unos slovo, broj ili nešto drugo.

3. dio od 4: Korištenje petlji i nizova

Korak 1. Otvorite novu datoteku

Budući da je ovaj koncept drugačiji, morat ćete ponovo napisati novi program. Imenujte datoteku addmany.f. Umetnite odgovarajuće programske i završne izraze programa, kao i implicitnu nijednu. Kada završite, ovaj program će pročitati 10 brojeva i ispisati njihov zbir.

Korak 2. Deklarirajte niz dužine 10

Ovdje ćete pohraniti brojeve. Budući da vjerovatno želite zbir realnih brojeva, trebate proglasiti niz stvarnim. Takav niz deklarirate sa

stvarni brojevi (50)

(brojevi su naziv niza, a ne izraz).

Korak 3. Deklarirajte neke varijable

Navedite numSum kao realan broj. Koristit ćete ga za kasnije spremanje zbroja, ali budući da je zbir već uzet u izraz Fortran, morate koristiti ime poput numSum. Postavite ga na 0. Proglasite i kao cijeli broj i još mu nemojte dodijeliti nikakvu vrijednost. To će biti učinjeno u do-petlji.

Korak 4. Kreirajte do-loop

Ekvivalent onome u drugim programskim jezicima bio bi for-loop.

  • Do-petlja uvek počinje sa do.
  • Na istoj liniji kao i do, odvojena razmakom, nalazi se oznaka na koju će program otići kada završi. Za sada samo napišite 1, oznaku ćete postaviti kasnije.
  • Nakon toga, opet samo razdvojeno razmakom, upišite

    i = 1,10

    . Ovo će učiniti da varijabla i, koju ste naveli prije petlje, pređe od 1 do 10 u koracima od 1. Koraci se ne spominju u ovom izrazu, pa Fortran koristi zadanu vrijednost 1. Mogli ste i napisati

    i = 1, 10, 1

  • Umetnite neki kod unutar petlje (uvlačenje s razmacima radi bolje čitljivosti). Za ovaj program trebate povećati varijablu numSum sa i-tim elementom brojeva niza. To se radi pomoću izraza

    numSum = numSum + broj (i)

  • Završite petlju naredbom continue koja ima oznaku. Upišite samo 4 razmaka. Nakon toga upišite 1. To je oznaka na koju ste rekli do petlji da ide nakon što se završi. Zatim upišite razmak i nastavite. Kontinuirani izraz ne radi ništa, ali daje dobro mjesto za postavljanje oznake, kao i pokazivanje da je do-petlja završila.

Vaša do petlja bi sada trebala izgledati ovako:

do 1 i = 1, 10 numSum = numSum + brojevi (i) 1 nastavi

Savjet: U Fortranu 95 i novijim, ne morate koristiti oznake. Samo nemojte stavljati jedan u do naredbu i završiti petlju sa "end do" umjesto "continue".

Fortran do loop code
Fortran do loop code

Korak 5. Odštampajte numSum

Također, ima smisla dati neki kontekst, na primjer "Zbir vaših brojeva je:". Koristite funkciju pisanja za oboje. Cijeli vaš kôd sada bi trebao izgledati ovako:

program dodaje mnogo implicitnih nema realnih brojeva (10) realni numSum cijeli broj i numSum = 0 pisanje (*, *) "Unesite 10 brojeva:" čitanje (*, *) brojevi do 1 i = 1, 10 numSum = numSum + brojevi (i) 1 nastavi pisati (*, *) "Njihov zbroj je:" upišite (*, *) numSum kraj programa dodaj mnogo

Fortran dodajte brojeve kod test
Fortran dodajte brojeve kod test

Korak 6. Prevedite i pokrenite svoj kôd

Ne zaboravite da ga testirate. Možete pritisnuti ↵ Enter nakon svakog unesenog broja ili unijeti više brojeva u isti red i odvojiti ih razmakom.

Dio 4 od 4: Razumijevanje naprednih koncepata

Program u Fortranu Korak 13
Program u Fortranu Korak 13

Korak 1. Dobro zamislite šta će vaš program raditi

Razmislite o tome koji su podaci potrebni kao ulazni podaci, kako strukturirati izlaz i uključite neki međuprodukt kako biste mogli pratiti napredak vašeg izračuna. Ovo će biti vrlo korisno ako znate da će vaš izračun trajati dugo ili uključuje više složenih koraka.

Fortran referentna web stranica screenshot
Fortran referentna web stranica screenshot

Korak 2. Pronađite dobru referencu za Fortran

Fortran ima mnogo više funkcija nego što je objašnjeno u ovom članku, a mogle bi biti korisne za program koji želite napisati. Referenca navodi sve funkcije koje programski jezik ima. Ovo je jedan za Fortran 77, a ovaj za Fortran 90/95.

Fortran podrutine example
Fortran podrutine example

Korak 3. Saznajte o potprogramima i funkcijama

Fortran format string example
Fortran format string example

Korak 4. Naučite čitati i pisati iz/u datoteke

Naučite i kako formatirati ulaz/izlaz.

Primjer modernog fortrana screenshot
Primjer modernog fortrana screenshot

Korak 5. Saznajte o novim značajkama Fortrana 90/95 i novijih

Preskočite ovaj korak ako znate da ćete pisati/održavati samo Fortran 77 kôd.

Upamtite da je Fortran 90 uveo izvorni kod "Free Form", koji omogućava pisanje koda bez razmaka i bez ograničenja od 72 znaka

Fortran book online screenshot
Fortran book online screenshot

Korak 6. Pročitajte ili potražite neke knjige o naučnom programiranju

Na primjer, knjiga "Numerički recepti u Fortranu" je i dobar tekst o algoritmima naučnog programiranja i dobar uvod u način sastavljanja kodova. Novija izdanja uključuju poglavlja o tome kako programirati u okruženju mješovitih jezika i paralelno programiranje. Drugi primjer je "Moderni Fortran u praksi" koji je napisao Arjen Markus. Knjiga daje uvid u to kako napisati Fortran programe u stilu dvadeset prvog stoljeća u skladu s najnovijim Fortran standardima.

Fortran program za kompajliranje na više fajlova
Fortran program za kompajliranje na više fajlova

Korak 7. Naučite kako sastaviti program raspoređen na više datoteka

Pretpostavimo da je vaš Fortran program raširen po datotekama main.f i morestuff.f i da želite da rezultirajuća binarna datoteka bude imenovana allstuff. Zatim ćete morati upisati sljedeće naredbe u naredbenu liniju:

f77 -c morestuff.f f77 -c main.f f77 -c morestuff.f f77 -o allstuff main.o morestuff.f

Zatim pokrenite datoteku upisivanjem./allstuff.

Savjet: Ovo funkcionira na isti način s novijim verzijama Fortrana. Samo zamijenite.f ispravnim nastavkom i f77 ispravnom verzijom kompajlera.

Korak 8. Koristite optimizaciju koju nudi vaš kompajler

Većina kompajlera uključuje algoritme za optimizaciju koji poboljšavaju efikasnost vašeg koda. Oni se obično uključuju uključivanjem zastavice -O, -O2 ili -O3 prilikom kompajliranja (opet ovisno o vašoj verziji fortrana).

  • Općenito, najniži nivo -O ili -O2 je najbolji. Imajte na umu da upotreba agresivnije opcije optimizacije može unijeti greške u složene kodove i čak usporiti stvari! Testirajte svoj kôd.

    Savjeti

    • Počnite s malim programima. Prilikom izrade vlastitog koda pokušajte identificirati najvažniji dio problema - radi li se o unosu podataka ili pozivanju funkcija, strukturi petlje (ovo su neki vrlo elementarni primjeri) i počnite odatle. Zatim gradite na tome u malim koracima.
    • Fortran ne razlikuje velika i mala slova. Mogli biste, na primjer, proglasiti varijablu "stvarni broj" i napisati "num = 1" u sljedećem retku kako biste joj dodijelili vrijednost. Ali to je loš stil, pa ga izbjegavajte. Što je još važnije, Fortran ne mari ni za slučaj funkcija i izjava. Uobičajeno je da se funkcije i izrazi pišu velikim slovom, a varijable malim slovima.
    • EMACS je dobar besplatni uređivač teksta koji se koristi umjesto Notepada.
    • Možda će vam u početku biti lakše koristiti mrežni IDE (integrirano razvojno okruženje). Dobra opcija je Coding Ground. Tamo ćete pronaći mnoštvo programskih jezika, uključujući Fortran-95. Druga mogućnost je Ideone.

Preporučuje se: