102
Struktura sa grananjem Strukture sa granjanjem (razgranate algebarske strukture) pojavljuju se uvijek kada algoritam sadrţi simbol odluke. U zavisnosti od vrste simbola odluke i od broja simbola odluke algoritam moţe da sadrţi dvije ili više grana. Prilikom izvršavanja algoritma nailaskom na simbol odluke vrši se ispitivanje uslova postavljenih u simbolu odluke. IzvoĎenje algoritma se nastavlja samo jednom od grana, a kojom to zavisi od uslova postavljenih u simbolu odluke.

Matlab Studenti 08042010

Embed Size (px)

Citation preview

Page 1: Matlab Studenti 08042010

Struktura sa grananjem

Strukture sa granjanjem (razgranate algebarske

strukture) pojavljuju se uvijek kada algoritam sadrţi

simbol odluke.

U zavisnosti od vrste simbola odluke i od broja

simbola odluke algoritam moţe da sadrţi dvije ili

više grana.

Prilikom izvršavanja algoritma nailaskom na simbol

odluke vrši se ispitivanje uslova postavljenih u

simbolu odluke.

IzvoĎenje algoritma se nastavlja samo jednom od

grana, a kojom – to zavisi od uslova postavljenih u

simbolu odluke.

Page 2: Matlab Studenti 08042010

Struktura sa grananjem

UtvrĎivanje maksimalne ili minimalne vrijednosti je

jedan od problema koji se pojavljuju u kvantitativnim

metodama i posljedično – u odlučivanju.

Problem nalaţenja maksimuma i minimuma se svodi

na utvrĎivanje koji je od dva broja veći (manji).

Problem se moţe riješiti na više načina.

Algoritam kojim se utvrĎuje veći od brojeva

prikazan je na narednoj slici.

Page 3: Matlab Studenti 08042010

Struktura sa grananjem

Algoritam za

odreĎivanje većeg broja

POČETAK

Ulaz:

A, B

A>B

MAX A MAX B

DA NE

Izlaz:

A, B, MAX

KRAJ

Page 4: Matlab Studenti 08042010

Isti problem se moţe riješiti

i pomoću podalgoritma

POČETAK

Ulaz:

A, B

Izlaz:

A

KRAJ

MAKS (A,B)

PA MAKS (A, B)

POVRATAK

Algoritam sa podalgoritmom za odreĎivanje

većeg broja

Struktura sa grananjem

A>B

ZAMJENA (A, B)

DA

NE

Page 5: Matlab Studenti 08042010

Struktura sa grananjem

Algoritamske strukture mogu da sadrţe proizvoljan

broj simbola odluke i veliki broj grana.

Klasičan pristup problema sastoji se u poreĎenju

svakog broja sa svakim.

Takve strukture će biti prikazane na primjeru

utvrĎivanja najveće vrijednosti za tri data broja.

To znači – potrebna su tri simbola odluke.

Slijedi prikaz jednog od mogućih rješenja.

Page 6: Matlab Studenti 08042010

POČETAK

Ulaz:

A, B, C

KRAJ

Algoritam za odreĎivanje

maksimuma tri broja –

klasično rješenje

Struktura sa grananjem

A>BDA NE

B>CA>C

MAX A MAX C MAX B MAX C

Izlaz:

A, B, C, MAX

DA DA NENE

Page 7: Matlab Studenti 08042010

POČETAK

Ulaz:

A, B, C

KRAJ

Algoritam za odreĎivanje

maksimuma tri broja –

sekvencijalno odlučivanje

Struktura sa grananjem

B>MAXDA

C>MAX

MAX B

Izlaz:

A, B, C, MAX

NE

MAX A

DA

MAX CNE

Prvi od brojeva se

proglasi najvećim

Zatim se kroz dva

poreĎenja utvrdi

koji broj je zaista

veći

Page 8: Matlab Studenti 08042010

Struktura sa grananjem

Treći pristup je uzastopno

povezivanje već realizovanog

podalgoritma za utvrĎivanje

većeg od dva broja.

POČETAK

Ulaz:

A, B, C

Izlaz:

A

KRAJ

MAKS (A, B)

MAKS (A, C)

U podalgoritmu će se

najveća vrijednost dodijeliti

prvoj od promjenljivih.

Page 9: Matlab Studenti 08042010

Petlja (ciklična struktura)

Ciklične algoritamske strukture su prirodni

nastavak razgranatih algebarskih struktura.

Ciklične algoritamske strukture omogućavaju

da se na jednostavan način riješe sloţeni

problemi, u okviru kojih se zahtijeva da se

višestruko ponovi ista sekvenca obrade na

istim ili različitim podacima.

Ciklične algoritamske strukture se često

nazivaju petlje.

Page 10: Matlab Studenti 08042010

Petlja (ciklična struktura)

Ciklične algoritamske strukture mogu biti:

- proste i

- sloţene.

Pod prostim cikličnim strukturama podrazumijeva

se algoritam koji sadrţi samo jedan ciklus.

Složene ciklične strukture sadrţe veći broj ciklusa

koji su na različite načine ugraĎeni u cijeli algoritam.

Page 11: Matlab Studenti 08042010

Proste ciklične struktureU svakoj cikličnoj strukturi uočavaju se tri dijela:

- početak ciklusa,

- tijelo ciklusa i

- kraj ciklusa.

Početak ciklusa čine pripremni simboli u kojima se

promjenljivima dodjeljuju inicijalne vrijednosti.

Tijelo ciklusa čine simboli koji se tokom izvršavanja

algoritma ponavljaju.

Kraj ciklusa je simbol odluke u kome se donosi

odluka da li će se tijelo ciklusa izvesti još jednom ili

će se okončati sa ciklusom.

Page 12: Matlab Studenti 08042010

Proste ciklične strukture

Proste ciklične strukture mogu biti:

- sa unaprijed odreĎenim brojem ponavljanja tijela

ciklusa i

- sa promjenljivim brojem ponavljanja tijela ciklusa.

Page 13: Matlab Studenti 08042010

Proste ciklične strukture

Proste ciklične strukture sa unaprijed

odreĎenim brojem ponavljanja tijela ciklusa

I=A, B, C

U prvom prolazu promjenljiva uzima

početnu vrijednost (u primjeru “A”)

U svakom sljedećem prolazu promjenljiva

uvećava svoju vrijednost za vrijednost

koraka (u primjeru “C”)

Ako je vrijednost koraka pozitivna, petlja se

završava kada promjenljiva uzme vrijednost

veću od krajnje vrijednosti, a ako je

vrijednost koraka negativna, petlja se

završava kada promjenljiva uzme vrijednost

manju od krajnje vrijednosti.

Page 14: Matlab Studenti 08042010

Proste ciklične strukture

Postoje problemi koji se ne mogu riješiti

pomoću konstantnog broja ponavljanja tijela

ciklusa, jer broj ponavljanja nije unaprijed

poznat.

Npr. problemi traţenja maksimuma, minimuma

ili nula nelinearnih funkcija, itd. rješavaju se

iterativnim postupcima kojima se dobija

pribliţno rješenje koje je svakim korakom

(iteracijom) sve bliţe tačnom rješenju.

Page 15: Matlab Studenti 08042010

Proste ciklične strukture

S obzirom da je potrebno beskonačno mnogo koraka

da bi dobili tačno rješenje, prihvatamo pribliţno

rješenje koje zadovoljava unaprijed odreĎenu

vrijednost.

Takvi algoritmi sadrţe simbol odluke u kome se

ispituje ispunjenost uslova.

Razlikuju se dvije vrste cikličnih struktura sa

promjenljivim brojem ponavljanja tijela ciklusa:

• Do Until i

• Do While.

Page 16: Matlab Studenti 08042010

Proste ciklične strukture

Ciklične algoritamske strukture tipa Do Until

USLOV

DA

NE

Algoritamski koraci sadrţani u

tijelu petlje obavezno se izvršavaju

bar jednom.

Ako postavljeni uslov u simbolu

odluke nije ispunjen, algoritamski

koraci iz tijela petlje će se ponovo

izvršavati.

Ovom strukturom se rješavaju

problemi kod kojih se moţe

definisati cilj (uslov završetka) koji

treba da bude dostignut.

Page 17: Matlab Studenti 08042010

Proste ciklične strukture

Ciklične algoritamske strukture tipa Do While

Algoritamski koraci sadrţani u tijelu

petlje mogu da se i ne izvrše.

Prije ulaska u tijelo petlje ispituje se

uslov postavljen u simbolu odluke. Ako

uslov nije ispunjen algoritamski koraci

sadrţani u tijelu petlje se preskaču. Ako

je uslov ispunjen algoritamski koraci

sadrţani u tijelu petlje se izvršavaju, pa

se ponovo vrši ispitivanje uslova

Ovom strukturom se rješavaju problemi

kod kojih se moţe definisati uslov

izvršavanja algoritamih koraka iz tijela

petlje.

USLOV

DA

NE

Page 18: Matlab Studenti 08042010

Proste ciklične strukture

OdreĎivanje maksimuma niza brojeva je tipičan

primjer primjene prostih cikličnih struktura.

Rješenje je u uvoĎenju indeks pokazatelja, odnosno

indeksa.

Članovima niza pridruţuje se niz promjenljivih sa

realnim brojem kao indeksom, npr.: A1, A2, A3, ...,

AN.

Indeks je veličina koja se mijenja, tj. K=1,2, ..., N.

Na taj način u algoritmu dobijemo indeksirane

promjenljive.

Page 19: Matlab Studenti 08042010

Proste ciklične strukture

Indeksirana promjenljiva je konačan skup

promjenljivih sa istim simboličkim nazivom i

različitim indeksom.

Indeksna promjenljiva moţe imati:

• samo jednu dimenziju i tada se naziva

jednodimenziona matrica, vektor ili niz;

• dvije dimenzije i tada se naziva matrica;

• više dimenzija i tada se naziva višedimenziona

matrica.

Page 20: Matlab Studenti 08042010

Proste ciklične strukture

Učitavanje niza podataka realizuje se pomoću proste

ciklične algoritamske strukture.

Dio algoritma je predstavljen na slici koja slijedi:

Ulaz:

A(I)

I=1,N

Ulaz:

A(I), I=1,N

Učitavanje

niza

Page 21: Matlab Studenti 08042010

Proste ciklične strukture

Za odreĎivanje

maksimuma niza

brojeva najbolje je u

algoritmu iskoristiti već

realizovan podalgoritam

za utvrĎivanje većeg od

dva broja.

Algoritam za odreĎivanje

maksimuma niza brojeva

POČETAK

Ulaz:

N

Ulaz:

A(I),I=1,N

MAX A(1)

I=2,N

MAKS(MAX;A(I))

Izaz:

MAX

KRAJ

Page 22: Matlab Studenti 08042010

Sloţene ciklične strukture

U praksi se najčešće susreću sloţene ciklične

strukture, čak i kada se radi o jednostavnim

problemima, kao što je mnoţenje matrica ili

sortiranje niza.

Kod sloţenih cikličnih struktura algoritam se sastoji

od dva ili više ciklusa.

Ako su ciklusi nezavisni, dijelovi takvog algoritma su

proste ciklične strukture.

Ako neki ciklus obuhvata jedan ili više ciklusa

govorimo o ugnijeţdenim cikličnim strukturama.

Page 23: Matlab Studenti 08042010

Sloţene ciklične strukture

Ilustracija nekih sloţenih algoritamskih struktura

Page 24: Matlab Studenti 08042010

Sloţene ciklične strukture

U svim ilustrovanim primjerima uočava se spoljašnji

i unutrašnji ciklus.

Broj izvršavanja algoritamskih simbola u

unutrašnjem ciklusu jednak je proizvodu broja

izvršavanja tog ciklusa i brojeva izvršavanja svih

ciklusa koji ga obuhvataju.

Kod cikličnih struktura nije dozvoljeno preklapanje

tokova obrade, tj. uskakanje u tijelo ciklusa (što je

već ilustrovano).

Page 25: Matlab Studenti 08042010

Sloţene ciklične strukture

Ugnijeţdene ciklične

strukture – klasično sortiranje

POČETAK

Ulaz:

N, A(I),I=1,N

J=I+1,N

MAKS(A(I),A(J))

Izaz:

A(I), I=1,N

KRAJ

I=1, N-1

Klasični primjer ugnijeţdenih

cikličnih struktura je

sortiranje niza podatak.

Page 26: Matlab Studenti 08042010

Sloţene ciklične strukture

Rješavanje realnih problema uglavnom dovodi do

sloţenih algoritamskih struktura.

Uvedene su odreĎene discipline u pisanju

algoritama i programa.

Modularna organizacija algoritama i strukturirano

programiranje su osnovni preduslovi za dobijanje

pouzdanih rješenja.

Page 27: Matlab Studenti 08042010

Sloţene ciklične strukture

Modularna organizacija algoritama podrazumijeva

da se sloţeni problemi rastave na više manjih

problema (modula).

Strukturirani moduli imaju jedan ulaz i jedan izlaz.

Svaki modul se moţe pripremiti nezavisno od

ostalih modula i kasnije jednostavnim mehanizmima

povezati u cjelinu.

Page 28: Matlab Studenti 08042010

Sloţene ciklične strukture

Modularna organizacija rješavanja sloţenih problema

MODUL A

MODUL B

MODUL C

Page 29: Matlab Studenti 08042010

Struktura sa podalgoritmima

• Veza izmeĎu algoritma i podalgoritma – lista

ulazno-izlaznih parametara

– stvarna lista parametara – parametri koji se

prosljeĎuju podalgoritmu iz glavnog algoritma

– formalna lista parametara – lista parametara

pozvanog algoritma

• Broj, redoslijed i vrsta parametara stvarne i

formalne liste mora da se poklapa.

Page 30: Matlab Studenti 08042010

Struktura sa podalgoritmima

POČETAK

ULAZ

N, A

KRAJ

IZLAZ

REZ

A = {ai}, i = 1, ..., N

N - br. el. niza

SABIR(A, N, REZ)

POČETAK

POVRATAK

=SUMA = SUMA + X(i)

I = 1

SUMA = 0

I = I + 1

I > M

DA

NE

SABIR(X, M, SUMA)

X = {xi}, i = 1, ..., M

M - br. el.

SUMA - suma niza

Page 31: Matlab Studenti 08042010

Programski jezici i razvoj programa

Page 32: Matlab Studenti 08042010

Ciljevi:

Šta je programski jezik

Mašinski jezik i asembler

Viši programski jezici

Popularni programski jezici

Razvojni ciklus programa

Page 33: Matlab Studenti 08042010

Osnovna arhitektura kompjutera

Page 34: Matlab Studenti 08042010

Programerski pogled na kompjuter

Page 35: Matlab Studenti 08042010

Kompjuterski program:

Kompjuterski program je smješten u

memoriji i sastoji se od podataka i

instrukcija.

Ulazno-izlazni ureĎaji (I/O) omogućavaju

mašini da prenosi podatke izmeĎu nje i

spoljnjeg svijeta.

Page 36: Matlab Studenti 08042010

Instrukcije i programi zahtijevaju neki

redoslijed kojim će ih kompjuter izvršavati, a

to je zapravo element za projektovanje.

Projektovanjem programa odreĎujemo koje su

programske instrukcije i kakva struktura

podataka je potrebna da bi mašina-kompjuter

obavila neki ţeljeni zadatak.

Najznačajnije je to što projektant programa

odreĎuje niz (sekvencu), tj. redoslijed kojim će

se instrukcije izvršavati u cilju uspješnog

odvijanja i završetka programa.

Page 37: Matlab Studenti 08042010

Programski jezici:

• Programski jezik je skup naredbi za

izvršavanje računarskih zadataka.

• Predstavlja skup riječi i skup pravila na

osnovu kojih se piše program.

• Razvojni cilkus programa skup pravila

na kojima se zasniva razvoj softvera.

Page 38: Matlab Studenti 08042010

Programski jezici:

Page 39: Matlab Studenti 08042010

Generacije kompjuterskih jezika

Pojam generacije proistekao je iz razvoja

koji je prikazan na narednoj slici koja

prikazuje razvoj kompjuterskih jezika od

1940-tih godina do danas.

Page 40: Matlab Studenti 08042010

Razvoj programskih jezika

Page 41: Matlab Studenti 08042010

Cilj prethodne slike nije da bude potpuno

precizna, već da dâ ideju o vremenskim

periodima i različitim generacijama koje su se

pojavljivale i meĎupovezanost jezika raznih

generacija sa sloţenošću problema koji se

rješavaju primjenom kompjutera.

Page 42: Matlab Studenti 08042010

Vertikalna osa predstavlja definiciju problema, tj.

pokazuje kako mi projektujemo (pišemo)

kompjuterske programe.

Na dnu ove skale se nalazi mašinski orjentisan

način definisanja programa. To znači da se

kompjuterski program izraţava u jeziku koji je bliţi

mašini nego programeru-čovjeku, kao što smo vi i ja.

Na vrhu ove ose je ljudski orjentisan način

izraţavanja programa. To znači da je definicija

problema - kompjuterski program – izraţen na način

bliţi jeziku projektanta-čovjeka nego jeziku

mašine. I to je naravno poţeljniji i bolji način za

programiranje.

Page 43: Matlab Studenti 08042010

Razvoj programskih jezika

• Programski jezici su podijeljeni po

generacijama

• Jezici najniţeg nivoa su najstariji

• Postoji pet generacija programskih jezika:

– Mašinski jezici

– Asemblerski jezici

– Proceduralni jezici

– Problem-orijentisani jezici

– Prirodni jezici

Page 44: Matlab Studenti 08042010

Jezici prve generacije

• Mašinski jezici:

– Sastoje se od binarnih

brojeva (0 i 1)

– Nije potrebno prevoĎenje

– Vezan je za konkretan

računar (mašinu)

• Svaka familija procesora

ima svoj (poseban)

mašinski jezik.

Page 45: Matlab Studenti 08042010

Jezici druge generacije

• Asemblerski jezici:

– Nadogradnja mašinskih jezika

– Niži programski jezik

– Koristi kratke slovne zamjene

za programske naredbe.

• Ove slovne zamjene se

nazivaju mnemonici

– Program se prvo piše kao

source code (tekstualni fajl),

a potom se prevodi u mašinski

jezik.

Page 46: Matlab Studenti 08042010

Jezici treće generacije

• Proceduralni jezici:

– Jezici visokog nivoa

– Kreiranje programa na visokom nivou

apstrakcije

– Lakši za čitanje, pisanje i prepravke od

mašinskih i asemblerskih jezika

– Koriste compiler ili interpreter za prevod

kôda

• Fortran i COBOL su jezici treće generacije

Page 47: Matlab Studenti 08042010

Kompajleri i Interpreteri

• Kompajler je program koji prevodi kôd

(source code) u objektni kôd.

• Interpreter prevodi po jednu liniju kôda i

odmah je izvršava.

Page 48: Matlab Studenti 08042010

Jezici treće generacije (nastavak)

• Spaghetti Code & the Great Software Crisis:

– GOTO naredba dovela je do toga da se

program teško prati

– Taj problem je doveo do tzv. softverske

krize 1960-tih godina.

• Rokovi za programiranje su se probijali

• Programi su “probijali” predviĎeni budţet

• Programi su sadrţali previše grešaka

• Korisnici nisu bili zadovoljni

Page 49: Matlab Studenti 08042010

Jezici treće generacije (nastavak)

• Struktuirani programski jezici:

– Razvijeni su kako bi unapredili razvoj

softvera

– Predstavnici Algol i Pascal

– Zabrana upotrebe GOTO naredbi

– Upotreba kontrolnih struktura

- IF-THEN-ELSE

Page 50: Matlab Studenti 08042010

Jezici treće generacije (nastavak)

• Modularni programski jezici:

– Razvijeni zbog problema koji su nastali u

struktuiranim programskim jezicima

– Koriste se za kreiranje programa koji su

izdijeljeni na zasebne module

• Svaki modul obavlja specifičnu funkciju

– za različite ulazne vrijednosti daje različite

izlazne vrijednosti

Page 51: Matlab Studenti 08042010

Jezici četvrte generacije

• Jezici četvrte generacije obuhvataju:

– Report generators

• Jezici za formiranje (štampanje)

izvještaja iz baze podataka

– Query languages

• Jezici za formiranje upita kod baza

podataka

Page 52: Matlab Studenti 08042010

Objektno-orijentisano programiranje

• Objektno-orijentisano programiranje (OOP):

– Zasniva se na mogućnosti višestruke

upotrebe komponenata

• Sposobnost pravljenja programskih

modula koji obavljaju specifičan

zadatak.

– Ukida razliku izmeĎu programa i podataka

– Upotreba objekata koji sadrţe podatke i

procedure

Page 53: Matlab Studenti 08042010

Objekti

• Objekti su jedinice informacija koji sadrţe

podatke kao i metode za procesiranje i rad sa

podacima

• Klase objekata:

– Hijerarhija ili kategorija objekata

Page 54: Matlab Studenti 08042010

Obrada podataka

Pod obradom podataka podrazumijeva se proces kojim se

podaci transformišu tako da se od nekog početnog skupa

(ulaznih) podataka dobije novi (izlazni) skup podataka.

Tako se recimo mogu sabrati visine (ili teţine) niza osoba,

pa kada se takav zbir podijeli brojem osoba čije su visine

(teţine) sabrane dobijamo informaciju o prosječnoj visini

(teţini) tog skupa osoba.

Moţe se reći da smo obradom podataka o visinama

(teţinama) kao rezultat dobili jednu novu informaciju

(podatak).

Zapravo svaka obrada podataka i ima za cilj dobijanje nove

informacije koja je “sakrivena” u sirovim podacima.

Page 55: Matlab Studenti 08042010

Obrada podataka

Proces obrade podataka moţemo slikovito prikazati

sljedećim dijagramom:

Podrazumijeva se, naravno, da se obrada

podataka vrši u kompjuterima.

Podaci se mogu u kompjuterima obraĎivati na

više načina u zavisnosti od uslova pod kojima

se obrada vrši.

Page 56: Matlab Studenti 08042010

Obrada podataka

Ako se obrada vrši na taj način što se podaci prvo

prikupljaju, prilagoĎavaju za kompjutersku obradu

unose u kompjuter tek kada su svi podaci prikupljeni

onda takvu obradu podataka nazivamo batch (beč)

obradom.

To je slučaj sa raznim statističkim obradama, kao i

obradama recimo plata u nekom preduzeću,

obradama računa za električnu energiju, TV pretplatu

i slično.

Trajanje ovakve obrade moţe biti i više sati

rada kompjutera.

Page 57: Matlab Studenti 08042010

Obrada podataka

Ako se obrada vrši odmah nakon unosa podataka

onda kaţemo da se radi o on-line obradi.

To je slučaj recimo sa bankarskim transakcijama kada

podiţete (ili ulaţete) gotovinu sa vašeg računa,

plaćate kreditnom karticom ili rezervišete mjesto u

avionu (ili pozorištu).

Kod takvih obrada se ne moţe čekati na prispijeće

svih podataka, već se obrada vrši redom kako oni

stiţu.

Trajanje obrade moţe biti do nekoliko sekundi

(ponekad i minuta).

Page 58: Matlab Studenti 08042010

Obrada podataka

Postoje slučajevi kada se podaci moraju obraditi za

veoma kratko vrijeme (ispod jedne sekunde ili čak za

hiljaditi dio sekunde).

Za takve obrade kaţemo da se odvijaju u realnom

vremenu (real-time).

Primjeri takve obrade su razne vrste upravljanja

robotima, automatskim pilotima, hirurškim zahvatima

i sl.

Te su obrade često povezane i sa visokim rizicima po

bezbjednost ljudi ili gubitak njihove imovine.

Page 59: Matlab Studenti 08042010

Vrste podataka i način kodiranja

Podaci i informacije imaju dvije vaţne karakteristike: formu i

sadrţinu.

Forma je oblik u kojem se podaci pojavljuju, a sadrţina je

njihovo značenje. Uobičajene i najrasprostranjenije forme

podataka su slova, brojevi, zvuk, slika, filmski zapis. To su

forme prepoznatljive čovjeku.

Čovjek moţe da prepozna i neke druge forme podataka

koje prima i drugim čulima kao što su dodir, miris, okus,

temperatura. Ali u prirodi postoje i druge fizičke

karakteristike materije i prostora koje su moguće forme

podataka kao što su električni i magnetni signali, bio-

energetski signali da pomenemo samo neke od njih.

Page 60: Matlab Studenti 08042010

Vrste podataka i način kodiranja

Naša dalja paţnja biće usmjerena samo na standardne forme

podataka koje su najčešće u upotrebi, mada se taj skup stalno

širi novim formama.

Numerički podaci (brojevi) – Operacije brojevima:

Brojeve moţemo da sabiramo, oduzimamo, dijelimo i

moţimo.

To su tzv. osnovne aritmetičke operacije sa brojevima.

I najsloţeniji matematički proračuni, najsloţenije jednačine

se na kraju svode na ove četiri operacije.

Koriste se cifre 0 i 1.

Page 61: Matlab Studenti 08042010

Vrste podataka i način kodiranja

Tekstualni podaci

Naša civilizacija je dobila ubrzan razvoj od trenutka kada je

čovek počeo da zapisuje svoje misli u obliku teksta.

Posebno ubrzanje je dobijeno Gutenbergovim

pronalsakom štamparije kada je postalo moguće tekst

umnoţavati u više primjeraka na ekonomičan način.

Pojavom kompjutera, a posebno personalnih kompjutera i

njihovim povezivanjem u globalnu mreţu (Internet)

dostupnost tekstualnih informacija u obliku knjiga, časopisa i

drugih tekstova postala je tako velika da su nam danas

potrebni posebni pretraţivači (Google na primjer) bez čije

pomoći bi bili izgubljeni u tom okeanu informacija, meĎu

kojima tekstualne informacije imaju značajan udio.

Page 62: Matlab Studenti 08042010

Vrste podataka i način kodiranja

Tekstualni podaci

Pa kako su računari u stanju da pamte tekst.

Za brojeve već znamo, koriste cifre 0 i 1. A tekst?

TakoĎe. Kako je to moguće?

Na samom početku korišćenja računara (50-tih godina

prošlog vijeka) napravljen je jedan šifarnik kojim su slova

kodirana brojevima. Pa kada slova prevedemo u brojeve

onda je lako, brojeve moţemo zapisivati u kompjuterima.

Napravljeni šifarnik slova poznat je kao ASCII (American

Standard Code for Information Interchange) tabela i još

uvijek je u upotrebi

Page 63: Matlab Studenti 08042010

Vrste podataka i način kodiranja

Tekstualni podaci

ASCII kod je prvobitno bio 7-bitni kôd (jer ima 128 znakova,

a oni se mogu kodirati sa 7 binarnih cifara). Pošto je sadrţao

samo internacionalnu latiničnu azbuku, ovaj kôd je bilo

nemoguće koristiti za druge jezike i pisma (osim engleskog).

U posljednje vrijeme, a posebno za potrebe interneta koristi

se novi tzv. UNICODE.

Ovaj kôd se pojavljuje u više varijanti, a UTF-16 je 16-bitna

varijanta koja pokriva 30-tak sistema za pisanje teksta na

raznim jezicima.

Page 64: Matlab Studenti 08042010

Vrste podataka i način kodiranja

Operacije sa tekstom

Slično kao što kod brojeva postoje osnovne operacije, tako i

obrada tekstualnih podataka ima jedan skup jednostavnih

operacija pomoću kojih se mogu obavljati i najsloţenije

operacije nad tesktovima.

To su operacije nad pojedinačnim slovima u tekstu kao što su:

brisanje slova, dodavanje slova, promjena slova.

Pomoću tih operacija moguće je izvršiti razne operacije nad

cijelim tekstovima kao što su brisanje dijela teksta, dodavanje

teksta, zamjena teksta drugim tekstom.

Tekst procesori (MS Word, na primjer) obavljaju slične

operacije.

Page 65: Matlab Studenti 08042010

Vrste podataka i način kodiranja

Razvojem grafike (kako na ekranima tako kod štampača)

postalo je moguće prikazivati slova u raznim oblicima

(fontovima), raznim veličinama i drugim tipografskim

karakteristikama (boja, otisak, italik i sl.).

Danas se u kompjuterima koriste i tzv. hipertekstovi u kojima

se tekst ne mora čitati liearno već se moţe “skakati” sa teksta

na tekst u proizvoljnom redoslijedu slijedeći tzv.

hiperlinkove. A tekstualni zapisi mogu da sadrţe slike, video

i zvučne dijelove, tako da se dobija informacija obogaćena

raznim vrstama i formama podataka.

Page 66: Matlab Studenti 08042010

Vrste podataka i način kodiranja

Zvučni podaci

Zvuk nastaje vibracijom vazduha, pa kada se ta vibracija

prenese do naše bubne opne, ona vibrira u istom ritmu i

proizvodi signal koji naš mozak interpretira kao zvuk.

Kako zvuk registruju, pamte i reprodukuju kompjuteri? Znamo da su mikrofoni i zvučnici standardni dio periferije načih PC-ja.

No kako se zvuk pamti u komjuteru?

Opet pomoću brojeva.

Pošto je zvuk vibracija vazduha,

ta se vibracija u mikrofonu

(slično kao u našoj bubnoj opni)

pretvara u električni signal –

kao što je to ilustrovano na

narednoj slici.

Page 67: Matlab Studenti 08042010

Vrste podataka i način kodiranja

Zvučni podaci

S druge starne, reprodukcija zvučnog signala se odvija tako

što se brojevi kojima je registrovan zvuk pretvaraju ponovo

u električna signale kako to prikazuje donja slika.

Page 68: Matlab Studenti 08042010

Zvučni podaci

Konverzija iz zvuka u

brojeve (i obrnuto) vrši se

tako što se analogni električni

signali sempliraju

(digitalizuju) na način

ilustrovan sljedećom slikom.

Vrste podataka i način kodiranja

Page 69: Matlab Studenti 08042010

Vrste podataka i način kodiranja

Zvučni podaci (govor, muzika ) se mogu takoĎe obraĎivati.

I kod njih postoji jedan skup osnovnih operacija: brisanje

dijela zvučnog zapisa, dodavanje zvučnog zapisa,

zamjena zvučnog zapisa.

Pomoću takvih operacija moguće je izvršiti veoma sloţene

transformacije zvučnih zapisa i postići razne zvučne efekte.

U praksi se koristi više načina digitalizacije i zapisivanja

zvučnih podataka.

Kompjuterski fajlovi u kojima se nalazi zvuk mogu imati

razne ekstenzije kao što su wav, mp3, aud, midi itd.

Page 70: Matlab Studenti 08042010

Vrste podataka i način kodiranja

Grafika ( slika, video )

Jedna slika vrijedi hiljadu riječi kaţe kineska poslovica.

Vuzuelne informacije su veoma pogodne za čovjeka. Zato

kompjuterska tehnologija posebnu paţnju poklanja ovoj

vrsti podataka. Svjedoci smo stalnog razvoja u ovoj oblasti,

gdje postoji tendencija da se preko video tehnologija objedine

svi komunikacioni kanali (TV, kompjuteri, novine) u

jedisntven sistem multimedijalne prezentacije podataka i

informacija.

Kako se slika (nepokretna i pokretna ) registruje, memoriše i

reprodukuje u kompjuterima?

Page 71: Matlab Studenti 08042010

Vrste podataka i način kodiranjaSljedeća slika ilustruje jedan proces digitalizacije crno-bijele fotografije:

Page 72: Matlab Studenti 08042010

Razvojni ciklus programa

• Plansko rješavanje problema programiranja i

podjela na značajne cjeline

• Šest faza:

1. Definisanje problema

2. Dizajniranje programa

3. Pisanje koda (Coding)

4. Testiranje i debagovanje

5. Formalizovanje rješenja

6. Implementacija i praćenje rada programa

Page 73: Matlab Studenti 08042010

Faza 1: Definisanje problema

• Prvi korak

• Sistem analizičari formiraju zahtjeve i

dostavljaju programeru

• Zahtjevi:

– Ulazni podaci

– Obrada

– Izlaz

– Korisnički interfejs

Page 74: Matlab Studenti 08042010

Faza 2: Dizajniranje programa

• Odgovornost programera

– Top-down dizajn: polazi se od glavnog cilja pa se potom

program dijeli na manje cjeline (funkcije/moduli)

– Kontrolne strukture se koriste da bi se provjerilo

kako svaki modul funkcioniše

• Definisanje algoritma: objašnjenje korak po korak -

kako riješiti problem

• Alati za dizajniranje programa:

– Sistemski dijagram toka– grafički prikaz glavne

faze obrade i različite izvore podataka.

– Programski dijagram toka – grafički prikaz logike

problema

Page 75: Matlab Studenti 08042010

Sistemski i programski dijagram toka

Sistemski dijagram toka

Programski dijagram toka

Page 76: Matlab Studenti 08042010

Faza 3: Pisanje kôda

• Preslikavanje algoritma u specifične

programske naredbe

• Odabiranje programskog jezika i pisanje

programa u skladu sa sintaksnim pravilima

Page 77: Matlab Studenti 08042010

Faza 4: Testiranje i otklanjanje grešaka

(Debugging)

• Greške nastale usljed pogrešnog logičkog

pristupa ili pri unosu teksta se nazivaju

bagovima (bug, bugs).

• Proces traţenja i ispravljanja tih grešaka se

naziva debagovanje (debugging).

• Proces otklanjanja grešaka i testiranje

programa po pravilu oduzima vrijeme veće

od onoga koje je bilo potrebno za samo

programiranje.

Page 78: Matlab Studenti 08042010

Faza 4: Testiranje i otklanjanje grešaka

(Debugging)

• Testiranje najčešće obuhvata obradu ulaznih

podataka za koje program treba da dâ unaprijed

poznati izlaz. Test podaci treba da uključe:

– Tipične podatke, koji će se često koristiti

– Podatke koji se rijetko koriste, ali je moguće

da će se koristiti

– Pogrešne ulazne podatke, kako bi provjerili

da li će ih program korektno prepoznati i kako

će se ponašati.

Page 79: Matlab Studenti 08042010

Faza 5: Formalizacija rješenja

• Formiranje dokumentacije

– Definicija problema. Namjena i mogućnosti

programa, autor(i) i naručioc posla.

– Opis sistema na kom program radi (hardver i

sofver). Potrebni ulazni podaci i oblik i tip

izlaznih podataka.

– Detaljan opis programa, dijagram toka, listing

programa, podaci korišćeni pri testiranju i

rezultati testa

– Uputstvo za instaliranje i odrţavanje

– Uputstvo za operatera

Page 80: Matlab Studenti 08042010

Faza 6: Implementacija i održavanje

programa

• Program se isporučuje korisniku.

• Ako program treba da zamijeni program

slične namjene koji se već koristi, često se u

jednom periodu koriste oba programa radi

dodatne verifikacije novog rješenja.

• Moguće je da se nakon ovog perioda javi

potreba za modifikacijom rješenja

Page 81: Matlab Studenti 08042010

Matlab – tipovi podataka

Informacioni objekti (objekti sa podacima)

koje obraĎujemo pomoću računara sadrţe u

sebi različite tipove podataka.

MeĎutim, svaki objekat uvijek se moţe

posmatrati kao spoj dva dijela: spoljašnjeg i

unutrašnjeg.

Page 82: Matlab Studenti 08042010

Spoljašnji dio objekta sastoji se iz jednog ili

većeg broja pokazatelja (imena,

identifikatora,..., oznaka).

To je ono što programer "vidi" od cijelog

objekta, tj. ono čemu moţe direktno da pristupi

i da ga koristi (na primjer: navodeći ime

objekta u nekom programu).

Page 83: Matlab Studenti 08042010

Unutrašnji dio objekta jeste prikaz podataka koji

objekat čine unutar računara; taj prikaz ostaje

skriven za korisnika.

Unutrašnji dio objekta čine jedna ili više

vrijednosti i jedan ili više pokazatelja poloţaja tih

vrijednosti.

Ovi pokazatelji sadrţe informacije o tome gdje se

vrijednosti nalaze u memoriji računara tokom rada

programa, tj. ti pokazatelji definišu vezu izmeĎu

imena i vrijednosti, kako je šematski pokazano na

narednoj slici.

Page 84: Matlab Studenti 08042010

IME

POKAZATELJ

POLOŢAJA

VRIJEDNOSTI

VRIJEDNOSTI

Spoljašnji dio objekta

(u programu)

Unutrašnji dio objekta

(u računaru)

Dijelovi objekata sa podacima

Page 85: Matlab Studenti 08042010

Razlikovanje izmeĎu pojmova spoljašnjeg i

unutrašnjeg dijela objekta neophodno je već

zbog toga što je unutrašnji prikaz objekta u

računaru binaran i kao takav najčešće različit

od spoljašnjeg prikaza tog objekta.

U literaturi iz oblasti MATLAB-a termin

promjenljiva koristi se uopšte za objekte,

čije vrijednosti mogu da se mijenjaju u toku

rada programa.

Page 86: Matlab Studenti 08042010

Drugim riječima, promjenljive su objekti (tj.

skupovi vrijednosti) u kojima svaka vrijednost

moţe da se mijenja.

Dakle, terminom promjenljiva obuhvaćene su kako

tzv. skalarne promjenljive, tako i skupovi

vrijednosti ili polja (nizovi).

MeĎutim, mi ćemo često koristiti i termin objekat

sa podacima.

MATLAB funkcioniše tako da i skalarnu

promenljivu tretira kao matricu 1x1, dakle, kao

polje.

Page 87: Matlab Studenti 08042010

Na taj način za mnoge operacije koje se

izvode u MATLAB-u , bez ikakve promjene

notacije, i skalari i nizovi (polja) mogu da se

koriste kao operandi.

Na primjer, uzmimo da su a i b dva skalara, i

da su A i B dvije saglasne matrice, izrazi

kojima u MATLAB-u odreĎujemo proizvode

brojeva a i b i proizvod matrica A i B imaju

analogne oblike: a*b i A*B, tj. operacija

mnoţenja u oba slučaja označava se sa *.

Page 88: Matlab Studenti 08042010

Dakle, kako promenljiva znači polje tj. niz

(na primjer, to moţe da bude jednodimenzioni

niz ili matrica), to je ime te promenljive

adresa cijelog niza.

MeĎutim, svaki član (ili komponenta) niza ili

pojedini dijelovi tog niza (podskupovi cijelog

niza) takoĎe imaju svoja imena, koja se

konstruišu od imena promenljive i specijalnih

izraza za selekciju koji slijede poslije tog

imena, što omogućava da se pristupi tim

dijelovima niza.

Page 89: Matlab Studenti 08042010

POJAM TIPA PODATKA

Interni objekti prikazuju se u memoriji u binarnom

obliku. U mašinskim i asemblerskim jezicima objekti

se posmatraju i sa njima se manipuliše jedino na

ovom najniţem nivou; jedini objekti sa kojima se

radi na mašinskom nivou jesu brojevi i znaci.

Ovo znači da se inţenjerski problemi veoma teško

mogu rješavati korišćenjem ovih jezika, jer se

praktično radi samo o binarnim objektima i zahtijeva

se detaljno poznavanje rada računara.

Page 90: Matlab Studenti 08042010

U višim programskim jezicima, kod kojih

korisnici i stvaraoci programa ne moraju da se

upuštaju u detaljno sagledavanje rada računara,

na raspolaganju stoji odreĎen broj tipova

podataka.

Za svaki objekt sa podacima deklariše se tip

podataka koje objekt sadrţi.

Taj tip se kod većine programskih jezika (kao,

na primjer, kod FORTRAN-a ) ne moţe

mijenjati u toku rada programa.

Page 91: Matlab Studenti 08042010

MeĎutim, u MATLAB-u vaţi koncept tzv.

implicitnog deklarisanja tipa podatka.

Prilikom dodjeljivanja jedne vrijednosti

promjenljivoj implicitno se utvrĎuje tip te

promenljive.

Kada se promjenljivoj odreĎenog tipa

dodijeli jedna vrijednost drugog tipa, tip

promjenljive će dinamički biti promijenjen,

tj. postaće isti kao tip vrijednosti koja je u

pitanju.

Page 92: Matlab Studenti 08042010

Na primjer, u jednu istu promjenljivu

moţemo prvo smjestiti skalar, poslije toga

vektor, a zatim npr. jednu tekstualnu

konstantu.

Dakle, moţemo konstatovati da se odreĎena

promjenljiva MATLAB-a uvodi prilikom

prvog unošenja vrijednosti u tu promjenljivu i

da će tip podatka te vrijednosti biti

istovremeno i prvi tip podatka promenljive.

Page 93: Matlab Studenti 08042010

Stalni tipovi podatka koji postoje u MATLAB-u

sluţe ze prikazivanje brojeva, teksta ili logičkih

vrijednosti (istinito ili laţno). Tip podataka jednog

objekta odreĎuje interni prikaz i način interpretacije

tog prikaza.

Tip podatka karakteriše se sljedećim svojstvima:

(1) imenom za identifikaciju tog tipa;

(2) opsegom vrijednosti;

(3) notacijom za prikazivanje konstanti tog tipa, ovo

znači da način pisanja konstante jednoznačno

odreĎuje kog je tipa ta konstanta;

(4) skupom operacija i relacija za objekte tog tipa.

Page 94: Matlab Studenti 08042010

NIZOVI (POLJA)

Skup pojedinačnih vrijednosti sa istim tipom

podatka nazivamo niz.

Moţemo reći da niz ima isti tip kao elementi niza.

Pojedinačni element niza identifikuje se pomoću

indeksa. Ako elementi nekog niza posjeduju samo

jedan indeks, onda je riječ o jednodimenzionom

nizu.

U MATLAB-u indeksi uvijek čine niz uzastopnih

prirodnih brojeva. U jednodimenzionog niza indeksi

su l, 2,..., i1max, gdje je i1max gornja granica.

Page 95: Matlab Studenti 08042010

Dvodimenzioni niz sastoji se od promjenljivih sa

dva indeksa.

Proizvoljni element nekog dvodimenzionog niza A

jeste promjenljiva:

A(I,J), I=1, 2, ..., i1max

J=1, 2, ..., i1max

Ukupan broj članova niza A iznosi i1max x i2max , a to

je drugim riječima ukupan broj mogućih različitih

kombinacija I i J. Članove dvodimenzionog niza

shvatamo kao elemente matrice, gdje prvi indeks

označava redni broj vrste, a drugi indeks redni broj

kolone u kojoj posmatrani element leţi.

Page 96: Matlab Studenti 08042010

OSNOVNI TIPOVI PODATAKA U MATLAB-u

U MATLAB-u postoji dvanaest osnovnih (stalnih)

tipova podatka, a to su:

double, int8, uint8, int16, uint16, int32, uint32,

single, char, sparse, cell, struct

U MATLAB-u, pored navedenih, postoji

mogućnost korišćenja i takvih tipova podatka

koje korisnik sam uvodi.

Page 97: Matlab Studenti 08042010

Od suštinskog značaja u MATLAB-u su samo dva

stalna tipa: double i char, zato što se svi proračuni

unutar računara izvršavaju u dvostrukoj tačnosti i zato

što se svi tekstualni podaci smještaju u promjenljive

tipa char.

Tipovi numeričkih podataka int8, uint8, int16, iunt16,

int32, uint32 i single jedino sluţe za ekonomičko

skladištenje numeričkih objekata u memoriji, tj. sa

ovim podacima nisu moguće bilo kakve matematičke

operacije.

Tip sparse sluţi za kompaktno memorisanje i efikasno

obraĎivanje matrica sa malim brojem elemenata

različitih od nule (tzv. "praznih" il "rijetkih" matrica).

Page 98: Matlab Studenti 08042010

TIP PODATAKA double

Tip podataka double sluţi za memorisanje

numeričkih nizova (ili skalara, koji se u MATLAB-u

takoĎe tretiraju kao nizovi).

Elementi ovih nizova mogu da budu realni ili

kompleksni brojevi (znači da ne postoji poseban tip

podataka za kompleksne brojeve).

Brojevi koji se registruju u okviru tipa double, čine

jedan podskup realnih odnosno kompleksnih brojeva.

Page 99: Matlab Studenti 08042010

Konstante tipa double (u stručnoj literaturi se za

konstante koristi i termin "literali") prikazuju se

kao zbir realnog dijela i (opciono)

imaginarnog dijela broja:

realni dio ( imaginarnidio i)

gdje smo simbolima ( ); izdvojili opcioni dio.

Ovdje je i oznaka za imaginarnu jedinicu ( )

(Umjesto i moţemo da pišemo j.)

1

Page 100: Matlab Studenti 08042010

Brojevi koji odreĎuju konstantu mogu se prikazati

na dva načina.

Prvi način ispisivanja broja odgovara

uobičajenom prikazu dekadnih brojeva; ovdje

pišemo dva niza dekadnih cifara koji su

razdvojeni decimalnom tačkom, s tim što se jedan

od tih nizova moţe ispustiti, ako cjelobrojnog (ili

razlomljenog) dijela broja nema.

Znak broja u slučaju kada je broj pozitivan

moţemo da izostavimo.

Primjeri:

-123.45, .51, +139.

Page 101: Matlab Studenti 08042010

Kod drugog oblika prikazivanja, poslije

decimalnog broja, u kome su date značajne cifre,

slijedi dio sa eksponentom, gdje se poslije slova e

(ili E) unosi znak (koji nije neophodan, ako je broj

koji slijedi pozitivan) i zatim cifre jednog cijelog

broja.

Vrijednost broja jednaka je proizvodu datog

decimalnog broja i broja 10 stepenovanog cijelim

brojem koji je dat poslije e.

Prikaz broja u MATLAB-u Vrijednost broja

1.23e-l

.019E+4

-33.E-3

0.123

190.

-0.033

Page 102: Matlab Studenti 08042010

Pored navedenih oblika konstanti, u

MATLAB-u se koriste i sljedeće konstante:

Inf (ili Inf) kao simbol za ∞ ,

NaN (ili nan) kao simbol za "not a number"

(ovo znači "nije broj"), čime se karakterišu

izrazi 0/0, ∞ / ∞ i slično.