banjalukaforum.com

Dobrodošli na banjalukaforum.com
Danas je 05 Jun 2024, 11:26

Sva vremena su u UTC [ DST ]




Započni novu temu Odgovori na temu  [ 5 Posta ] 
Autoru Poruka
 Tema posta: Pascal Tutorial
PostPoslato: 06 Nov 2004, 13:03 
OffLine
Stara kuka
Stara kuka
Korisnikov avatar

Pridružio se: 22 Maj 2003, 18:55
Postovi: 4706
Evo jedan mali tutorial iz pascala koji sam nasao u nekoj elektronskoj knjizi .Ovo su sam prva 3 dijela pa ako nekoga zanima mogu jos staviti,nije problem .

Pregled razvoja programskih jezika

Prvi računari bili su vrlo složeni za korišćenje. Njih su koristili isključivo stručnjaci koji su bili osposobljeni za komunikaciju s računarom. Ta komunikacija se sastojala od dva osnovna koraka: davanje uputstava računaru i čitanje rezultata obrade. I dok se čitanje rezultata vrlo brzo učinilo koliko-toliko snošljivim uvođenjem štampača na kojima su se rezultati ispisivali, unošenje uputstava – programiranje – se sastojalo od mukotrpnog upisivanja niza nula i jedinica. Ti nizovi su davali računaru uputstva kao što su: „saberi dva broja”, „premesti podatak s neke memorijske lokacije na drugu”, „skoči na neku instrukciju izvan normalnog redosleda instrukcija” i slično. Kako je takve programe bilo vrlo složeno pisati, a još složenije čitati i ispravljati, ubrzo su se pojavili prvi programerski alati nazvani asembleri (engl. assemblers).

U asemblerskom jeziku svaka mašinska instrukcija predstavljena je mnemonikom koji je razumljiv ljudima koji čitaju program. Tako se sabiranje najčešće obavlja mnemonikom ADD, dok se premeštanje podataka obavlja mnemonikom MOV. Time se postigla bolja čitljivost programa, ali i dalje je bilo vrlo složeno pisati programe i ispravljati ih jer je bilo potrebno davati sve, pa i najmanja uputstva računaru za svaku pojedinu operaciju. Javlja se problem koji će kasnije, nakon niza godina, dovesti i do pojave tzv. viših programskih jezika, tj. potrebno je razviti programerski alat koji će osloboditi programera rutinskih poslova i omogućiti mu da se usredi na problem koji rešava.

Zbog toga se pojavljuje niz viših programska jezika, koji preuzimaju na sebe neke „dosadne” programerske poslove. Tako je FORTRAN bio posebno pogodan za matematičke proračune, zatim BASIC koji se vrlo brzo učio, COBOL koji je bio po pravilu namenjen upravljanju bazama podataka.


Šta je program i kako ga napisati?

Elektronski računari postali su danas pribor kojim se svakodnevno koristimo kako bismo sebi olakšali posao ili se zabavili. Prvi navod će mnogi poricati, navodeći kao kontraargument činjenicu da im je za podizanje novca u banci pre trebalo znatno manje vremena nego otkad su šalteri kompjuterizovani. Međutim, činjenica je da su mnogi poslovi danas nezamislivi bez računara; u krajnjoj liniji, dokaz za to je tekst koji upravo čitate koji je u potpunosti napisan pomoću računara.

Sam računar, čak i kada se uključi na niskonaponsku mrežu, nije u stanju da uradi ništa korisno. Na današnjim računarima se ne može čak ni zagrejati jelo, što je inače bilo moguće na računarima sa elektronskim cevima. Ono što vam nedostaje je pamet neophodna za koristan rad računara: programi, programi, … i samo programi. Pod programom podrazumevamo niz naredbi u mašinskom jeziku koje procesor u vašem računaru izvršava i shodno njima obrađuje podatke, izvodi matematičke proračune, ispisuje tekstove, iscrtava krive na ekranu itd. Pokretanjem programa sa diska, diskete ili kompakt diska (CD-ROM-a), program se učitava u radnu memoriju računara i procesor počinje sa mukotrpnim postupkom njegovog izvršavanja.

Programi koje pokrećete na računaru su u izvršnom obliku (engl. executable), razumljivom samo procesoru vašeg (i njemu sličnih) računara. U suštini, mašinski kôd se sastoji od nizova binarnih cifara: nula i jedinica.

Budući da su današnji programi tipično dužine nekoliko megabajta, naslućujete da ih autori nisu pisali direktno u mašinskom kôdu. Gotovo svi današnji programi se pišu u nekom od viših programskih jezika (FORTRAN, BASIC, Pascal, C) koji su donekle razumljivi i ljudima (barem onima koji imaju nešto pojma o engleskom jeziku). Naredbe u tim jezicima se sastoje od mnemonika. Kombinovanjem tih naredbi programer slaže izvorni kôd (engl. Source code) programa, koji se pomoću posebnih programa prevodilaca (engl. compiler) i povezivača (engl. linker) prevodi u izvršni kôd. Prema tome, pisanje programa u užem smislu podrazumijeva pisanje izvornog kôda. Međutim, kako pisanje koda nije samo sebi svrha, pod pisanjem programa u širem smislu podrazumeva se i prevođenje, odnosno povezivanje programa u izvršni kôd. Prema tome, možemo govoriti o četiri faze kod pravljenja programa:

1. pisanje izvornog kôda
2. prevođenje izvornog kôda,
3. povezivanje u izvršni kôd i
4. testiranje programa.

Da bi se za neki program moglo reći da je uspešno napravljen, treba uspešno proći kroz sve četiri faze. Kao i svaki drugi posao, i pisanje programa zahteva određeno znanje i veštinu. Prilikom pisanja programera vrebaju Scile i Haribde, danas poznatije pod nazivom greške ili bugovi (engl. bug - stenica) u programu. Ako se pojave greške u nekoj od faza izrade programa, izvorni kôd treba doraditi i ponoviti sve prethodne faze. Zbog toga postupak izrade programa nije pravolinijski, već manje-više podseća na mukotrpno kretanje u krug. Na slici 1. je šematski prikazan celokupni ciklus izrade programa, od njegovog početka, pa sve do njegovog završeta. Analizirajmo najvažnije faze izrade programa.


Slika 1. Tipičan razvoj programa

Prva faza programa je pisanje izvornog kôda. U principu, izvorni kôd se može pisati u bilo kom programu za uređivanje teksta (engl. text editor), međutim, većina današnjih prevodilaca i povezivača se isporučuje kao celina zajedno s ugrađenim programom za upisivanje i ispravljanje izvornog kôda. Te programske celine poznatije su pod nazivom integrisano razvojno okruženje (engl. integrated development environment - IDE).

Nakon što je pisanje izvornog kôda završeno, on se čuva u datoteci izvornog kôda na disku. Toj datoteci se obično daje nekakvo smisleno ime, pri čemu se ono za kôdove pisane u programskom jeziku Pascal obično proširuje nastavkom .pas, na primer primer.pas. Nastavak (tip datoteke) je potreban samo zato da bismo izvorni kôd kasnije mogli lakše pronaći. Zatim sledi prevođenje izvornog kôda. U integrisanom razvojnom okruženju program za prevođenje se pokreće pritiskom na neki taster na tastaturi, pritiskom odgovarajućeg tastera na tastaturi ili izborom opcije iz menija sa vrha prozora programa – ako prevodilac nije integrisan, pozivanje je nešto složenije.

Prevodilac tokom prevođenja proverava sintaksu napisanog izvornog kôda i u slučaju uočenih ili naslućenih grešaka ispisuje odgovarajuće poruke o greškama, odnosno upozorenja. Greške koje prijavi prevodilac nazivaju se greškama pri prevođenju (engl. compile-time errors). Nakon toga programer će pokušati ispraviti sve navedene greške i ponovo prevesti izvorni kôd – sve dok prevođenje koda ne bude uspešno okončano, ne može se pristupiti povezivanju koda. Prevođenjem izvornog dobija se datoteka objektnog kôda (engl. object code), koja se lako može prepoznata po tome što obično ima nastavak .o ili .obj (u našem primeru bi to bilo primer.obj).

Nakon što su ispravljene sve greške uočene prilikom prevođenja i kôd ispravno preveden, pristupa se povezivanju objektnih kôdova u izvršni. U većini slučajeva objektni kôd dobijen prevođenjem programerovog izvornog kôda treba povezati sa postojećim bibliotekama (engl. libraries). Biblioteke su datoteke u kojima se nalaze već prevedene gotove funkcije ili podaci. One se isporučuju zajedno s prevodiocem, mogu se posebno kupiti ili ih programer može sam razviti. Bibliotekama se izbegava ponovno pisanje vrlo često korišćenih operacija. Tipičan primer za to jesu biblioteka matematičkih funkcija koja se uvek isporučuje uz prevodilac, a u kojoj su definisane sve funkcije poput trigonometrijskih, eksponencijalnih i slično.

Prilikom povezivanja proverava se mogu li se svi pozivi kodova realizovati u izvršnom kodu. Ukoliko povezivač tokom povezivanja uoči neku nepravilnost, ispisaće poruku o greški i onemogućiti generisanje izvršnog koda. Ove greške nazivaju se greškama pri povezivanju (engl. link-time errors) – sada programer mora prionuti na ispravljanje grešaka koje su nastale pri povezivanju. Nakon što se isprave sve greške, kôd treba ponovno prevesti i povezati.

