Upload
dmitriydonskoy1380
View
135
Download
4
Embed Size (px)
Citation preview
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.
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.
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
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
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.
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
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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.
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.
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
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
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.
Sloţene ciklične strukture
Ilustracija nekih sloţenih algoritamskih struktura
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).
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.
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.
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.
Sloţene ciklične strukture
Modularna organizacija rješavanja sloţenih problema
MODUL A
MODUL B
MODUL C
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.
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
Programski jezici i razvoj programa
Ciljevi:
Šta je programski jezik
Mašinski jezik i asembler
Viši programski jezici
Popularni programski jezici
Razvojni ciklus programa
Osnovna arhitektura kompjutera
Programerski pogled na kompjuter
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.
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.
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.
Programski jezici:
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.
Razvoj programskih jezika
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.
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.
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
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.
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.
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
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.
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
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
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
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
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
Objekti
• Objekti su jedinice informacija koji sadrţe
podatke kao i metode za procesiranje i rad sa
podacima
• Klase objekata:
– Hijerarhija ili kategorija objekata
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.
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.
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.
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).
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.
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.
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.
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.
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
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.
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.
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.
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.
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.
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
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.
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?
Vrste podataka i način kodiranjaSljedeća slika ilustruje jedan proces digitalizacije crno-bijele fotografije:
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
Faza 1: Definisanje problema
• Prvi korak
• Sistem analizičari formiraju zahtjeve i
dostavljaju programeru
• Zahtjevi:
– Ulazni podaci
– Obrada
– Izlaz
– Korisnički interfejs
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
Sistemski i programski dijagram toka
Sistemski dijagram toka
Programski dijagram toka
Faza 3: Pisanje kôda
• Preslikavanje algoritma u specifične
programske naredbe
• Odabiranje programskog jezika i pisanje
programa u skladu sa sintaksnim pravilima
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.
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.
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
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
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.
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).
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.
IME
POKAZATELJ
POLOŢAJA
VRIJEDNOSTI
VRIJEDNOSTI
Spoljašnji dio objekta
(u programu)
Unutrašnji dio objekta
(u računaru)
Dijelovi objekata sa podacima
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.
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.
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 *.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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).
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.
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
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.
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
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.