Kurs: Strukture podataka i algoritamsko modelovanje Materijali vezani uz ovu lekciju: - Test podatak i tipovi podataka - Podatak i tipovi podataka (PDF dokument) PodatakPod podatkom se podrazumeva osnovni deo koji učestvuje u formiranju informacije. Obično je rezultat iskustva, posmatranja ili eksperimenta. Podaci mogu biti brojevi, reči, slike ili zvuk. Sirovi podatak može biti bilo koji izlazni signal nekog uređaja koji konvertuje fizičke pakete u simbole, posmatrano u najširem smislu. Takav podatak dalje može da obradi čovek ili da se unese u računar radi dalje (složenije) obrade, čuvanja ili emitovanja drugom čoveku ili računaru. Sirovi podatak je relativan pojam jer je obrada podataka stepenast proces. Odnosno, ono što je obrađen podatak na jednom koraku, jeste sirov podatak za sledeći korak. U zavisnosti od toga koju mašinu koristimo, reprezentacija podatka može biti različita. Za analogne računare podatak je predstavljao promenu napona, rastojanje dve tačke u prostoru ili bilo koja druga fizička veličina. Za digitalne računare podatak se predstavlja nizom brojevnih znakova 0 i 1 koji su predstavnici binarnog alfabeta, pomoću kojih se mogu predstaviti svi ostali znaci. Računarski program se takođe može smatrati nekom vrstom kolekcije podataka koje se mogu interpretirati kao niz instrukcija. Neki programski jezici razlikuju podatke od programa, dok neki ne. Da bi se razlikovali, korisno je definisati takozvane metapodatke, odnosno ‘podatke o podacima '.
Važnost podatka i informacijaTermini, informacije i znanja često se koriste da bi se izrazili konceptualno preklopljeni pojmovi. Glavna razlika je u nivou apstrakcije. Podatak je najniži nivo te apstrakcije, informacija je sledeći, dok je znanje najviši nivo te apstrakcije. Kao primer koji bi ovo ilustrovao imamo sledeće poređenje. Mont Everest bi bio, uopšteno, podatak. Knjiga koja bi opisivala njegove fizičke vrednosti (lokaciju, visinu, klimatske prilike...) bila bi informacija, dok bi izveštaj o najboljem i najsigurnijem načinu da se stigne na vrh bilo znanje.
ApstrakcijeU prethodnom pasusu su spomenute apstrakcije da bi se razlikovali nivoi složenosti podatka ili informacije. Osnovni problem u programiranju je složenost problema sa kojim se susrećemo. Isključujući trivijalne probleme, najčešći slučaj u praksi jeste da se ne može ceo problem posmatrati i rešavati odjednom. Zato ljudi, programeri, pribegavaju različitim načinima rešavanja ovog problema. Složenost se rešava apstrakcijom, to jest kontrolisanim uvođenjem detalja. Detalji se zanemaruju na nekom nivou apstrakcije, kako bi se broj koncepata ili pojmova sa kojima se projektant susreće u radu sveo na razumnu meru, i time pojednostavio samo rešavanje problema. To i jeste osnovna ideja uvođenja apstrakcije. Postoje tri načina apstrakovanja: klasifikacija, agregacija i generalizacija.
KlasifikacijaKlasifikacija, kao način apstrakcije, podrazumeva klasifikovanje svih objekata istih osobina u jedan tip. Na primer, svi celi brojevi će biti klasifikovani kao jedan isti tip, poznat kao int (integer) ili ceo broj. Slično važi i za više nivoe apstrakcije. Recimo, ako bismo želeli da opišemo sve studente iz jedne obrazovne ustanove, kreiraćemo tip koji bi se zvao Student i koji bi u sebi sadržavao sve osobine vezane za jednog studenta: Student atributi:
Student operacije:
Tip podatka se definiše kao skup objekata, odnosno, vrednosti i operacija koje se mogu primeniti nad njima. U nastavku imamo prikaz ove definicije za slučaj tipa celih brojeva. Kao što se vidi, postoji celobrojna vrednost Z, data u primeru, kao i skup operacija primenljiv nad celim brojevima: sabiranje, oduzimanje, množenje i celobrojno deljenje. U slučaju složenijeg tipa podataka, kao što je tip Student iz prethodnog primera, vidimo da postoje, korisnički definisane, operacije kao što su poloziIispit, prijaviIspit i slično. Int Z
Svi tipovi podataka se mogu posmatrati:
Tipovi prema načinu implementacije mogu biti:
1. Fizički tipovi su tipovi podržani od strane računara, odnosno hardvera, kao što su na primer celobrojni ili int, znakovni ili karakter i slično. 2. Jezički ili virtuelni tipovi su tipovi podataka koji su podržani od strane implementacionog jezika. Na primer, to bi bili niz, struktura, polje, unija, itd... 3. Apstraktni tipovi podataka, skraćeno ATP, su oni tipovi podataka koji predstavljaju proširenje skupa tipova programskog jezika. Već smo pominjali tip Student, pa to može biti i neki radnik i bilo šta drugo. Suština je da ti novi, apstraktni tipovi podataka olakšaju rešavanje konkretnog problema, a da ga ne moramo modelirati fizičkim tipovima podataka, već tipovima koji su intuitivno razumljiviji i koji bliže opisuju prirodu problema koji se rešava. Prema složenosti Tipovi prema složenosti se dele na:
Proste ili primitivne tipove karakteriše to da je njihova vrednost nedeljiva. Složeni ili strukturni tipovi se dobijaju agregiranjem više drugih tipova, pa se kaže da je vrednost složena, u smislu da se sastoji od različitih vrednosti. Strukturni tipovi se negde još nazivaju i Strukture podataka.
AgregacijaAgregacija predstavlja agregiranje više tipova u jedan apstraktnije složeni tip. Odnos objekata u strukturi može biti sledeći:
Objekti u strukturi ne moraju biti istog tipa. Danas većina klasičnih programskih jezika podržava agregaciju. GeneralizacijaUočavanjem zajedničkih osobina i operacija, tipovi se apstrakuju u generički apstraktniji tip. Obrnut postupak naziva se specijalizacija. Uzastopnom primenom generalizacije i specijalizacije dobija se hijerarhija tipova. Operacije i osobine se nasleđuju od nadtipa. Generalizacija i specijalizacijaDole vidimo jedan primer za generalizaciju i specijalizaciju. Operacije koje se izvršavaju nad različitim tipovima se nazivaju polimorfne (generičke) operacije. upisiSemestar je primer generičke operacije. Pristup u programiranju, koji koristi generalizaciju, se naziva objektno-orijentisano programiranje, a programski jezici koji podržavaju generalizaciju objektno-orijentisani jezici. Primer generalizacije i specijalizacije:
|