algoritmi i strukture_podataka_2016-03_v01

31
Algoritmi i strukture podataka Tipovi podataka Leonardo Miljko www.ckm.ba - Leonardo Miljko Prezentacija nastala na osnovu knjige: Brano Markić i Dražena Tomić, Uvod u algoritme i strukture, Ekonomski fakultet , Mostar,2008.

Upload: leonardo-miljko

Post on 21-Mar-2017

23 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Algoritmi i strukture_podataka_2016-03_v01

Algoritmi i strukture podataka

Tipovi podataka

Leonardo Miljko

www.ckm.ba - Leonardo Miljko

Prezentacija nastala na osnovu knjige:

Brano Markić i Dražena Tomić,

Uvod u algoritme i strukture, Ekonomski fakultet , Mostar,2008.

Page 2: Algoritmi i strukture_podataka_2016-03_v01

Tipovi podataka Temeljna funkcija računala je izvršavanje programa, tj. izvršavanje

naredbi. Proces izvršavanje naredbi dijeli se na dvije faze:

● fazu pribavi naredbu

iz memorije (fetch)

● fazu izvrši naredbu.

Obrada jedne naredbe zove se

instrukcijski ciklus

(instruction cycle). Izvršavanje programa prekida se ako se

računalo ugasi, pojavi pogreška u radu

ili izvede instrukcija koja

prekida rad računala.

www.ckm.ba - Leonardo Miljko

Page 3: Algoritmi i strukture_podataka_2016-03_v01

Izvršavanje programa zapisanih u CPU • Na početku svakog instrukcijskog ciklusa CPU (Central Procesing

Unit – središnja procesna jedinica) pribavlja instrukciju pohranjenu u memoriji. Registar nazvan programski brojač sadrži adresu sljedeće naredbe koja se treba pribaviti. Sve dok se ne saopći drukčije, CPU inkrementira (povećava za jedan) programski brojač nakon svakog pribavljanja instrukcije. Nova naredba koja će se pribaviti , "locirana" je na sljedećoj višoj adresi memorije.

• Pretpostavimo da svaka instrukcija zauzima 16-bitnu riječ memorije. Neka je programski brojač postavljen na lokaciju čija je adresa 600. Naredni instrukcijski ciklusi će pribaviti instrukcije na lokacijama 601, 602, 603 itd. Naravno, redoslijed se može promijeniti uporabom naredbi skoka ili grananja.

• Pribavljena instrukcija pohranjuje se u CPU registar poznat kao instrukcijski registar (IR). Instrukcija je u obliku binarnog koda, a njezin sadržaj određuje akciju koju će CPU poduzeti.

www.ckm.ba - Leonardo Miljko

Page 4: Algoritmi i strukture_podataka_2016-03_v01

Izvršavanje programa zapisanih u CPU CPU dekodira (interpretira) instrukciju i izvršava traženu akciju. Sve

akcije CPU-a pripadaju jednoj od četiri kategorije :

● CPU memorija. Podaci se prenose iz memorije u CPU ili iz CPU u

memoriju.

● Obrada podataka. CPU izvršava neku od aritmetičkih ili logičkih operacija nad podacima.

● CPU ulaz/izlaz. Podaci se prenose iz okoline računala u CPU ili memoriju i iz CPU-a na izlazne jedinice.

● Upravljačke akcije. To može biti naredba skoka kojom se mijenja slijed izvršavanja naredbi. Npr. pribavlja se naredba s lokacije 164(16) čiji kod ukazuje da će sljedeća instrukcija biti pribavljena s lokacije 228(16) To znači da su adrese prikazane u heksadekadnom brojevnom sustavu.

www.ckm.ba - Leonardo Miljko

Page 5: Algoritmi i strukture_podataka_2016-03_v01

Izvršavanje programa zapisanih u CPU Naravno, moguće su i različite kombinacije akcija iz navedene četiri

kategorije. U cilju razumijevanja načina izvođenja naredbi može se pretpostaviti da računalo ima sljedeća obilježja:

● CPU ima akumulator (AC) - registar za privremeno memoriranje podataka i rezultata obrade.

● Podaci i instrukcije imaju duljinu 16 bitova (2 bajta).

