Monet ihmiset pitävät Fortrania vanhanaikaisena ja "kuolleena" ohjelmointikielenä. Useimmat tieteelliset ja tekniset koodit on kuitenkin kirjoitettu Fortranissa. Ohjelmointi F77: ssä ja F90: ssä on edelleen välttämätön taito useimmille teknisille ohjelmoijille. Lisäksi uusimmat Fortran-standardit (2003, 2008, 2015) antavat ohjelmoijalle mahdollisuuden kirjoittaa erittäin tehokasta koodia pienellä vaivalla hyödyntäen samalla kaikkia nykyaikaisia kielitoimintoja, kuten OOP (olio-ohjelmointi). FORTRAN on lyhenne sanoista "FORmula TRANslation", ja se sopii parhaiten matemaattisiin ja numeerisiin sovelluksiin grafiikan tai tietokantasovellusten sijasta. Useimmat fortran-koodit käyttävät tekstinsyöttöä tiedostosta tai komentoriviltä eikä valikosta tai graafisesta käyttöliittymästä.
Askeleet
Osa 1/4: Yksinkertaisen ohjelman kirjoittaminen ja kokoaminen
Vaihe 1. Kirjoita "Hello World" -ohjelma
Tämä on yleensä ensimmäinen ohjelma, joka kirjoittaa millä tahansa kielellä, ja se tulostaa vain "Hello world" ruudulle. Kirjoita seuraava koodi mihin tahansa tekstieditoriin ja tallenna se helloworld.f. Huomaa, että jokaisen rivin edessä on oltava täsmälleen 6 välilyöntiä.
ohjelma helloworld implicit none character*13 hello_string hello_string = "Hei, maailma!" kirjoittaa (*, *) hello_string end program helloworld
Kärki: Välit ovat välttämättömiä vain Fortran -versioissa FORTRAN 77. Jos käytät uudempaa versiota, voit pudottaa välilyönnit. Kokoa ohjelmat uudemmasta versiosta, jossa on f95, ei f77; käytä.f95 -tiedostotunnistetta vain.f -tiedoston sijaan.
Vaihe 2. Kokoa ohjelma
Voit tehdä tämän kirjoittamalla komentoriville f77 helloworld.f. Jos tämä antaa virheen, et todennäköisesti ole vielä asentanut Fortran -kääntäjää, kuten esimerkiksi gfortran.
Vaihe 3. Suorita ohjelma
Kääntäjä on tuottanut tiedoston nimeltä a.out. Suorita tämä tiedosto kirjoittamalla./a.out.
Vaihe 4. Ymmärrä mitä kirjoitit
-
ohjelma helloworld
osoittaa "helloworld" -ohjelman alkua. Samoin,
lopeta helloworld -ohjelma
- osoittaa sen lopun.
-
Jos et ilmoita muuttujatyyppiä, Fortran käsittelee oletusarvoisesti muuttujan, jonka nimi alkaa kirjaimella i: stä n: ään kokonaislukuna ja kaikki muut reaaliluvuna. On suositeltavaa käyttää
epäsuorasti ei mitään
- jos et tarvitse sellaista käytöstä.
-
merkki*13 hello_string
- ilmoittaa merkkijonon, jota kutsutaan hello_stringiksi.
-
hello_string = "Hei, maailma!"
- määrittää arvon "Hei, maailma!" ilmoitettuun taulukkoon. Toisin kuin muilla kielillä, kuten C, tätä ei voida tehdä samalla rivillä kuin taulukon ilmoittaminen.
-
kirjoita (*, *) hello_string
- tulostaa hello_string -arvon vakioulostuloon. Ensimmäinen * tarkoittaa kirjoittamista vakiolähtöön, toisin kuin jotkut tiedostot. Toinen * tarkoittaa, että et käytä mitään erityistä muotoilua.
Vaihe 5. Lisää kommentti
Tämä ei ole välttämätöntä tällaisessa yksinkertaisessa ohjelmassa, mutta siitä on hyötyä, kun kirjoitat jotain monimutkaisempaa, joten sinun pitäisi tietää, kuinka lisätä ne. Voit lisätä kommentin kahdella tavalla.
- Jos haluat lisätä kommentin, jossa on kokonainen rivi, kirjoita c suoraan uudelle riville ilman 6 välilyöntiä. Kirjoita sen jälkeen kommenttisi. Jätä välilyönti c: n ja kommenttisi väliin paremman luettavuuden vuoksi, mutta tämä ei ole pakollista. Huomaa, että sinun on käytettävä a! c: n sijasta Fortran 95: ssä ja uudemmissa.
- Jos haluat lisätä kommentin samalla rivillä koodin kanssa, lisää! mistä haluat kommenttisi alkavan. Jälleen tilaa ei tarvita, mutta se parantaa luettavuutta.
Osa 2/4: Syötteen ja If-rakenteiden käyttäminen
Vaihe 1. Ymmärrä eri tietotyypit
- INTEGERiä käytetään kokonaislukuihin, kuten 1, 3 tai -3.
- REAL voi sisältää myös luvun, joka ei ole kokonainen, kuten 2.5.
- COMPLEX käytetään kompleksilukujen tallentamiseen. Ensimmäinen numero on todellinen ja toinen kuvitteellinen osa.
- CHARACTER -merkkiä käytetään merkkeihin, kuten kirjaimiin tai välimerkkeihin.
- LOGINEN voi olla joko.tosi. tai.false.. Tämä on kuin boolean -tyyppi muilla ohjelmointikielillä.
Vaihe 2. Hanki käyttäjän mielipide
Aiemmin kirjoittamassasi "Hello world" -ohjelmassa käyttäjän syötteen saaminen olisi hyödytöntä. Joten avaa uusi tiedosto ja anna sille nimi compnum.f. Kun olet valmis, se kertoo käyttäjälle, onko syöttämäsi luku positiivinen, negatiivinen vai nolla.
- Syötä rivit ohjelmayhdistelmä ja lopeta ohjelman kokoonpano.
- Ilmoita sitten REAL -tyyppinen muuttuja. Varmista, että ilmoituksesi on ohjelman alussa ja lopussa.
- Selitä käyttäjälle, mitä hänen pitäisi tehdä. Kirjoita tekstiä kirjoitustoiminnolla.
- Lue käyttäjän syöte lukutoiminnolla ilmoittamaasi muuttujaan.
ohjelma compnum real r write (*, *) "Anna reaaliluku:" read (*, *) r end program
Vaihe 3. Käsittele käyttäjän syöttämä if-rakenne
Laita se väliin
lue (*, *) r
ja
lopeta ohjelma
- Vertailu tehdään.gt. (suurempi kuin),.lt. (alle) ja.eq (yhtä) Fortranissa.
- Fortran tukee if, else if ja else
- Fortranin if-rakentaminen päättyy aina loppuun, jos.
jos (r.gt. 0), kirjoita (*, *) "Tämä luku on positiivinen." muuten jos (r.lt. 0) kirjoita (*, *) "Tämä luku on negatiivinen." muuten kirjoita (*, *) "Tämä luku on 0." loppu Jos
Kärki: Sinun ei tarvitse lisätä sisennystä koodiin if-rakenteissa, joissa on enemmän välilyöntejä, mutta se parantaa luettavuutta.
Vaihe 4. Kokoa ja suorita ohjelma
Syötä joitain numeroita testataksesi sitä. Jos kirjoitat kirjaimen, se aiheuttaa virheen, mutta se ei haittaa, koska ohjelma ei tarkista, onko syöte kirjain, numero vai jotain muuta.
Osa 3/4: Silmukoiden ja matriisien käyttö
Vaihe 1. Avaa uusi tiedosto
Koska tämä käsite on erilainen, sinun on kirjoitettava uusi ohjelma uudelleen. Nimeä tiedosto addmany.f. Lisää vastaava ohjelma- ja lopetusohjelmalausunto sekä implisiittinen lausunto. Kun olet valmis, tämä ohjelma lukee 10 numeroa ja tulostaa niiden summan.
Vaihe 2. Ilmoita taulukko, jonka pituus on 10
Tähän tallennat numerot. Koska haluat todennäköisesti reaalilukujen summan, sinun on ilmoitettava taulukko todelliseksi. Ilmoitat tällaisen taulukon kanssa
todelliset luvut (50)
(numerot ovat taulukon nimi, ei lauseke).
Vaihe 3. Ilmoita muuttujat
Ilmoita numSum reaaliluvuksi. Käytät sitä summan tallentamiseen myöhemmin, mutta koska summa on jo otettu Fortran -lausekkeesta, sinun on käytettävä nimeä, kuten numSum. Aseta arvoksi 0. Ilmoita i kokonaisluvuksi äläkä anna sille vielä mitään arvoa. Se tehdään do-loopissa.
Vaihe 4. Luo do-loop
Vastaava muilla ohjelmointikielillä olisi for-loop.
- Do-loop alkaa aina do: lla.
- Samalla rivillä kuin do, välilyönnillä erotettuna, on tarra, johon ohjelma siirtyy, kun se on valmis. Kirjoita nyt vain 1, määrität tarran myöhemmin.
-
Kirjoita sen jälkeen jälleen vain välilyönnillä erotettu
i = 1, 10
. Tämä tekee muuttujasta i, jonka olit ilmoittanut ennen silmukkaa, 1: stä 10: een vaiheissa 1. Vaiheita ei mainita tässä lausekkeessa, joten Fortran käyttää oletusarvoa 1. Voit myös kirjoittaa
i = 1, 10, 1
-
Laita jokin koodi silmukan sisään (sisennys, jossa on välilyöntejä paremman luettavuuden takaamiseksi). Tätä ohjelmaa varten sinun on lisättävä muuttuja numSum taulukon numeroiden i-elementillä. Tämä tehdään ilmaisulla
numSum = numSum + luku (i)
- Lopeta silmukka jatkolausekkeella, jossa on tarra. Kirjoita vain 4 välilyöntiä. Kirjoita sen jälkeen 1. Tämä on etiketti, johon kerroit do-loopin siirtyvän sen päätyttyä. Kirjoita sitten välilyönti ja jatka. Jatka-lauseke ei tee mitään, mutta se antaa hyvän paikan tarran sijoittamiseen sekä osoittaa, että do-loop on päättynyt.
Do -silmukkasi pitäisi nyt näyttää tältä:
do 1 i = 1, 10 numSum = numSum + numerot (i) 1 jatka
Kärki: Fortran 95: ssä ja uudemmissa tarroja ei tarvitse käyttää. Älä vain laita yhtä do -lauseeseen ja lopeta silmukka "end do" -merkinnällä "jatka" -vaihtoehdon sijaan.
Vaihe 5. Tulosta numSum
Lisäksi olisi järkevää antaa jokin konteksti, esimerkiksi "Numeroidesi summa on:". Käytä kirjoitustoimintoa molemmille. Koko koodisi pitäisi nyt näyttää tältä:
ohjelma addmany implisiittinen ei mitään todellisia numeroita (10) real numSum kokonaisluku i numSum = 0 write (*, *) "Syötä 10 numeroa:" luku (*, *) numerot tekevät 1 i = 1, 10 numSum = numSum + numerot (i) 1 jatka kirjoittamista (*, *) "Niiden summa on:" write (*, *) numSum end program addmany
Vaihe 6. Käännä ja suorita koodisi
Älä unohda testata sitä. Voit joko painaa ↵ Enter jokaisen syöttämäsi numeron jälkeen tai kirjoittaa useita numeroita samalla rivillä ja erottaa ne välilyönnillä.
Osa 4/4: Kehittyneiden käsitteiden ymmärtäminen
Vaihe 1. Hanki hyvä käsitys siitä, mitä ohjelmasi tekee
Ajattele, millaista dataa tarvitaan syötteeksi, miten tulostus jäsennellään, ja sisällytä välitulostusta, jotta voit seurata laskentasi edistymistä. Tämä on erittäin hyödyllistä, jos tiedät, että laskelmasi kestää pitkään tai sisältää useita monimutkaisia vaiheita.
Vaihe 2. Etsi hyvä Fortran -viite
Fortranilla on paljon enemmän toimintoja kuin tässä artikkelissa selitetään, ja ne voivat olla hyödyllisiä ohjelmalle, jonka haluat kirjoittaa. Viite luettelee kaikki ohjelmointikielen toiminnot. Tämä on yksi Fortran 77: lle ja tämä Fortran 90/95: lle.
Vaihe 3. Tutustu aliohjelmiin ja toimintoihin
Vaihe 4. Opi lukemaan ja kirjoittamaan tiedostoista/tiedostoihin
Opettele myös tulojen ja tulostusten muotoilu.
Vaihe 5. Tutustu Fortran 90/95: n ja uudempien ominaisuuksiin
Ohita tämä vaihe, jos tiedät, että kirjoitat/ylläpidät vain Fortran 77 -koodia.
Muista, että Fortran 90 esitteli "vapaamuotoisen" lähdekoodin, jonka avulla koodi voidaan kirjoittaa ilman välilyöntejä ja ilman 72 merkin rajaa
Vaihe 6. Lue tai etsi joitakin tieteellistä ohjelmointia käsitteleviä kirjoja
Esimerkiksi kirja "Numeeriset reseptit Fortranissa" on sekä hyvä teksti tieteellisistä ohjelmointialgoritmeista että hyvä johdanto koodien kokoamiseen. Uusimpiin painoksiin kuuluu lukuja siitä, miten ohjelmoidaan sekakielisessä ympäristössä ja rinnakkaisesta ohjelmoinnista. Toinen esimerkki on Arjen Markuksen kirjoittama "Modern Fortran in Practice". Kirja antaa käsityksen siitä, kuinka kirjoittaa Fortran-ohjelmia 21. vuosisadan tyyliin uusimpien Fortran-standardien mukaisesti.
Vaihe 7. Opi kääntämään ohjelma, joka on jaettu useisiin tiedostoihin
Oletetaan, että Fortran -ohjelmasi on levinnyt tiedostoihin main.f ja morestuff.f ja haluat, että tuloksena oleva binaari nimetään allstuff. Sitten sinun on kirjoitettava komentoriville seuraavat komennot:
f77 -c morestuff.f f77 -c main.f f77 -c morestuff.f f77 -o allstuff main.o morestuff.f
Suorita sitten tiedosto kirjoittamalla./allstuff.
Kärki: Tämä toimii samalla tavalla Fortranin uudempien versioiden kanssa. Korvaa vain.f oikealla laajennuksella ja f77 oikealla kääntäjäversiolla.
Vaihe 8. Käytä kääntäjän tarjoamaa optimointia
Useimmat kääntäjät sisältävät optimointialgoritmeja, jotka parantavat koodisi tehokkuutta. Nämä on yleensä otettu käyttöön sisällyttämällä -O, -O2 tai -O3 -lippu kääntäessäsi (jälleen riippuen fortran -versiosta).
-
Yleensä alin taso -O tai -O2 on paras. Huomaa, että aggressiivisemman optimointivaihtoehdon käyttäminen voi aiheuttaa virheitä monimutkaisissa koodeissa ja jopa hidastaa asioita! Testaa koodisi.
Vinkkejä
- Aloita pienillä ohjelmilla. Kun teet omaa koodiasi, yritä tunnistaa ongelman olennaisin osa - onko se syötetty tieto tai toimintojen kutsuminen, silmukan rakenne (nämä ovat joitakin hyvin yksinkertaisia esimerkkejä) ja aloita siitä. Kehitä sitten sitä pienin erin.
- Fortran ei erota kirjainkokoa. Voit esimerkiksi julistaa muuttujan "todellinen numero" ja kirjoittaa "num = 1" seuraavalle riville arvon määrittämiseksi sille. Mutta se on huono tyyli, joten vältä sitä. Vielä tärkeämpää on, että Fortran ei myöskään välitä funktioiden ja lausuntojen tapauksesta. On melko tavallista kirjoittaa funktioita ja lausekkeita isoilla kirjaimilla ja muuttujia pienillä kirjaimilla.
- EMACS on hyvä ilmainen tekstieditori käytettäväksi Notepadin sijaan.
- Saatat löytää aluksi helpompaa käyttää online -IDE: tä (integroitu kehitysympäristö). Hyvä vaihtoehto on Coding Ground. Löydät monia ohjelmointikieliä, mukaan lukien Fortran-95. Toinen vaihtoehto on Ideone.