next up previous
Next: 6 Splosna priporocila za Up: Laboratorijske vaje pri predmetu Previous: 4 Graficni prikaz rezultatov

5 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. 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, 'materiali.bin', status='UNKNOWN',
  * 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) naziv, k_mat
     read(1, rec=2)  naziv, k_mat

Pri vseh branjih in pisanjih se lahko testira napaka ob konverziji ali napaka na vhodno/izhodno enoti s parametrom err. Primer:

    integer cona
    character*80 line
    ...
    read(2, '(A)') line
    if (line(1:4) .eq. 'cona') then
       read(line(5:80), '(I10)', err=102) cona
    end if
    ...
    return
102 stop 'Napacen podatek za temperaturno cono!'
    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
Fri Nov 8 12:53:58 GWT 1996