X-Git-Url: http://svarog.pmf.uns.ac.rs/gitweb/?p=spa1skripta-public.git;a=blobdiff_plain;f=skripta-spa1-sadrzaj.tex;h=f1c5251ca8a89b366f2231ccfde01f5c627bbadf;hp=c0a55c5ba063f11b304fbb738018aa432abae15a;hb=fec52bcccb3b364c673c82a87d74ac459e8d3d0d;hpb=61768957d7870c6ab62c92d85e43ea5738f8a908 diff --git a/skripta-spa1-sadrzaj.tex b/skripta-spa1-sadrzaj.tex index c0a55c5..f1c5251 100644 --- a/skripta-spa1-sadrzaj.tex +++ b/skripta-spa1-sadrzaj.tex @@ -37,6 +37,10 @@ pdfauthor={\autor}% \usepackage{latexsym} \usepackage{multicol} +\usepackage{tikz} +\usetikzlibrary{chains} + + \begin{document} %customize the itemize environments @@ -581,6 +585,63 @@ procedure, no na njih se sada nećemo fokusirati. \sectionbreak \section{Rad sa fajlovima} +Za rad sa fajlovima je bitno razumeti da su oni u suštini niz znakova, +pri čemu neki imaju posebna značenja. Na primer novi red u tekstualnom +fajlu ne postoji u istom smislu kao na ekranu ili na papiru, budući da +svi znakovi dolaze jedan posle drugog u jednom nizu. Umesto toga +postoje specijalo definisani kodovi u ASCII tabeli znakova koji +predstavljaju prelome: +\begin{itemize} +\item Kod 10 -- \emph{Line feed} -- red dole na štampaču +\item Kod 13 -- \emph{Carriage return} -- povratak na početak reda +\end{itemize} + +Različiti operativni sistemi koriste različite kombinacije ovih +znakova da označe prelome redova -- Windows koristi oba jedan za +drugim, Linux i drugi srodni operativni sistemi tipično koriste samo +\emph{LF}, dok je Apple definisao da je sam \emph{CR} prelom +reda. Kvalitetni tekstualni editori uglavnom mogu sami da prepoznaju +prelom koji je korišćen u fajlu i da se adekvatno prilagode. + +Pri radu sa fajlom se on tipično otvara preko neke pomoćne strukture +koja potom pamti poziciju u fajlu odakle treba nastaviti čitanje ili +gde će biti nastavljeno pisanje. + +\noindent\begin{minipage}{\columnwidth} +\centering +\begin{tikzpicture} +% Delimicno bazirano na http://www.texample.net/tikz/examples/turing-machine-2/ +\tikzstyle{every path}=[very thick] + +\edef\sizetape{0.7cm} +\tikzstyle{tmtape}=[draw,minimum size=\sizetape] + +%% Draw TM tape +\begin{scope}[start chain=1 going right,node distance=-0.15mm] + \node [on chain=1,tmtape] {R}; + \node [on chain=1,tmtape] {e}; + \node [on chain=1,tmtape] {d}; + \node [on chain=1,tmtape] { }; + \node [on chain=1,tmtape] {1}; + \node [on chain=1,tmtape] (input) {\emph{LF}}; + \node [on chain=1,tmtape] {\emph{CR}}; + \node [on chain=1,tmtape] {2}; + \node [on chain=1,tmtape,draw=none] {$\ldots$}; +\end{scope} + +\node [yshift=.3cm] at (input.north) (head) {V}; + +\end{tikzpicture} + +\emph{Primer: tekstualni fajl u kome u prvom redu piše ``Red 1'', a + drugi počinje znakom ``2''. Pozicija prikazuje da smo pročitali prvi + red.} +\end{minipage}\\ + +Bitno je i napomenuti da ukoliko pišemo u postojeći fajl novi sadržaj +zamenjuje stari -- odnosno biće pisano preko starog teksta. Tipično ne +postoje opcije da se novi sadržaj umeće u sredinu postojećeg fajla. + \subsection{Modul FIO} U ovom modulu je definisan tip \kod{File}, koji predstavlja jedan fajl