● Neka jedna lokacija memorije sadrži 16 bitova. U jednu lokaciju memorije pohranjuje se jedan podatak ili jedna instrukcija.

● Instrukcijska riječ ima sljedeći format:

www.ckm.ba - Leonardo Miljko

Page 6: Algoritmi i strukture_podataka_2016-03_v01

Izvršavanje programa zapisanih u CPU • Organizacija instrukcijske riječi pokazuje da operacijski kod ima

četiri bita.

• Drugim riječima, može se označiti 24 = 16 različitih operacijskih kodova.

• Budući da za adresiranje memorije rabimo ostalih 12 binarnih znamenki, ukupan je broj lokacija memorije koji se može izravno adresirati 212 = 4096 riječi memorije.

www.ckm.ba - Leonardo Miljko

Page 7: Algoritmi i strukture_podataka_2016-03_v01

Instrukcijski skup računala Svaka instrukcija na fizičkoj razini je niz bitova.

Format instrukcije sačinjavaju polja, a ona označavaju bitne dijelove instrukcije.

Instrukciju čine najmanje tri polja:

• polje koda operacije

• polje načina adresiranja

• polje adresa.

www.ckm.ba - Leonardo Miljko

Page 8: Algoritmi i strukture_podataka_2016-03_v01

Instrukcijski skup računala • Instrukcijski skup najčešće sadrži više načina adresiranja. Za

vrijeme instrukcijskog ciklusa instrukcija se pribavlja u instrukcijski registar. CPU mora razumjeti značenje binarnih znamenki u različitim poljima instrukcije kako bi se izvršila zapisana operacija.

• Rad s binarnim znamenkama (nizom 0 i 1) bio je složen za programere. Zato se može reći da je jedan od ključnih koraka u razvoju softvera bio simboličko predstavljanje strojnih instrukcija.

Instrukcije zapisane kao niz 0 i 1 zovu se strojne instrukcije.

• Operacijski kod u formatu instrukcije prikazan je kraticama koje se zovu mnemonici.

www.ckm.ba - Leonardo Miljko

Page 9: Algoritmi i strukture_podataka_2016-03_v01

Instrukcijski skup računala • Operandi se isto tako prikazuju simbolički. Npr. instrukcija ADD X, Y

znači pribroj vrijednost sadržanu u lokaciji Y sadržaju registra X. Y se odnosi na adresu lokacije u memoriji, a X se odnosi na pojedinačni registar.

• Svaka se operacija izvodi nad sadržajem lokacije memorije, a ne nad njezinom adresom. Tako je moguće pisati program u simboličkom obliku, a koji se onda prevodi u strojni jezik. Svaki operacijski kod zapisan simbolički ima jedinstvenu ili nepromjenjivu reprezentaciju. Programer simbolički zapisuje svaki operand i njegovu lokaciju.

Npr. programer može zapisati instrukcije:

X = 48; Y = 261; Z := X + Y.

Jednostavno računalo prihvaća te simboličke ulaze, pretvara operacijski kod i adrese operanda u binarni oblik i stvara binarne strojne instrukcije. Naravno, programi se danas pišu u višim programskim jezicima, a simbolički orijentirani jezici rabe se za opisivanje strojnih instrukcija. Razlozi uporabe zato su isključivo edukativni.

www.ckm.ba - Leonardo Miljko

Page 10: Algoritmi i strukture_podataka_2016-03_v01

Instrukcijski skup računala Broj operacijskih kodova razlikuje se od računala do računala. Neki su

tipovi operacija opći i nalaze se u svim računalima.

Tipične su:

• aritmetičke operacije

• logičke operacije

• prijenos podataka

• prijenos kontrole izvođenja

• ulazno/izlazne operacije

• konverzija.

Operacije prijenosa podataka (strojne instrukcije) moraju definirati izvor i odredište operanda.

www.ckm.ba - Leonardo Miljko

Page 11: Algoritmi i strukture_podataka_2016-03_v01

Najčešći tipovi operacija

www.ckm.ba - Leonardo Miljko

Page 12: Algoritmi i strukture_podataka_2016-03_v01

Najčešći tipovi operacija

www.ckm.ba - Leonardo Miljko

Page 13: Algoritmi i strukture_podataka_2016-03_v01

Najčešći tipovi operacija

www.ckm.ba - Leonardo Miljko

Page 14: Algoritmi i strukture_podataka_2016-03_v01

Tipovi operanada – elementarni tipovi podataka

Strojne instrukcije uvijek izvode određene operacije nad podacima pohranjenim u memoriji ili registrima CPU-a.

Podaci nad kojima se izvode operacije nisu istoga tipa.

Oni su kodirani tako da pripadaju skupu numeričkih vrijednosti ili skupu znakova koji su kodirani prema ASCII standardu, ili pak skupu logičkih vrijednosti ({true, false} ili {1,0}).

Mogu biti:

• numerički (prirodni, cjelobrojni ili realni)

• znakovi

• logički podaci

• adrese.

www.ckm.ba - Leonardo Miljko

Page 15: Algoritmi i strukture_podataka_2016-03_v01

Tipovi operanada – elementarni tipovi podataka

Numerički, znakovni i logički podaci se nazivaju i primitivni ili elementarni tipovi, jer predstavljaju nedjeljive cjeline i imaju izravan prikaz u memoriji.

U programiranju se tip podataka koje sadrži neki operand mora eksplicitno deklarirati. Tip podataka ukazuje na dimenziju prostora (broj bajtova u memoriji) koji prevoditelj (kompajler) određuje za podatak tog tipa.

U programskim jezicima tip podataka označava pripadnost istom skupu, skupu koji ima zajednička obilježja. Podaci se za vrijeme izvršenja programa nalaze u memoriji i nazivaju se memorijski objekti. Položaj objekta u memoriji naziva se adresa. Adresa se označava brojem. On ukazuje na lokaciju memorije veličine 8 bita. Lokacije memorije su linearno uređene.

www.ckm.ba - Leonardo Miljko

Page 16: Algoritmi i strukture_podataka_2016-03_v01

Tipovi operanada – elementarni tipovi podataka

Značaj elementarnih tipova podataka može se jasno uočiti u jednostavnom primjeru:

int a,b,c;

a = 12; b=34

c = a+b+8;

U prvom retku je iskaz koji se naziva deklaracija varijabli a, b i c. Deklaracija „najavljuje“ tri varijable cjelobrojnog tipa. Ona služi kompajleru da rezervira potreban prostor u memoriji za tri varijable. Operacija pridruživanja vrijednosti varijablama a i b je u drugom retku, a u trećem se izračunava vrijednost varijable c. Vrijednost varijable c je 54.

www.ckm.ba - Leonardo Miljko

Page 17: Algoritmi i strukture_podataka_2016-03_v01

Tipovi operanada – elementarni tipovi podataka

Znakovni

Znakovi (characters) opći su oblik podataka koje čovjek najčešće primjenjuje.

To su tekstualni podaci za koje je razvijen niz kodova za prevođenje u binarne znamenke.

Najpoznatiji je ASCII kod (ASCII je kratica od American Standard Code for Information Interchange).

www.ckm.ba - Leonardo Miljko

Page 18: Algoritmi i strukture_podataka_2016-03_v01

Tipovi operanada – elementarni tipovi podataka

Numerički

Svaki programski jezik podržava brojeve (number) kao jedan od tipova podataka.

Obično se razlikuju:

• cijeli brojevi (integer)

• realni brojevi (float, double).

Adrese su u određenom smislu tipovi podataka nad kojima se trebaju izvesti određena izračunavanja ovisno o načinu adresiranja. Zato se mogu adrese promatrati kao cijele brojeve bez predznaka.

Logički

Logički tipovi podataka (logical data) mogu imati samo dvije vrijednosti: istinito ili lažno.

www.ckm.ba - Leonardo Miljko

Page 19: Algoritmi i strukture_podataka_2016-03_v01

Prikaz elementarnih tipova podataka u RAM memoriji računala

• U glavnoj memoriji računala elementarni tipovi podataka zauzimaju određen broj bajtova.

• Razumjeti prikaz znakovnog tipa podataka nije složeno jer se s osam bitova može kodirati 256 različitih znakova.

• Nešto je složenije prikazati cijele brojeve i realne brojeve s pokretnom točkom.

• Razlikuje se prikaz negativnih i pozitivnih cijelih brojeva.

www.ckm.ba - Leonardo Miljko

Page 20: Algoritmi i strukture_podataka_2016-03_v01

Prikaz elementarnih tipova podataka u RAM memoriji računala

• Negativni cijeli brojevi se prikazuju pomoću dvojnog komplementa

www.ckm.ba - Leonardo Miljko

Page 21: Algoritmi i strukture_podataka_2016-03_v01

Prikaz elementarnih tipova podataka u RAM memoriji računala

• Negativni cijeli brojevi se prikazuju pomoću dvojnog komplementa.

• Koliko se cijelih brojeva može prikazati s tri binarne znamenke (prva znamenka je predznak)? Prevedeno na dekadni brojevni sustav:od -23 do 23 -1 (od -8 do 7).

www.ckm.ba - Leonardo Miljko

Page 22: Algoritmi i strukture_podataka_2016-03_v01

Prikaz elementarnih tipova podataka u RAM memoriji računala

• Ako se za prikaz cijelih brojeva koriste 4 bajta (1 bajt = 8 bit-ova) onda je raspon cijelih brojeva u dekadnom brojevnom sustavu koji se mogu zapisati s četiri bajta: -231 do 231-1 (prvi bit se koristi za predznak).

• Općenito s n binarnih znamenki se može zapisati najveći dekadni pozitivni 2n-1 i -2n najmanji negativni cijeli broj.

www.ckm.ba - Leonardo Miljko

Page 23: Algoritmi i strukture_podataka_2016-03_v01

Prikaz realnih brojeva u računalu

• U računalu se može predstaviti samo konačno mnogo realnih brojeva. Kako se zapisuju realni brojevi u aritmetici pokretne točke (floating point)? Ti brojevi se zapisuju prema IEEE standardu 754 za prikaz realnih brojeva u standardnoj točnosti, pri čemu je u uporabi standardna točnost 4 byte (32 bita) i dvostruka točnost 8 byta (64 bita). Za četiri bajta taj format ima sljedeći izgled:

• P (predznak): P=1 negativan, P=0 pozitivan. Ako je vrijednost 0 onda je broj pozitivan, a vrijednost 1 označava negativan broj.

• Karakteristika: binarni eksponent + 127 (izbjegavanje prikaza negativnog eksponenta). Karakteristika se izračunava tako što se eksponentu koji normalizira broj u oblik 1.xxxx... dodaje 127. Ta dekadna vrijednosti se prevodi u binarni brojevni sustav.

• Mantisa: normalizirana (jedan bit ispred binarne točke). Normalizirana mantisa je oblika 1.xxxx... tj. sadrži jedan bit ispred binarne točke.

www.ckm.ba - Leonardo Miljko

Page 24: Algoritmi i strukture_podataka_2016-03_v01

Prikaz realnih brojeva dvostruke točnosti • Realni brojevi dvostruke točnosti (tip double u programskom jeziku C++).

Za prikaz realnih brojeva dvostruke točnosti rabi se osam bajtova ili 64 bita.

• P (predznak): P=1 negativan, P=0 pozitivan.

• Karakteristika: binarni eksponent + 1023.

• Mantisa: normalizirana.

• Opseg realnih brojeva dvostruke točnosti:

• Karakteristika = 0 prikazuje broj 0.

• Karakteristika = 2047 rezervirana je za prikaz beskonačnog broja.

• To znači da je karakteristika u intervalu 00000000001 do 11111111110 ili u dekadnom brojevnom sustavu [1,2046].

• Binarni eksponent = Karakteristika – 1023, pa se može kretati u intervalu [-1022, 1023].

• Najmanji pozitivni broj koji se može prikazati 1.02 * 2-1022 =2.225073858507 * 10-308

• Najveći pozitivan broj 1.11111111111111111111112 * 21023 , što je približno 21024 = 1.797693134862316 * 10308.

www.ckm.ba - Leonardo Miljko

Page 25: Algoritmi i strukture_podataka_2016-03_v01

Strukture podataka

• Struktura podataka se može razumjeti i kao skupina varijabli u nekom programu i veza medu tim varijablama. Struktura podataka se može definirati jedino poznajući tipove podataka.

