From c31463de091c847c44c643bc88349f31acf88117 Mon Sep 17 00:00:00 2001 From: Doni Pracner Date: Tue, 19 Feb 2013 20:18:12 +0100 Subject: [PATCH] novo poglavlje: osnovne operacije sa stringovima --- skripta-spa1.tex | 50 ++++++++++++++++++++++++++++++++++++++++++++++-- todo.txt | 1 - 2 files changed, 48 insertions(+), 3 deletions(-) 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} diff --git a/todo.txt b/todo.txt index f3268df..88ad221 100644 --- a/todo.txt +++ b/todo.txt @@ -3,4 +3,3 @@ doni:srediti polinome jos malo doni: liste - dodati nesto gde se brise vise elemenata u istom prolazu. -doni:ubaciti negde primer kako radi Compare za stringove -- 2.17.1