WEBnSTUDY.com
Algoritmi

Tipovi podataka u programiranju

Kao što znamo, podaci sa kojima rade računari su primarno numerički i to celobrojni. Osim njih, postoje i racionalni brojevi, tačnije brojevi u pokretnom zarezu. Naravno, u memoriji računara su svi podaci predstavljeni u obliku bitova i grupisani u bajtove.

Različiti programski jezici imaju razlčite tipove podataka. Strogo tipizirani jezici i jezici nižeg nivoa imaju tipove koji su bliži načinu rada računara. Sa druge strane, jezici višeg nivoa su "slobodniji" po pitanju tipova i čak ni ne prave razliku između celih brojeva i brojeva u pokretnom zarezu.

Numerički tipovi

Kao što smo rekli, ovo su osnovni tipovi podataka u programiranju (svi ostali tipovi se na jedan ili drugi način svode na brojeve). Osnovna podela je sledeća:

Celi brojevi

Celi brojevi su primarni u radu računara. Ipak, zavisno od programskog jezika, možemo imati različite celobrojene "podtipove".

U programskom jeziku Pascal postoji samo jedan celobrojni tip (integer). On obuhvata označene cele brojeve, a broj bajtova zavisi od platforme. Prema standardu, minimum su 2 bajta, odnosno vrednosti od -32768 do 32767.

U jeziku C takođe postoji celobrojni tip (int), ali za razliku od Pascal-a, ovaj tip može biti modifikovan, kako bismo ga prilagodili svojim potrebama.

Tip Bajtovi Opseg
char 1 -128..127
unsigned char 1 0..255
int 2 ili 4 -32768..32767 ili -2147483648..2147483647
unsigned int 2 ili 4 0..65535 ili 0..4294967295
short int 2 -32768..32767
unsigned short int 2 0..65535
long int 4 -2147483648..2147483647
unsigned long int 4 0..4294967295

Naravno, konkretan način na koji navodimo tipove zavisi od verzije jezika u kojoj radimo, pa je tako često moguće pisati samo npr. unsigned short umesto unsigned short int.

Jezik Java takođe ima celobrojne "primitivne" tipove, ali bez "komplikacija" sa prefiksima. Međutim, Java programeri moraju da se pomire sa time da su svi celobrojni tipovi označeni.

Tip Bajtovi Opseg
byte 1 -128..127
short 2 -32768..32767
int 4 -2147483648..2147483647
long 8 -9223372036854775808..9223372036854775807

Brojevi u pokretnom zarezu

Programski jezici generalno uvek nude i mogućnost rada sa racionalnim brojevima. Kod ovih brojeva takođe postoji ograničenje koliko veliki, odnosno mali broj možemo da zabeležimo, s tim što je ovde mnogo važnije ograničenje koje se odnosi na broj preciznih cifara koje imamo na raspolaganju. Pogledajte primere veoma velikog, odnosno veoma malog broja. Zaista, sa malim brojem preciznih cifara, ne možemo baš mnogo toga da uradimo.

123450000000...000 0.00...0000000012345

Standardni jezik Pascal prepoznaje samo jedan tip brojeva u pokretnom zarezu i to je tip real.

Jezik C ima tri racionalna tipa brojeva:

Tip Bajtovi Opseg
float 4 6 preciznih cifara
double 8 15 preciznih cifara
long double 10 ili 12 do 19 preciznih cifara

Jezik Java ima tipove float i double koji odgovaraju istoimenim tipovima u jeziku C.

Neki programski jezici, kao što je JavaScript prepoznaju numerički tip, s tim što ne odvajaju eksplicitno cele od brojeva u pokretnom zarezu. I pored toga, imaju mogućnost zaokruživanja brojeva, kao i operatore koji rade samo sa celim brojevima.

Iako nam veliki broj različitih tipova izgleda komplikovano, treba da znamo da striktna tipizacija podataka jako utiče na brzinu izvršavanja samog programa.

Tekstualni tipovi