Uspešnim povezivanjem dobija se izvršni kôd. Međutim, takav izvršni kôd još uvek ne garantuje da će program raditi ono što ste zamislili. Na primer, može se dogoditi da program radi pravilno za neke vrednosti podataka, ali da se za druge ponaša nepredvidivo. U tom se slučaju radi o greškama pri izvođenju (engl. run-time errors).

Da bi program bio potpuno korektan, programer mora da istestira program da bi uočio i
ispravio te greške, što znači ponavljanje celog postupka u lancu „ispravljanje izvornog koda-prevođenje-povezivanje-testiranje”. Kod jednostavnijih programa broj ponavljanja će biti manji i smanjivaće se proporcionalno sa rastućim iskustvom programera. Međutim, kako raste složenost programa, tako se povećava broj mogućih grešaka i celi postupak izrade programa neiskusnom programeru može postati mukotrpan.

Za ispravljanje grešaka pri izvođenju, programeru na raspolaganju stoje programi za otkrivanje grešaka (engl. debugger). Radi se o programima koji omogućavaju prekid izvođenja izvršnog koda programa koji testiramo na unapred zadatim naredbama, izvođenje programa naredbu po naredbu, ispis i promene trenutnih vrednosti pojedinih podataka u programu. Najjednostavniji programi za otkrivanje grešaka ispisuju izvršni kôd u obliku mašinskih naredbi. Međutim, većina današnjih naprednih programa za otkrivanje grešaka su simbolički (engl. symbolic debugger) – iako se izvodi prevedeni, mašinski kôd, izvođenje programa se prati preko izvornog kôda pisanog u višem programskom jeziku. To omogućava vrlo lagano lociranje i ispravljanje grešaka u programu.

Osim grešaka, prevodilac i povezivač redovno prijavljuju i upozorenja. Ona ne onemogućavaju nastavak prevođenja, odnosno povezivanja koda, ali predstavljaju potencijalnu opasnost. Upozorenja se mogu podeliti u dve grupe. Prvu grupu čine upozorenja koja javljaju da kôd nije potpuno korektan. Prevodilac ili povezivač će zanemariti našu grešku i prema svom nahođenju generisati kôd. Drugu grupu čine poruke koje upozoravaju da „nisu sigurni da je ono što smo napisali upravo ono što smo želeli napisati”, tj. radi se o dobronamernim upozorenjima na zamke koje mogu proizići iz načina na koji smo program napisali. Iako će, uprkos upozorenjima, program biti preveden i povezan (možda čak i korektno), pedantan programer neće ta upozorenja nikada zanemariti – ona često upućuju na uzrok grešaka pri izvođenju gotovog programa. Za precizno tumačenje poruka o greškama i upozorenja neophodna je dokumentacija koja se isporučuje uz prevodilac i povezivač.

Da zaključimo: „Šta nam, dakle, treba za pisanje programa na jeziku Turbo Pascal?” Osim računara, programa za pisanje i ispravljanje teksta, prevodioca i povezivača trebaju vam još samo tri stvari: interesovanje, puno slobodnog vremena i dobra literatura. Interesovanje verovatno postoji, ako ste sa čitanjem ovog teksta stigli čak dovde. Slobodno vreme će vam trebati da isprobate primere i da se sami oprobate u bespućima Turbo Pascala.


Uvod u Turbo Pascal
Zašto je Pascal dobar izbor programskog jezika? Odgovor će se sam nametnuti, ako se kaže bar nekoliko reči o nastanku jezika Pascal.

Njegov tvorac Niklaus Wirth (profesor na Eidgenossische Technische Hochschule, Cirih, Švajcarska) izborom imena jezika počastio je velikog francuskog naučnika i filozofa Blaisea Pascala (1623 — 1662) koji je izgradio jedan od prvih mehaničkih računara.

Stvarajući programski jezik Pascal, Wirth je težio da nauči učenika da programira tako da ne mora da menja logiku stvari koje je već ranije naučio, da ono što želi da izrazi bude i u programu čitljivo, jasno i pregledno. Omogućiti učeniku da svoje misli saopštava programom tako, da naredbe slede misli, da se njihov tok ne gubi u iznenadnim skokovima, da se razumeju bez muke. Wirth je želeo da se programiranje uči takvim jezikom u kojem će se misli lako prenositi, a s druge strane, da program jasno odražava misli programera. Imajući na raspolaganju više programske jezike kao što su Fortran, Algol i Basic Wirth nije bio zadovoljan. Pokušao je da svoje želje zadovolji ubacivanjem novih stvari u Algol. Ubrzo je bio nezadovoljan krparenjem Algola i odlučio je da napiše novi jezik. S radom je počeo šezdesetih godina, a prvi program-prevodilac proradio je u kasnim sedamdesetim godinama.

Wirth je prvi proklamovao prednosti strukturnog programiranja. One se sastoje u mogućnosti razlaganja problema u manje celine (module ili blokove) od kojih svaka sme da ima samo jedan ulaz i jedan izlaz izbegavajući naredbu GO TO. Informacije se prenose u sledu iz bloka u blok, dok se ne dođe do konačnog rešenja.

Wirth je želeo kao prvo, jezik koji će odražavati principe sistematičnog kreiranja i drugo, da njegovo ostvarenje na računaru bude pouzdano i efikasno. To je i ostvario Pascalom, zajednički radeći sa svojim kolegama, a baza mu je bila Algol.

Wirth smatra da učenje programiranja zapravo znači učenje struktura podataka, toka informacija i kontrole.

Programski jezici kao što su Fortran i Basic nemaju takve osobine i konstrukcije da programer može direktno izraziti programom svoje ideje. Često se nameće potreba da razmišlja o datom ostvarenju na računaru, pa njemu prilagođava svoje ideje. Oba jezika zahtevaju upotrebu GO TO naredbe, koja doprinosi ,,nečitljivosti" programa, gubi se sled misli. Dalje je veliki nedostatak što nema strukturiranih podataka, koji dozvoljavaju, da se jedan složeni podatak sastoji od različitih jednostavnih tipova podataka, pa se moraju stvarati komplikovane konstrukcije ,,paralelnih polja".

Dobre osobine Pascala u odnosu na druge jezike mogu se sažeto sagledati s obzirom na tri elementa:
1) nomenklatura jezika,
2) tok programa i
3) struktura podataka

Pođimo redom. Prvo, primer nomenklature. Svakom programeru početniku izraz a = a + 1, s kojim se susreće u Fortranu i Basicu, znači nešto što se kosi s već pre usvojenom matematičkom logikom. Pascal za taj slučaj ima operator dodeljivanja (znak je :=) koji se razlikuje od relacijskog operatora jednakosti ( = ), pa se tako gornji izraz piše a := a + 1, a čita ,,a je zamenjeno vrednošću a + 1" ili ,,a postaje a + 1". S druge strane a = a + 1 u Pascalu daje vrednost laž, što je u skladu s matematičkom logikom.

Sada o toku programa. Wirth smatra da se GO TO može izbeći, ako se pristupi sistematičnom kreiranju i posmatranju mogućih situacija u programu. Njih najlakše predstavljamo dijagramom toka, sasvim uopšteno nevezano za određeni jezik:
Slučaj grananja


Akcija 1 se preduzima samo u slučaju da je ispunjen uslov koji se ispituje testom. Moguće su dve akcije u zavisnosti od rezultata testa.

Slučaj ponavljanja

Bezuslovno ponavljanje Uslovno ponavljanje (1) Uslovno ponavljanje (2)

Akcije od 1 do N ponavljaju se određeni broj puta. Ponavljanje do akcije N izvrši se bar jedanput, a zatim se u zavisnosti od rezultata testa nastavlja ili prekida. Ponavljanje zavisi od testa, može se desiti da se obavi ili ne obavi nijednom.


Slučaj selekcije


Tok programa zavisi od selektora čiju vrednost određuje test.

Svi su ovi tokovi ostvarivi u Pascalu bez naredbe GO TO primenom naredbi FOR, IF . . THEN . . ELSE, REPEAT, WHILE, CASE. One omogućuju da se i letimičnim čitanjem dobro napisanog programa Pascal može pretpostaviti njegovo ponašanje, tj. statički plan koda određuje njegovo dinamičko ponašanje. To je vrlo značajno za programera, jer on mora ispravljati greške u programu i mora održavati program. Ukoliko je moguće obuhvatiti što više informacija jednostavnim čitanjem programa, to će biti lakše i brže izdvojiti greške.

Pascal ima bogate mogućnosti izražavanja različitih tipova podataka. Uz standardne numeričke podatke u obliku celih i realnih brojeva te znakova, programer može sam definisati svoj tip podataka. Zatim, vrlo jednostavno rešava zapis (slog) u kojem se nalazi više tipova podataka združenih u celovit podatak. Na primer, podatak o učeniku zahteva podatke: ime i prezime, adresu, godinu rođenja, pol, razred, uspeh itd.. U Pascalu se to može izraziti strukturiranim tipom podataka RECORD. Na taj način Pascal omogućuje programeru da nađe direktan put izražavanja svojih misli programom. U drugim (starijim) programskim jezicima programer mora stvarati, održavati i dokumentovati strukture, koje su već deo samog Pascala. Zapravo, to omogućuje dobar program prevodilac (kompajler)! Na tome je Wirth takođe radio, i bio svestan mogućeg sukoba između pogodnosti jezika i njegove izvodljivosti na računaru, odnosno, ono što će značiti ugodno proširenje za programera može postati poteškoća za stvaraoca prevodioca. Međutim, i tu je Pascal jak! Prvo, promenljive u Pascalu mogu imati lokalno značenje za jedan blok u programu, na primer, u funkciji ili proceduri (koje su nezavisni delovi u odnosu na druge blokove). S druge strane lokalne promenljive za pisca programa prevodioca znače organizaciju memorije na osnovu potreba. Deo memorije koji je blok zauzimao pri izvršavanju, oslobađa se nakon izvršavanja i može se dodeliti drugim delovima programa. Drugo, podintervalni tip podataka omogućuje programeru da veoma opisno može izražavati podatke, a stvaraocu prevodioca daje mogućnost da podatke memoriše na manjem prostoru memorije jer se prevodiocem svakom podatku dodeljuje redni broj i on se memoriše.

