Static Wikipedia February 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Web Analytics
Cookie Policy Terms and Conditions Fortran – Wikipedia

Fortran

Wikipedia

Kuva:-
Paradigma proseduraalinen
Tyypitys vahva, staattinen
Yleinen suoritusmalli -
Muistinhallinta dynaaminen
Julkaistu 1954
Kehittäjä John W. Backus
Viimeisin vakaa versio -
Viimeisin julkaisupäivä
Viimeisin kehitysversio -
Merkittävimmät toteutukset
Vaikutteet
Vaikuttanut
Murteet
Käyttöjärjestelmä
WWW-sivut
Uutisryhmä comp.lang.fortran

(muokkaa)

FORTRAN (engl. FORmula TRANslator) oli ensimmäinen todellinen korkean tason ohjelmointikieli. Iästään huolimatta sitä käytetään edelleen runsaasti erityisesti raskasta tieteellistä laskentaa vaativissa tehtävissä. Rakenteeltaan se on tyypillinen proseduraalinen ohjelmointikieli.

Ensimmäinen FORTRAN-kääntäjä ja sen myötä ensimmäinen FORTRAN-versio ilmestyi 1957 ja ensimmäisenä kaikista ohjelmointikielistä sille luotiin standardi vuonna 1966. Nykyään FORTRANista on käytössä useita versioita, joista tärkeimmät ovat F77, F90 ja F95. (FORTRAN IV eli F66 on jo jäänyt pois yleisestä käytöstä.) Lisäksi on olemassa erityisesti rinnakkaislaskentaan tarkoitettu High Performance Fortran (HPF). Fortranin nykyisin käytössä olevat versiot eivät tue oliopohjaista ohjelmointia, mutta tulevassa Fortran 200x-standardissa tuki olioiden kaltaisiin rakenteisiin on olemassa. On jokseenkin vakiintunut tapa kirjoittaa F77:ää ja sitä edeltäviä versioita tarkoitettaessa kielen nimeksi FORTRAN ja uudempia versioita tarkoitettaessa Fortran.

Fortranit sopivat erityisesti raskaaseen numeeriseen laskentaan ja kieleen liittyy useita juuri numeeriseen laskentaan liittyviä ominaisuuksia kuten taulukoiden ja matriisien käsittelyä. Suuri joukko erilaisia funktioita on Fortran-ohjelmissa käytettävissä ilman erillisten kirjastojen lataamista. Fortran on standardinsa ansiosta koodin siirrettävyyden kannalta eräs parhaita ohjelmointikieliä ja suoraviivaisen ja loogisen rakenteensa vuoksi kieli on helppo oppia nopeasti.

FORTRANin ja ohjelmointikielten kääntäjien kehitys ovat olleet kiinteässä vuorovaikutuksessa toisiinsa. Jo ensimmäisessä FORTRAN-kääntäjässä kiinnitettiin erityistä huomiota tuotetun konekielen nopeuteen, koska sen suunnittelijat arvelivat, ettei kukaan käyttäisi ohjelmointikieltä, joka ei olisi tehokkuudeltaan verrattavissa assemblyyn. Nykyiset F90/95-kääntäjät ovat yleensä yhtä nopeita tai nopeampia kuin F77-kääntäjät. Fortran-kääntäjät ovat alaspäin yhteensopivia, joten F90-kääntäjällä on mahdollista kääntää myös F77-ohjelmia. F90/95-koodiin on myös mahdollista sisällyttää F77-kielisiä osia sellaisenaan, joskin F90-standardi määritti muutamat F77:n piirteet vanhentuneiksi, eivätkä ne toimi enää F95-ohjelmissa.

Sisällysluettelo

[muokkaa] FORTRAN 77

Huomattava osa edelleen käytössä olevista tieteellisen laskennan ohjelmista on toteutettu F77:lla.

[muokkaa] Esimerkkiohjelma FORTRAN-77 -kielellä

C LUVUNARVAUSPELI
      LUKU=42
      LKM=0
10    PRINT*, 'ANNA LUKU 1...100'
      READ*, IARVAUS
      LKM=LKM+1
      IF(IARVAUS.LT.LUKU) THEN
         PRINT*, 'LIIAN PIENI ARVAUS'
         GOTO 10
      ELSE IF(IARVAUS.GT.LUKU) THEN
         PRINT *, 'LIIAN SUURI ARVAUS'
         GOTO 10
      END IF
      PRINT*, 'OIKEIN'
      PRINT*, 'TARVITSIT ',LKM,' ARVAUSTA'
      STOP
      END

