You are on page 1of 14

SVEUILITE/ UNIVERZITET VITEZ VITEZ

FAKULTET POSLOVNE EKONOMIJE


VITEZ
STUDIJ PRVOG CIKLUSA, I. GODINA STUDIJA

AMEL HODI

TIPOVI PODATAKA U PASCAL-U


SEMINARSKI RAD

Travnik, 2014

SADRAJ
1. UVOD U TIPOVE PODATAKA..................................................................................3
2. TIPOVI PODATAKA....................................................................................................4
2.1. Statika i dinamika tipizacija................................................................................5
2.2. Koncept slabih tipova.............................................................................................6
2.3. Koncept jakih tipova podataka...............................................................................7
2.4. Ekvivalentnost tipova.............................................................................................8
3. STANDARDNI TIPOVI PODATAKA U PASCAL-U...............................................10
3.1. Cjelobrojni tip (Integer)........................................................................................10
3.2. Tip realnih brojeva (Real).....................................................................................10
3.3. Znakovni tip podataka (Char)...............................................................................11
3.4. Diskretni tipovi podataka u programskim jezicima..............................................11
3.5. Nabrojivi tipovi u Pascal-u...................................................................................12
3.6. Podintervalni tipovi...............................................................................................12
3.7. Anonimni tipovi....................................................................................................12
4. ZAKLJUAK..............................................................................................................13
LITERATURA................................................................................................................14

1. UVOD U TIPOVE PODATAKA


Jedan od najznaajnijih pojmova u okviru programskih jezika je pojam tipa podataka.
Atribut tipa odreuje skup vrijednosti koje se mogu dodjeljivati promjenljivima, format
predstavljanja ovih vrijednosti u memoriji raunara, skup osnovnih operacija koje se
nad njima mogu izvravati i veze sa drugim tipovima podataka. Na primjer,
promjenljivoj koa pripada cjelobrojnom tipu mogu se kao vrijednosti dodjeljivati samo
cijeli brojevi iz odreenog skupa. Nad tako definisanim podacima mogu se izvravati
osnovne aritmetike operacije, sabiranje, oduzimanje, mnoenje, dijeljenje,
stepenovanje, kao i neke specifine operacije kao to je odreivanje vrijednosti jednog
broja po modulu drugog.
Koncept tipova podataka prisutan je, na neki nain, ve kod simbolikih asemblerskih
jezika gdje se za definiciju tipa koriste implicitne definicije preko skupa specijalnih
znakova kojima se odreuju podaci razliitog tipa.
Neka je zadat skup T sainjen od n proizvoljnih apstraktnih objekata: T= {v1,...,vn},
n>1. ukoliko su svi objekti istorodni, u smislu da se u okviru nekog programskog jezika
na njih moe primjenjivati jedan odreeni skup operatora, onda se T naziva tip
podataka. Ako za promjenljive x i y uvijek vai xT i yT onda su one tipa T. To u
okviru programa formalno definiemo iskazom
DEFINE x,y : T.
Vrijednost je bilo koji entitet kojim se moe manipulisati u programu. Vrijednosti se
mogu evaluirati, zapamtiti u memoriji, uzimati kao argumenti, vraati kao rezultati
funkcija, i tako dalje. Razliiti programski jezici podravaju razliite tipove vrijednosti.

2. TIPOVI PODATAKA
Klasifikacija tipova podataka:

