Predavanje 5 - Osnovni i slozeni tipovi podataka

1. Tipovi podataka

Proucavanje algoritama i struktura podataka je u osnovama racunarstva.
Aplikacije koje rade sa kompjuterskom grafikom, bazama podataka, numerickom analizom, parsiranjem ili simulacijama ovise o dobro odabranim algortimima i promisljeno kreiranim podacima.
Isto tako, pravilan odabir i implementacija algoritama koje rade sa podacima je esencijalni korak u izradu svakog kompjutorskog programa.
Podacima i algoritmi koji rade na podacima treba razumjevati kao jednu cjelinu kao sto cemo objasniti malo nize.

Programski jezik dijeli podatke ovako:

Medjutim, ovisi o samom jeziku sto spada u koju skupinu. Npr. stringovi u Java Scriptu su osnovni tipovi podataka tamo, dok su u C-u stringovi samo nizovi karaktera u C-u koji zavrsavaju sa \0 tj. oni su ovdje slozeni tipovi podataka itd.

Mi cemo proucavati tipove podataka i algoritme na njima na primjeru programskog jezika C.

2. Tipovi podataka u C-u

C ima sasvim jednostavne osnovne tipove podataka:

U slucaju cjelobrojnog tipa podatka postoje varijacije poput short int (smanjuje vrijednost na 2 byte-a) ili long int (koji osigurava duljinu od 4 byte-a). Mi se uglavnom time necemo sluziti.

Slozeni tipovi podataka se grade iz jednostavnih. Izgradnja slozenih tipova podataka i kreriranje metoda odnosno algoritama za njihovo procesiranje je centralni dio ovog kolegija.

U kreiranju slozenih podataka korisno je izdvojiti posebnu klasu slozenih podataka koju nazivamo elementarni tipovi podataka:

Oni su cesto osnovama za izgradnju ostalih slozenih tipova podataka.

Elementarne tipove podataka i algoritme na njima pocet cemo studirati iduci puta.

3. Rad sa slozenim tipovima podataka

Ovdje cemo objasniti nas pristup kreiranju slozenog tipa podatka i metoda koje rade na njemu.

Primjer. Zelimo kreirati slozeni tip podatka koji modelira tocku zadanu u kartezijevoj ravnini.

4. Detalji oko prethodne aplikacije

5. Zadaci za vjezbu

  1. Iz dodatka B knjige Kernighan-Ritchie proucite sadrzaj zaglavlja <stdio.h>, <math.h> i <stdlib.h>.
  2. Prevedite program diskutiran na predavanju.
  3. Prosirite sucelje tocka sa metodom koja pretvara kartezijeve kordinate u polarne. Napisite i test program koji uzima koordinate tocke sa standardnog inputa ispisuje odgovarajuce polarne koordinate tocke na standardni output.
  4. Prosirite sucelje tocka metodom koja testira je li tocka u zadanom pravokutniku sa stranicama paralelnim sa x i y osi. Napisite i test program koji uzima koordinate tocke sa komandne linije i ucitava pravokutnik takodjer sa komandne linije te ispisuje odgovor na standardni output. Pravokutnik je zadan sa dva vrha koja su dijagonalno suprotna.
  5. Napisite klijentski program koji koristi sucelje tocka i rjesava ovakav problem. Ucitava se n tocaka sa standardnog inputa i program nalazi dvije cija je udaljenost najmanja.
  6. Napisite slozeni tip podatka koji modelira trokut u ravnini. Trokut je zadan sa tri vrha sa koordinatama u kartezijevoj ravnini. Ovaj slozeni tip podatka sadrzi tri metode. Prva ispituje je tvore li tri tocke trokut, druga racuna povrsinu trokuta, a treca ispisuje trokut u tekstualnom obliku (sami izmislite formu ispisa). Napisite i mali test program.