Ovo je drugi najvažniji tip podataka u programiranju. Praktično nema tog programa koji ne ispisuje neke tekstualne poruke ili nema potrebu rada sa tekstualnim vrednostima.

Jezik Pascal poseduje tip char koji može sadržati jedan znak. U jeziku C takođe postoji tip char, ali je još bliži "mašinskom" nivou - predstavlja jedan bajt i nad njim, sasvim normalno, možemo vršiti aritmetičke operacije. U stvari, znak će se tumačiti kao tekstulani podatak tek kada to eksplicitno zatražimo prilikom ispisa rezultata.

U jeziku Java ovaj tip podatka više liči na Pascal neko na C. Podatak može biti neki standardni Unicode karakter, pošto u Javi ovaj tip zauzima 2 bajta.

Svakako sa jednim jedinim znakom malo šta možemo da uradimo, pa je logično da u programiranju postoji i pravi "tekst". Tekstualni podatak se naziva string (prevedeno bi značilo "niska" ili "niz"), i u "starijim" programskim jezicima se definiše kao "niz znakova" - i to bukvalno. Na taj način ga posmatraju i Pascal i C. U svim modernijim verzijama Pascala se vrlo brzo zaista uvodi tip string, dok u C-u moramo da definišemo string kao niz znakova. U oba jezika moramo da navedemo maksimalnu dužinu stringa, da bi kompajler "znao" koliko memorije da odvoji za podatak. Pogledajte primer deklaracije string promenljive u Pascalu i C-u.

pasTekst : string[20]; char cTekst[20];

Ovakva praksa (posebno u jeziku C) je malo naporna za početnike, koji prvo moraju da savladaju rad sa nizovima da bi uopšte počeli da rade "zabavnije" programe.

Situacija sa Javom je mnogo komplikovanija. U ovom programskom jeziku stringovi ne spadaju u "proste" (tzv. "primitivne") tipove koji se mogu poistovetiti sa običnim nizovima znakova. Stringovi su čitavi objekti koji ne samo što sadrže niz znakova, već imaju i veliki broj drugih mogućnosti.

Jezik JavaScript ima sličnu filozofiju kao jezik Java, s tim što ne prepoznaje čak ni primitivan tip char. Svaki tekstualni podatak, pa makar se sastojao i iz jednog jedinog znaka je string.

Bilo bi poželjno da se početnici makar okvirno upoznaju sa konceptom objekata, kako bi na ispravan način radili sa stringovima.

Logički tip

Podatak logičkog tipa može imati samo jednu od dve moguće vrednosti: true (tačno) i false (netačno). Obično ove vrednosti dobijamo kao rezultate relacionih (upoređivanja) ili logičkih operacija (konjukcija, disjunkcija, negacija).

Jezici Pascal i Java imaju tip boolean koji prihvata striktno samo ove dve vrednosti. Kada se vrše provere prilikom grananja ili ciklusa, izrazi koji se zadaju moraju imati vrednost logičkog tipa ili će kompajler prijaviti grešku.

Sa druge strane, jezici C i JavaScript takođe prepoznaju logički tip (tzv. bool u C-u) ali ga poistovećuju sa numeričkom vrednošću. To znači da je nula u stvari false, a jedinica (tačnije sve što nije nula) true. JavaScript ide i korak dalje, pa se kao false računa i prazan string i "nulti objekat" null.

  1. I. Horton (2013): Beginning C, 5th ed., Apress, New York
  2. W. Savitch (2013): Absolute Java, 5th ed., Pearson Education, New Jersey
Svi elementi sajta Web'n'Study, osim onih za koje je navedeno da su u javnom vlasništvu, vlasništvo su autora i ne smeju se koristiti, u celosti ili delimično bez pismenog odobrenja autora. To uključuje tekstove, slike, ilustracije, animacije, prateći grafički materijal i programski kod.
Ovaj sajt koristi tehnologiju kolačića (cookies) radi vođenja interne statistike u cilju unapređenja korisničkog iskustva. Tako prikupljeni podaci su anonimni i nedostupni trećim licima. Vaša privatnost nije ugrožena ni na koji način.