U Pascalov prevodilac Wirth nije ugradio eksponencijalni operator. To je koristan operator, ali i vrlo skup! Pascal ga ostvaruje upotrebom petlje u programu.

Važna osobina viših programskih jezika je njihova prenosivost (portabilnost). I u tom pogledu Pascal je povoljan, budući da je Wirth veliki zagovornik prenosive sistemske podrške. Naime, izvorni program u Pascalu prevodiocem prelazi u njegov pseudo kod, P-kôd, koji se zatim izvodi interpretacijom. Svojstvo Pascala da generiše P-kôd dopfinosi prenosivosti sa jednog računara na drugi. Sledeća šema prikazuje način izvršavanja programa u višim programskim jezicima.



Za Pascal bi se mogao napraviti (u suglasnosti s navedenom šemom), ovakav prikaz:



Podaci
Podacima se naziva uopšteno sve ono što se može obraditi računarom ili dobiti kao rezultat obrade. Mogu to biti činjenice, brojevi, slova, situacije i slično.

Svaki program sadrži u sebi podatke koje obrađuje. Njih možemo podeliti na
Nepromenljive podatke, tj. konstante, i promenljive podatke, tj. promenljive (varijable).
Najjednostavniji primer konstanti su brojevi (5, 1 0, 3.4 59). Promenljive su podaci koji mogu menjati svoj iznos. Stoga se oni u izvornom kôdu predstavljaju ne svojim iznosom već simboličkom oznakom, imenom promenljive.

Svaki podatak ima dodeljenu oznaku tipa koja govori o tome kako se dotični podatak čuva u memoriji računara, koji su njegovi dozvoljeni rasponi vrednosti, kakve se operacije mogu izvesti sa tim podatkom i slično. Tako razlikujemo celobrojne, realne,
logičke, pokazivačke podatke. U narednim odeljcima upoznaćemo se sa ugrađenim
tipovima podataka i pripadajućim operatorima.

U računaru su svi podaci predstavljeni binarnim oblikom tj. određenim brojem bitova. U višim programskim jezicima postoje različiti tipovi podataka, da bi se lakše moglo izraziti sve ono što se želi obraditi računarom. Računar mora prepoznati, a zatim prihvatiti različite tipove podataka. On ima različitu internu reprezentaciju za različite tipove podataka. Tip podataka određuje skup vrednosti koje podatak može imati.

U Pascalu postoji nekoliko tipova podataka. Mogu se podeliti u tri grupe:
1) jednostavni,
2) složeni ili strukturirani,
3) pokazivači (engl. pointer).

Jednostavni tip uključuje četiri skalarna tipa podataka: celobrojni, realni, Booleov i znakovni (engl. integer, real, Boolean, char). Uz to, Pascal dozvoljava da korisnik sam definiše svoj tip podataka (engl. user defined type).

Strukturirani tipovi podataka su polja, zapisi, datoteke i skupovi (engl. arrays, records, files, sets).

Podaci tipa pokazivač koriste se za dinamičke promenljive.

U narednim odeljcima biće obrađeni navedeni tipovi podataka.
Celobrojni tip
Za prikaz celih brojeva koristi se celobrojni tip podataka. Na primer, celobrojne kostante su:

30 351
-67 +21

Znak + je ispred konstante proizvoljan. Ako ne postoji nikakav predznak pretpostavlja se da je konstanta pozitivna.

Napomena:
Najveća celobrojna konstanta u obradi zavisi od računara na kojem se radi, na primer, raspon na jednom računaru može biti od —32767 do 32767, dok na drugom može biti od —281474976710655 do iste pozitivne vrednosti.

Realni tip
Brojevi koji imaju decimalni deo, istorijski se nazivaju realni. Na primer, realne konstante su:

-7.2
-4.73
8.5
3.777

Realna konstanta u Pascalu ne sme počinjati ili završavati decimalnom tačkom, na primer:
459. .357
Umesto toga treba da se napiše 459.0 i 0.357

U Pascalu je dozvoljeno pisanje realnih vrednosti s pokretnom tačkom (engl. floating-point). Takav način pisanja progodan je za vrlo velike i vrlo male vrednosti, na primer 750000000.0 ili 0.000000781. Tako se izbegava pisanje velikog broja nula.

Primer:
8.5E + 7 odgovara 8.5 107.

Pisanje brojeva u obliku pokretne tačke poznato je i pod nazivom eksponencijalna notacija. Eksponent pokazuje za koliko mesta treba decimalnu tačku pomeriti u levo ili desno. Ako je eksponent pozitivan tačka se pomera udesno, a ako je negativan tačka se pomera ulevo.
Predznak + iza znaka E može se izostaviti. Evo još nekoliko primera prikaza realnih konstanti:


Prikaz broja u eksponencijalnom obliku Konvencionalni prikaz broja
5.2E4 5200
3.141 E2 314.1
3.57 E-2 0.035
777.9E - 7

Konstanta napisana u eksponencijalnom obliku uvek prikazuje realni broj. To je slučaj i kada se decimalna tAčka izostavi.
Napomena:
Pascal nema decimalni zarez, nego decimalnu tačku. Zbog toga i svi decimalni brojevi u tekstu imaju tačku, a ne zarez.

Na primer, sledeći brojevi napisani u istom redu su ekvivalentni:


754E - 1 754.0E - 1 75.4
1E3 1.0E3 1000.0
1E-4 1.0E-4 0.0001

Broj 235 i 235.0 prikazuje istu vrednost u običnoj aritmetici, međutim, tako napisane vrednosti u Pascalu znače različite tipove podataka. One će biti i različito prikazane unutar računara pa će i rezultat obrade biti različit. One se zato ne smeju poistovetiti u programu Pascal.

Tačnost računanja u računaru nije ista ako se računa s realnim brojevima ili s celim brojevima. Ako se koristi zapisivanje brojeva u eksponencijalnom obliku tačnost zavisi od broja bitova koji se koriste za zapis mantise. Veličina broja zavisi od broja bitova koji služe za zapis eksponenta. U praksi se uvek radi zaokruživanje decimalnih brojeva zbog čega nastaje izvesna greška.

Računanje u realnoj aritmetici u računaru troši više vremena od celobrojne aritmetike.
Booleov tip
Računar u radu proverava različite uslove i s obzirom na rezultat ispitivanja nastavlja rad. Zbog toga se upotrebljava tip podataka koji ima dve vrednosti, prikazane sljedećim konstantama:


False True
Laž istina

Često se nazivaju logičkim vrednostima, ali u Pascalu ih nazivaju Booleove vrednosti, u čast engleskog matematičara Georga BOOLE-a, koji je prvi razvio logičku algebru u 19. veku. U računaru se Booleove vrednosti prikazuju jednim bitom, koji je obično 0 za laž, a 1 za istinito.
Znakovni tip
Ovu grupu podataka čine znakovi:
1. slova abecede,
2. numerički znakovi od 0 do 9,
3. znakovi interpunkcija i
4. specijalni znakovi.
Različiti računari koriste različite skupove znakova i njihovih kodova. Najčešće korišćeni kodovi za znakove su ASCII i EBCDIC.

Znakovna konstanta sastoji se od znaka ograđenog jednostrukim navodnicima, na primer:
'A' 'a' 'S' ' + ' '-' 'X'
Jednostruki navodnici su neophodni da bi računar znao, na primer, da + znači znakovnu konstantu za razliku od oznake sabiranja, ili da je 5 znakovna konstanta a ne celobrojni podatak 5.

Više znakova kao što su reči ili rečenice nazivaju se nizovi (engl. string). U programu se niz znakova može koristiti kao konstanta s time da se niz znakova omeđi navodnicima. Na primer:

'RAČUNARSTVO' '2003'

-------------------------------------------------------------------------
Ispisivanje podataka

Da bi se dobio rezultat obrade koriste se naredbe za ispisivanje (odnosno, štampanje). Računar može dati ispis u različitim formatima. Svaki računar ima svoj ,,standardni" format za ispisivanje podataka. Međutim, u višim programskim jezicima postoji mogućnost da i programer sam odredi format ispisivanja preko različitih formata za ispis. Takav je slučaj i u Pascalu. Svaki računar koji radi u Pascalu ima svoj ,,standardni" format i mogućnost da programer kreira format ispisa.

Ispisivanje celobrojnih vrednosti

a) naredba WRITE

Ova naredba ispisuje vrednost koja je napisana u zagradi iza reči WRITE. Na primer:

WRITE (1, 2, 3, 4, 5)

ispisuje:

12345

Kad želimo da računar izvrši nekoliko naredbi jednu iza druge, tada pišemo
naredbe pojedinačno, odvajajući ih tačka-zarezom. Obično se samo jedna naredba piše u jednom redu.

WRITE (1, 2);
WRITE (3);
WRITE (4, 5)

b) naredba WRITELN

Ova naredba omogućuje ispis u novom redu. Na primer, za naredbe:

WRITELN (1, 2);
WRITELN (3);
WRITELN (4, 5)

ispis će biti u obliku:

1 2
3
4 5

Ako želite da se preskoči red pri ispisu, piše se samo WRITELN, na primer:

WRITELN (-10, 5, 8); WRITELN (-4); WRITELN; WRITELN (-100, 35)

Nakon izvršenja svih naredbi za ispisivanje biće preskočen jedan red između drugog i trećeg reda, znači ispis će imati oblik:

-10 5 8
-4


-100 35


U upotrebi je češće naredba WRITELN nego WRITE. Ako želimo sami da odredimo oblik ispisa (na primer, razmak između brojeva) može se upotrebiti oznaka za proizvoljno dugo polje ispisa (engl. field width parameters).

Sledeći primer to ilustruje:

WRITELN (-5 :10)

Ovo znači da će se ispisati vrednost -5, a za ispis je rezervisano 10 mesta


- 5

Evo još jednog primera:

WRITELN (15 :8, -100 :8, 1 :8)


1 5 - 1 0 0 1


Ispisivanje realnih brojeva

Kad se realni brojevi ispisuju bez oznake za željenu dužinu ispisa većinom se ispisuju vrednosti u eksponencijalnom obliku.

Na primer:

WRITELN (1.5, -8.25)

1.500000000000E + 00 -8.250000000000E + 00


Za konvencionalno ispisivanje možemo rezervisati dva područja proizvoljno duga i to tako, da prvi broj pokazuje ukupan broj mesta za ispis, a drugi broj pokazuje koliko je od toga decimalnih mesta.

Na primer:

WRITELN (5.4 :7 :1, -8.25 :8 :2)

ispisuje:


5 . 4 - 8 . 2 5

Drugi primer:

WRITELN (3.14 :7 :3, 9.58 :8 :4, 1.0 :6 :3)

ispisuje:


3 . 1 4 0 9 . 5 0 0 0 1 . 0 0 0


Ispisivanje Booleovih vrednosti

Booleove vrednosti se ispisuju koristeći reči: istina i laž(true, false). Na primer:

WRITELN (true, false)

TRUE FALSE


Ispisivanje znakova i nizova

Ista naredba može ispisati i znakove i nizove znakova, na primer:

WRITELN ('A', 'b', 'Abe')

ispsisuje

AbAbe

Moguće je i ispisivanje znakova s razmakom, na primer:

WRITELN ('A', 'b' :5, 'Abe' :5)

ispisuje:


A b A b e

Pre nego što pređemo na strukturu Pascal programa i pisanje programa upoznaćemo se sa integrisanim razvojnim okruženjem Turbo Pascala.

Integrisano razvojno okruženje

Turbo pascal obezbeđuje dva nezavisna metoda pravljenja Pascal programa. Možete da koristite svoj editor (program za pisanje i prepravljanje ASCII teksta) i samostalni Turbo Pascal kompajler (prevodilac), ili možete da koristite integrisano razvojno okruženje (engl. Integrated Development Environment – IDE) koje sadrži moćan editor, Pascal kompajler, linker (povezivač) i debager (program za otkrivanje i ispravljanje grešaka).

Sa stanovišta korisnika, IDE izgleda kao tekst editor koji sadrži komandu Compile i pridružene funkcije Debug. Ovo znači da ne morate da napuštate ovo okruženje, jednostavno tu pišete svoj kôd, prevodite ga, ispravljate greške i ponovo prevodite sve dok ne dobijete zadovoljavajući rezultat. Za vreme izvršavanja programa, IDE obezbeđuje debager na nivou izvornog koda. Koristeći IDE debager, možete da pomerate editorski pokazivač na određeni red izvornog koda i postavite prekidnu tačku za privremeno zaustavljanje izvršavanja programa, a zatim da nastavite jednokoračni hod kroz izvorni kôd, proveravajući vrednosti promenljivih u prozoru Watch. Šta više, možete i da menjate vrednosti promenljivih za vreme izvršavanja programa.

Kada da koristite IDE?

Uopšteno govoreći, želećete da koristite IDE kadgod je to moguće. Međutim, u zavisnosti od veličine vašeg programa i memorijskog kapaciteta biće premašene granice koje IDE zahteva. U tom slučaju, možete svoj program podeliti u manje celine i raditi u IDE-u ili koristiti samostalni kompajler.

Pokretanje Turbo Pascal razvojnog okruženja

Pod pretpostavkom da ste instalirali Turbo Pascal u poddirektorijum \TP, kao što je u ovom primeru, da biste pristupili razvojnom okruženju na komandnoj liniji ispisaćete sledeće:

C:\TP> TURBO

Ukoliko ste instalirali Turbo Pascal u neki drugi direktorijum tada treba da stavite tu lokaciju u DOS Path naredbu ili da se prebacite u taj direktorijum da biste mogli da pristupite.

Biranje stavki menija

Stavke menija u razvojnom okruženju možete birati na više načina. Najlakši način je pomoću miša; postavite pokazivač miša na željenu stavku (komandu) i pritisnete levo dugme miša. Na ekranu se prikazuje padajući meni i vi postavljate pokazivač na stavku koja vam je potrebna i dvo-klikom miša je izabirate. Na sledećoj slici prikazan je padajući meni Compile razvojnog okruženja Turbo Pascal.


Slika 2.1

Takođe, korišćenjem tastature možete pristupiti stavkama menija tako što ćete istovremeno pritisnuti taster Alt i istaknuto slovo odgovarajuće stavke menija. Zatim, korišćenjem pokazivačkih tastera (tastera sa strelicama) možete se kretati kroz menije. Kada dođete do željene stavke, pritiskom na taster Enter aktivirate označenu stavku.

Pored toga, neke stavke menija možete aktivirati pritiskom tasterske kombinacije koja je označena pored tih stavki u meniju (ispisana sa desne strane tih stavki menija).

Na kraju, ukoliko želite, možete pristupiti liniji menija pritiskom funkcijskog tastera F10. Time označavate meni File u gornjem levom uglu ekrana. Upotrebite tastere sa strelicama da biste došli do željenih stavki u menijima, a pritiskom na Enter ih aktivirate.

Uređivanje, snimanje i prevođenje programa

Da biste napravili novi program, izaberite u meniju File stavku New. Na ekranu se pojavljuje prazan prozor sa naslovom NONAME00.PAS centriranim na gornjoj ivici. Tekstualni kursor (pokazivač) će se pojaviti u gornjem levom uglu prozora.

Sada možete da počnete sa direktnim pisanjem svog prvog Pascal programa u IDE editoru. Krenimo od najprostijeg mogućeg primera:

Program Zdravo;
Begin
Writeln(‘Zdravo programeri!’)
End;

Posle upisivanja ovog programa, možete ga snimiti na disk pomoću komande Save As iz menija File. Okvir za dijalog koji će se potom pojaviti, tražiće od vas da navedete naziv datoteke u koju će program biti snimljen. Upišite naziv datoteke i zatim ili pritisnite taster Tab dva puta da biste se prebacili da dugmeta OK i pritisnite taster Enter, ili upotrebite miša i dva puta kliknite na dugme OK. Bez obzira na primenjeni metod, rezultat je isti, novi program je snimljen na disk.

Okvir za dijalog

Okviri za dijalog se koriste u IDE i svim Turbo Pascal pomoćnim programima za obezbeđivanje ulaza i biranje opcija. Dijalozi sadrže nekoliko tipova ulaznih kontrola, uključujući:

Ulaznu liniju ili polja za upisivanje tekstualnih odziva.
Radio dugmad za odabir samo jedne stavke iz grupe stavki.
Polja za potvrdu za omogućavanje ili onemogućavanja velikog broja opcija.
Liste, za prikazivanje, biranje i kretanje kroz liste sa informacijama.
Dugmad, kao što su OK ili Cancel.

Većina dijaloga su tzv. modalni dijalozi što znači da dok su oni prikazani vi ne možete da obavljate bilo koju drugu funkciju osim da kompletirate okvir za dijalog. Kada se dijaqlog prvi put prikaže, pokazivač je ili vidljiv u nekom ulaznom polju, ili je nešto istaknuto da označi da je na tome težište u tom okviru za dijalog.


Slika 2.2

Na primer, kada je pokazivač u polju za potvrdu, možete videti da pokazivač trepće između zagrada ‘[ ]’ koje omeđuju izbor polja za potvrdu.

Generalno, pritiskom na taster Tab krećete se između kontrola okvira za dijalog ili koristite miša da kliknete na određenu stavku. Međutim, grupe radio dugmadi i polja za potvrde se smatraju jednom kontrolom, tako da pritiskanjem taster Tab dok ste unutar grupe prebacujete se na sledeću kontrolu, a ne na sledeći izbor unutar grupe. Prema tome, koristite tastere sa strelicama da biste se kretali unutar grupe radio dugmadi ili polja za potvrdu, a taster Tab koristite da se prebacite sa jedne kontrole na drugu. U sledećoj tabeli dat je spisak kontrola okvira za dijalog i objašnjenja za njihovo korišćenje.