Eo. esimerkissä FORTRAN-77 -koodille tyypillisesti:

  • Käytetään isoja kirjaimia
  • Erillistä tyyppimäärittelyä kokonais- ja reaalilukujen välillä ei tarvita, vaan muuttujan alkukirjain määrää tyypin
  • Varsinaiset lauseet alkavat 7. sarakkeesta
  • Rivien pituus rajoitettu n. 80 merkkiin (periytyy reikäkorttiajalta)
  • Käytetään ensimmäisiin sarakkeisiin asetettuja rivinumeroita hyppykohtien osoittamiseen
  • Kommentti- eli huomautusrivit ilmaistaan ensimmäiseen sarakkeeseen sijoitetulla C-kirjaimella

[muokkaa] Fortran 90/95

Fortran 90 ja 95 -standardit poikkeavat toisistaan vain vähän ja suurimmat erot liittyvät F95:n parempaan tukeen rinnakkaislaskennalle. F90/95 eroaa ulkonaisesti jonkin verran F77:sta ja siinä pyritään välttämään eräitä F77:n ohjelman toimivuuden kannalta vaarallisia piirteitä. Samalla F90/95 sisältää monia ominaisuuksia, jotka puuttuvat kokonaan F77:sta. F95:n pohjalta on kehitetty myös datarinnakkainen versio High Performance Fortran (HPF).

[muokkaa] Esimerkkiohjelma Fortran 90 -kielellä

!Luvunarvauspeli
PROGRAM luvunarvauspeli
 IMPLICIT NONE
 INTEGER :: luku, lkm, iarvaus
 LOGICAL :: virh
 luku = 42; lkm = 0; virh = .true.
 DO WHILE(virh)
   CALL arvaus
   CALL vertailu
 END DO
 WRITE(*,*) 'Oikein'
 WRITE(*,*) 'Tarvitsit ', lkm, ' arvausta'
 CONTAINS
 SUBROUTINE arvaus
     WRITE(*,*) 'Anna luku 1...100'
     READ(*,*) iarvaus
     lkm = lkm + 1
   END SUBROUTINE arvaus
   SUBROUTINE vertailu
     IF(iarvaus < luku)THEN
       WRITE(*,*) 'Liian pieni arvaus'
   ELSE
     IF(iarvaus > luku)THEN
       WRITE(*,*) 'Liian suuri arvaus'
     ELSE
       virh = .false.
     END IF
   END IF
 END SUBROUTINE vertailu
END PROGRAM luvunarvauspeli

Tässä esimerkissä Fortran90 -koodille tyypillisesti:

  • Ohjelma alkaa ja päättyy PROGRAM ja END PROGRAM lauseisiin. Kommenttimerkkinä toimii !
  • Komento IMPLICIT NONE poistaa käytöstä F77:n käyttämän muuttujan alkukirjaimeen perustuvan automaattisen tyyppimäärittelyn, joten muuttujat on määriteltävä ennen käyttöä.
  • Ohjemointikielen käskyt on tässä kirjoitettu isolla. Kieli ei kuitenkaan tee eroa isoille ja pienille kirjaimille, joten tämä on makuasia. F77:n sarakesidonnaisuutta ei enää ole. Varattuja sanoja ei ole, joten periaatteessa on mahdollista määritellä vaikkapa muuttuja nimeltä 'if'. Tällöin komento IF ei kuitenkaan ole enää käytettävissä.
  • Eri tehtävät on jaettu omille aliohjelmilleen (SUBROUTINE), mikä tekee koodista helposti uusiin tarkoitukseiin muutettavaa. Aliohjelmat ja funktiot tulevat pääohjelmaa seuraavan CONTAINS-lauseen jälkeen. Myös ulkoisten aliohjelmamoduleiden käyttö on mahdollista.
  • F77-esimerkin vaikeasti optimoitava GOTO-rakenne on muutettu tehokkaammaksi DO WHILE -silmukaksi. GOTO-rakenne olisi kuitenkin periaatteessa sallittu myös tässä.


[muokkaa] Aiheesta muualla


Tämä tietotekniikkaan liittyvä artikkeli on tynkä.
Voit auttaa Wikipediaa laajentamalla artikkelia.
Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2006 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu