gitweb on Svarog
projekti pod git sistemom za održavanje verzija -- projects under the git version control system
summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 60d8986)
raw | patch | inline | side by side (parent: 60d8986)
author | Doni Pracner <quinnuendo@gmail.com> | |
Sat, 15 Feb 2014 17:30:02 +0000 (18:30 +0100) | ||
committer | Doni Pracner <quinnuendo@gmail.com> | |
Sat, 15 Feb 2014 17:30:02 +0000 (18:30 +0100) |
skripta-spa1-sadrzaj.tex | patch | blob | history |
index 585798d402a33e48497476f025b8dce799505c6c..d9f8e1969b9b8063b499120717aec0c74b85cf41 100644 (file)
--- a/skripta-spa1-sadrzaj.tex
+++ b/skripta-spa1-sadrzaj.tex
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
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.