Taster Tab Pomera pokazivač na sledeću kontrolu u nizu.
Tasteri Shift-Tab Pomera pokazivač na prethodnu kontrolu u nizu.
Tasteri sa strelicama Pomeraju pokazivač između stavki polja za potvrdu i radio dugmadi.
Taster razmaknica (Space) Bira ili poništava radio dugme ili polje za potvrdu.
Taster Enter Bira označenu kontrolu.
Klik mišem Omogućava ili onemogućava stavku radio dugme ili polje za potvrdu, bira kontrolu tipa dugme, premešta akciju na stavku na koju je kliknuto.
Istaknuta tasterska kombinacija Stavke koje sadrže istaknutu tastersku kombinaciju mogu se izabrati direktnim pritiskom na te tastere, usled čega se akcija prebacuje na izabranu stavku.
Radio dugmad Ova kontrola vam omogućava da izaberete samo jednu stavku od više ponuđenih. Kada birate radio dugme pritiskom tastera razmaknice ili mišem, ili pritiskom na istaknutu slovnu oznaku, sva ostala radio dugmad unutar te grupe postaju neaktivna.
Polja za potvrdu Ove kontrole se koriste za omogućavanje ili onemogućavanje bilo kog broja stavki. Obično su grupisane i tasterskim strelicama možete da se krećete između ponuđenih stavki. Pritisnite taster razmaknicu da izaberete stavku, ili kada je stavka već izabrana, pritisnite razmaknicu da poništite taj izbor.
Ulazno polje Ulazna polja vam omogućuju da upišete proizvoljnu tekstualnu informaciju i da koristite tasterske strelice za pomeranje ulevo i udesno unutar teksta, povratni taster i taster Delete da obrišete tekst, taster Home da se prebacite na početak polja a taster End da se prebacite na kraj polja. Većina ovih polja obezbeđuje horizontalno pomeranje sadržaja (skrolovanje), što vam omogućuje da upišete tekst koji je širi od prikazanog ulaznog polja. Kada se to desi, na oba kraja polja pojaviće se odgovarajuće strelice da pokažu da ima više teksta nego što je prikazano. Koristite odgovarajuće tastere za kretanje kroz tekst ulevo, odnosno udesno, ili pritiskajte mišem na odgovarajuću strelicu.
Okvir liste Oni se koriste za izbor stavke sa velikog spiska. Na sledećoj slici prikazan je okvir za dijalog Open u IDE okruženju. Tipična upotreba ovog okvira za dijalog je za otvaranje datoteke koja se nalazi u direktorijumu čiji sadržaj se prikazuje u listi. Ako postoji više stavki nego što može da stane u polje liste, prikazuje se ili na dnu ili na desnoj strani okvira traka za pomeranje sadržaja. Da biste koristili okvir liste, upotrebite taster Tab da biste prebacili pokazivač u okvir liste, ili koristite miša da kliknete na stavku unutar liste. Kada se već nalazite u okviru liste, možete koristiti standardne navigacione tastere.



Slika 2.3

Koristite taster Ins da se prebacujete iz režima umetanja u režim prepisivanja znakova.


Korišćenje editora

Editor razvojnog okruženja je mesto gde ćete provesti veći deo svog vremena pišući kôd, prepravljajući postojeće programe i ispravljajući greške. Editoru pristupate izborom opcije New u meniju File ili otvaranjem postojeće datoteke, takođe iz menija File. Alternativno, možete otvoriti postojeću datoteku navođenjem njenog naziva na komandnoj liniji kada prvi put pokrenete IDE kucajući sledeću komandu:

C:\TP>TURBO SHELL.PAS

koja pokreće Turbo i učitava postojeći program SHELL.PAS za uređivanje.

Kada ste u editoru, na raspolaganju vam je niz komandi sa tastature za uređivanje teksta. Kako upisujete tekst, pokazivač se pomera dužekrana, na desno. Kada dođete do kraja reda, pritisnite taster Enter da biste prešli u novi red, mada će editor pomerati prikaz horizontalno ukoliko treba da upišete izvorni kôd čija širina je veća od širine ekrana.

Pritiskom na taster Ins, editor se prebacuje iz režima umetanja u režim prepisivanja preko postojećeg sadržaja i obrnuto.


Navigacija u editoru

Horizontalna traka za pomeranje sadžaja prikazuje tekući položaj datoteke, u odnosu na početak i kraj svojih redova, a vertikalna traka za pomeranje sadržaja prikazuje tekući položaj datoteke u odnosu na prvi i poslednji red u datoteci. Svaka traka prikazuje i kvadratni marker koji možete mišem da prevlačite da bi se brzo premestili na novu lokaciju u datoteci. Da biste se pomerali red po red, pritisnite taster sa strelicom na gore (↑) ili strelicom na dole (↓), ili kliknite mišem na prazan prostor na traci za pomeranje sadržaja.

Kombinacije tastera za navigaciju u editoru


↑ ili Ctrl+E Pomera naviše za jedan red
↓ ili Ctrl+X Pomera naniže za jedan red
← ili Ctrl+S Pomera ulevo za jedan znak
→ ili Ctrl+D Pomera udesno za jedan znak
Ctrl+← ili Ctrl+A Pomera za jednu reč ulevo
Ctrl+→ ili Ctrl+F Pomera za jednu reč udesno
PgUp ili Ctrl+R Pomera za jedan pun ekran naviše
PgDn ili Ctrl+C Pomera za jedan pun ekran naniže
Home Pomera na početak tekućeg reda
End Pomera na kraj tekučeg reda
Ctrl+Home Pomera na početak tekućeg prozora
Ctrl+End Pomera na dno tekućeg prozora
Ctrl+Q+B Pomera na početak izabranog tekstualnog bloka
Ctrl+Q+K Pomera na kraj izabranog tekstualnog bloka
Tab ili Ctrl+I Pomera na sledeću tabulatorsku poziciju u redu


Označavanje teksta i rad sa blokovima teksta

Označavanje (selektovanje) teksta možete uraditi mišem tako što postavite pokazivač na početak željenog tekstualnog bloka, držite pritisnuto levo dugme miša i povlačite pokazivač do kraja željenog bloka teksta. Tekst će biti vidno istaknut kako ga označavate (selektujete) povlačenjem pokazivača miša.

Tekstualni blok možete označiti i pomoću tastature. Držite pritisnut taster Shift i istovremeno pritiskajte navigacione tastere dok ne označite željeni blok teksta.

Označeni blok teksta možete zatim kopirati ili iseći. Turbo Pascal raspolaže klipbordom, tj. privremenim magacinom u koji možete smestiti označeni tekst koji ste iskopirali ili isekli. Kada je neki blok isečen (Cut) iz tekuće datoteke, on je iz nje uklonjen i smešten u klipbord. Ako je neki blok kopiran (Copy), on ostaje u tekućoj datoteci, a kopija se smešta u klipbord. Isecanje koristite da obrišete blokove ili da ih privremeno prebacite u klipbord da bi mogli kasnije da ih stavite na drugo mesto u datoteci. Kopiranje koristite da duplirate tekst.

Komande za isecanje (Cut) i kopiranje (Copy) nalaze se u padajućem meniju Edit. Takođe, mogu se aktivirati preko tastature. Tasterska kombinacija za Cut je Shift+Del, a za Copy je Ctrl+Ins.

Sadržaj klipborda može se staviti na novu lokaciju ili čak drugu datoteku tako što ćete u meniju Edit izabrati komandu Paste ili istovremeno pritisnuti tastere Shift i Ins (Shift+Inst). Koristite komandu Show Clipboard da pregledate tekući sadržaj klipborda.

Ukoliko želite da isečete blok teksta bez smeštanja u klipbord, izaberite komandu Clear u meniju Edit.

Meni File

Meni File se koristi za otvaranje postojećih programskih datoteka, snimanje datoteka na disk (disketu), pravljenje novih programskih datoteka i štampanje.

File/Open
Da biste otvorili postojeću programsku datoteku, možete ili navesti na komandnoj liniji kada pokrećete Turbo Pascal, ili koristiti komandu Open iz menija File. Komanda Open prikazuje na ekranu standardan okvir za dijalog, koji izlistava sve datoteke u tekućem direktorijumu koje odgovaraju po tipu, i obezbeđuje polje u koje možete upisati naziv datoteke.

Kao i kod većine okvira za dijalog, možete koristiti i miša da kliknete na određenu ekransku kontrolu ili da koristite taster Tab da se prebacite sa jedne ekranske kontrole na sledeću. Naravno, vi ćete verovatno upisati naziv datoteke koju želite da otvorite, ili ćete pritisnuti taster Tab da biste prešli na listu Files. Kada ste prešli na listu, možete koristiti tastere sa strelicama ili miš da označite željenu datoteku, a zatim pritisnuti dugmad OK ili Replace da otvorite tu datoteku. Da biste se brzo kretali kroz listu Files, koristite tastere PgUp ili PgDn. Takođe, možete mišem pomerati klizač na traci za pomeranje sadržaja da biste pregledali kompletnu listu.

Razlika između OK ili Replace je u tome što kada izaberete OK, IDE će otvoriti novi prozor u editoru pre nego što otvori datoteku. Ovo vam omogućuje da više datoteka bude vidljivo na ekranu u isto vreme. Ukoliko izaberete Replace, datoteka će biti učitana u postojeći prozor editora, ili ako ima više editorskih prozora, datoteka će biti učitana u trenutno aktivni prozor.

Kada se okvir za dijalog pojavi prvi put, pokazivač se inicijalno pojavljuje u ulaznom polju Name sa istaknutom oznakom *.PAS. Možete obrisati ovu oznaku ako pritisnete bilo koji taster i upisati određen naziv datoteke. Takođe, možete se prebaciti u neki drugi poddirektorijum upisivanjem putanje tog poddirektorijuma u polje Name, međutim, ovime se samo privremeno menja podrazumevani direktorijum. Iskoristite komandu Change dir menija File da promenite podrazumevani direktorijum dok koristite razvojno okruženje.

