next up previous
Naprej: Splosna priporocila za Gor: Laboratorijske vaje pri predmetu Nazaj: Delo na racunalniku

Fortran

Tu bom prikazal standardne posebnosti v Fortranu, ki jih boste s pridom uporabili pri programiranju. Priporoca se tipkanje programa z malimi crkami, saj je tako kodiran program bolj citljiv.

Formatne stavke vkljucene lahko vkljucimo v ukaz read ali write: {

   character ime*65
   write(*, '('' Ime vhodne datoteke: '', $)' )
   read(*,'(A)') ime

Datoteke delimo na tekstovne in binarne datokeke. Direktna datoteka je poseben primer binarne datoteke, ki ima fiksno dolzino zapisa (record). Fortran omogoca branje/pisanje v prostem formatu (*), uporabniskem formatu (format()) in brez formata (samo v binarne datoteke). Neformatirano direktno datoteko z dolzino enega zapisa 58 bytov se odpre z ukazom

    open(1, 'results.bin', status='NEW',
  * access='DIRECT', form='UNFORMATTED',
  * recl=58)
Dolzina enega zapisa RECL se doloca z maksimalno velikostjo zapisa v datoteki. Zapisi imajo lahko razlicne vsebine podatkov, dolzina zapisa pa je fiksna zaradi hitrejsega dolocanja pozicije datotecnega kazalca. Doloci se jo s sestevkom dolzine vseh spremenljivk in upostevanjem, da zavzame realna spremenljivka 4 byte, celostevilcna 2, znakovna pa toliko, kolikor znakov ima rezerviranih.

Za branje in pisanje enote se uporablja standardni read/write stavek brez podatka o formatu.

     write(1, rec=2) (x(i), i = 1, n/2)
     read(1, rec=2)  (x(i), i = 1, n/2)
Pri vseh branjih in pisanjih se lahko testira napaka ob konverziji ali napaka na vhodno/izhodno enoti s parametrom err. Primer:
    ...
    read(line(6:80), '(I10)', err=102) nodes
    ...
    return
102 stop 'Napaka pri branju parametra loads!'
    end

Fortran omogoca pisanje in branje v svoje interne enote v obliki character polja. To nam omogoca pretvarjanje numericnih spremenljivk v znakovne. Najveckrat se to uporablja za podprograme, ki zahtevajo kot parameter znakovno spremenljivko, na voljo pa imamo le numericno spremenljivko. Tipicen primer uporabe je izpis teksta v jeziku GKS. Primer:

      character cnode*3
      integer node
      ...
      write(cnode, '(I3)') node
      call gtx(x, y, cnode)
      end



Leon Kos
Tue Feb 20 11:49:51 GMT+0100 1996