From: Doni Pracner Date: Mon, 18 Feb 2013 16:36:05 +0000 (+0100) Subject: pocetak nove verzije;poboljsani fontovi; komande za lako prebacivanje iz jedne u... X-Git-Tag: v13a~11 X-Git-Url: https://svarog.pmf.uns.ac.rs/gitweb/?a=commitdiff_plain;h=4ffa9dc02bcb9b626aa28300006e349e75e41d4b;p=spa1skripta-public.git pocetak nove verzije;poboljsani fontovi; komande za lako prebacivanje iz jedne u dve kolone; poboljsanja teksta o fajlovima; jos sitnica; --- diff --git a/.gitignore b/.gitignore index a1a539f..ed0b781 100644 --- a/.gitignore +++ b/.gitignore @@ -15,4 +15,5 @@ auto* _region* *.blg *.bbl -*.exe \ No newline at end of file +*.exe +errinfo.??? \ No newline at end of file diff --git a/skripta-spa1.tex b/skripta-spa1.tex index 44efda8..46328d0 100644 --- a/skripta-spa1.tex +++ b/skripta-spa1.tex @@ -8,11 +8,20 @@ % osnovne informacije koje ce se prikazati na naslovnoj strani, % kao i u informacijama u generisanom pdfu \newcommand{\autor}{Vladimir Kurbalija, Milos Radovanovic, Doni Pracner} -\newcommand{\naslov}{Skripta za vezbe iz predmeta strukture podataka - i algoritmi 1} -\newcommand{\datum}{April 2012, Novi Sad} -\newcommand{\verzija}{ver 12b} -%sc=single-column +\newcommand{\naslov}{Skripta za vezbe iz predmeta "Strukture podataka + i algoritmi 1"} +\newcommand{\datum}{Februar 2013, Novi Sad} +\newcommand{\verzija}{ver 13a-jk} +%jk=jedna kolona, dk=dve kolone + +\newcommand{\mainstart}{ +%\begin{multicols}{2} +} + +\newcommand{\mainend}{ +%\end{multicols} +} + \usepackage[serbian]{babel} \usepackage{fancyhdr} \pagestyle{fancy} @@ -23,6 +32,7 @@ %change the default font \usepackage{lmodern} +\usepackage{beramono} \renewcommand{\familydefault}{\sfdefault} \usepackage{pifont} @@ -164,7 +174,7 @@ pdfauthor={\autor}% } \lstdefinestyle{codeblock}{ - basicstyle=\footnotesize, + basicstyle=\footnotesize\ttfamily, keywordstyle=\textbf, columns=[l]fixed, breakatwhitespace=true, @@ -180,6 +190,7 @@ pdfauthor={\autor}% \lstnewenvironment{codeblock}{\lstset{style=codeblock}}{} + % ----------------==================-------------------------------------- % Pravi pocetak rada @@ -193,7 +204,8 @@ Module 2. \newpage -\begin{multicols}{2} +\mainstart + \section{Ilustracija efikasnosti algoritma} \subsection{Zadatak: Pronaći sve pitagorine @@ -532,36 +544,50 @@ END MaxNiza4. U ovom modulu je definisan tip \kod{File}, koji predstavlja jedan fajl sa kojim radimo. -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 +\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} Promenljiva tipa \kod{File} se mora vezati za neki fajl -jednom od sledećih komandi:\\ -\kod{f := Open(str);} -- otvara se postojeci fajl za čitanje\\ -\kod{f := Create(str);} -- kreira se fajl za pisanje\\ -\kod{f := Append(str);} -- otvara se postojeći za dopisivanje na kraj +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 := Append(str);} -- otvara se postojeći fajl za + dopisivanje na kraj +\end{itemize} -\kod{Close(f);} -- po završetku rada fajl se mora zatvoriti +Po završetku rada fajl se mora zatvoriti, u našem primeru to bi bilo +\kod{Close(f);} -Procedure za čitanje i pisanje imaju parametar „\kod{f}“ koji označava - fajl sa kojim se radi.\\ -\kod{RdStr(f,str)} -- učitava ceo red u string str\\ -\kod{RdItem(f,str)} -- učitava jednu reč u string str (učitava znakove iz fajla dok ne naiđe na separator)\\ -\kod{i:= RdInt(f); c:= RdCard(f)} -- učitava broj, koji se dobija kao rezultat procedure\\ -\kod{ch:= RdChar(f)} -- vraća jedan znak iz fajla +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{ch:= RdChar(f)} -- vraća jedan znak iz fajla +\end{itemize} + +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);} +\end{itemize} -Procedure za pisanje različitih tipova u fajl: -\kod{WrStr(f,str); WrInt(f,i,n); WrCard(f,c,n);WrChar(f,ch);} -\kod{WrLn(f);} -- upisuje prelom reda u fajl +Prelom reda se eksplicitno upisuje u fajl komandom \kod{WrLn(f);}. -\kod{EOF} -- logička promenljiva, označava da li smo poslednjom +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 +FIO kao bilo kakva normalna komanda. Ona označava da li smo poslednjom operacijom čitanja stigli do kraja fajla. Ne menja joj se vrednost pri operacijama otvaranja i zatvaranja fajlova, odnosno neće se pri -tome resetovati na \kod{FALSE}. - +tome resetovati na \kod{FALSE}, pa na ovo treba obratiti pažnju pri +radu. \subsection{Zadatak: ispis sadržaja fajla na ekran} @@ -732,7 +758,7 @@ END nizslog. \section{Liste i pokazivači} -Za rad sa pokazivačima je potrebno iz modula Storage uvesti procedure +Za rad sa pokazivačima je potrebno iz modula \kod{Storage} uvesti procedure \kod{ALLOCATE} i \kod{DEALLOCATE}. U kodu se tada mogu koristiti i njihovi skraćeni oblici \kod{NEW} i \kod{DISPOSE}. @@ -1380,9 +1406,9 @@ Procedura \kod{Spisak} se može realizovati i u rekurzivnoj verziji: liste osoba koje dele sadržaj, jedna sortirana po visini, druga po težini} -Sa tastature ucitavati po dva broja koji opisiuju osobu (visina i -tezina) i smestati ih u povezane listu, tako da postoji neopadajuce -uredjenje i po visini i po tezini. +Sa tastature učitavati po dva broja koji opisuju osobu (visina i +težina) i smeštati ih u povezane listu, tako da postoji neopadajuće +uređenje i po visini i po težini. \begin{lstlisting}[style=codeblock] MODULE VisTez; @@ -1494,6 +1520,8 @@ END VisTez. Polinomi su predstavljeni pomoću pokazivača. Apstraktni tip podataka \kod{Polinom} je definisan u globalnom modulu. +\paragraph{PolinomL.DEF} \ + \begin{lstlisting}[style=codeblock] DEFINITION MODULE PolinomL; TYPE @@ -1528,8 +1556,11 @@ PROCEDURE PolinomNaN(p: Polinom; n: CARDINAL; PROCEDURE DisposePolinom(VAR p: Polinom); END PolinomL. -(* --- kraj definicionog modula --- *) +\end{lstlisting} + +\paragraph{PolinomL.MOD} \ +\begin{codeblock} IMPLEMENTATION MODULE PolinomL; FROM InOut IMPORT Write, WriteString, WriteLn, WriteCard, ReadCard, Done; @@ -1828,7 +1859,7 @@ BEGIN END DisposePolinom; END PolinomL. -\end{lstlisting} +\end{codeblock} \subsection{Zadatak: Sabiranje sa unapred određenim polinomom} @@ -2945,6 +2976,8 @@ ispravljene greške. Moguće je namestiti da u dijalogu za novi projekat drugo polje ``Template'' uvek bude prazno. Potrebno je u tom istom dijalogu kliknuti na ``Configure'', a potom isprazniti polje ``default template''. -\end{multicols} + + +\mainend \end{document}