Ako ste prethodno otvarali druge datoteke, tada strelica usmerena na dole, koja se nalazi desno od polja Name, prikazuje listu prethodno otvaranih datoteka. Ovo olakšava ponovno otvaranje datoteke koju ste ranije već koristili.

Izbaerite opciju New da otvorite novi, prazan editorski prozor da biste u njega počeli da upisujete novu programsku datoteku. Novi editorski prozor će imati podrazumevani naziv NONAMExx.PAS, gde je xx brojčana oznaka u rasponu od 0 do 99.

File/Save
Da biste snimili sadržaj editorskog prozora na disk, izaberite jednu od komandi za snimanje: Save, Save As ili Save All.
Ako ste upisivali u novu datoteku ili želite da snimite sadržaj editorskog prozora u novu datoteku, izaberite stavku Save As iz menija File. U komandnom odzivniku upišite naziv nove datoteke gde će sadržaj editorskog prozora biti snimljen.
Izaberite Save da brzo snimite sadržaj aktivnog editorskog prozora na disk, koristeći naziv koji je već dodeljen datoteci. Ako editorski prozor ima naziv NONAMExx.PAS, IDE će automatski prikazati komandni odzivnik Save koji od vas traži da navedete jedinstven naziv za datoteku. Možete pritisnuti i taster F2 da uradite brzo snimanje dok radite u editorskom prozoru.
Opcija Save All snima svaki od editorskih prozora koji su bili promenjeni.

File/Print
Koristite ovu opciju da odštampate sadržaj aktivnog prozora na DOS PRN: printer uređaju (obično ekvivalent sa LPT1:). Ukoliko želite da odštampate samo deo teksta, prvo označite taj deo teksta i zatim pritisnite istovremeno tastere Ctrl+K+P.

File/Exit
Da biste izašli iz Turbo pascala izaberite opciju Exit u meniju File ili istovremeno pritisnite tastere Alt+X. Ukoliko niste snimili na disk neku od datoteka čiji sadržaj je u međuvremenu promenjen, Turbo Pascal će vas upozoriti i ponuditi da snimite promene na disk.


Meni Run

Meni Run sadrži opcije za pokretanje i upravljanje izvršavanjem vašeg programa. Opcije menija Run možete koristiti posle prevođenja (kompajliranja; meni Compile) programa ili izvršiti program direktnim zadavanjem komande Run. Ako program nije bio kompajliran posle zadnje izmene u editoru, tada će istovremeno biti i kompajliran i izvršiti se.

Run/Run (Alt+R)
Ako izvorni program treba da se kompajlira, komanda Run će pozvati kompajler, zatim će vaš program početi da se izvršava. Možete istovremeno pritisnuti tastere Ctrl+Break jednom ili dva puta, po potrebi, da biste zaustavili izvršavanje programa. IDE će tada postaviti pokazivač na lokaciju gde je program zaustavljen pri izvršavanju.

Ako je program privremeno zaustavljen za vreme korišćenja ugrađenog debagera, izaberite komandu Run da biste ponovo pokrenuli izvršavanje programa.

Na izvršavanje programa utiču i komande Run/Parameters i stavke menija Options (Compiler, Memory sizes, Linker i Debugger).

Run/Program Reset (Ctrl+F2)
Dok koristite debagerska svojstva razvojnog okruženja, možete u potpunosti zaustaviti i ponovo pokrenuti (resetovati) izvršavanje programa izborom ove komande menija Run. Kada je jednom izabrana ova komanda, obnavljanje izvršavanja programa od početka ostvaruje se izborom komande Run.

Run/Go to Cursor (F4)
U bilo kom trenutku kada želite da koristite komandu Run da bi pokrenuli izvršavanje svog programa, možete izabrati komandu Go to Cursor koja izvršava program do lokacije gde se nalazi pokazivač u IDE okruženju. Kada izvršavanje dostigne tekuću lokaciju pokazivača, program će se zaustaviti i vi možete da koristite debagerska svojstva da proverite vrednosti promenljivih ili da nastavite sa ispravljanjem programa. Takođe, mogli ste da postavite prekidnu tačku (engl. breakpoint; meni Debug/Breakpoints) i pokrenete izvršavanje programa dok se ne zaustavi u prekidnoj tački. Razlika između ova dva slučaja je u tome što se sa Go to Cursor postavlja privremena tačka prekida, dok se sa Breakpoints postavlja prekidna tačka trajnijeg karaktera, koja je važeća sve dok se ne obriše.

Run/Trace Into (F7) i Run/Step Over (F8)
Da biste izvršavali izvorni program korak po korak, tj. red po red, izaberite ili komandu Trace Into ili Step Over. To su slične komande, samo što će Trace Into nastaviti da izvršava program red po red kako se pojavljuju procedure niskog nivoa kojima debager mora da pristupa, a Step Over će pozivati procedure ali ih neće pratiti i neće se zaustaviti sve do reda koji se nalazi neposredno ispod reda iz koga je procedura pozvana.

Run/Parameters
Ako vaš program koristi parametre sa komandne linije, tj. koristi argumente, možete upotrebiti opciju Parameters da postavite parametre za izvršavanje programa. Kada se program pokrene, ovi parametri su na raspolaganju kao da su upisani na DOS komandnoj liniji.

Meni Compile

Meni Compile se koristi kompajliranje i povezivanje („linkovanje”) izvršnog programa. Takođe, na proces kompajliranja mogu da utiču i stavke menija Run i Options.

Compile/Compile (Alt+F9)
Koristite opciju Compile da kompajlirate sadržaj tekućeg editorskog prozora. Koristite Build ili Make ili Run (u meniju Run) kada je potrebno da ponovo kompajlirate druge izvorne datoteke koje će se koristiti pri završnom povezivanju.

Compile/Make (F9)
Koristite opciju Make da kompajlirate i povežete kompletnu izvršnu (.EXE) datoteku. Make automatski proverava i kompajlira, ako je potrebno, bilo koju nezavisnu programsku jedinicu (*.TPU), spoljne objektne datoteke (*.OBJ) i uključene datoteke unutar jedinica. Kadgod Make funkcija pronađe izvornu datoteku koja je starija od datoteke koja se u tom trenutku kompajlira (.OBJ ili .TPU datoteka), tada se te datoteke automatski ponovo kompajliraju tako da njihov kompajlirani oblik odgovara poslednjim promenama. Make je „inteligentna” funkcija u tom smislu što kompajlira samo one datoteke koje treba da se kompajliraju; nepromenjene jedinice se ne kompajliraju ponovo.

Compile/Build
Komanda Build je kao Make, izuzev što Build ponovo kompajlira svaku zavisnu jedinicu, bez obzira da li je ili nije potrebno ponovno kompajliranje.

Compile/Destination
Ovu funkciju koristite da saopštite razvojnom okruženju da kompajlira i poveže program direktno u memoriji, što je najbrže, ili da napravi .EXE datoteku na disku. Bez obzira na ovaj izbor, sve jedinice koje prave .TPU datoteke uvek se kompajliraju na disk. Bez obzira koju ste od ove dve mogućnosti izabrali, možete da izvršite svoj program koristeći komandu Run.

Compile/Primary File
Kada pišete program koji koristi više jedinica i uključene datoteke, konkretno kada je njih nekoliko istovremeno učitano u više editorskih prozora, potrebno je da saopštite kompajleru koja od tih datoteka je primarna ili glavna datoteka. Koristite komandu Primary File da označite koja datoteka je glavna datoteka i koja poziva sve druge. Komande Make i Build koriste ovu datoteku da odrede koja datoteka prisvaja odgovarajuće jedinice i da obave „inteligentno” ponovno kompajliranje koda.

Meni Debug i ugrađeni debager

Meni Debug obezbeđuje pristup ugrađenom debageru razvojnog okruženja. Zajedno sa opcijama menija Run, ugrađeni debager omogućava postepen prolaz kroz izvorni kôd programa, red po red, praćenje vrednosti promenljivih, kao i njihovo menjanja, postavljanje prekidnih tačaka da bi se zaustavilo izvršavanje na određenim lokacijama.

Dva funkcije koje se najčešće koriste su opcija Breakpoints, koja se koristi za postavljanje tačaka za zaustavljanje programa i opcija Watches, koja se koristi za pregledanje vrednosti promenljivih. Takođe, postoji mogućnost da promenite vrednosti promenljivih korišćenjem komande Evaluate/Modify.

Debug/Evaluate/Modify (Ctrl+F4)
Ova funkcija se koristi da izračunate izraz, koji sadrži aktuelne vrednosti promenljivih i opciono da dodelite nove vrednosti programskim promenljivim za vreme izvršavanja programa.

Evaluate/Modufy prikazuje okvir za dijalog u koji možete da upišete izraz (Expression), a prikazuje i izračunati izraz u polu Result (čiji sadržaj takođe može da se prepravlja). Možete da upišete novu vrednost ili izraz u polje New value i izaberete dugme Modify da ažurirate sadržaje promenljivih (mora biti promenljiva ili element niza) koje su upisane u polje Expression.

Modul za izračunavanje izraza može da formatira rezultate u saglasnosti sa specifikacijama formata prikazanim u narednoj tabeli. Za nizove, možete da specificirate izraz za broj ponavljanja da nabrojite više elemenata niza i to tako što navedete niz ili naziv pokazivača iza koga sledi zapeta i zatim izraz za broj ponavljanja. Na primer:

Xniz[0], 3