Tipovi podataka su podjeljeni u dvije osnovne grupe: statiki tipovi i dinamiki tipovi.
Pod statikim tipovima (ili tipovima sa statikom strukturom podrazumjevamo tipove
podataka kod kojih je unaprijed i fiksno definisana unutranja struktura svakog podatka,
a i veliina (tj. memorijska zapremina) fiksno se definie prije (ili u vrijeme)
izvravanja programa koji koristi podatke statikog tipa.
Statiki tipovi podataka obuhvataju skalarne i strukturirane podatke. Pod skalarnim
tipovima podrazumjevamo najprostije tipove podataka ije su vrijednosti skalari,
odnosno takve veliine koje se tretiraju kao elementarne cjeline i za koje nema potrebe
da se dalje razlau na komponente. U tom smislu realne i kompleksne brojeve tretiramo
kao skalare u svim programskim jezicima koji ih tretiraju kao elementarne cjeline (neki
jezici nemaju tu mogunost pa se tada kompleksni brojevi tretiraju kao struktura koja se
razlae na realni i imaginarni dio; na slian nain mogao bi se realni broj razloiti na
normalizovanu mantisu i eksponent). Pod strukturiranim tipovima podataka
podrazumjevamo sve sloene tipove podataka koji se realizuju povezivanjem nekih
elementarnih podataka u precizno definisanu strukturu. Kompozitna vrijednost ili
struktura podataka (data structure) jeste vrijednost koja je komponovana iz
jednostavnijih vrijednosti. Kompozitni tip jeste tip ije su vrijednosti kompozitne.
Programski jezici podravaju mnotvo kompozitnih vrijednosti: strukture, slogove,
3

nizove, algebarske tipove, objekte, unije, stringove, liste, stabla, sekvencijalni fajlove,
direktni fajlovi, relacije, itd.
Skalarni tipovi podataka mogu biti linearni ureeni ili linearni neureeni. Linearno
ureeni tipovi podataka su tipovi kod kojih se vrijednosti osnovnog skupa T
preslikavaju na jedan interval iz niza cijelih brojeva, tj. za svaki podatak xT zna se
redni borj podatka. Stoga svaki podatak izuzem poetnog ima svog prethodnika u nizu, i
slino tome, svaki podatak izuzev krajnjeg ima svog sljedbenika u nizu.
Pod dinamikim tipovima podataka podrazumjevamo tipove podataka kod kojih se
veliina i/ili struktura podataka slobodno mijenja u toku obrade. Kod dinamikih tipova
sa promjenljivom veliinom podrazumjevamo da je struktura podataka fiksna, ali se
njihova veliina dinamiki mijenja tokom obrade tako da se saglasno tome dinamiki
mijenjaju i memorijski zahtjevi. Na primjer, dopisivanjem novih zapisa u sekvencijalnu
datoteku veliina datoteke raste u neizmjenjenu strukturu. Kod dinamikih tipova sa
promjenljivom strukturom unaprijed je fiksno definisan jedino princip po kome se
formira struktura podataka dok se sama kontkretna struktura i koliina podataka u
memoriji slobodno dinamiki mijenjaju.
2.1. Statika i dinamika tipizacija
Prije izvrenja bilo koje operacije, moraju se provjeriti tipovi operanata da bi se
sprijeila greka u tipu podataka. Na primjer, prije izvrenja operacije mnoenja dva
cijela broja, oba operanta moraju biti provjerena da bi se osiguralo da oni budu cijeli
brojevi. Slino, prije izvrenja neke and ili or operacije, oba operanta moraju biti
provjerna da bi se osiguralo da oni budu tipa boolean. Prije izvrenja neke operacije
indeksiranja niza, tip operanta mora da bude array (a ne neka prostorna vrijednost ili
slog). Ovakva provjera se naziva provjerom tipa (type checks). Provjera tipa mora da
bude izvrena prije izvrenja operacije.
Meutim, postoji izvjestan stepen slobode u vremenu provjere: provjera tipa se moe
izvriti ili u vremenu kompilacije (compile-time) ili u vremenu izvrenja programa (at
run-time). Ova mogunost lei u osnovi vane klasifikacije programskih jezika na
statiki tipizirane i dinamiki tipizirane. U nekom statiki tipiziranom jeziku, svaka
varijabla i svaki izraz imaju fiksni tip (koji je ili eksplicitno postavljen od strane
programera ili izveden od strane kompajlera). Svi operanti moraju biti provjerenog tipa
u vremenu kompilovanja programa. U dinamiki tipiziranim jezicima, vrijednosti imaju
fiksne tipove, ali varijable i izrazi nemaju fiksne tipove. Svaki put kada se neki operant
izraunava, on moe da proizvede vrijednost razliitog tipa. Prema tome, operanti
moraju imati provjeren tip poslije njihovog izraunavanja, ali prije izvrenja neke
operacije, u vremenu izvrenja programa (at run-time). Mnogi jezici visokog nivoa su
statiki tipizirani. SMALLTALK, LISP, PROLOG, PERL i PYTHON jesu primjeri
dinamiki tipiziranih jezika.
S druge strane, moderni funkcionalni jezici (kao ML, HASKELL, MATHEMATICA)
uzdravaju se od takvih ogranienja: oni omoguavaju da sve vrijednosti, ukljuujui i
funkcije, imaju slinu obradu.
4

Na osnovu toga kako je postavljan koncept tipova podataka, programski jezici mogu da
se svrstaju u dvije grupe: na programske jezike sa slabim tipovima podataka i na
jezike sa jakim tipovima podataka.
2.2. Koncept slabih tipova
U sluaju jezika sa slabim tipovima podataka informacija o tipu promjenljive koristi se,
i korektna je samo na mainskom nivou, u fazi izvrenja programa. Ovako postavljen
koncept podrazumijeva sljedee mogunosti:
(1) Operacija koja se od strane kompilatora prihvati kao korektna, na nivou izvornog
koda programa, moe da bude potpuno nekorektna. Razmotrimo sljedei primjer:
char c;
c = 4;
Promjenljiva c definisana je da pripada tipu char, to podrazumjeva da joj se kao
vrijednosti dodjeljuju znaci kao podaci. Meutim umjesto korektnog dodjeljivanja
c='4', promjenljivoj c je dodjeljena vrijednost broja 4 kao konstante cjelobrojnog tipa.
Kod jezika sa slabim tipovima podataka kompilator ne otkriva ovu greku i informaciju
o tipu korisit samo na mainskom nivou kada promjenljivoj c dodjeljuje vrijednost
jednog bajta memorijske lokacije u kojoj je zapisana konstanta 4. Oigledno je da ovako
postavljen koncept tipova moe da dovede do veoma ozbiljnih greaka u izvrenju
programa koje se ne otkrivaju u fazi kompilovanja programa.
(2) Koncept slabih tipova podrazumjeva odreeni automatizam u transformaciji tipova
podataka u sluaju kada se elementi razliitih tipova nalaze u jednom izrazu ija se
vrijednost dodjeljuje promjenljivoj odreenog tipa. Razmotrimo sljedei primjer:
float x, y;
int i, j, k;
i = x;
k = x-j;
promjenljive x i y su realne (tipa float), a i, j i k cjelobrojne (tipa int.). Naredbom i-x;
vri se dodjeljivanje vrijednosti tipa float promjenljivom cjelobrojnog tipa. Kod jezika
sa slabim tipovima ovo dodjeljivanje je dozvoljeno iako se pri tome x svodi na drugi
format i pravi greka u predstavljanju njegove vrijednosti. Kod ovako postavljenog
koncepta tipova, da bi se napisao korektan program potrebno je tano poznavati
mehanizme transformacije tipova. U drugoj naredbi iz primjera (k = x-y;) od broja x koji
je tipa float treba oduzeti broj j, tipa int i rezultat operacije dodijeliti promjenljivoj tipa
int. Da bi smo bili sigurni u korektnost rezultata potrebno je da znamo redoslijed
transformacija koje se pri tome izvravaju, odnosno da li se prvo x prevodi u int i onda
izvrava oduzimanje u skupu cijelih brojeva i vrijednost rezultata dodjeljuje
promjenljivoj tipa int ili se j prevodi u tip float, izvrava oduzimanje u skupu realnih
brojeva, a zatim razultat prevodi u tip int ili dodjeljuje promjenljivoj k.
5

Koncept slabih tipova podataka doputa puno slobode kod zapisivanja izraza u
naredbama dodjeljivanja; meutim cijena te slobode je nejasan program sa skrivenim
transformacijama, bez mogunosti kontrole i koritenja informacije o tipu u fazi
kompilovanja programa.
2.3. Koncept jakih tipova podataka
Koncept jakih tipova podataka obuhavata nekoliko osnovnih principa:

Tip podataka odreuju slijedei elementi:


-

Skup vrijednosti,

Format registrovanja podataka,

Skup operacija koje se nad podacima mogu izvravati,

Skup funkcija za uspostavljanje veza sa drugim tipovima podataka.

Sve definicije tipa moraju da budu javne, eksplicitne. Nisu dozvoljene implicitne
definicije tipova.

Objektu se dodjeljuje samo jedan tip.

Dozvoljeno je dodjeljivanje vrijednosti samo odgovarajueg tipa.

Dozvoljene su samo operacije obuhvaene tipom.

Tip je zatvoren u odnosu na skup operacija koji obuhvata. Ove operacije se


mogu primjenjivati samo nad operandima istog tipa. Mjeoviti izrazi nisu
dozvoljeni.

Dodjeljivanje vrijednosti raznorodnih tipova mogue je samo uz javnu upotrebu


funkcija za transformaciju tipa.

U sljedeim primjerima date su naredbe koje po ovom konceptu nisu dozvoljene:

Koncept jakih tipova poveava pouzdanost,dokumentarnost i jasnou programa.Kako se


zahtjeva eksplicitna upotreba operacija za transformaciju tipa,onda je nedvosmisleno
jasno da je odreena transformacija na nekom mjestu namijerna i potrebna .Ovaj
koncept omoguava da se informacija o tipu moe koristiti u fazi kompilovanja
programa i na taj nain postaje faktor pouzdanosti programa.
Izbor izmeu statike i dinamike tipizacije je pragmatian:

Statika tipizacija je efikasnija. Dinamika tipizacija zahtjeva (vjerovatno


ponovljenu) provjeru tipova u vremenu izvrenja programa (run-time type
cheks) to usporava izvrenje programa. Statika tipizacija zahtjeva jedino
provjeru tipa u vremenu kompilacije programa (compile-time type checks), ija
6

je cijena minimalna (i izvrava se jedanput). Osim toga, dinamika tipizacija


primorava sve vrijednosti da budu etiketirane (tagged), (da bi se omoguila
provjera u vrijeme izvrenja), a ovakvo oznaavnje poveava upotrebu
memorijskog prostora. Statika tipizacija ne zahtjeva ovakvo oznaavanje.

Statika tipizacija je sigurnija: kompajler moe da provjeri kada program sadri


greke u tipovima. Dinamika tipizacija ne omoguava ovakvu sigurnost.

Dinamika tipizacija obezbjeuje veliku fleksibilnost, to je neophodno za neke


aplikacije u kojima tipovi podataka nisu unaprijed poznati.

U praksi vea sigurnost i efikasnost statike tipizacije imaju prevagu nad veom
fleksibilnou dinamike tipizacije u velikoj veini aplikacija. Veina programskih
jezika je statiki tipizirana.
2.4. Ekvivalentnost tipova
ta ekvivalentnost tipova oznaava zavisi od programskog jezika. (Sljedea diskusija
podrazumjeva da je jezik statiki tipiziran.) Jedna mogua definicija ekvivalentnosti
tipova jeste strukturna ekvivalentnost (structural equivalence): T1=T2 ako i samo ako
T1 I T2 imaju isti skup vrijednosti. Strukturna ekvivalentnost se tako naziva zato to se
ona moe provjeriti poreenjem struktura tipova T1 i T2. (Nepotrebno je, a u opem
sluaju i nemogue, da se prebroje sve vrijednosti ovih tipova.)
Kada kompilator jezika sa jakim tipovima podataka treba da obradi naredbu
dodjeljivanjem oblika:
x := izraz
on vri dodjeljivanje samo u sluaju ekvivalentnosti promjenljive sa lijeve strane
dodjeljivanja i rezultata izraza na desnoj strani naredbe, osim u sluaju kada je na
desnoj strani cjelobrojni izraz a na lijevoj strani promjenljiva nekog tipa.
Primjer. Sljedei program u PASCAL-u je korektan:

Na primjer, za vrijednost 2 promjenljive i dobija se :

Prilikom kompilovanja slijedeeg programa prijavljuje se sintaksna greka type


mismatch.
7

Eksplicitnom ekvivalentnou tipova postie se vea pouzdanost jezika. U ovom


sluaju nisu potrebne posebne procedure po kojima bi se ispitivala strukturna
ekvivalentnost. Meutim, kada je potrebno vrijednost promjenljive ili izraza dodjeliti
promjenljivoj koja mu ne odgovara po tipu ovaj koncept zahtjeva korienje funkcija za
transformisanje tipova.

3. STANDARDNI TIPOVI PODATAKA U PASCAL-U


Pascal je primjer programskog jezika kod kojeg je zastupljen koncept jakih tipova
podataka koji zahtjeva eksplicitne definicije tipova i podrazumijeva tipove zatvorene u
odnosu na operacije koje se na njima mogu izvravati. Standardni tipovi podataka u
Pascal-u su Integer, Real, Boolean i Char.
3.1. Cjelobrojni tip (Integer)
Cjelobrojni tip se koristi za rad sa cijelim brojevima. U standardnom Pascal-u se
predvia postojanje samo jednog cjelobrojnog tipa iji je opseg brojeva odreen
implementacijom na konkretnom sistemu. Za pristup graninim vrijednostima, postoji
konstanta MAXINT, tako da je opseg brojeva odreen granicama -MAXINT i
MAXINT. U okviru cjelobrojnog tipa dozvoljene su sljedee operacije:

DIV cjelobrojno djeljenje

MOD

sabiranje
oduzimanje
mnoenje

ostatak cjelobrojnog djeljenja.

U sloenim izrazima operacija *, DIV i MOD su vieg prioriteta u odnosu na + i -.


Postoje takoer etiri standardne funkcije koje daju rezultat cjelobrojnog tipa:
ABS (X)

Izraunava apsolutnu vrijednost broja X.

SQR (X)

Izraunava X2.

TRUNC (X)
broj.

Odsjeca se cjelobrojni dio argumenta X koji treba da bude realan

ROUND (X)
broj.

Argument X, koji treba da bude realan broj, zaokruuje se na cijeli

3.2. Tip realnih brojeva (Real)


Standardni tip za rad sa realnim brojevima u Pascal-u je tip Real. Obuhvata brojeve za
ije se predstavljanje koristi standardni format pokretne take, a dozvoljene su
standardne aritmetike operacije:
+ sabiranje;

- oduzimanje;

* mnoenje;

/ dijeljenje.

Standardne funkcije ABS(X) i SQR(X) u sluaju argumenata tipa Real daju rezultat tipa
Real, dok su rezultati standardnih funkcija: SIN(X), COS(X), TAN(X), EXP(X),
ARCTAN(X) i SQRT(X) tipa Real za bilo koje vrijednosti argumenata.
9

3.3. Znakovni tip podataka (Char)


Prema standardu jezika Pascal znakovni tip podataka kao vrijednosti obuhvata
pojedinane znakove iz nekog skupa znakova koji je odreen samom implementacijom
jezika. U praksi se najee javljaju implementacije kod kojih je to skup znakova ASCII
koda.
Konstante znakovnog tipa formiraju se tako to se pojedinani znaci obuhvate
apostrofima, kao na primjer: ' A ', ' B ', ' 5 '.
U skupu znakova Char tipa vai ureenost koja odgovara ureenosti u kodnoj tablici
koja se koristi. Vai:
'A' < 'B' < 'C' < 'D' < 'E' < ... < 'Z' < '0' < '1' < '2' < '3'< ... < '9'.
Dvije standardne funkcije omoguavaju preslikavanje skupa znakova u skup prirodnih
brojeva i obrnuto. Pri tome se koristi ureenost same kodne tablice na osnovu koje je
definisan skup znakova tipa Char. To su funkcije:
ORD (C)

daje se redni broj znaka C u ureenom skupu znakova tipa Char.

CHR (I)

daje znak koji je i-ti u skupu znakova.

Ove dvije funcije su povezane sljedeim relacijama:


CHR(ORD(C))=C i
ORD(CHR(I))=I.
Vrijednosti tipa Char se mogu porediti. Mogu se koristiti standardni operatori poreenja
=, <>, <, <=, >, >=. Ako sa @ oznaimo bilo koju od ovih operacija, a sa CH1 i CH2
promjenljive tipa Char, onda vai relacija CH1@CH2 ako je ORD(CH1)@ORD(CH2).
U Pacal-u, vrijednost funkcije moe da bude neka primitivna vrijednost ili pointer, ali ne
i neka kompozitna vrijednost. Ovo ogranienje esto puta ini kodiranje nelagodinim.
Na primjer, elimo da napiemo funkciju koja ima neki slog za svoj rezultat, tada smo
prinueni da piemo pogodnu proceduru sa promjenljivim parametrom odgovarajueg
tipa, koja ne moe da bude pozvana unutar nekog izraza.
3.4. Diskretni tipovi podataka u programskim jezicima
Grupa diskretnih tipova obuhvata sve tipove podataka sa konanim, diskretnim skupom
vrijednosti. U takvom skupu vrijednosti je definisana relacija poretka. Diskretnost i
ureenost skupa vrijednosti omoguava definisanje intervala i upotrebu nekih optih
zajednikih funkcija i atributa u ovoj grupi tipova. U diskretne tipove podataka
svrstavaju se svi cjelobrojni tipovi podataka, kao i svi drugi elementarni tipovi sa
diskretnim skupom vrijednosti kao to su znakovni i logiki tipovi. Posebno znaajni u
grupi diskretnih tipova su tipovi nabrajanja i intervalni tipovi nekih jezika.

10

3.5. Nabrojivi tipovi u Pascal-u


Koncept diskretnih tipova podataka se sa slinim karakteristikama javlja u mnogim
programskim jezicima sa razlikama koje se uglavnom odnose na sintaksu definicija.
Koncept tipova nabrajanja se prvi put pojavljuje ba u jeziku Pascal. To je bila jedna od
vanih novina ovog jezika. Navest emo neke definicije diskretnih tipova podataka:
tpye BOJE = (crvena, bijela, zelena, plava);
DANI = (ponedjeljak, utorak, srijeda, etvrtak, petak, subota, nedelja);
GOD = (jan, feb, mar, apr, maj, jun, jul, avg, sep, okt, nov, dec);
STATUS = (ON, OFF);
PRAVCI = (sjever, jug, istok, zapad).
3.6. Podintervalni tipovi
U jeziku Pascal, tip moe biti definisan kao podinterval bilo kog prethodno definisanog
rednog tipa. Redni tip iz koga je izveden podintervalni tip predstavlja obuhvatajui tip
podintervalnog tipa. Definicija podintervala naznaava najmanju i najveu vrijednost,
pri emu donja granica intervala ne smije biti vea od gornje. Nije dozvoljen
podinterval od tipa koji nije rednog tipa- na primjer tipa Real.
3.7. Anonimni tipovi
Kod jezika sa jakim tipovima podataka obino postoji i mogunost anonimnih definicija
tipova podataka, kao koncept kojim se slabe zakoni eksplicitne ekvivalentnosti tipova
podataka i omoguava strukturna ekvivalentnost. To je koncept koji dozvoljava da se
promjenljive definiu bez eksplicitnog navoenja imena tipa podataka kome pripadaju
ve se tip definie samo strukturno, anonimno bez imena. Na primjer, umjesto
definicije:
type KLJUC (on, off);
I.J. : KLJUC;
moe se pisati:
I.J. : (on,off).
Ovaj koncept je opti za sve korisnike tipove podataka u jezicima koji dozvoljavaju
uvoenje korisnikih tipova. Na primjer, u Moduli 2 mogui su sljedei opisi
promjenljivih preko anonimnih definicija intervalnih tipova podataka:
VAR Index: [1 ... 100];
Raz : [-1 ... 1].
11

4. ZAKLJUAK
Pascal je primjer programskog jezika kod kojeg je zastupljen koncept jakih tipova
podataka koji zahtjeva eksplicitne definicije tipova i podrazumijeva tipove zatvorene u
odnosu na operacije koje se na njima mogu izvravati. Standardni tipovi podataka u
Pascal-u su Integer, Real, Boolean i Char.

12

LITERATURA
1. J.J. Dujmovi, Programski jezici i metode programiranja, Akademska misao,
Beograd, 2003.
2. M. Stankovi, Programski jezici, Elektronski fakultet u Niu, Edicija: osnovni
udbenici, 2000.
3. http://www.scribd.com/doc/17375446/34/Znakovni-tip-podataka-Char
4. http://sr.wikipedia.org/wiki/Tipovi_podataka
5. http://www.znanje.org/knjige/computer/pascal/pascal_prir/050/0501.htm

13

You might also like