gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
novo poglavlje: osnovne operacije sa stringovima
[spa1skripta-public.git] / skripta-spa1.tex
index 1b6704a..76d39f8 100644 (file)
 %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}
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner