Algoritmi 05: Tipovi podataka

Općenito, postoje različite vrste podataka koji se koriste. Za računanje koristimo brojeve, za pisanje dopisa tekst. Svaki programski jezik ima neke svoje specifičnosti, pa tako i definiciju tipova podataka. Ovdje ćemo pojasniti jednostavne tipove podataka Python jezik koji će nam biti dovoljni za početak učenja programiranja, a to su:

  • brojevi koji se dijele na cjelobrojne i decimalne
    • int (integer) – cjelobrojni tip podataka (u matematici ekvivalentan skupu Z), sastoji se od isključivo cijelih brojeva bez obzira na veličinu koji (brojevi mogu imati tisuće znamenaka bez ikakvog problema)
      • primjer cijelih brojeva
        • 134
        • -24555
        • 2
        • 0
    • float (floating point number – broj sa pomičnim zarezom) ili realni brojevi (skup R) sadrži sve brojeve koje možemo prikazati na brojevnom pravcu. Za razliku od matematike u kompjuteru nije moguće prikazati sve realne brojeve potpuno točno pa se uzimaju aproksimacije (tako će Python zbroj 2 decimalna broja 0.1 + 0.2 pamtiti kao 0.30000000000000004). Kao što vidimo, brojevi su različiti pa bi, kada bi ih uspoređivali (koji je manji ili veći), u programu dovelo do krivog rezultata. Zato je bitno znati razliku između različitih tipova podataka. Preporuka je koristiti cijele brojeve kad god je to moguće.
    • U Pythonu su decimalni brojevi precizni na 16 decimala. Decimale se smatraju znamenke kod prikaza u znanstvenom zapisu (recimo 31850.129 će se gledati kao 3.1850129E4 sto je ekvivalentno 3.1850129 * 10000) tako da će i cijeli brojevi koji su u decimalnom tipu podataka ukoliko imaju vise od 16 znamenka bit aproksimirani. Stoga će jako veliki decimalni brojevi sa stotinama znamenaka imati samo prvih 16 znamenaka preciznih.
      • Primjer decimalnih brojeva
        • 123.34
        • -3.2034
        • 2.0
        • 0.30000000000000004
  • str (string) – niz znakova koji se sastoje od znakova iz Unicode tablice (UTF-16 ima gotovo 1,112,064 različitih znakova – skoro sva pisma iz svih svjetskih jezika). String može biti gotovo neograničene duzine. String se piše između jednostrukih ili dvostrukih navodnih znakova, ali ih se ne smije miješati.
    • Primjer strinogva:
      • ‘Dobar dan’
      • ‘123’
      • “A57”
      • “Volim algoritme u Pythonu”
      • ” (prazan string)
  • bool (boolean) – logički tip podatka koji može sadržavati samo dvije vrijednosti (True ili False). Uobičajeno je rezultat logičkih operacija (primjerice usporedbe dva broja). Treba voditi pažnju kod pisanja da se vrijednosti pišu s velikim početnim slovom.
    • Primjer boolean vrijenosti:
      • True
      • False.

Oznake int, str, float, bool su opisi tipova podataka, tj. klase koje će nam u svojstvu funkcija koristiti za pretvorbu podataka.

Pretvorbe tipova podataka

U Pythonu je moguće za potrebe različitih operacija prebacivati podatke iz jednog u drugi tip podatka. Naravno, neke pretvorbe nisu moguće. Evo nekih primjera:

  • int(float/string/boolean) – pretvorit će valjani float, string ili bolean u integer. Float se neće zaokružiti, već će se uzeti samo cijeli dio broja. Nećemo moći pretvoriti beskonačan decimalan broj float(‘inf’), kao ni pretvorba nevažećeg stringa (koji u sebi nema samo cjelobrojne znamenke). Kod boolean vrijednosti True će se pretvoriti u broj 1, a False u broj 0.
    • >>> int(5.8)
      5 # uzima samo cijeli dio broja
      >>> int('-4.9')
      -4
      >>> int('321')
      321 # pretvorio je string '25' u broj
      >>> int('101101', 2) # drugi argument je baza pa će se string 101101 promatrati kao binarni broj
      45
  • float(integer/string/boolean) – slično kao i int() za integer, ali će pretvarati podatak u realni (decimalan) tip podataka.
    • >>> float(True)
      1.0
      >>> float('inf')
      inf
  • str(integer/float/boolean) – pretvara druge tipove podataka u string. Ovo nam je posebno bitno kada zelimo spojiti tekst sa brojem.
    • >>> str(True)
    • ‘True’
    • >>> str(2.55)
    • “2.55′
    • >>> “325” + 2.55
    • ERROR
    • >>> “325” + str(2.55)
    • “3252.55” # zbrajanje kod stringova znači spajanje
  • bool(integer/float/string) – pretvara u boolean, svaki string koji je prazan, broj koji je 0, niz koji je prazan, objekt koji je prazan, itd., uglavnom sve prazno ili sta ima vrijednost 0 postaje False, sve ostalo postaje True
    • >>> bool(”)
    • False
    • >>> bool(‘Dobar dan’)
    • True
    • >>> bool(0.002)
    • True # sve različito od nule je True
    • bool(0.0)
    • False # samo nula je False

Svakako, Python koristi i složenije strukture podataka poput listi (list), setova (set), rječnika (dict), dvostruko “završene” liste (dequeue)… Njih ćemo obrađivati kod složenijih problemskih zadataka te će tamo biti i opisani.