Prikazuje prva tri elementa niza Xniz.

Specifikatori formata komande Evaluate/Modify


, Koristite iza niza ili pokazivačke (pointerske) promenljive da specificirate broj ponavljanja (pogledajte prethodni primer).
C ASCII znakovi u opsegu od 0 do 31 prikazuju se korišćenjem notacije # da se označi koja ASCII vrednost je smeštena u bajt. Dodavanjem ,C posle izraza, ove vrednosti će biti prikazane kao stvarni znaci.
D Koristite ,D da prikažete sve celobrojne vrednosti kao decimalne brojeve.
Fn Koristite ,Fn da promenite podrazumevani broj decimala u prikazu sa 11 cifara na broj zadat sa n, gde ne može biti u rasponu od 2 do 18.
M Dodavanjem ,M posle izraza, vrednost izraza se koristi kao memorijska adresa (izraz mora izračunati adresnu promenljivu ili pokazivačku promenljivu pošto će se koristiti na levoj strani operatora dodeljivanja (:=)). Normalno, format ,M će prikazati heksadekadno jedan bajt memorije. Međutim, ako iza ,M sledi neki od specifikatora, možete prikazati naredne bajtove kao da sadrže celobrojnu, realnu, pokazivačku ili string vrednost.
P Podrazumeva se da se pokazivačke vrednosti prikazuju kao Ptr(segment, offset). Navodeći ,P posle izraza, pokazivačka vrednost će biti prikazana kao segment:offset.
R Zapis (slog) promenljivih prikazuje se tako što su vrednosti polja razdvojene zapetama. Dodavanjem ,R zapis se prikazuje tako da sadrži naziv promenljive.
S Primorava vrednosti tipa string ili character koje su u opsegu od 0 do 31 da budu prikazane kao #nn. Kada se koristi sa formatom ,M , S utiče da se bajtovi memorije tretiraju kao string.
$, H ili X Prikazuje sve celobrojne (integer) vrednosti kao heksadecimalne, na primer kao $1A.


Debug/Watches
Korišćenjem funkcije Watches, možete da dodate promenljive i izraze u prozor Watch, gde će njihovi sadržaji biti prikazani svo vreme. Kad izaberete opciju Watches na ekranu se prikazuje podmeni koji sadrži stavke Add Watch, Delete Watch, Edit Watch i Remove all watches. Ove funkcije su niže opisane.

Debug/Watches – Add Watch (Ctrl+F7)
Izaberite ovu opciju da biste upisali novu promenljivu ili izraz u prozor Watch (prozor za posmatranje vrednosti). Obično ćete upisati naziv promenljive, kao što je Filename ili pokazivač, List^.Name ili čak naziv zapisa. Takođe, možete upisati izraze, kao što je I*J ili slično.
Pored prečice sa tastature Ctrl+F7 za dodavanje vrednosti koje ćete posmatrati, ako je prozor Watch aktivan ili u žiži (u prvom planu), možete pritisnuti taster Ins da ubacite izraze za posmatranje, jedan ispod drugog.

Debug/Watches – Delete Watch
Kada je prozor Watch aktivan prozor, možete pojedinačno obrisati izraze koje posmatrate tako što postavite pokazivač na željeni izraz i izaberite u meniju stavku Delete watch, ili na tastaturi pritisnite taster Del ili Ctrl+Y.

Debug/Watches – Edit Watch
Da biste promenili postojeće izraze koje pratite, izaberite Edit Watch i upišite novi izraz u okviru za dijalog Edit Watch. Da biste ovo brže uradili, pomerite pokazivač na postojeći izraz koji pratite u prozoru Watch i pritisnite taster Enter. Na taj način aktivira se prikaz prozora Edit Watch.

Debug/Watches – Remove all Watches
Koristite opciju Remove all Watches da obrišete sadržaje prozora Watch.

Debug/Toggle Breakpoint (Ctrl+F8)
Da biste postavili prekidnu tačku, izaberite opciju Toggle Breakpoint. Ako je pokazivač na istaknutom redu koji već ima prekidnu tačku, izaberite opciju Toggle Breakpoint da obrišete prekidnu tačku.

Debug/Breakpoints
Komanda Breakpoints se koristi da prepravite ili dodate prekidne tačke u listu trenutno aktivnih prekidnih tačaka, da obrišete prekidne tačke ili da brzo pronađete i pogledate izvorni kôd gde je prekidna tačka postavljena. Po aktiviranju komande Breakpoints na ekranu se pojavljuje okvir za dijalog koji prikazuje listu aktivnih prekidnih tačaka (broj reda gde je postavljena i uslove koji su dodeljeni prekidnoj tački), i grupu dugmadi da biste mogli da baratate listom.

Dugme Edit Breakpoints
Izaberite dugme Edit Breakpoints da promenite postojeću prekidnu tačku ili da dodate novu. Edit Breakpoints prikazuje na vrhu okvira za dijalog Breakpoints novi okvir za dijalog sa sledećim poljima:

Condition field: Možete upisati uslov za testiranje u ovo polje, kao što je I>10, koji ograničava uticaj prekidne tačke na promenljivu I, tj. kada ima veću vrednost od 10.

Pass count: Upisivanjem vrednosti u polje Pass count, prekidna tačka će biti preskočena taj broj puta pre nego što bude aktivirana. Ovo svojstvo je posebno korisno kada otklanjate grešku u sredini petlje.

Filename: To je naziv izvorne datoteke koja sadrži tu prekidnu tačku.

Line number: Specificira broj reda u kojem je locirana prekidna tačka.

Dugme Delete
Unutar liste prekidnih tačaka, pomerite istaknutu horizontalnu pokazivačku traku na prekidnu tačku koju želite da obrišete, a zatim izaberite dugme Delete. Zapazite da okvir za dijalog Breakpoints nema dugme Cancel tako da prekidne tačke koje obrišete trajno su uklonjene.

Dugem View
Da biste locirali izvorni kôd konkretne prekidne tačke, pokažite na prekidnu tačku u listi prekidnih tačaka i izaberite dugme View. Ovime se vrši prebacivanje aktivnog prozora na datoteku koja sadrži prekidnu tačku i prikazuje red izvornog koda gde je prekidna tačka postavljena.

Dugme Clear All
Koristite ovo dugme da obrišete sve prekidne tačke programa.


-----------------------------------------------------------
Uvod u programiranje u Turbo Pascalu 7 (3)


3. PASCAL PROGRAM
Osnovna struktura Pascal programa ima sledeći oblik:

PROGRAM Naziv_programa (Lista_datoteka)
USES
(* Nazivi modularnih jedinica (UNIT-a) koje koristi *)
LABEL
(* Deklaracija labela *)
CONST
(* Deklaracije konstanti *)
TYPE
(* Deklaracije tipa *)
VAR
(* Deklaracije promenljivih *)
(* Definicije podprograma *)
BEGIN
(* Izvršne naredbe *)
END.

Slika 3.1 Sintaksni dijagram koji pokazuje kako se deklaracioni elementi Pascal jezika mogu pojaviti u bilo kom redosledu.
Evo jednog kompletnog programa u Pascalu:
PROGRAM pozdrav (output);
{ovaj program šalje poruke korisniku}
BEGIN
WRITELN ('Dobar dan!');
WRITELN ('Ja sam vaš saradnik RAČUNAR!');
WRITELN ('Mogu li vam pomoći?')
END.
Kad računar izvrši ovaj program biće ispisano:
Dobar dan!
Ja sam vaš prijatelj RAČUNAR!
Mogu li vam pomoći?

Napomena: O fontovima i našim slovima biće reči u jednom od narednih nastavaka.

Program se sastoji od tri dela:
1. naslova programa,
2. komentara i
3. naredbi.
1. Naslov programa
Naslov programa ima oblik:
PROGRAM pozdrav (output);

Reč PROGRAM označava naslov programa i to je rezervisana reč u Pascal jeziku. Rezervisane reči su deo samog Pascala i korisnik ih ne sme upotrebljavati u programu kao imena promenljivih i procedura. Druga reč u naslovu je pozdrav i označava ime programa. To ime daje programer.

Imena se u programskim jezicima nazivaju identifikatorima.

Imena se daju programima, promenljivama i procedurama.

Imena se stvaraju na sledeći način:
1. Identifikator mora počinjati sa slovom abecede.
2. Iza prvog znaka ostali znakovi u identifikatoru mogu biti bilo koji alflanumerički znakovi. Ne smeju se upotrebljavati drugi znakovi, na primer, praznine ili znakovi interpunkcije.
3. Identifikator ne sme biti isti kao rezervisana reč.

Rezervisane reči u Pascalu su:


and end nil shr
asm file not string
array for object then
begin function of to
case goto or type
const if packed unit
constructor implementation procedure until
destructor in program uses
div inline record var
do interface repeat while
downto label set with
else mod shl xor


One pomažu računaru da razume šta želimo da program uradi.
4. Identiflkatori u Pascalu imaju proizvoljnu dužinu. Međutim, Pascal prevodilac razlikuje identifikatore do dužine od osam znakova. To znači da programer može koristiti po volji dugo ime, ali prevodilac ignoriše sve znakove iza osmog znaka.

Takođe, niže su navedene ključne reči koje su rezervisane od strane Turbo Pascala ali mogu da se redefinišu u programu, što nije preporučljivo da radite.

absolute external forward near
assembler far interrupt private
virtual


Reč output u zagradama datog primera označava datoteku (file) u koju se prenosi izlaz iz programa. Potrebno je pobliže označiti pojam datoteke.

