X-Git-Url: http://svarog.pmf.uns.ac.rs/gitweb/?p=spa1skripta-public.git;a=blobdiff_plain;f=skripta-spa1.tex;h=76d39f898a56304311479df8c1de7e709179848d;hp=1b6704a7d1035461495caa07015fca15f62d59a6;hb=c31463de091c847c44c643bc88349f31acf88117;hpb=9055784fcdf1bfdcf6727d69a1a06bbf05f0aef5 diff --git a/skripta-spa1.tex b/skripta-spa1.tex index 1b6704a..76d39f8 100644 --- a/skripta-spa1.tex +++ b/skripta-spa1.tex @@ -15,11 +15,11 @@ %jk=jedna kolona, dk=dve kolone \newcommand{\mainstart}{ -\begin{multicols}{2} +%\begin{multicols}{2} } \newcommand{\mainend}{ -\end{multicols} +%\end{multicols} } \usepackage[serbian]{babel} @@ -562,6 +562,52 @@ BEGIN END MaxNiza4. \end{codeblock} +\section{Stringovi} + + +Stringovi -- odnosno nizovi znakova -- ne postoje kao ugrađeni tip u +jeziku Modula 2. Ovo daje slobodu da se niz znakova definiše na dužinu +najadekvatniju za konkretnu primenu. U opštem slučaju definišemo npr: +\begin{codeblock} + TYPE + String = ARRAY [1..30] OF CHAR; +\end{codeblock} + +Operacije nad stringovima se najčešće uvoze iz modula \kod{Str}. One +sve prihvataju \emph{otvorene nizove znakova} (strukture definisane sa +\kod{ARRAY OF CHAR}), tako da im se može proslediti niz proizvoljne +dužine. + +Određivanje stvarne dužine stringa (tj koliko od maksimalnog +kapaciteta niza je zapravo zauzeto sadržajem) se može izvesti na +sledeći način: +\begin{codeblock} + duzina := Length(str) +\end{codeblock} + +Leksikografsko poređenje dva stringa se ne može vršiti standardnim +operatorima kao što su \kod{< > =}. Ovo je delom zato što se radi o +nizovima, a delom i zato što se ne vidi direktno koji deo niza je +popunjen stvarnim sadržajem. Za ovo se koristi komanda \kod{Compare}, +koja prihvata dva stringa kao parametre, a vraća broj koji predstavlja +njihov odnos. Taj broj će biti 0 ako su stringovi jednaki, veći +od nule ako je prvi string ``veći'', i manji od nule ako je prvi +string ``manji''. Ovo se lako pamti kad primetimo da je odnos +između \kod{Compare} i 0 isti kao i između prvog i drugog stringa. + +\begin{codeblock} + IF Compare(str1, str2) > 0 THEN + WriteString("Prvi string je veci"); + ELSIF Compare(str1, str2) < 0 THEN + WriteString("Prvi string je manji"); + ELSE (* moraju biti jednaki *) + WriteString("Jednaki su"); + END; +\end{codeblock} + +Postoji i modul \kod{Strings} koji ima nešto drugačije definisane +procedure, no na njih se sada nećemo fokusirati. + \section{Rad sa fajlovima} \subsection{Modul FIO}