You are on page 1of 5

Programiranje:Formatiranoitanjeipisanje

Do sada smo nauili koristiti varijable kao "spremnike" za vrijednosti koje


koristimouprogramu,biloizravnimupisom,biloizraunavanjemaritmetikihizraza.
Primjerizatobilisuprogramiuprimjeru10izadatku1.Iskoristivosttakvih
programajenikakva.Zato?
Programjekoristanonolikokolikosuupotrebljivinjegovirezultati.Problemsa
dosadanjimprogramimanijeunjihovojnetonosti,veuinjenicida,inaesasvim
tonerezultate,oni"uvajuzasebe",spremljeneuRAMuraunala.Mi,naalost,te
rezultatenevidimo.

Podatkeskojimaradimo,dakle,elimoi'vidjeti',bilonapapiru,bilonaekranu.
Takoer,podacidobiveniizraunavanjemmorajusemoisauvati,pomogunostiu
nekomstrukturiranomobliku,inakongaenjaraunala.
Konano,dabismouopeimalisimeraunati,nunojeuprogramunijeti(ponekadi
uznatnimkoliinama)podatkeizvana.
Podatkeitamoizipiemou datoteke ilifileove.Dabitobilomogue,prije
svega,datotekutrebaotvoriti.Toznaidaraunalutrebadatidoznanjadaepoeti
komunikacijus harddiskomidaenanjemustvoritinovi zapis,ilipakiskoristiti
postojeiiiznjegaproitatineto.
NaredbakojasekoristizaotvaranjedatotekejeOPEN.
Tasenaredbapojavljujeseupunovarijacija,nomiemoupotrijebitisamojednannjen
oblik.
OPEN(BROJ,FILE='IMEDATOTEKE')
BROJkojistojiunaredbijereferencazadatotekuiponjemuprogramprepoznajeo
kojojsedatoteciradi. Drukijereeno,tajbrojje"sinonim"zadatotekuskojom e
programraditi.
Za nas vrijedi slijedei DOGOVOR: brojevi koje emo koristiti u svojim
programimanekabude5ili6,ovisnootomeelimoliitatiizdatotekeiliupisivatiu
nju.Dakle5itanje,6pisanje.
To openito nemorabititako,noradijednostavnosti,miemoseograniitinaovaj
dogovor.
Rije FILE je rezervirana rije,kojapovezujebrojistvarnoimedatotekena
disku.Imemorabitiuapostrofima,jerseradioznakovnojkonstanti.

Nakonzavretkaradasdatotekompristojnoje(inuno)zatvoritidatotekukoja
jeprethodnootvorena,naredbomCLOSE.Onadajesignaloperacijskomsistemudatu
datotekuuklonispopisaaktivnihioslobodiresursekojisuuztudatotekubilivezani.
CLOSE(BROJ)
BROJ je isti onaj broj s kojim smo otvorili datoteku. Na obiaj e biti zatvoriti
datotekupredsamkrajprograma,npr.prijenaredbeEND.
Primjer
...
OPEN (5,FILE='ULAZ.TXT')
OPEN (6,FILE='IZLAZ.TXT')
...
CLOSE(5)
CLOSE(6)
END
Otvaranjeizatvaranjedatotekasupripremnaizavrnanaredbauprocesurada
s datotekama. Stvarni posao obavljaju druge dvije naredbe naredbe za itanje i
pisanje:READiWRITE.Migovorimooformatiranomitanjuipisanju,pastogauzte
dvijenaredbedolaziitrea,prateanaredba,FORMAT.
Naredbezaitanje,pisanjeiformatdolazeizmeuOPENiCLOSEnaredbiislijedeeg
suoblika:

itanje
Podaciskojimaseeliraunatiuprogramunajeedolazevepohranjeninanekom
mediju(NprdisketiiliCDu,ilisuvepremjeteninaHDD).Uzpretpostavkudasmo
ihnekakosmjestilinaHDD,prijenospodatakasdiskauprogramvrimosa
READ(BROJ,*)[listavarijabli]
[listavarijabli]jenizidentifikatoraodvojenihzarezimanpr.
READ (5,*) A, BE, CEDE, VAR
Gornja naredba nalae programu da iz prethodno otvorene datoteke s brojem 5
proitaredom4vrijednostikojeedodijelitivarijablamaulisti:1.vrijednostideuA,
drugauBEitd.
Zvjezdica*unaredbioznaavaslobodniformat,tj.nezahtijevamonikakavposeban
oblikukombitavrijednostmoralabitizapisana("proitaj,kakogodpisalo").

Toneznaidaeprogramproitatibiloto!Uzmimozaprimjervrijednostkoju
itamosdiskaispremamourealnuvarijablu.Programeproitatibrojbezobziraima
liondvijeilipetdecimala,aliesepobunitiakomuumjestooekivanogdecimalnog
broja,podvalimocijelibrojilinizznakova.
Zadatak 2. napiite program koji uitava vrijednost iz datoteke nazvane ulaz.txt u
cjelobrojnuvarijabluCIJELO.
program citanje
integer cijelo

end

open(5, file='ulaz.txt')
read(5,*) cijelo
close(5)
Objasnitetosedogaauovomprogramuiskojimposljedicama.

Pisanje
Nakontosmonauiliitatipodatkeizdatoteke,abuduidaveznamoiraunatiu
FORTRANu,korisnojeznatiizapisatiizraunaterezultate.
ZapisivanjeseobavljanaredbomWRITE
Obliknaredbekojimemosemisluitije
WRITE(BROJ,LABELA)[izraz]
BROJkaoiprijeoznaavadatotekuukojupiemo,dokLABELA,kojaseovdje
prviputjavljauupotrebi,predstavljanumerikuoznakuretkauprogramu,ukojem
senalazinaredbaFORMATkojomoblikujemoispis.
IzrazmoeinemorebitiprisutanunaredbiWRITE.Ukolikojest,WRITEeispisati
njegovuvrijednost,uoblikuzadanompripadnimformatom.
Primjer
WRITE (6, 100) ALFA
Dabiovanaredbabilakompletna,potrebanjeiFORMATkojioblikujezapis.
Openito,obliknaredbeje
LABELAFORMAT(listaelemenatazaformatiranje).

Listaelemenatamoesadrati:

znak/kojiznaiprelazakunovired,

znakovnukonstantunpr.'temperatura je'
elementarniformatoblika
pIvili
pFv.d(popotrebipEv.d)ili
pX
priemuje
Ioznakazacjelobrojnevrijednosti(IodInteger),
Fjeoznakazarealnebrojeveuobiajenogoblika
(FdolaziodFloatingpoint,nazivazavrstuzapisarealnihbrojevauraunalu)
Ejeoznakazazapisrealnihbrojevaueksponencijalnomobliku,
kaonpr.2.83E3(=2.83*103=0.00283)
Xjeoznakazapraznomjesto(space).
pjebrojponavljanja(elimoispisatipbrojeva)
v je "veliina" broja, odnosno ukupni broj mjesta za ispis pojedine vrijednosti
(ukljuujuiimjestazadecimalnutokuipredznak)
djebrojdecimalnihznamenki(odukupnogbrojaznamenki!!!!)

Primjer

100
11
133
112
#

format (I5)
format (/, 2I7, 3X)
format (F5.2, 3F7.3, 2E4.1)
format (//, 'Slijedi niz od 3 cjelobrojne
vrijednosti', I4,2X,2I4,/)

SpojimosadaWRITEiFORMATnaredbu

write (6,10) A,B


10
#

format (/,'Ovo je varijabla A', F6.2,


', a ovo je varijabla B', F7.4)

Zadatak3.Napiiteprogramkojiitaizdatotekeulaz.txtvrijednostrealnihvarijabliAiB,
rauna opseg i povrinu pravokutnika sa stranicama A i B i zapisuje opseg i povrinu u
datotekuizlaz.
program pravokutnik
real a,b,ops,pov

100
end

open(5, file='ulaz.txt')
open(6, file='izlaz.txt')
read(5,*) a,b
ops = 2*(a+b)
pov = a*b
write(6,100) ops,pov
format('Opseg je ',1F8.3,/,'Povrsina je ', 1F8.3)

Zadatak4. Opremiteprogrameizzadatka1,naredbamazaispisivanje,kakobiizraunate
podatkemoglividjetiudatotecinadisku.
Kaoslijedeikorak,dodajteinaredbezauitavanjevarijablekojapredstavljakut.tosmotime
postigli?

You might also like