• Tip podataka je skup vrijednosti koje neki podatak može poprimiti (npr. podatak tipa int može imati samo vrijednosti iz skupa cijelih brojeva).

• Pojam tip podataka označava vrstu podataka i što se istim podacima može učiniti (npr. koje operacije obaviti).

• Pojedinačne se vrijednosti u memoriji čuvaju u skalarnim varijablama.

• Strukture podataka koje nisu skalari su polja, slogovi, liste i sl. Navedene se strukture sastoje iz skalarnih vrijednosti. Oni su složeni tipovi podataka ili strukture podataka.

www.ckm.ba - Leonardo Miljko

Page 26: Algoritmi i strukture_podataka_2016-03_v01

Strukture podataka Tablica prikazuje broj bitova koji se u memoriji rezervira za pojedinačne

elementarne tipove podatka i intervale vrijednosti u dekadnom brojevnom sustavu za te tipove podataka u C++.

www.ckm.ba - Leonardo Miljko

Page 27: Algoritmi i strukture_podataka_2016-03_v01

Strukture podataka

www.ckm.ba - Leonardo Miljko

Page 28: Algoritmi i strukture_podataka_2016-03_v01

Strukture podataka

• Često se spominje i pojam apstraktni tip podataka i njegova implementacija.

• Apstraktni tip podataka T = <W,O> sastoji se niza vrijednosti W i niza operatora O koji se mogu primijeniti na te vrijednosti.

• Pojam apstraktni tip podataka (Abstract Data Type) prethodi razvoju objektno orijentiranog dizajna i programiranja. On se određuje navođenjem jednog ili više tipova podataka, te jedne ili više operacija (funkcija). Operandi i rezultati navedenih operacija su podaci navedenih tipova. Apstraktnom tipu podataka se pridružuje ime.

• Implementacija apstraktnog tipa podataka je konkretna realizacija dotičnog apstraktnog tipa podataka u nekom programu. Sastoji se od definicije za strukturu podataka (kojom se prikazuju podaci iz apstraktnog tipa podataka) i funkcija kojima se operacije iz apstraktnog tipa podataka ostvaruju.

www.ckm.ba - Leonardo Miljko

Page 29: Algoritmi i strukture_podataka_2016-03_v01

Strukture podataka s obzirom na memoriju u kojoj se pohranjuju

a) Interne - u glavnoj memoriji računala.

• Statičke – unaprijed im je dodijeljen memorijski prostor i ne može se povećavati. To mogu biti jednostavni tipovi koji su nedjeljivi (npr. int, float), ili složeni sastavljeni od jednostavnih (npr. polje).

• Dinamičke - Prostor koji zauzimaju u memoriji se može povećavati ili smanjivati. Više je primjera takvih dinamičkih struktura: linearna lista, binarno stablo, red i sl.

www.ckm.ba - Leonardo Miljko

Page 30: Algoritmi i strukture_podataka_2016-03_v01

Strukture podataka s obzirom na memoriju u kojoj se pohranjuju

b) Eksterne na vanjskim memorijama računala.

• Datoteke – najmanje organizacijske jedinice podataka koje operacijski sustav može pročitati kada se jednom obraća vanjskoj memoriji. Mogu biti tekstualne (niz redova), formatirane (skup slogova). Formatirane mogu biti sekvencijalne (slijedni pristup slogovima), indeks-sekvencijalne (na temelju indeksa se pristupa bloku a potom se slijedno u bloku pronalazi slog) i izravni pristup (adresa sloga je određena ključem, tj. postoji funkcija koja vrijednost ključa transformira u fizičku adresu sloga).

• Baze podataka su skup međusobno povezanih datoteka na nekom području primjene. Razvoj moćnih osobnih računala i njihovih mreža postavio je zadatak razumijevanja organizacije i strukture baze podataka

www.ckm.ba - Leonardo Miljko

Page 31: Algoritmi i strukture_podataka_2016-03_v01

Hvala !

Leonardo Miljko

diplomirani inženjer

elektrotehnike,

računarstva i

informatike

Pitanja?

www.ckm.ba - Leonardo Miljko