@c Copyright (C) 1996-2002 Free Software Foundation, Inc.
@c For copying conditions, see the file gpc.texi
@c This file is part of the GPC Manual.
@c
@c Authors: Peter Gerwinski <peter@gerwinski.de>
@c          Frank Heckenbach <frank@pascal.gnu.de>
@c
@c Last modification: 2002-05-10 (file up to date)
@c
@c Croatian translation
@c Charset:    iso-8859-2 (latin 2)
@c Translator: Mirsad Todorovac <mtodorov_69@yahoo.com>
@c Transl-Date: 2001-12-01
@c Transl-Updated: 20020510

@include macros.texi

@c FIXME Still thinking about more suitable translation for 'Highlights',
@c   maybe should try more free one ... -- MT 20011201

@node Naglasci
@chapter Neke od najinteresantnijih značajki GPC-a
@cindex highlights

GNU Pascal prevodilac (GPC) je, kao što ime govori, Pascal prevodilac (engl.
compiler) iz GNU obitelji (@pxref{GNU}). Ovo znači:

@itemize @bullet

@item GPC je 32/64-bitni prevodilac,

@item nema ograničenja kao što je 64 kB ili 640 kb limit poznat iz nekih
operacijskih sustava -- čak i na tim sustavima --,

@item radi na svim operacijskim sustavima podržanim od GNU C prevodioca,
uključujući

