1 / 8

Fortran90-kielen moduulit

Fortran90-kielen moduulit. Moduuli on ohjelmalohko, johon voi kuulua useita aliohjelmia ja funktioita. Siinä voidaan myös määritellä muuttujia, jotka ovat kaikkien moduuliin kuuluvien proseduurien käytettävissä mutta eivät moduulin ulkopuolella.

janus
Télécharger la présentation

Fortran90-kielen moduulit

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Fortran90-kielen moduulit • Moduuli on ohjelmalohko, johon voi kuulua useita aliohjelmia ja funktioita. • Siinä voidaan myös määritellä muuttujia, jotka ovat kaikkien moduuliin kuuluvien proseduurien käytettävissä mutta eivät moduulin ulkopuolella. • Kutakin tehtäväluokkaa varten voidaan laatia oma moduulinsa, josta käyttäjälle näkyvät vain hänen tarvitsemansa osat. • Moduuli kuuluu Fortran90-standardiin ja Mathematican komentokieleen, jossa sitä kutsutaan 'paketiksi' (Package). Moduuleja ei ole Fortran77:ssä eikä Matlabissa.

  2. Fortran 90 moduuli • Fortran90-kielen moduuli alkaa moduulin nimeämislauseella, • heti moduulin nimen jälkeen tulevat määrittelylauseet • ja sen jälkeen moduuliin kuuluvat aliohjelmat ja funktiot.

  3. module xxx integer ... real ... ... contains function ... ... subroutine ... ... subroutine ... ... end module xxx Fortran90-kielen moduuli otetaan jossakin ohjelman osassa käyttöön lauseella use nimi. Tämän lauseen on sijaittava heti program-, subroutine- tai function-lauseen jäljessä. Moduuli käännetään erikseen ja sidotaan ohjelmaan linkitysvaiheessa. module

  4. Fortran90-kielessä globaalit muuttujat voi määritellä moduulissa, joka luetaan sisään niihin ohjelman osiin, jossa muuttujia tarvitaan. module globaalit integer, save :: nmax real, dimension(nmax,3), save :: pts end module globaalit Tämä moduuli otetaan käyttöön muissa ohjelmanosissa komennolla use globaalit. Esimerkki. Fortran90-kielen moduuli, jossa määritellään ohjelman tarvitsemat globaalit muuttujat.

  5. Fortran90-kielen moduuli, joka sisältää toistokokeen tulosten analyysiin tarvittavat keskiarvon ja keskiarvon keskivirheen laskevat funktiot. module toistokoe contains function mean(n,x,f) result(ave) implicit none ! painotettu otoskeskiarvo real, dimension(:) :: x, f integer :: n real :: ave ave = sum(x(1:n)*f(1:n))/sum(f(1:n)); end function mean function vari(n,x,f) result(var) implicit none ! painotettu otosvarianssi eli otoskeskiarvon keskivirheen ! neliö integer :: n real, dimension(:) :: x, f integer :: i real :: var var = sum(f(1:n)*(x(1:n)-mean(n,x,f))**2)/(sum(f(1:n))*(n-1)) end function vari Esimerkki. Module toistokoe

  6. pääohjelma käyttää moduulia toistokoe otoskeskiarvon ja sen hajonnan laskemiseen. Otoksen sisäänlukuun käytetään moduulissa arrio (ei mukana tässä) olevaa aliohjelmaa readxy. Kääntäminen ja linkitys: f90 -c toistokoe.f90 f90 -c arrio.f90 f90 toistomain.f90 toistokoe.o arrio.o program keskiarvo use arrio use toistokoe implicit none integer, parameter :: nmax=100 integer :: n real, dimension(nmax) :: x, w write(*,*) 'Anna otoksen koko' read(*,*) n call readxy(n,x,w) write(*,*) 'painotettu otoskeskiarvo ja sen keskivirhe' write(*,*) mean(n,x,w), sqrt(vari(n,x,w)) end program keskiarvo esimerkki. pääohjelma

  7. Parametrisoidut muuttujatyypit. Fortran2003:ssa on mahdollista antaa rakenteisten tyyppien attribuuteille oletusarvo. type date integer :: year = 2004 integer :: day =1 end type date Käyttö type(date), parameter :: & today = date(21, 1995); Voidaan käyttää parametrisoituja tyyppejä, joissa taulukkojen koot ja laskutarkkuus voidaan määritellä myöhemmin. Tyyppiin voidaan liittää myös proseduurien nimiä. fortran2003: oliot

  8. fortran 2003: oliot • Fortra 2003:n muuttujat voivat olla monimuotoisia (polymorfisia). • Muuttuja voi viitata olioon. • Monimuotoinen muuttuja määritellään class-tyyppiseksi (ei type). • Lisätietoja esimerkiksi Juha Haataja: Fortran 2003 – askel olio-ohjelmointiin. @CSC syyskuu 3/2004.

More Related