gitweb on Svarog
projekti pod git sistemom za održavanje verzija -- projects under the git version control system--- a/skripta-spa1-sadrzaj.tex
+++ b/skripta-spa1-sadrzaj.tex
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.
+Budući da Modula 2 definiše mogućnost korišćenja \emph{otvorenih
+ nizova}, lako je moguće definisati procedure koje kao parametre
+primaju bilo koji tip koji je definisan kao niz znakova.
+
+\begin{codeblock}
+ PROCEDURE ObradaStringa(str: ARRAY OF CHAR);
+\end{codeblock}
+
+Konkretne promenljive u programu moraju biti definisane dužine.
+
+Operacije nad stringovima se najčešće uvoze iz modula \kod{Str} i one
+su sve definisane da prihvataju \emph{otvorene nizove znakova} kao što
+je malopre objašnjeno.
Određivanje stvarne dužine stringa (tj koliko od maksimalnog
kapaciteta niza je zapravo zauzeto sadržajem) se može izvesti na
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.
+nizovima, ali značajnije 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''.
\begin{codeblock}
IF Compare(str1, str2) > 0 THEN
END;
\end{codeblock}
+Ovo se lako pamti kad primetimo da je odnos između \kod{Compare} i 0
+isti kao i između prvog i drugog stringa.
+
Postoji i modul \kod{Strings} koji ima nešto drugačije definisane
procedure, no na njih se sada nećemo fokusirati.
\sectionbreak
\section{Liste i pokazivači}
-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}.
+Za rad sa pokazivačima je potrebno iz modula \kod{Storage} uvesti
+procedure za dinamičko zauzimanje i oslobađanje
+memorije \kod{ALLOCATE} i \kod{DEALLOCATE}.
+
+U kodu se mogu koristiti i skraćeni oblici \kod{NEW} i \kod{DISPOSE}
+koji se direktno prevode u prethodno pomenute procedure.
+
+\begin{codeblock}
+ALLOCATE(point, SIZE(point)); (* isto kao NEW(point) *)
+DEALLOCATE(point, SIZE(point)); (* isto kao DISPOSE(point) *)
+\end{codeblock}
\subsection{Zadatak: Formiranje, štampanje i brisanje listi}
\subsection{Moduli}
Polinomi su predstavljeni pomoću pokazivača. Apstraktni tip podataka
-\kod{Polinom} je definisan u globalnom modulu.
+\kod{Polinom} je definisan u globalnom modulu. Redosled parametara kod
+svih procedura je takav da varijabilni parametri dolaze na kraju.
\paragraph{PolinomL.DEF} \
Reč pripada ovoj gramatici ako joj se prvi deo (w) sastoji samo od
slova 'a' i 'b', sledi slovo 'c' a nakon njega obrnuta reč reči w.
-\begin{lstlisting}[style=codeblock]
+\begin{codeblock}
DEFINITION MODULE Stek;
CONST
Maxstack = 100;
END
END
END Top;
-\end{lstlisting}
-\begin{codeblock}
PROCEDURE Pop(VAR s : StekTip;
VAR ok : BOOLEAN);
BEGIN