@itemize @minus
@item @uref{http://www.linux.org,Linux} na Intelu, Alphi, S390, i na svim
ostalim podržanim tipovima hardvera,
@item BSD obitelj: @uref{http://www.freebsd.org,FreeBSD},
@uref{http://www.netbsd.org,NetBSD},
@uref{http://www.openbsd.org,OpenBSD},
@item DOS sa 32 bita, koristeći
@uref{http://www.delorie.com/djgpp/,DJGPP} ili
@uref{http://www.leo.org/pub/comp/os/os2/leo/gnu/emx+gcc/index.html,EMX},
@item MS-Windows 9x/NT, koristeći
@uref{http://cygwin.com,Cygwin} ili
@uref{http://www.mingw.org,mingw},
@item OS/2 sa
@iftex
@*
@end iftex
@uref{http://www.leo.org/pub/comp/os/os2/leo/gnu/emx+gcc/index.html,EMX},
@item MIPS-SGI-IRIX,
@item Alpha-DEC-OSF,
@item Sparc-Sun-Solaris,
@item HP/UX
@end itemize
@noindent i druge,

@c nEEd to find more suitable translation for 'native' and 'cross' compiler
@item može služiti kao nativni prevodilac ili prevodilac između sistema
(engl. cross-compiler) - između svih podržanih sistema,

@item proizvodi visoko optimirani kod za sve te sisteme,

@item slobodan je softver
@uref{http://www.gnu.org/philosophy/free-sw.html,Free Software}
(@uref{http://www.opensource.org,Open-Source Software})
u skladu sa
@uref{http://www.gnu.org/copyleft/gpl.html,@strong{GNU General Public License}}
licencom (@ref{GNU}, za primjedbe i prijevode),

@item kompatibilan je sa ostalim GNU jezicima i alatima kao što su GNU C i
GNU debugger (ili, ako više volite, program za simboličko ispravljanje
pogrešaka u ispravljanom programu).

@end itemize

@anch{lang}@c
Prevodilac podržava slijedeće jezične standarde i kvazi-standarde:

@itemize @bullet
@item ISO-7185 Pascal (@pxref{Resursi}),
@item većinu dijelova ISO-10206 Extended Pascala,
@item Borland Pascal 7.0,
@item dijelove Borland Delphi i Pascal-SC (PXSC).
@end itemize

@anch{pro}@c
Neki naglasci:

@c DEMO-START

@itemize @bullet

@item Iz Standard Pascala: Mnogi popularni Pascal prevodioci tvrde da
proširuju Standard Pascal, ali im nedostaju ove važne značajke.

@itemize @minus
@item
@anch{conformantdemo}@c
Polja kao konformni parametri -- standardni i komforan način prosljeđivanja
polja (ARRAY) varijabilne veličine procedurama i funkcijama.
@examplehref{conformantdemo.pas}
@item
@anch{iteratordemo.pas}@c
Prosljeđivanje lokalnih procedura kao proceduralnih parametara -- s punim
pristupom svim varijablama ``nadređene'' procedure.
@examplehref{iteratordemo.pas}
@item
@anch{filebuf1demo}@c
@anch{filebuf2demo}@c
@c Here I'm not resolute about meaning of the original -> I nEEd to
@c   look at the examples, or ask Frank: -- MT 20011201 Done 20020103
Automatski datotečni međuspremnici (engl. file buffers) i standardne @samp{Get}
i @samp{Put} procedure. Predviđajuće čitanje (engl. read-ahead) bez privremenih
varijabli. @examplehref{filebuf1demo.pas} Ovo dozvoljava, na primjer, da se
provjeri ulaz iz tekst datoteka prije čitanja bez konverzije kroz znakovne
nizove (engl. strings). @examplehref{filebuf2demo.pas}
@item
@anch{packdemo}@c
Istinski pakirani zapisi (RECORD) i polja. Pakira 8 Booleovih varijabli u
jedan bajt.
@examplehref{packdemo.pas}
@item
@anch{intfiledemo}@c
Interne datoteke. Ne morate se brinuti o kreiranju privremenih imena
datoteka i njihovom brisanju kasnije.
@examplehref{intfiledemo.pas}
@item
@anch{parserdemo}@c
Globalni @samp{goto}. (Da, @samp{goto} ima svoju ulogu kada nije ograničen
na trenutni potprogram.) @examplehref{parserdemo.pas}
@item
@anch{variantedmo}@c
Automatski postavlja diskriminantu varijabilnog zapisa (RECORD) u @samp{New}.
@examplehref{variantdemo.pas}
@item
@anch{bigsetsdemo}@c
Skupovi (SET) proizvoljne veličine. @examplehref{bigsetsdemo.pas}
@end itemize

@item Iz Extended Pascala:

@itemize @minus
@item
@anch{stringschemademo}@c
Znakovni nizovi (strings) proizvoljne duljine.
@examplehref{stringschemademo.pas}
@item
@anch{rwstringdemo}@c
@samp{ReadStr} i @samp{WriteStr}. Čitajte iz i pišite u znakovne nizove sa
punim komforom @samp{ReadLn}/@samp{WriteLn}.
@examplehref{rwstringdemo.pas}
@item
@anch{datetimedemo}@c
Rutine za predstavljanje datuma i vremena neovisne od sistema (prenosive).
@examplehref{datetimedemo.pas}
@item
@anch{bigsetsdemo}@c
Iteracija pomoću članova skupa:
@samp{@w{for Ch in ['A' .. 'Z', 'a' .. 'z'] do @dots{}}}
@examplehref{bigsetsdemo.pas}
@item Proširene operacije nad skupovima (simetrična diferencija, @samp{Card})
@item Generalizirane @samp{Succ} i @samp{Pred} funkcije
(@code{@w{foo := Succ (bar, 5);}}).
@item
@anch{mandelbrot}@c
@anch{parserdemo}@c
Kompleksni brojevi. @examplehref{mandelbrot.pas}
@examplehref{parserdemo.pas}
@item Operatori za potenciranje (@samp{pow} i @samp{**}) za realne i
kompleksne brojeve.
@item
@anch{initvardemo}@c
Inicijalizirane varijable. @examplehref{initvardemo.pas}
@item Funkcije mogu vraćati vrijednost tipa zapis ili polje (Record, Array).
@item
@anch{returnvardemo}@c nEEd 2 look at exmpl to clean xlation -- TM 20011201 Done 20020103
Varijable za imenovanu povratnu vrijednost u funkcijama.
@examplehref{returnvaluedemo.pas}
@item Moduli.
@item Ne-dekadski brojevi u bazama od 2 do 36: @samp{baza#broj}.
@item @samp{MinReal}, @samp{MaxReal}, @samp{EpsReal}, @samp{MaxChar}
konstante.
@item
@anch{schemademo}@c
Schemata -- Pascalov način da se dobiju dinamička polja bez nestašnih
trikova @examplehref{schemademo.pas}
@item
@anch{dynamicarraydemo}@c
Lokalne varijable mogu imati dinamičku veličinu.
@examplehref{dynamicarraydemo.pas}
@item
@anch{arrayslicedemo}@c
Pristup odsječcima polja -- pristupa se dijelovima polja kao manjem polju,
čak i na lijevoj strani operacije dodjele vrijednosti (engl. assignment)
@examplehref{arrayslicedemo.pas}
@end itemize

@item Kompatibilan sa Borland Pascalom 7.0 s objektima (BP):

@itemize @minus
@item
@anch{absdemo}@c
Podržava jedinice (UNIT), objekte, @dots{}, i čini čak i stvari kao
@samp{absolute} varijable prenosivima. @examplehref{absdemo.pas}
@item Dolazi s prenosivim verzijama standardnih BP jedinica sa punim
izvornim kodom.
@item
@ifset html
@html
<table align=right><tr><td>
<a href="crtdemo.png">
<img alt="[CRTDemo screen] src="crtdemo-small.png" width=133 height=138>
<br>
(PNG, 21 kB)
</a>
</td></tr></table>
@end html
@end ifset
@anch{crtdemo}@c
Istinski mrežno-transparentna CRT jedinica: možete izvršavati svoje CRT
aplikacije lokalno ili dok ste prijavljeni udaljeno (remote login), bez
potrebe za brigom o različitim tipovima terminala. Kompatibilna s BP
jedinicom, ali s mnogim proširenjima, kao npr. preklapajući prozori.
@examplehref{crtdemo.pas}
@item
Potpuno funkcionalna GUI (X11) verzija CRT (također potpuno mrežno
transparentna).
@htmlbrclear
@item @samp{Random} funkcija koja može proizvesti iste sekvence
pseudo-slučajnih brojeva kao i ona u BP -- ako vam je to potrebno umjesto
mnogo jače elaboriranog inicijalnog algoritma.
@item
@anch{procvardemo}@c
Podržava proceduralne varijable u stilu BP-a, jednako kao i procedure kao
parametre iz Standard Pascala. @examplehref{procvardemo.pas}
@item
@anch{portdemo}@c
@samp{Ports} jedinica dozvoljava pristup I/O portovima na sistemima gdje
to ima smisla. @examplehref{portdemo.pas}
@item
@anch{bigmemdemo}@c
Specijalne kompatibilnostne značajke za pomoć u migraciji s BP-a na GPC,
kao @samp{GPC for BP} jedinica koja pruža neke od GPC-ovih značajki za BP,
te neke rutine za pristup skupovima velikih memorijskih blokova na uniforman
način pod GPC-om i BP-om (čak i u tzv. realnom modu).
@examplehref{bigmemdemo.pas}
@item
@anch{binobjdemo}@c
Dolazi sa BP-kompatibilnom @samp{binobj} uslugom.
@examplehref{binobjdemo.pas}
@end itemize

@item Iz Borland Delphija:

@itemize @minus
@item @samp{abstract} tipovi objekata i metoda
@item @samp{is} i @samp{as} operatori za testiranje pripadnosti objekta tipu
@item komentari s @samp{//}
@item @samp{Setlength} procedura za znakovne nizove (string) čini nepotrebnim
korištenje trikova kao što je pridodjeljivanje ``nultom karakteru''.
@item @samp{Initialize} i @samp{Finalize} za rukovanje varijablama na
niskoj razini.
@end itemize

@item Iz Pascal-SC (PXSC):

@itemize @minus
@item Korisnički redefinirani (preopterećeni) operatori. Zbrajajte svoje
vektore sa @samp{+}.
@end itemize

@item Pažljivo definirana GNU proširenja pomažu vam da učinite svoje
programe iz realnog života prenosivima:

@itemize @minus
@item 64-bitni cjelobrojni tipovi sa i bez predznaka.
@item
@anch{c_gpc}@c
Specijalni tipovi garantiraju kompatibilnost sa drugim GNU jezicima kao
što je GNU C. Direktive kao @samp{@w{@{$L foo.c@}}} čine jednostavnim
održavanje projekata pisanih u više jezika, npr. uključivanje koda pisanog
u drugim jezicima u Pascal programe
@xexamplehref{c_gpc.pas,Primjer (Pascal dio)}
@xexamplehref{c_gpc_c.c,Primjer (C dio)},
@item
@anch{gpc_c_pas}@c
@anch{gpc_c_unit}@c
ili uključivanje Pascal koda u programe pisane u drugim jezicima.
@xexamplehref{gpc_c_pas.pas,Primjer (Pascal dio)}
@xexamplehref{gpc_c_unit.pas,Primjer (Pascal jedinica)}
@xexamplehref{gpc_c_c.c,Primjer (C dio)}
@item
@anch{endiandemo}@c
Proširenja kao @samp{BitSizeOf} i @samp{ConvertFromBigEndian}
pomažu rješavanju problema s različitim tipovima i unutrašnjim poretkom
(engl. endianess - big endian, little endian).
@examplehref{endiandemo.pas}
@item Male sitnice kao što su @samp{DirSeparator},
@samp{PathSeparator}, @samp{GetTempDirectory} pomažu vam da pišete programe
koji izgledaju i osjećaju se ``kod kuće'' na svim operativnim sistemima.
@item
@anch{pexecutedemo}@c
@samp{PExecute} rutina dozvoljava izvođenje 'child' procesa na prenosiv
način koji u potpunosti iskorištava višezadaćne (engl. multitasking)
okoline.
@examplehref{pexecutedemo.pas}
@item
@anch{getoptdemo}@c
GNU GetOpt rutine daju komforan pristup kratkim i dugim opcijama u komandnoj
liniji u Unix-stilu sa i bez argumenata.
@examplehref{getoptdemo.pas}
@item
@anch{fexpanddemo}@c
Rutine kao @samp{FSplit} ili @samp{FSearch} ili @samp{FExpand} znaju o
specifičnostima raznih operativnih sistema.
@examplehref{fexpanddemo.pas}
@item
@anch{formattimedemo}@c
@samp{FormatTime} funkcija pušta vas da formatirate vrijednosti datuma i
vremena, prema raznim pravilima formatiranja.
@examplehref{formattimedemo.pas}
@end itemize

@item Korisne i prenosive GNU standardne jedinice:

@itemize @minus
@item
@anch{pipedemo}@c
@anch{demoproc}@c
@samp{Pipe} jedinica daje međuprocesnu komunikaciju čak i pod običnim
DOS-om. @examplehref{pipedemo.pas}
@xexamplehref{demoproc.pas,Demo proces za primjer}
@item
@anch{factorial}@c
@anch{fibonacci}@c
@anch{power}@c
@anch{realpower}@c
@anch{pi}@c
GNU multipreciznostna @samp{GMP} jedinica omogućava aritmetiku cijelih,
realnih i racionalnih brojeva proizvoljne preciznosti.
@xexamplehref{factorial.pas,Primjer: faktorijele}
@xexamplehref{fibonacci.pas,Primjer: Fibonaccijev niz}
@xexamplehref{power.pas,Primjer: potenciranje}
@xexamplehref{realpower.pas,Primjer: potenciranje realnih brojeva}
@xexamplehref{pi.pas,Primjer: pi}
@item
@anch{readdirdemo}@c
@anch{statfsdemo}@c
@anch{filelockdemo}@c
POSIX funkcije poput @samp{ReadDir}, @samp{StatFS} ili
@samp{FileLock} pružaju efikasno, lako za korištenje i prenosivo sučelje
(engl. interface) prema operacijskom sustavu. @examplehref{readdir.pas}
@examplehref{statfsdemo.pas}, @examplehref{filelockdemo.pas}
@item
@anch{dosunixdemo}@c
@samp{DosUnix} jedinica kompenzira neke nekompatibilnosti između dviju
obitelji operacijskih sustava.
@examplehref{dosunixdemo.pas}
@item
@anch{md5demo}@c
@samp{MD5} jedinica izračunava MD5 sume poruka (engl. message digest),
u skladu s RFC 1321. @examplehref{md5demo.pas}
@item
@anch{findfilesdemo}@c
@samp{FileUtils} jedinica pruža neke rutine za rukovanje datotekama i
direktorijima na višoj razini.  @examplehref{findfilesdemo.pas}
@item
@anch{stringhashdemo}@c
@samp{StringUtils} jedinica pruža neke rutine za rad sa znakovnim nizovima
na višoj razini. @examplehref{stringhashdemo.pas}
@item
@anch{gettextdemo}@c
@anch{localedemo}@c
@samp{Intl} jedinica za internacionalizaciju.
@examplehref{gettextdemo.pas} @examplehref{localedemo.pas}
@item
@anch{trapdemo}@c
@samp{Trap} jedinica za hvatanje grešaka u vremenu izvođenja (runtime-errors)
i njihovo obrađivanje unutar programa.  @examplehref{trapdemo.pas}
@item @samp{HeapMon} jedinica koja pomaže detektirati "curenje" memorije
(engl. memory leaks) u vašim programima.
@end itemize
@end itemize

Demo programi spomenuti gore su raspoloživi na WWW-u jednako kao i u
GPC distribucijama, binarnim i source.

@c DEMO-END

@anch{contra}@c
Nedostaci:

@itemize @bullet

@item GNU simbolički debugger (GDB) još ne razumije Pascal sintaksu i
tipove; potrebno je koristiti C sintaksu kod ispravljanja programa GDB-om.

@item Sa GPC-om prevođenje traje dulje nego s npr. Borland Pascalom.
@end itemize

@strong{Suradnici dobrodošli!}

Sposobni, predani programeri su uvijek dobrodošli u GNU Pascal tim. Ako
želite biti nezavisni od kompanija kojima morate plaćati za prevodilac
sa mnogo restriktivnijim uvjetima licenciranja koji se izvršava na
@emph{jednom} operacijskom sustavu, budite pozvani da se pridružite
razvojnom timu, @ref{Suradnici}. @c Note: this 'Contributors' should be
@c translated also, but it has lower priority (assigned to Slavko)--MT 20011201
@c Done


