From: Doni Pracner Date: Sat, 15 Feb 2014 17:30:02 +0000 (+0100) Subject: uredjivanje glave o modulu FIO X-Git-Tag: v14a~8^2~6 X-Git-Url: http://svarog.pmf.uns.ac.rs/gitweb/?p=spa1skripta-public.git;a=commitdiff_plain;h=72a57572d792a97cb5bbee3b8d91417e48ae5713 uredjivanje glave o modulu FIO --- diff --git a/skripta-spa1-sadrzaj.tex b/skripta-spa1-sadrzaj.tex index 585798d..d9f8e19 100644 --- a/skripta-spa1-sadrzaj.tex +++ b/skripta-spa1-sadrzaj.tex @@ -576,42 +576,65 @@ U ovom modulu je definisan tip \kod{File}, koji predstavlja jedan fajl sa kojim radimo. Da bi ga koristili moramo ga uvesti u program (isto kao što uvozimo i komande). -\begin{quote}U primerima se pretpostavlja da je ``f'' tipa \kod{File}, ``str'' niz -znakova, ``i'' tipa \kod{INTEGER}, ``c'' tipa \kod{CARDINAL} i ``ch'' -tipa \kod{CHAR}. Dodatna promenljiva ``n'' tipa \kod{INTEGER} služi za -formatiranje slično kao u modulu \kod{InOut}. -\end{quote} +\emph{U primerima se pretpostavlja da je ``f'' tipa \kod{File}, + ``str'' niz znakova, ``i'' tipa \kod{INTEGER}, ``c'' tipa + \kod{CARDINAL} i ``ch'' tipa \kod{CHAR}. Dodatna promenljiva ``n'' + tipa \kod{INTEGER} služi za formatiranje slično kao u modulu + \kod{InOut}, odnosno za ispis će biti zauzeto bar ``n'' znakova.} + + +Ako otvaramo već postojeći fajl, poželjno je prvo proveriti da li on +postoji -- u suprotnom naš program će se srušiti pri izvršavanju. +Funkcija \kod{Exists(str)} vraća da li fajl postoji. Promenljiva tipa \kod{File} se mora vezati za neki fajl jednom od sledećih komandi: \begin{itemize} -\item \kod{f := Open(str);} -- otvara se postojeci fajl za čitanje\\ -\item \kod{f := Create(str);} -- kreira se fajl za pisanje\\ +\item \kod{f := Open(str);} -- otvara se postojeci fajl za čitanje +\item \kod{f := Create(str);} -- kreira se fajl za pisanje; ako je već + postojao, biće zamenjen \item \kod{f := Append(str);} -- otvara se postojeći fajl za dopisivanje na kraj \end{itemize} -Po završetku rada fajl se mora zatvoriti, u našem primeru to bi bilo -\kod{Close(f);} +Po završetku rada fajl se mora zatvoriti, u našem primeru to bi bilo: +\begin{itemize} +\item \kod{Close(f);} +\end{itemize} Procedure za čitanje i pisanje su vrlo slične onima iz modula \kod{IO}, osim što imaju dodatni parametar „\kod{f}“ koji označava fajl sa kojim se radi. \begin{itemize} -\item \kod{RdStr(f,str)} -- učitava ceo red u string str\\ -\item \kod{RdItem(f,str)} -- učitava jednu reč u string str (učitava znakove iz fajla dok ne naiđe na separator)\\ -\item \kod{i:= RdInt(f); c:= RdCard(f)} -- učitava broj, koji se dobija kao rezultat procedure\\ +\item \kod{RdStr(f,str)} -- učitava ceo red u string str +\item \kod{RdItem(f,str)} -- učitava jednu reč u string str (učitava + znakove iz fajla dok ne naiđe na separator) +\item \kod{i:= RdInt(f); c:= RdCard(f)} -- učitava broj, koji se + dobija kao rezultat procedure \item \kod{ch:= RdChar(f)} -- vraća jedan znak iz fajla \end{itemize} +Bitno je obratiti pažnju na specifičnost da postoje dve komande za +čitanje stringova iz fajla i da se one ponašaju različito. Budući da +razmak spada u separatore to znači da se korišćenjem \kod{RdItem} ne +može učitati string koji ima u sebi razmake. + Analogne su i procedure za pisanje različitih tipova u fajl: \begin{itemize} -\item \kod{WrStr(f,str); WrInt(f,i,n);}\ \kod{WrCard(f,c,n);}\ - \kod{WrChar(f,ch);} +\item \kod{WrStr(f,str);} +\item \kod{WrInt(f,i,n);} +\item \kod{WrCard(f,c,n);} +\item \kod{WrChar(f,ch);} \end{itemize} +Treba primetiti da ne postoje dve komande za ispis stringa u fajl -- +potpuno je svejedno da li on ima razmake u sebi ili ne. + +Prelom reda se eksplicitno upisuje u fajl komandom +\begin{itemize} +\item \kod{WrLn(f);}. +\end{itemize} -Prelom reda se eksplicitno upisuje u fajl komandom \kod{WrLn(f);}. Da bi odredili da li smo stigli do kraja fajla možemo koristiti \kod{EOF}. U pitanju je logička promenljiva koja se uvozi iz modula @@ -621,6 +644,7 @@ pri operacijama otvaranja i zatvaranja fajlova, odnosno neće se pri tome resetovati na \kod{FALSE}, pa na ovo treba obratiti pažnju pri radu. + \subsection{Zadatak: ispis sadržaja fajla na ekran} Potrebno je sve redove iz fajla učitati i ispisati ih na ekran.