SlideShare a Scribd company logo
1 of 31
Download to read offline
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.
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
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
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
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
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
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
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
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
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
Najčešći tipovi operacija
www.ckm.ba - Leonardo Miljko
Najčešći tipovi operacija
www.ckm.ba - Leonardo Miljko
Najčešći tipovi operacija
www.ckm.ba - Leonardo Miljko
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
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
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
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
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
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
Prikaz elementarnih tipova podataka u RAM
memoriji računala
• Negativni cijeli brojevi se prikazuju pomoću dvojnog komplementa
www.ckm.ba - Leonardo Miljko
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
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
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
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
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
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
Strukture podataka
www.ckm.ba - Leonardo Miljko
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
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
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
Hvala !
Leonardo Miljko
diplomirani inženjer
elektrotehnike,
računarstva i
informatike
Pitanja?
www.ckm.ba - Leonardo Miljko

More Related Content

Viewers also liked

Curso de innovación educativa con recursos abiertos maritza domínguez
Curso de innovación educativa con recursos abiertos maritza domínguezCurso de innovación educativa con recursos abiertos maritza domínguez
Curso de innovación educativa con recursos abiertos maritza domínguezmaripepa86
 
Carlos avila pdf excel digital
Carlos avila pdf excel digitalCarlos avila pdf excel digital
Carlos avila pdf excel digitalcavila001
 
Neverbalna komunikacija
Neverbalna komunikacijaNeverbalna komunikacija
Neverbalna komunikacijaŠkola Futura
 
Rodne i-nerodne-grane-jabuke-i-kruc5a1ke
Rodne i-nerodne-grane-jabuke-i-kruc5a1keRodne i-nerodne-grane-jabuke-i-kruc5a1ke
Rodne i-nerodne-grane-jabuke-i-kruc5a1kedominator1979
 
Nadežda Nedić - NLP Master sertifikacija
Nadežda Nedić - NLP Master sertifikacijaNadežda Nedić - NLP Master sertifikacija
Nadežda Nedić - NLP Master sertifikacijaNLP Centar Beograd
 
Un regal pour les yeux
Un regal pour les yeuxUn regal pour les yeux
Un regal pour les yeuxRenée Bukay
 
Likovna kultura 39
Likovna kultura 39Likovna kultura 39
Likovna kultura 39aco bojic
 
Algoritmi i strukture_podataka_2016-02_v01
Algoritmi i strukture_podataka_2016-02_v01Algoritmi i strukture_podataka_2016-02_v01
Algoritmi i strukture_podataka_2016-02_v01Leonardo Miljko
 
Lepe pregrade u stanu i klizna vrata
Lepe pregrade u stanu i klizna vrataLepe pregrade u stanu i klizna vrata
Lepe pregrade u stanu i klizna vrataAmbijent Dizajn
 
Kompjutorski kriminalitet v13_2014-15
Kompjutorski kriminalitet v13_2014-15Kompjutorski kriminalitet v13_2014-15
Kompjutorski kriminalitet v13_2014-15Leonardo Miljko
 
Algoritmi i strukture_podataka_2016-05_v01
Algoritmi i strukture_podataka_2016-05_v01Algoritmi i strukture_podataka_2016-05_v01
Algoritmi i strukture_podataka_2016-05_v01Leonardo Miljko
 
Algoritmi i strukture_podataka_2016-01_v01
Algoritmi i strukture_podataka_2016-01_v01Algoritmi i strukture_podataka_2016-01_v01
Algoritmi i strukture_podataka_2016-01_v01Leonardo Miljko
 

Viewers also liked (20)

Opt programa vf
Opt programa vfOpt programa vf
Opt programa vf
 
Aaq7365
Aaq7365Aaq7365
Aaq7365
 
Curso de innovación educativa con recursos abiertos maritza domínguez
Curso de innovación educativa con recursos abiertos maritza domínguezCurso de innovación educativa con recursos abiertos maritza domínguez
Curso de innovación educativa con recursos abiertos maritza domínguez
 
Analogía
AnalogíaAnalogía
Analogía
 
Innovación educativa gerardo aviles
Innovación educativa gerardo avilesInnovación educativa gerardo aviles
Innovación educativa gerardo aviles
 
Carlos avila pdf excel digital
Carlos avila pdf excel digitalCarlos avila pdf excel digital
Carlos avila pdf excel digital
 
Rossi Barra Unico
Rossi Barra UnicoRossi Barra Unico
Rossi Barra Unico
 
Presentacion Centro Empresarial Emporium Cajica
Presentacion Centro Empresarial Emporium CajicaPresentacion Centro Empresarial Emporium Cajica
Presentacion Centro Empresarial Emporium Cajica
 
Neverbalna komunikacija
Neverbalna komunikacijaNeverbalna komunikacija
Neverbalna komunikacija
 
Rodne i-nerodne-grane-jabuke-i-kruc5a1ke
Rodne i-nerodne-grane-jabuke-i-kruc5a1keRodne i-nerodne-grane-jabuke-i-kruc5a1ke
Rodne i-nerodne-grane-jabuke-i-kruc5a1ke
 
Nadežda Nedić - NLP Master sertifikacija
Nadežda Nedić - NLP Master sertifikacijaNadežda Nedić - NLP Master sertifikacija
Nadežda Nedić - NLP Master sertifikacija
 
Un regal pour les yeux
Un regal pour les yeuxUn regal pour les yeux
Un regal pour les yeux
 
Likovna kultura 39
Likovna kultura 39Likovna kultura 39
Likovna kultura 39
 
1 arboretum
1 arboretum1 arboretum
1 arboretum
 
Algoritmi i strukture_podataka_2016-02_v01
Algoritmi i strukture_podataka_2016-02_v01Algoritmi i strukture_podataka_2016-02_v01
Algoritmi i strukture_podataka_2016-02_v01
 
Lepe pregrade u stanu i klizna vrata
Lepe pregrade u stanu i klizna vrataLepe pregrade u stanu i klizna vrata
Lepe pregrade u stanu i klizna vrata
 
Kompjutorski kriminalitet v13_2014-15
Kompjutorski kriminalitet v13_2014-15Kompjutorski kriminalitet v13_2014-15
Kompjutorski kriminalitet v13_2014-15
 
Algoritmi i strukture_podataka_2016-05_v01
Algoritmi i strukture_podataka_2016-05_v01Algoritmi i strukture_podataka_2016-05_v01
Algoritmi i strukture_podataka_2016-05_v01
 
Algoritmi i strukture_podataka_2016-01_v01
Algoritmi i strukture_podataka_2016-01_v01Algoritmi i strukture_podataka_2016-01_v01
Algoritmi i strukture_podataka_2016-01_v01
 
NLP dan - Ivana Blečić
NLP dan - Ivana BlečićNLP dan - Ivana Blečić
NLP dan - Ivana Blečić
 

Similar to Algoritmi i strukture_podataka_2016-03_v01

Similar to Algoritmi i strukture_podataka_2016-03_v01 (11)

Cyfer
CyferCyfer
Cyfer
 
Izgradnja OS-a uporabom mikrojezgre
Izgradnja OS-a uporabom mikrojezgreIzgradnja OS-a uporabom mikrojezgre
Izgradnja OS-a uporabom mikrojezgre
 
C# predavanja
C# predavanjaC# predavanja
C# predavanja
 
Maturski rad.pptx
Maturski rad.pptxMaturski rad.pptx
Maturski rad.pptx
 
Natjecanje za srednjoskolce - Osnove informatike
Natjecanje za srednjoskolce - Osnove informatikeNatjecanje za srednjoskolce - Osnove informatike
Natjecanje za srednjoskolce - Osnove informatike
 
Automatizacija industrijskih postrojenja
Automatizacija industrijskih postrojenjaAutomatizacija industrijskih postrojenja
Automatizacija industrijskih postrojenja
 
Osnove programiranja u Pythonu
Osnove programiranja u PythonuOsnove programiranja u Pythonu
Osnove programiranja u Pythonu
 
Uvod u programiranje i programski jezik Python
Uvod u programiranje i programski jezik PythonUvod u programiranje i programski jezik Python
Uvod u programiranje i programski jezik Python
 
[ERRO] Predavanje: Porodice mikroupravljača
[ERRO] Predavanje: Porodice mikroupravljača[ERRO] Predavanje: Porodice mikroupravljača
[ERRO] Predavanje: Porodice mikroupravljača
 
[ERRO] Predavanje: MARIE model procesora
[ERRO] Predavanje: MARIE model procesora [ERRO] Predavanje: MARIE model procesora
[ERRO] Predavanje: MARIE model procesora
 
C++ radna skripta
C++ radna skriptaC++ radna skripta
C++ radna skripta
 

Algoritmi i strukture_podataka_2016-03_v01

  • 1. 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.
  • 2. 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
  • 3. 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
  • 4. 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
  • 5. 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
  • 6. 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
  • 7. 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
  • 8. 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
  • 9. 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
  • 10. 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
  • 14. 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
  • 15. 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
  • 16. 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
  • 17. 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
  • 18. 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
  • 19. 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
  • 20. Prikaz elementarnih tipova podataka u RAM memoriji računala • Negativni cijeli brojevi se prikazuju pomoću dvojnog komplementa www.ckm.ba - Leonardo Miljko
  • 21. 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
  • 22. 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
  • 23. 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
  • 24. 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
  • 25. 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
  • 26. 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
  • 28. 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
  • 29. 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
  • 30. 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
  • 31. Hvala ! Leonardo Miljko diplomirani inženjer elektrotehnike, računarstva i informatike Pitanja? www.ckm.ba - Leonardo Miljko