Pojam datoteke se odnosi na organizovani skup podataka u memoriji računara. Uopšteno, moguće je datoteku snimiti i na ostalim medijumima ulazno-izlaznih uređaja.

Datoteke koje program koristi potrebno je navesti unutar zagrada naredbe PROGRAM.

Svakom Pascal programu automatski se pridružuju dve datoteke: input i output. Datoteka input se pridružuje primarnom sistemskom ulaznom uređaju, a output primarnom sistemskom izlaznom uređaju. Ako program sadrži i ulazne i izlazne akcije tada naredba koja sadrži ime programa treba da sadrži i imena ulazne i izlazne sistemske datoteke - input i output:
PROGRAM pozdrav (input, output);
Naslov programa završava tačka-zapetom.
2. Komentar
Red {Ovaj program ispisuje poruke korisniku} predstavlja komentar. Komentar se sastoji od teksta koga bira programer. Komentar je namenjen čoveku koji čita program, a ne računaru.
Tokom prevođenja programa u pseudo kôd, komentari se ignorišu. Komentari su isključivo namenjeni korisnicima programa u cilju boljeg razumevanja funkcija programa. Komentar se može staviti na bilo koje mesto u programu.

Treba napomenuti da je u Turbo Pascalu označavanje {komentar}alternativa označavanju (* komentar *). Preporučujem da koristite standardnu oznaku za komentar (* *), a da lastavičaste zagrade ostavite za otklanjanje grešaka. Valja znati da ugnježđivanje komentara nije dozvoljeno. Ukoliko napišete sledeće:

(* (* *) *)

biće prijavljena greška zato što kompajler uparuje prvi par znakova (* sa prvim parom znakova *), a ignoriše sve što se između njih nalazi. Stoga, drugi par znakova *) neće imati svog parnjaka (*.

Uglavnom komentar se piše na dva načina:
1. Komentar napisan u zasebnom redu (kao u gornjem primeru) objašnjava bliže sadržaj programa ili dela programa.
2. Komentar napisan u istom redu s nekom naredbom kao na primer: WRITELN {preskok reda}
Komentar pomaže korisniku koji nije programer da bolje razume šta program radi, a i samom programeru može biti od koristi kad se koristi
programom koji je napisao pre par meseci. Dodatnoj razumljivosti programa doprinosi pogodan izbor imena identifikatora. Na primer, u navedenom primeru za ime programa se koristi ,,pozdrav", a ne, na primer yzx81, što korisniku programa ništa ne znači.
3. Naredbe
Naredbe sadrže uputstvo za računar, tj. šta treba da uradi. U Pascalu se dele na neizvršne i izvršne.
Neizvršne naredbe služe za deklaraciju svega onoga što će se u programu koristiti, prvenstveno su to promenljive.
Izvršne naredbe čine ,,radni" deo programa. To su aritmetičko-logičke, upravljačke i ulazno-izlazne naredbe.
3.1. Aritmetika u Pascalu

U Pascalu, svaka kombinacija simbola koja može prikazati neku vrednost naziva se izraz. Tako su, na primer, sledeće vrste konstanti primeri su jednostavnih izraza:

72 TRUE -3.5 a


Sledeći način predstavljanja vrednosti pokazuje kako se može računati s njima, na primer, 8 + 5 i 8 - 5 pokazuju vrednosti 13 i 3. To su, takođe, izrazi. U izrazu 8 + 5 znak + je operator, a 8 i 5 su operandi. U aritmetici govorimo o aritmetičkim izrazima; to su izrazi u kojima su vrednosti celobrojni ili realni brojevi.
Saglasno tome govorimo o aritmetičkim operatorima, koji operišu s realnim ili celobrojnim operandima, a rezultat je realna ili celobrojna vrednost.

Aritmetički operatori u Pascalu su:
+ sabiranje
- oduzimanje
* množenje
/, div, mod deljenje

Operatori +, -, * i / primenjuju se na obe vrste brojeva, (realne i cele). Za + , - i * ako su oba operanda celobrojna i rezultat će biti celobrojan. Međutim, ako je jedan ili oba operanda realni broj, rezultat će biti realni broj. Sliedeći primer to pokazuje za + :

Izraz Vrednost

8 + 5 13
8 + 5.0 13.0
8.0 + 5 13.0
8.0 + 5.0 13.0

Takva šema ne zadovoljava deljenje. To je zato što, na primer, ako su oba operanda celobrojna rezultat deljenja može biti realan broj, na primer, 3 podeljeno sa 2, rezultat je 1,5. Zato operator deljenja / daje za rezultat realni broj, bez obzira na tip operanada:

Izraz Vrednost

3/2 1.5
3/2.0 1.5
3.0/2 1.5
3.0/2.0 1.5

Međutim, moguće je i deljenje celobrojnih vrednosti čiji rezultat je celi broj. To je metoda deljenja sa ostatkom - tako smo svi računali u osnovnoj školi dok nismo naučili decimalne brojeve. Na primer, 10 :3 = 3 ostatak 1.

U Pascalu postoje dva operatora za deljenje metodom količnika sa ostatkom. Operator koji računa količnik zove se div, a operator koji računa ostatak zove se mod. Primer:
Izraz Vrednost
10 div 3 3
10 mod 3 1

Naredbe WRITE i WRITELN su primer izvršnih naredbi i ne mogu se koristiti za ispisivanje vrednosti bilo kog izraza, a ne samo za vrednosti konstanti. Na primer:
WRITELN (2 + 7, 7-2, 7x2,7/2); WRITELN (7 div 2, 7 mod 2)
Rezultat obrade biće ispisan kao:
9 5 14 3.500000000000E + 00
3 1
Ovde treba istaći da je samo vrednost 7/2 ispisana kao realni broj. Možemo isti primer ispisati sa zadatim formatom ispisa, tj.:
WRITELN (2+7 :5, 7-2 :5, 7 x 2 :5, 7/2 :7 :1, 7 div 2 :5, 7 mod 2 :5)


9 5 1 4 3 . 5 3 1


4. DEKLARACIJE PROMENLJIVIH
Za svaku promenljivu upotrebljenu u programu potrebno je odrediti tokom izvođenja programa tip podatka (vrednosti) koji promenljiva može imati. Ima više razloga za to. Vrednosti različitih tipova podataka zahtevaju memorijske lokacije različitih veličina. Neki se operatori mogu primeniti na više od jednog tipa vrednosti.
Računar tokom kompajliranja i izvođenja programa proverava tipove podataka kako bi se dobio tačan rezultat.
Proverom računar može otkriti, na primer, besmislice kao što je deljenje slova!
Zbog toga program na početku i sadrži deklaracije promenljivih. Rečeno je ranije da se u Pascal programima koriste sledeći tipovi podataka: celobrojni, realni, logički i znakovni s time da se u deklaracionom delu programa označavaju s rezervisanim rečima:
integer real Boolean char
Deklaracija promenljivih dolazi u programu između naslova programa i naredbi. Na primer, evo deklaracije jedne realne i jedne c

_________________
http://www.codebluestudio.com


Vrh
 Profil  
 
 Tema posta:
PostPoslato: 06 Nov 2004, 16:33 
OffLine
Urednik
Urednik

Pridružio se: 26 Jun 2003, 21:50
Postovi: 2669
Dobro de.
Siguran sam da ima ljudi kojima ce ovo biti korisno. Mada, forum je malo zeznut jer tekst je dugacak. A da ti njima das link prema html fajlu na kraju svakog dijela ? Mislim, html je najvjerovatnije obojen (mislim na sintaksu - nisam rasista al sto jest jest ;] ) pa je pregledniji.

Znas MadBota ? E on mi rece da se pati sa pascalom - primjera radi eto ti covjeka zbog kog bi mogo staviti i ta druga dva dijela.


Vrh
 Profil  
 
 Tema posta:
PostPoslato: 06 Nov 2004, 16:54 
OffLine
Stara kuka
Stara kuka
Korisnikov avatar

Pridružio se: 22 Maj 2003, 18:55
Postovi: 4706
Ima jos dosta dijelova ,ali problem je sto nije u html-u vec u wordu ,a jos veci sto sam skinuo od lika sa wireless-a a on nezna od kuda je skinuo .

_________________
http://www.codebluestudio.com


Vrh
 Profil  
 
 Tema posta:
PostPoslato: 06 Nov 2004, 17:11 
OffLine
Urednik
Urednik

Pridružio se: 26 Jun 2003, 21:50
Postovi: 2669
Au, vidim. Kako god hoces.


Vrh
 Profil  
 
 Tema posta:
PostPoslato: 06 Nov 2004, 21:01 
OffLine
Stara kuka
Stara kuka

Pridružio se: 06 Jan 2003, 01:19
Postovi: 4072
pa prebaci u html i posadi negdje da ljudi skidaju :)


Vrh
 Profil  
 
Prikaži postove u poslednjih:  Poređaj po  
Započni novu temu Odgovori na temu  [ 5 Posta ] 

Sva vremena su u UTC [ DST ]


Ko je OnLine

Korisnici koji su trenutno na forumu: Nema registrovanih korisnika i 2 gostiju


Ne možete postavljati nove teme u ovom forumu
Ne možete odgovarati na teme u ovom forumu
Ne možete monjati vaše postove u ovom forumu
Ne možete brisati vaše postove u ovom forumu
Ne možete slati prikačene fajlove u ovom forumu

Pronađi:
Idi na:  
Powered by phpBB® Forum Software © phpBB Group
Hosting BitLab
Prevod - www.CyberCom.rs