You are on page 1of 238

ALGORITMI

Rjeavanje problema primjenom raunara


Rjeavanje problema primjenom raunara prolazi
kroz tri faze:
analiza problema;
razvoj algoritma za rjeavanje problema;
transformacija algoritma u raunarski program
(programiranje).

Analiza problema
Analiza problema je najkritinija faza u rjeavanju
problema.
Cilj ove faze je da prui preciznu definiciju i opis
problema, specifikaciju ulaznih podataka,
specifikaciju izlaznih podataka (rezultate koji se
oekuju), kao i postupak da se do takvih rezultata
doe. Problemi koji se mogu jednostavno izraziti
matematikim jezikom mogu se i precizno definisati
i opisati pri rjeavanju na raunaru. Za klasu
nematematikih problema to nije tano. Za fazu
analize problema postoji vie razliitih, manje ili
vie formalizovanih, postupaka.

Ne ulazei u sutinu metoda, u najirem smislu, one


obuhvataju:
1.uoavanje (identifikaciju) problema,
2.definisanje (formulisanje) ciljeva rjeenja,
3.definisanje sistema koji omoguuje ostvarivanje
definisanih ciljeva,
4.analizu definisanog sistema (studije izvodljivosti
tehnike i ekonomske),
5.projektovanje novog sistema,
6.uvoenje i eksploataciju projektovanog sistema.

Algoritmi
Algoritam predstavlja niz uputstava koje tano
odreuju redoslijed operacija koje e dovesti do
rjeenja za ma koji problem datog tipa.

ta je algoritam?
Abu Ja'far Mohammed
ibn Musa al Khowarizmi
roen u mjestu Khwarizm,
danas Khiva, Uzbekistan,
oko 780. g.
umro u Bagdadu, oko 850
godine.
jedan od 10 najcjenjenijih
matematiara svih vremena

ta je algoritam?
potie koritenje Hindu-arapskih brojeva (pogreno
smatranih arapskim izumom - vee zasluge imaju Indijci),
uvodi nulu
oko 825 godine napisao knjigu o vjetini raunanja pomou
etiri osnovne operacije: Hidab al-jabr w'al-muqubala

(Nauka o prenoenju i ponitenju)


jabr (JAH-ber) - prenoenje na suprotnu stranu jednaine
x - 2 = 12 x = 12 + 2
muqubala (moo-KAH-ba-lah) - ponitenje jednakih izraza s
lijeve i desne strane jednaine
x+y=y+7x=7
al-jabr -> algebra
Nematematiki (maursko porijeklo):
algebrista namjeta kostiju

ta je algoritam?
Vjerovao da se bilo koji matematiki problem moe ralaniti na
korake, tj. niz pravila.
U latinskom prevodu knjige (12. vijek) ispred svakog pravila pie
Dixit Algorizmi - rekao je Al Kowarzimi

algoritam glasi
U poetku algoritmom se nazivaju samo pravila raunanja s
brojevima, kasnije i pravila obavljanja ostalih zadataka u matematici
u XX vijeku, pojavom raunara, pojam se proiruje na raunarstvo,
a zatim i na druga podruja
pravila za postizanje eljenog rezultata

Algoritam
Precizno opisan nain rjeenja nekog problema
Jednoznano odreuje ta treba napraviti
Moraju biti definisani poetni objekti koji pripadaju nekoj
klasi objekata na kojima se obavljaju operacije
Kao ishod algoritma pojave se zavrni objekt(i) ili rezultat(i).
Konani broj koraka; svaki korak opisan instrukcijom
Obavljanje je algoritamski proces
Upotrebljiv, ako se dobije rezultat u konanom vremenu
Primjeri za nedoputene instrukcije:
izraunaj 5/0
uveaj x za 6 ili 7

Algoritam
Algoritam mora biti djelotvoran:
U konanom vremenu moe se dobiti rezultat
koristei olovku i papir.
Primjeri:
Sabiranje cijelih brojeva je djelotvorno
Sabiranje realnih brojeva nije, jer se moe pojaviti
broj s beskonano mnogo cifri
Sa znanjem programiranja i uz razumijevanje problema
koji rjeava, student moe napisati djelotvoran
(effective) algoritam.
Mnoenje se moe svesti na ponavljanje sabiranja
djelotorno, ali nije uinkovito!

Karakteristine osobine za algoritam jesu:


1. broj operacija koje se moraju izvriti za rjeenje
konkretnog problema nije unaprijed poznat,
2. procedura odreena algoritmom je deterministiki
proces koji se moe ponavljati bilo kad i od strane
bilo koga; ona mora biti data u obliku konanog
broja instrukcija koje tano definiu operacije
koje se izvravaju u svakoj fazi procedure,
3. instrukcije koje ine algoritam definiu proceduru
koja se moe izvriti na odgovarajuem skupu
podatakai koja u svakom sluaju dovodi do
korektnog rezultata.

Vane osobine algoritma jesu:


Konanost
Algoritam se mora okonati poslije konanog broja koraka.
Definisanost
Svaki korak algoritma mora biti precizno definisan (operacije koje treba
da se izvedu moraju biti rigorozno specificirane, bez dvosmislenosti).
Ulaz
Oznaava ulazne podatke u algoritam. Za izvoenje pojedinog algoritma
moe biti potrebno vie ulaznih podataka, ali i nijedan. Ulazni podaci su
veliine iz datog skupa i predstavljaju poetne vrijednosti za poetak
izvoenja algoritma.
Izlaz
Oznaava izlazne podatke kao rezultat primjene algoritma na ulazne
podatke. Svaki algoritam posjeduje jednu ili vie izlaznih veliina.
Efikasnost
Kriteriji efikasnosti mogu biti vrijeme (raunara ili ovjeka) okonanja
algoritma, prilagoenost algoritma za realizaciju na raunaru,
jednostavnost, elegancija itd.

Tehnike prikazivanja algoritama (tokom predavanja):


Prirodni jezik (korana forma)
Dijagrami toka (Flowcharts)
Pseudo kd (Pseudo cod)
Nasi-najderman dijagrami (Nassi-Sneiderman
N/S diagrams)
Deksonovi strukturalni dijagrami (Jackson
Structured Diagrams JSD)

Prirodni jezik
Ovom tehnikom se algoritam prikazuje kao niz
brojem oznaenih koraka.
Svaki korak sadri jednu ili vie reenica prirodnog
jezika (npr. srpskog) kojim se opisuje proces
(operacija) koju u tom koraku treba izvriti.

Prirodni jezik
Jednostavan primjer:
Prikazati (na monitoru raunara) dvostruku vrijednost
broja koji je prethodno unijet u raunar (npr. pomou
tastature).

Prirodni jezik
Algoritam u prirodnom jeziku:
1. Traiti od korisnika da uz pomo tastature unese broj.
2. Uitati broj koji korisnik ukuca na tastaturi.
3. Pomnoiti uitani broj brojem 2.
4. Prikazati rezultat operacije iz koraka 3 na monitoru
raunara.

Prirodni jezik
Sekvenca se prikazuje jednostavno nizanjem koraka
jedan za drugim, pri emu svaki korak dobija redni broj u
redoslijedu kojim treba da se izvravaju.
Odluka se prikazuje opisom uslova i uputstvom na koji
korak se ide za sluaj da je uslov ispunjen, a na koji
korak kada uslov nije ispunjen. Na slian nain moemo
izvriti i selekciju iz vie moguih rezultata nekog
uslova.
Repeticija iteracija se postie tako to se izvrenje
nastavlja nekim korakom koji ima manji redni broj od
onog u kojem se postavlja uslov repeticije.

Prirodni jezik
Prednosti prirodnog jezika:
Jednostavan za uenje, jer se ionako sluimo prirodnim
jezikom.
Nedostaci prirodnog jezika:
- Koraci su predugaki jer se mora koristiti puno rijei za
njihov opis.
- Prevoenje iz prirodnog jezika u kompjuterski jezik
moe biti teko jer za razliku od prirodnih jezika,
kompjuterski (programski) jezici imaju vrlo precizno
definisanu sintaksu (gramatiku) i semantiku (znaenje).

Blok dijagrami algoritma


Blok dijagrami su grafika predstava
algoritama sa ciljem njihove specifikacije
pomou skupa grafikih simbola koji
oznaavaju pojedine operacije u algoritmu
i skupa pravila za povezivanje grafikih
simbola.

Ukratko se predstavljaju pojedini simboli


koji se najee koriste za prikazivanje
algoritama.
Treba napomenuti da postoje nacionalni
standardi za predstavljanje pojedinih
algoritamskih koraka, tj. u svijetu nije
unificirano predstavljanje algoritama.

Simbol odvijanja toka algoritma


Simbol odvijanja toka algoritma slui za oznaavanje
logikog toka odvijanja algoritma povezujui blokove
koji predstavljaju algoritamske korake.
Predstavljen je strelicama.
Normalan smjer strelica je sa lijeva na desno i odozgo
na dole.
I ostali smjerovi su dozvoljeni.
Strelice se ne smiju sjei, a ako je to neizbjeno,
koriste se konektori.

Simbol obrade
Simbol obrade se koristi za predstavljanje svih
operacija u kojima dolazi do transformacije
informacionih struktura najee aritmetikim,
logikim ili operacijama prenosa informacionog
sadraja.

A= B*
2

CA+ B

CA+B
I=I+1

Simbol ulaza/izlaza

Simbol ulaza/izlaza se koristi za predstavljanje


ulazno/izlaznih operacija koje uvode podatke u
obradu i/ili ispisuju rezultate obrade.

Uitaj
X

Uitaj
A, B, C

Simbol povezivanja (konektor)


Simbol povezivanja slui za povezivanje dijelova algoritma kada se:
za blok dijagrame koristi vie stranica te nije mogue koristiti
strelice koje ukazuju na tok odvijanja algoritma ili
dovodi do ukrtanja strelica.
Unutar konektora se upisuje oznaka (broj ili slovo) koja identifikuje
konektor. Konektori sa istom oznakom predstavljaju take u algoritmu
koje se poklapaju (moe ih biti dvije ili vie).

Poetak

XA

X X +C

X X +B

X X +D

Kraj

Simbol odluke
Simbol odluke (testa) slui za oznaavanje operacija
odluivanja ili grananja toka izvoenja algoritma, a
prema nekom kriterijumu odluivanja.
Razlikuju se dvije vrste testa:
aritmetiki i
logiki.
Kod aritmetikog testa iz bloka odluivanja postoje
dva ili tri izlaza - ilustrovano je na narednoj slici.
Dvotaka ( : ) se koristi za oznaavanje poreenja
aritmetikih izraza E1 i E2.

<

E1:E2

>

Odvojanje algoritma se nastavlja:


lijevom granom, ako je ispunjen uslov E1 > E2
desnom granom, ako je ispunjen uslov E1 < E2
donjom granom, ako je ispunjen uslov E1 = E2.

Znaci >, < i = se mogu kombinovati po dva.

Kod logikog testa iz bloka


odluivanja postoje dva izlaza (slika
desno).
Nailaskom na logiki test algoritam
se, u zavisnosti od logikog izraza
L, odvija jednom od grana:
ukoliko je logiki izraz istinit
algoritam se odvija granom
oznaenom sa DA ili
ukoliko je logiki izraz
neistinit algoritam se odvija
granom oznaenom sa NE.

DA
L

NE

Simbol podalgoritma

Simbol podalgoritma se koristi da oznai vie


algoritamskih koraka pogodno grupisanih u
cjelinu i koju nije potrebno dalje razlagati u
detalje.
Motivacija za korienje podalgoritama:
ponavljajue dijelove grupisati u
podalgoritam,
dekompozicija problema na manje.

Simbol podalgoritma

Sortiranje niza
A(i) u rastuem
redoslijedu

Simbol komentara
Simbol komentara omoguava upisivanje
komentara ili blieg opisa karakteristinih
koraka algoritma. Stavlja se pored toka
odvijanja algoritma.
Uitaj

x predstavlja
ugao

Ostali grafiki simboli slue za bliu specifikaciju algoritamskih koraka.

Korienje blok dijagrama u predstavljanju algoritma ima


sljedee prednosti:
1. olakano je praenje logikog toka odvijanja algoritma,
2. sloene algoritme je mogue dekomponovati na module
koji se povezuju i ine hijerarhijsku strukturu algoritma,
3. zbog grafike prirode simbola koji ine blok dijagram
olakana je komunikacija sa korisnicima algoritma,
4. blok dijagrami omoguavaju predstavu algoritma koja je
nezavisna u odnosu na raunar ili programski jezik koji
e se koristiti za rjeavanje algoritma,
5. korienje blok dijagrama za predstavu algoritma
omoguava da vei broj lica istovremeno radi na razvoju
dijelova (modula) jednog sloenog algoritma, odnosno da
vei broj programera programira nezavisno pojedine
dijelove algoritma.

Nedostaci dijagrama toka:


- Treba upamtiti znaenje grafikih simbola.
- Kada postoji mnogo koraka odluke i ponavljanja,
dijagram toka moe da se pretvori u vrlo zamrenu mreu
iz koje je teko sainiti valjan programski kd.

Pseudo kd
Ova tehnika je veoma slina prirodnom jeziku s tom razlikom
to se umjesto prirodnog jezika koristi neki drugi jezik (slian
prirodnom) koji ima precizniju sintaksu, koristi manji broj
unaprijed zadatih rijei, pa je time lake definisati i semantiku
(znaenje) reenica koje se formiraju u tom jeziku.
Takav jezik esto podsjea i na programske jezike, to jest on
predstavlja kompromis izmeu prirodnog i programskog jezika.
Kompromis u smislu da je dovoljno jednostavan i razumljiv za
ovjeka, a istovremeno pogodan za dalje transformisanje
algoritma u program.
Recimo takav jezik moe sadrati rijei kao to su: display (za
prikaz poruke na monitoru), read (za uitavanje podatka), kao i
simbole +,-,*,/,= za korienje u matematikim formulama itd.

Pseudo kd
Tako na prethodni primjer algoritma moe pseudo kdom
biti prikazan kako slijedi:
1. display poruka
2. read broj
3. rezultat = broj*2
4. display rezultat

Pseudo kd
Prednosti:
Jednostavan za uenje skoro kao i kod prirodnog jezika.
Laki za prevoenje u programski jezik, jer jako
podsjea na stvarne programske jezike.

Nedostaci:
- Ova tehnika se oslanja na poznavanje takozvanih
imperativnih (proceduralnih) jezika, pa za one koji se prvi
put sreu sa ovom vrstom jezika moe biti malo zbunjujue
mijea se prirodni i simboliki jezik.

Nasi-najdermanovi dijagrami (N/S dijagrami)


I kod Nasi-najdermanovih algoritama se koriste grafiki
simboli kao i kod dijagrama toka, ali se ovdje itav
algoritam stavlja u jedan jedini pravougaonik (boks).

Simboli (koraci algoritma) se izvravaju poev od prvog


simbola na vrhu boksa i nastavljaju redom do poslednjeg
na prikazanog dnu boksa. Svaki simbol sadri ili prirodnim
jezikom ili pseudokodom prikazane naredbe (procese).

Nasi-najdermanovi dijagrami (N/S dijagrami)


Postoje tri vrste simbola - za:
sekvencu,
odluku i
repeticiju

Nasi-najdermanovi dijagrami (N/S dijagrami)


Simboli su:

Naredba proces

Pravougaonik koristi se za naredbe


koje se izvravaju jedna za drugom
(sekvenca).
Kada se sve naredbe iz
pravouganika izvre algoritam se
nastavlja sljedeim N/S simbolom.

Nasi-najdermanovi dijagrami (N/S dijagrami)


Simboli su:
Simbol za odluku se sastoji od dijela
u kojem se nalazi uslov i dva
prevougaonika koji sadre
alternativne naredbe ako je uslov
ispunjen (Da) i ako nije (Ne).
Kada se izvri odgovarajua naredba
algoritam se nastavlja sljedeim N/S
simbolom.

Nasi-najdermanovi dijagrami (N/S dijagrami)


Simboli su:
Repeticija se sastoji od uslova i
naredbe (ili niza naredbi) koje se
izvravaju sve dok je uslov ispunjen
(while ciklus).
Kada uslov nije ispunjen algoritam
nastavlja rad sljedeim N/S
simbolom.

Nasi-najdermanovi dijagrami (N/S dijagrami)


Simboli su:
Repeticija za sluaj do...while
ciklusa izgleda ovako:
U ovom sluaju, za razliku od
prethodnog, Naredbe e biti izvrene
prije testiranja da li je uslov
ispunjen.
Ako jeste ponavlja se izvravanje
Naredbi, a ako nije algoritam
nastavlja rad sljedeim N/S
simbolom.

Nasi-najdermanovi dijagrami (N/S dijagrami)


Prednosti N/S dijagrama:
Grafika prezentacija algoritma olakava pronalaenje logikih
greaka u algoritmu (kao kod dijagrama toka).
Lake se prevodi u programski kd nego dijagram toka. Tri
programske strukture (sekvenca, odluka i repeticija) zastupljene su u
svim programskim jezicima.
Poto nema strelica kao kod dijagrama toka ne mogu se kreirati
zamrene strukture, ve algoritam glatko slijedi logiku rjeenja.
Nedostaci N/S dijagrama:
- Moraju se pamtiti grafiki simboli koji predstavljaju sekvencu,
odluku i repeticije.
- Oteano je umetanje novih koraka u ve sainjeni algoritam, a to
je bilo lako kod dijagrama toka (korienjem simbola za konekciju
kruga). S druge strane nastavljanje algoritma na sljedeoj strani je
jednostavno nacrtate novi boks, a stranu obiljeite brojem 2, itd.

Deksonovi strukturalni dijagrami


(Jackson Structured Diagrams) JSD dijagrami
Deksonovi dijagrami slijede ideju o podjeli problema na niz
potproblema manje sloenosti (strategija poznata kao devide and
conquer podijeli pa vladaj).

Ali oni takoe zadovoljavaju i teoremu o programskoj strukturi, to


jest JSD dijagrami imaju grafiki simbol za sve tri osnovne
komponente algoritma sekvencu, odluku i repeticiju.

Deksonovi strukturalni dijagrami


(Jackson Structured Diagrams) JSD dijagrami

Proces A
Proces B Proces C

a) Sekvenca
Ovde je proces A sloen
proces koji se sastoji od
prostih procesa B i C.
Da bi se obavio proces A
potrebno je najprije obaviti
proces B, a onda proces C.
Potprocesi se, dakle,
izvravaju slijeva udesno
jedan za drugim. Naravno
proces A je mogao biti jedan
jednostavan proces koji ne
zahtijeva dalju podjelu.

Deksonovi strukturalni dijagrami


(Jackson Structured Diagrams) JSD dijagrami

Proces A
uslov 1
o

Proces B

uslov 2
o

Proces C

b) Odluka (selekcija)
Odluka se oznaava tako to se
proces A dijeli na procese B i C,
ali uslovno, tako da se proces A
ispunjava bilo izvravanjem
procesa B (kada je uslov 1
ispunjen) bilo izvravanjem
procesa C (kada je uslov 2
ispunjen).
Uoite mali krui u gornjem
desnom uglu pravougaonika
procesa B i C. Ti se kruii
koriste da se pravougaonik
odluke razlikuje od
pravougaonika sekvence.

Deksonovi strukturalni dijagrami


(Jackson Structured Diagrams) JSD dijagrami

Proces A
uslov
*

Proces B

c) Repeticija
Repeticija iteracija je sloena
komponenta koja se izvrava
ponavljanjem nekog
procesa nula ili vie puta u
zavisnosti da li je uslov
ispunjen ili ne.

Deksonovi strukturalni dijagrami


(Jackson Structured Diagrams) JSD dijagrami
Prednosti:
Grafika prezentacija algoritma olakava pronalaenje
logikih greaka u algoritmu (kao kod dijagrama toka).
Jednostavniji grafiki simboli nego kod dijagrama toka i
N/S dijagrama.
Slijedi logiku rjeenja podjelom na potprobleme.
Nedostaci:
- Ne uoavaju se lako odluke i repeticije.
- Prevoenje u programski kd je neto sloenije mora
se voditi rauna o redoslijedu izvravanja procesa.

Davanje naziva promjenljivim


Promjenljive u algoritmu se oznaavaju
imenima koja se obino sastoje od jednog ili
vie slovnih i brojnih znakova, tako da je prvi
znak obavezno slovo.
Imena promjenljivih se biraju tako da ukazuju
na prirodu promjenljive koju predstavljaju.
Pogodno je da je duina imena to kraa i da
se nazivi promjenljivih u algoritmu i
odgovarajuem programskom jeziku
poklapaju.

Na narednoj slici predstavljen je blok dijagram algoritma


za rjeavanje problema primjenom raunara.
POCETAK

ANALIZA
PROBLEMA

RAZVOJ
ALGORITMA

PROGRAMIRANJE

REZULTATI TACNI
DA

?
NE

DA

KRAJ

GREKA U
PROGRAMU

?
NE

DA

GREKA U ALGORITMU

?
NE

Blok dijagram
algoritma za
rjeavanje problema
primjenom raunara

Postupci izrade algoritama nisu jednoznani te


zahtijevaju i kreativnost.
Inae bi ve postojali generatori algoritama.

Programiranje
Nakon analize problema i razvoja odgovarajueg
algoritma za rjeavanje problema slijedi
transformacija algoritma u raunarski program,
odnosno implementacija algoritma na raunaru.
Sutina programiranja je kodiranje (prevoenje)
algoritma (ili raunarskih metoda) na odreeni
programski jezik.
Program se moe definisati kao niz naredbi
(instrukcija) pisanih u odreenom programskom
jeziku (izvornom jeziku) koji posjeduje implicitan
ili eksplicitan redoslijed izvravanja na raunaru.

Programiranje - nauiti sintaksu nekog


proceduralnog jezika i stei osnovna intuitivna
znanja.
Nakon pisanja programa slijedi:
testiranje i
otkrivanje greaka (debagiranje
debugging):
greka u looj definiciji problema
logike greke u algoritmu
greke prilikom unosa programa.

Programski jezici i razvoj programa

Ciljevi
ta je programski jezik
Mainski jezik i asembler
Vii programski jezici
Popularni programski jezici
Razvojni ciklus programa

Programski jezici:
Programski jezik je skup naredbi za
izvravanje raunarskih zadataka.
Predstavlja skup rijei i skup pravila na
osnovu kojih se pie program.
Razvojni ciklus programa skup pravila
na kojima se zasniva razvoj softvera.

Programski jezici:

Razvoj programskih jezika


Programski jezici su podijeljeni po
generacijama
Jezici najnieg nivoa su najstariji
Postoji pet generacija programskih jezika:
Mainski jezici
Asemblerski jezici
Proceduralni jezici
Problem-orijentisani jezici
Prirodni jezici

Jezici prve generacije


Mainski jezici:
Sastoje se od binarnih
brojeva (0 i 1)
Nije potrebno prevoenje
Vezan je za konkretan
raunar (mainu)
Svaka familija procesora
ima svoj (poseban)
mainski jezik.

Jezici druge generacije


Asemblerski jezici:
Nadogradnja mainskih jezika
Nii programski jezik
Koristi kratke slovne zamjene
za programske naredbe.
Ove slovne zamjene se
nazivaju mnemonici
Program se prvo pie kao
source code (tekstualni fajl),
a potom se prevodi u mainski
jezik.

Jezici tree generacije


Proceduralni jezici:
Jezici visokog nivoa
Kreiranje programa na visokom nivou
apstrakcije
Laki za itanje, pisanje i prepravke od
mainskih i asemblerskih jezika
Koriste compiler ili interpreter za prevod
koda
Fortran i COBOL su jezici tree generacije

Kompajleri i Interpreteri

Kompajler je program koji prevodi kd


(source code) u objektni kd.
Interpreter prevodi po jednu liniju kda i
odmah je izvrava.

Jezici tree generacije (nastavak)


Spaghetti Code & the Great Software Crisis:
GOTO naredba dovela je do toga da se
program teko prati
Taj problem je doveo do tzv. softverske
krize 1960-tih godina.
Rokovi za programiranje su se probijali
Programi su probijali predvieni budet
Programi su sadrali previe greaka
Korisnici nisu bili zadovoljni

Jezici tree 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 tree 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 specifinu funkciju
za razliite ulazne vrijednosti daje razliite
izlazne vrijednosti

Jezici etvrte generacije


Jezici etvrte generacije obuhvataju:
Report generators
Jezici za formiranje (tampanje)
izvjetaja iz baze podataka
Query languages
Jezici za formiranje upita kod baza
podataka

Objektno-orijentisano programiranje
Objektno-orijentisano programiranje (OOP):
Zasniva se na mogunosti viestruke
upotrebe komponenata
Sposobnost pravljenja programskih
modula koji obavljaju specifian
zadatak.
Ukida razliku izmeu programa i podataka
Upotreba objekata koji sadre podatke i
procedure

Objekti
Objekti su jedinice informacija koji sadre
podatke kao i metode za procesiranje i rad sa
podacima
Klase objekata:
Hijerarhija ili kategorija objekata

Jezici prilagoeni upotrebi na Web-u


Markup jezici:
Hypertext markup language (HTML)
postavlja atribute teksta i objekata na Web
strani
Extensible markup language (XML) se
koristi za razmjenu objekata u Web okruenju
Scripting jezici:
VBScript se koriste za pisanje kratkih
programa (script) koji su dio Web strana
JavaScript

Razvojni ciklus programa


Plansko rjeavanje problema programiranja i
podjela na znaajne cjeline
est faza:
1. Definisanje problema
2. Dizajniranje programa
3. Pisanje koda (Coding)
4. Testiranje i debagovanje
5. Formalizovanje rjeenja
6. Implementacija i praenje rada programa

Faza 1: Definisanje problema


Prvi korak
Sistem analitiari formiraju zahtjeve i
dostavljaju programeru
Zahtjevi:
Ulazni podaci
Obrada
Izlaz
Korisniki 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 funkcionie
Definisanje algoritma: objanjenje korak po korak
kako rijeiti problem
Alati za dizajniranje programa:
Sistemski dijagram toka grafiki prikaz glavne
faze obrade i razliite izvore podataka.
Programski dijagram toka grafiki prikaz logike
problema

Sistemski i programski dijagram toka

Sistemski dijagram toka

Programski dijagram toka

Faza 3: Pisanje kda


Preslikavanje algoritma u specifine
programske naredbe

Odabiranje programskog jezika i pisanje


programa u skladu sa sintaksnim pravilima

Faza 4: Testiranje i otklanjanje greaka


(Debugging)
Greke nastale usljed pogrenog logikog
pristupa ili pri unosu teksta se nazivaju
bagovima (bug, bugs).
Proces traenja i ispravljanja tih greaka se
naziva debagovanje (debugging).
Proces otklanjanja greaka i testiranje
programa po pravilu oduzima vrijeme vee
od onoga koje je bilo potrebno za samo
programiranje.

Faza 4: Testiranje i otklanjanje greaka


(Debugging)
Testiranje najee obuhvata obradu ulaznih
podataka za koje program treba da d unaprijed
poznati izlaz. Test podaci treba da ukljue:
Tipine podatke, koji e se esto koristiti
Podatke koji se rijetko koriste, ali je mogue
da e se koristiti
Pogrene ulazne podatke, kako bi provjerili
da e ih program korektno prepoznati i kako
e se ponaati.

Faza 5: Formalizacija rjeenja


Formiranje dokumentacije
Definicija problema. Namjena i mogunosti
programa, autor(i) i naruioc 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 korieni pri testiranju i
rezultati testa
Uputstvo za instaliranje i odravanje
Uputstvo za operatera

Faza 6: Implementacija i odravanje


programa
Program se isporuuje korisniku.
Ako program treba da zamijeni program
sline namjene koji se ve koristi, esto se u
jednom periodu koriste oba programa radi
dodatne verifikacije novog rjeenja.
Mogue je da se nakon ovog perioda javi
potreba za modifikacijom rjeenja

Algoritamske promjenljive
Algoritamske promjenljive se oznaavaju imenima
koja se obino sastoje od jednog ili vie slovnih i
brojnih znakova.
Prvi znak je slovo.
Imena promjenljivih se biraju tako da ukazuju na
prirodu promjenljive koju predstavljaju.
Preporuuje se da se imena promjenljivih u
algoritmu i u odgovarajuem programu poklapaju jer
je na taj nain olakano odravanje programa.

Algoritamske promjenljive
Primjer: Algoritam nalaenja sume i razlike dva broja
Ulazni podaci
Prvi broj
Drugi broj

Imena promjenljivih
A
B

Lista ulaznih promjenljivih i njihovih naziva


Rezultati
Suma
Razlika

Imena promjenljivih
SUMA
RAZ

Lista izlaznih promjenljivih i njihovih naziva

Algoritamske promjenljive
POETAK

Primjer:

Algoritam nalaenja
sume i razlike dva broja

Ulaz:
A, B

SUMAA+B
RAZA-B

Izlaz:
A, B, SUMA, RAZ

KRAJ

Osnovne algoritamske strukture


Rjeavanje razliitih realnih problema dovodi do
razliitih vie ili manje sloenih algoritama.

Razlikuju se:
Linijska struktura /tok obrade iskljuivo odozgo na dole/
Struktura sa grananjem /algoritam sadri simbol odluke

u algoritmu se nalazi dvije ili vie algebarskih grana/


Ciklina struktura /izvravanje se vraa na prethodno

ve izvrene algoritamske korake/


Struktura sa podalgoritmima

Linijska algoritamska struktura


POETAK

Postoji samo jedna grana


izvravanja.
Svaki algoritamski korak se
izvrava samo jednom.
U praksi se rijetko susreu,
jer se pomou njih mogu
rijeiti samo elementarni
zadaci.

ULAZ
A, B

SUMA A+B
RAZ A - B

IZLAZ
A, B, SUMA,
RAZ

KRAJ

Primjer

Linijska algoritamska struktura


Primjer
:Sastaviti algoritam koji e promjenljivima A i
B zamijeniti vrijednosti.
esto se koristi u sloenijim problemima (npr.
kod sortiranja niza brojeva).

Samostalno sastaviti algoritam!

Linijska algoritamska struktura


Primjer
Ako
: u algoritmu, nakon uitavanja ulaznih
vrijednosti za A i B napiemo u bloku obrade AB,
ta e se desiti?
Prethodna vrijednost promjenljive A bie izgubljena.
Analogno: Ako u algoritmu, nakon uitavanja
ulaznih vrijednosti za A i B napiemo u bloku obrade
BA, prethodna vrijednost primjenljive B bie
izgubljena.
Kako rijeiti problem?

Linijska algoritamska struktura


Potrebna je pomona
promjenljiva iji je zadatak
da privremeno sauva
vrijednost jedne od
promjenljivih.

POETAK

Ulaz:
A, B
POMA
AB
BPOM

Primjer: A=5, B=9


Izlaz:
A, B

Algoritam za zamjenu
vrijednosti dva broja

KRAJ

Linijska algoritamska struktura


Isti problem se moe rijeiti
i pomou podalgoritma
PA ZAMJENA (A, B)

POMA
AB
BPOM

POVRATAK

Algoritam za zamjenu vrijednosti


dva broja sa podalgoritmom

POETAK

Ulaz:
X, Y

ZAMJENA (X,Y)

Izlaz:
X, Y

KRAJ

Struktura sa grananjem
Strukture sa granjanjem (razgranate algebarske
strukture) pojavljuju se uvijek kada algoritam sadri
simbol odluke.
U zavisnosti od vrste simbola odluke i od broja
simbola odluke algoritam moe da sadri dvije ili
vie grana.
Prilikom izvravanja algoritma nailaskom na simbol
odluke vri se ispitivanje uslova postavljenih u
simbolu odluke.
Izvoenje algoritma se nastavlja samo jednom od
grana, a kojom to zavisi od uslova postavljenih u
simbolu odluke.

Struktura sa grananjem
Utvrivanje maksimalne ili minimalne vrijednosti je
jedan od problema koji se pojavljuju u kvantitativnim
metodama i posljedino u odluivanju.
Problem se moe rijeiti na vie naina.
Problem nalaenja maksimuma i minimuma se svodi
na utvrivanje koji je od dva broja vei (manji).
Algoritam kojim se utvruje vei od brojeva
prikazan je na narednoj slici.

Struktura sa grananjem
POETAK
Ulaz:
A, B
DA

A>B

MAXA

NE

MAXB
Izlaz:
A, B, MAX
KRAJ

Algoritam za
odreivanje veeg broja

Struktura sa grananjem
Isti problem se moe rijeiti
i pomou podalgoritma

Ulaz:
A, B

PA MAKS (A, B)
A>B

POETAK

NE
MAKS (A,B)

DA
ZAMJENA (A, B)

Izlaz:
A

POVRATAK
Algoritam sa podalgoritmom za odreivanje
veeg broja

KRAJ

Struktura sa grananjem
Algoritamske strukture mogu da sadre proizvoljan
broj simbola odluke i veliki broj grana.
Takve strukture e biti prikazane na primjeru
utvrivanja najvee vrijednosti za tri data broja.
Klasian pristup problema sastoji se u poreenju
svakog broja sa svakim.

To znai potrebna su tri simbola odluke.


Slijedi prikaz jednog od moguih rjeenja.

Struktura sa
grananjem

POETAK
Ulaz:
A, B, C

DA

NE

A>B

DA
MAXA

A>C

Algoritam za odreivanje
maksimuma tri broja
klasino rjeenje

NE

DA

MAXC

MAXB

Izlaz:
A, B, C, MAX

KRAJ

B>C

NE
MAXC

Struktura sa
grananjem
Prvi od brojeva se
proglasi najveim

POETAK

Algoritam za odreivanje
maksimuma tri broja
sekvencijalno odluivanje

Ulaz:
A, B, C

MAXA

DA

B>MAX
Zatim se kroz dva
poreenja utvrdi
koji broj je zaista
vei

NE
C>MAX

MAXB

DA

NE
Izlaz:
A, B, C, MAX

KRAJ

MAXC

Struktura sa grananjem
Trei pristup je uzastopno
povezivanje ve realizovanog
podalgoritma za utvrivanje
veeg od dva broja.

POETAK
Ulaz:
A, B, C

MAKS (A, B)

U podalgoritmu e se
najvea vrijednost dodijeliti
prvoj od promjenljivih.

MAKS (A, C)

Izlaz:
A

KRAJ

Petlja (ciklina struktura)


Cikline algoritamske strukture su prirodni
nastavak razgranatih algebarskih struktura.
Cikline algoritamske strukture omoguavaju
da se na jednostavan nain rijee sloeni
problemi, u okviru kojih se zahtijeva da se
viestruko ponovi ista sekvenca obrade na
istim ili razliitim podacima.
Cikline algoritamske strukture se esto
nazivaju petlje.

Petlja (ciklina struktura)


Cikline algoritamske strukture mogu biti:
- proste i
- sloene.

Pod prostim ciklinim strukturama podrazumijeva


se algoritam koji sadri samo jedan ciklus.
Sloene cikline strukture sadre vei broj ciklusa
koji su na razliite naine ugraeni u cijeli algoritam.

Proste cikline strukture


U svakoj ciklinoj strukturi uoavaju se tri dijela:
- poetak ciklusa,
- tijelo ciklusa i
- kraj ciklusa.
Poetak ciklusa ine pripremni simboli u kojima se
promjenljivima dodjeljuju inicijalne vrijednosti.
Tijelo ciklusa ine simboli koji se tokom izvravanja
algoritma ponavljaju.
Kraj ciklusa je simbol odluke u kome se donosi
odluka da li e se tijelo ciklusa izvesti jo jednom ili
e se okonati sa ciklusom.

Proste cikline strukture


Proste cikline strukture mogu biti:

- sa unaprijed odreenim brojem ponavljanja tijela


ciklusa i

- sa promjenljivim brojem ponavljanja tijela ciklusa.

Proste cikline strukture


I=A, B, C

U prvom prolazu promjenljiva uzima


poetnu vrijednost (u primjeru A)
U svakom sljedeem prolazu promjenljiva
uveava svoju vrijednost za vrijednost
koraka (u primjeru C)
Ako je vrijednost koraka pozitivna, petlja se
zavrava kada promjenljiva uzme vrijednost
veu od krajnje vrijednosti, a ako je
vrijednost koraka negativna, petlja se
zavrava kada promjenljiva uzme vrijednost
manju od krajnje vrijednosti.

Proste cikline strukture sa unaprijed


odreenim brojem ponavljanja tijela ciklusa

Proste cikline strukture


Postoje problemi koji se ne mogu rijeiti pomou
konstantnog broja ponavljanja tijela ciklusa, jer broj
ponavljanja nije unaprijed poznat.

Npr. problemi traenja maksimuma, minimuma ili


nula nelinearnih funkcija, itd. rjeavaju se iterativnim
postupcima kojima se dobija priblino rjeenje koje
je svakim korakom (iteracijom) sve blie tanom
rjeenju.

Proste cikline strukture


S obzirom da je potrebno beskonano mnogo koraka
da bi dobili tano rjeenje, prihvatamo priblino
rjeenje koje zadovoljava unaprijed odreenu
vrijednost.
Takvi algoritmi sadre simbol odluke u kome se
ispituje ispunjenost uslova.
Razlikuju se dvije vrste ciklinih struktura sa
promjenljivim brojem ponavljanja tijela ciklusa:
Do Until i

Do While.

Proste cikline strukture


Algoritamski koraci sadrani u
tijelu petlje obavezno se izvravaju
bar jednom.
Ako postavljeni uslov u simbolu
odluke nije ispunjen, algoritamski
koraci iz tijela petlje e se ponovo
izvravati.

NE

USLOV
DA

Ovom strukturom se rjeavaju


problemi kod kojih se moe
definisati cilj (uslov zavretka) koji
treba da bude dostignut.

Cikline algoritamske strukture tipa Do Until

Proste cikline strukture


NE
USLOV
DA

Algoritamski koraci sadrani u tijelu


petlje mogu da se i ne izvre.
Prije ulaska u tijelo petlje ispituje se
uslov postavljen u simbolu odluke. Ako
uslov nije ispunjen algoritamski koraci
sadrani u tijelu petlje se preskau. Ako
je uslov ispunjen algoritamski koraci
sadrani u tijelu petlje se izvravaju, pa
se ponovo vri ispitivanje uslova

Ovom strukturom se rjeavaju problemi


kod kojih se moe definisati uslov
izvravanja algoritamskih koraka iz tijela
petlje.

Cikline algoritamske strukture tipa Do While

Proste cikline strukture


Odreivanje maksimuma niza brojeva je tipian
primjer primjene prostih ciklinih struktura.

Rjeenje je u uvoenju indeks pokazatelja, odnosno


indeksa.
lanovima niza pridruuje se niz promjenljivih sa
realnim brojem kao indeksom, npr.: A1, A2, A3, ...,
AN.
Indeks je veliina koja se mijenja, tj. K=1,2, ..., N.
Na taj nain u algoritmu dobijemo indeksirane
promjenljive.

Proste cikline strukture


Indeksirana promjenljiva je konaan skup
promjenljivih sa istim simbolikim nazivom i
razliitim indeksom.
Indeksna promjenljiva moe imati:
samo jednu dimenziju i tada se naziva
jednodimenziona matrica, vektor ili niz;
dvije dimenzije i tada se naziva matrica;
vie dimenzija i tada se naziva viedimenziona
matrica.

Proste cikline strukture


Uitavanje niza podataka realizuje se pomou proste
cikline algoritamske strukture.
Dio algoritma je predstavljen na slici koja slijedi:
I=1,N

Ulaz:
A(I)

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

Uitavanje niza

Proste cikline strukture

POETAK

Ulaz:
N

Za odreivanje
maksimuma niza
brojeva najbolje je u
algoritmu iskoristiti ve
realizovan podalgoritam
za utvrivanje veeg od
dva broja.

Algoritam za odreivanje
maksimuma niza brojeva

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

MAXA(1)
I=2,N
MAKS(MAX;A(I))

Izaz:
MAX
KRAJ

Petlja (ciklina struktura)


POETAK

Suma niza:

ULAZ
N, A

Niz:
A = {a1, a2, a3, ..., aN}
= {ai}, i = 1, ..., N

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

I=1
SUMA = 0

=
SUMA = SUMA + A(i)

I=I+1

NE
I>N

DA

IZLAZ
SUMA

KRAJ

Petlja (ciklina struktura)


POETAK

Primjer:
ULAZ
N,M

n!
n

i i!(n i )!

I= 0
BIN = 1

n ni n


i 1 i 1 i

n
1
0

n
n
1

=
BIN = (N-I)/(I+1)*BIN

IZLAZ
N, M, BIN

I=I+1

<=
I:M

>

KRAJ

Sloene cikline strukture


U praksi se najee susreu sloene cikline
strukture, ak i kada se radi o jednostavnim
problemima, kao to je mnoenje matrica ili
sortiranje niza.
Kod sloenih ciklinih struktura algoritam se sastoji
od dva ili vie ciklusa.
Ako su ciklusi nezavisni, dijelovi takvog algoritma su
proste cikline strukture.
Ako neki ciklus obuhvata jedan ili vie ciklusa
govorimo o ugnijedenim ciklinim strukturama.

Sloene cikline strukture

Ilustracija nekih sloenih algoritamskih struktura

Sloene cikline strukture


U svim ilustrovanim primjerima uoava se
spoljanji i unutranji ciklus.

Broj izvravanja algoritamskih simbola u


unutranjem ciklusu jednak je proizvodu broja
izvravanja tog ciklusa i brojeva izvravanja
svih ciklusa koji ga obuhvataju.
Kod ciklinih struktura nije dozvoljeno
preklapanje tokova obrade, tj. uskakanje u
tijelo ciklusa (to je ve ilustrovano).

Sloene cikline strukture


Klasini primjer ugnijedenih
ciklinih struktura je
sortiranje niza podataka.

POETAK
Ulaz:
N, A(I),I=1,N

I=1, N-1
J=I+1,N
MAKS(A(I),A(J))

Ugnijedene cikline
strukture klasino sortiranje

Izaz:
A(I), I=1,N
KRAJ

Sortiranje lanova niza


4

for i=1:3
for j=i+1:4
if a(i)>a(j)
temp=a(i)
a(i)=a(j)
a(j)=temp
end
end
end

Sloene cikline strukture


Rjeavanje realnih problema uglavnom dovodi do
sloenih algoritamskih struktura.
Uvedene su odreene discipline u pisanju
algoritama i programa.
Modularna organizacija algoritama i strukturirano
programiranje su osnovni preduslovi za dobijanje
pouzdanih rjeenja.

Sloene cikline strukture


Modularna organizacija algoritama podrazumijeva
da se sloeni problemi rastave na vie manjih
problema (modula).
Strukturirani moduli imaju jedan ulaz i jedan izlaz.
Svaki modul se moe pripremiti nezavisno od
ostalih modula i kasnije jednostavnim mehanizmima
povezati u cjelinu.

Sloene cikline strukture

MODUL A

MODUL B
MODUL C

Modularna organizacija rjeavanja sloenih problema

Struktura sa podalgoritmima
Veza izmeu algoritma i podalgoritma lista
ulazno-izlaznih parametara
stvarna lista parametara parametri koji se
prosljeuju 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
POETAK

ULAZ
N, A

POETAK

A = {ai}, i = 1, ..., N
N - br. el. niza

I= 1
SUMA = 0

=
SUMA = SUMA + X(i)

SABIR(A, N, REZ)

I=I+1

IZLAZ
REZ
NE
I>M

DA

KRAJ

POVRATAK

SABIR(X, M, SUMA)
X = {xi}, i = 1, ..., M
M - br. el.
SUMA - suma niza

Algoritam: Izraunavanje srednje vrijednosti temperatura

ALGORITAM SrednjaTemperatura
ULAZ: TEMP - niz realnih brojeva gde je TEMP[i] temperatura
izmjerena na i-tom mjernom mjestu
N - broj mjesta na kojima su oitavane temperature, N > 0
IZLAZ: SR_TEMP - realni broj, srednja vrijednost
izmjerenih temperatura
LOKALNE: i - cio broj, indeks mjernog mjesta (temperature)
SUMA - realni broj, suma izmjerenih temperatura
1. Prihvat N.
2. IF N 0 THEN idi na 1. korak ELSE idi na 3. korak.
3. Prihvat izmjerenih vrijednosti temperature u TEMP.
4. SUMA 0.
5. FOR i 1 TO N DO SUMA SUMA + TEMP[i] .
6. SR_TEMP SUMA / N.
7. Kraj.

Prvi korak prihvata vrijednost za N koja se u


drugom koraku provjerava prema ogranienju.
Ako se ispostavi da je vrijednost N negativna
ili nula, ponavlja se korak 1, u suprotnom tok
algoritma se nastavlja korakom broj 3.

Ovo rjeenje nije najbolje iskoristilo semantiku


if then else selekcije jer se zapravo radi o samo
jednoj putanji koja je alternativna normalnom
toku algoritma.

Korektnije rjeenje drugog koraka bilo bi:

2. IF N 0 THEN idi na 1. korak


Izostavljena je else putanja koja se poklapa sa
normalnim tokom algoritma (za pozitivnu vrijednost
promjenljive N, algoritam e svakako nastaviti sa
korakom 3).

Trei korak obezbjeuje prihvat svih izmjerenih


vrijednosti temperature u TEMP promjenljivu.
Viedimenzionalna priroda promjenljive TEMP
diktira prihvat vrijednosti za svaki element TEMPi,
to e detaljno biti prikazano kroz naredni primjer.

Peti korak realizuje sumiranje elemenata niza


pomou FOR iteracije, to se u matematici
oznaava simbolom sume ().
esti korak realizuje dijeljenje sume iz
prethodnog koraka brojem elemenata niza ime
se dobija srednja vrijednost temperature.
U etvrtom koraku se postavlja SUMA na nulu.
Ovaj korak je zahtijevan tijelom FOR iteracije
petog koraka, a prema prethodno navedenom
pravilu o inicijalizaciji vrijednosti promjenljive.

Ako bi se etvrti korak izostavio, javio bi se problem


pri prvom prolazu kroz FOR iteraciju kada indeks i
ima vrijednost jedan, a u SUMA bi trebalo smjestiti
zbir prve izmjerene temperature i trenutnu vrijednost
promjenljive SUMA koja u tom trenutku nije
definisana.
Iz tog razloga, uveden je etvrti korak koji
inicijalizuje promjenljivu SUMA na vrijednost koja
je neutralna za operaciju gdje se ova promjenljiva
javlja kao jedan od operanada, tj. kao nula, jer je ona
neutralni element za operaciju sabiranja.
Tako, pri prvom prolazu kroz FOR iteraciju se u
promjenljivu SUMA smjeta zbir prve temperature i
nule.

Algoritam: Izraunavanje minimalne vrijednosti temperature

Pronalaenje minimalne (ali i maksimalne)


vrijednosti unutar nekog skupa (niza) vrijednosti
temperatura je proces koji se svodi na poreenje
vrijednosti svake izmjerene temperature (TEMP[i])
sa trenutno minimalnom vrijednou (promjenljiva
min).
Ako je vrijednost (TEMP[i]) manja od vrijednosti
min, onda se za vrijednost min usvaja vrijednost
(TEMP[i]) i nastavlja se poreenje nove vrijednosti
min sa (TEMP[i+1]).

Slino prethodnom algoritmu, postoji problem


inicijalizacije promjenljive min prije poreenja sa
TEMP[i].
Inicijalizacija vrijednosti promjenljive min bi trebala biti
vea od najmanje izmjerene vrijednosti temperature kako
bi bilo mogue sprovesti opisani postupak, ali minimalna
vrijednost izmjerenih temperatura je nepoznata ona se
tek treba odrediti.
Postavlja se pitanje: Koliku vrijednost odabrati, imajui
u vidu opte karakteristike oblasti primjene algoritma?
(atmosferska temperatura, temperatura u eliani i sl.)

Bilo bi dobro rjeenje usvajanje neke


konkretne vrijednosti iz niza TEMP kao
minimalne vrijednosti promjenljive min, npr.
TEMP[1], jer se tako dobija najefikasniji
algoritam poto se moe izostaviti poreenje
sa prvim elementom.
Pri tome se pretpostavlja da ima vie od jedne
izmjerene vrijednosti temperature, N>0.

Algoritam MinimalnaTemperatura
ULAZ: TEMP - niz ralnih brojeva gdje je TEMP[i]
temperatura izmjerena na i-tom mjernom mjestu
N-broj mjesta na kojima su oitavane temper., N>0

IZLAZ: min realni broj, minimalna vrijednost temperature


LOKALNE: i cio broj, indeks za kretanje kroz niz TEMP
1. REPEAT prihvat N UNTIL N >0.
2. FOR i=1 TO N DO prihvat TEMP[i].
3. min TEMP[1].
4. FOR i 2 TO N DO IF TEMP[i]<min THEN minTEMP[i].

5. Kraj.

Prvi korak obezbjeuje prihvat korektne vrijednosti


broja mjesta na kojima se mjerila vrijednost
temperature, promjenljiva N, unutar iteracije sa
izlaskom na dnu (najmanje jedno prihvatanje
vrijednosti ili vie puta ako se unese pogrena
vrijednost).
Drugi korak definie kako e viedimenzionalna
promjenljiva prihvatati vrijednosti za svoje elemente.
Kako je TEMP niz, dovoljna je jedna iteracija za
prihvat vrijednosti svakog elementa niza. Iskoritena
je FOR iteracija jer se promjenljiva po kojoj je
organizovana, i, koristi i kao indeks elementa niza
kome se dodjeljuje vrijednost.

etvrti korak se sastoji od jedne FOR iteracije u


ijem tijelu se nalazi jedna IF selekcija (ugnijedena
IF selekcija u FOR iteraciji).
U ovom koraku se prolazi kroz sve elemente niza
TEMP traei minimalnu vrijednost koja se uva u
promjenljivoj min, pri emu je ova promjenljiva
inicijalizovana u koraku 3.
Neophodno je naglastiti da ugnijeena struktura mora
poeti i zavriti unutar tijela spoljne strukture pri
emu ne smije doi do njihovog preklapanja.

struktura 1

struktura 1

kraj strukture 1

kraj strukture 1

struktura 2

struktura 2

struktura 2.1
struktura 2.1.1

kraj strukture 2.1.1


struktura 2.1.2

struktura 2.1
struktura 2.1.1
struktura 2.1.2
kraj strukture 2.1.1

kraj strukture 2.1.2


kraj strukture 2.1
struktura 2.2

kraj strukture 2.2


kraj strukture 2

Dobro strukturiranje

kraj strukture 2.1.2


kraj strukture 2.1
struktura 2.2

kraj strukture 2.2


kraj strukture 2

Loe strukturiranje

Podalgoritam i rekurzija
Za detaljnu specifikaciju modula koristi se
hijerarhijska struktura algoritama u kojoj se razlikuje
jedan glavni algoritam i skup njegovih
podalgoritama.
Podalgoritam je algoritam koji rjeava jedan aspekt
problema i biva angaovan (pokrenut, pozvan) od
strane glavnog algoritma ili drugog podalgoritma.

Podalgoritam1
Glavni algoritam
naredba A1
naredba A2
podalgoritam 1
naredba A4
naredba A5
podalgoritam 2
naredba A7
kraj

naredba B1
naredba B2
naredba B3
povratak

Podalgoritam2

Podalgoritam3

naredba C1
naredba C2
podalgoritam 3

naredba D1
naredba D2
naredba D3

naredba C4
povratak

naredba D4
povratak

Glavni algoritam i njegovi podalgoritmi

Parametri podalgoritama mogu se klasifikovati


prema mjestu njihovog definisanja na:
Formalne parametre navode se pri definisanju
podalgoritma kako bi se formalizovale ulazne i
izlazne vrijednosti u formi naziva (identifikatora) i
tipova internih promjenljivih podalgoritma. Formalni
parametri su istovremeno i lokalne promjenljive
podalgoritma. Ove promjenljive prihvataju ulazne,
odnosno formiraju izlazne vrijednosti. Ovaj tip
parametara obezbjeuje masovnost algoritama.

Parametri podalgoritama mogu se klasifikovati


prema mjestu njihovog definisanja na:
Stvarne parametre navode se pri pozivanju
podalgoritma u superordiniranom algoritmu i oni
sadre konkretne vrijednosti koje e podalgoritam
prihvatiti (poslati) preko svojih formalnih
parametara. Za stvarne ulazne parametre se mogu
postaviti promjenljive, izrazi i konstante
superordiniranog algoritma, dok se za stvarne
izlazne parametre mogu postaviti samo
promjenljive superordiniranog algoritma.

Razmotriemo razmjenu navedenih tipova parametara.

Broj, tip i redoslijed navoenja stvarnih parametara


mora biti identian kao kod formalnih parametara pri
emu se njihovi identifikatori ne moraju poklapati. To
je dozvoljeno injenicom da superordinirani
algoritam nema pristupa interijeru podalgoritma i
obrnuto. Prije prenosa upravljanja sa
superordiniranog algoritma na podalgoritam, vri se
prenos stvarnih parametara i dodjeljivanje njihovih
vrijednosti formalnim parametrima podalgoritma po
redoslijedu njihovog navoenja (prvo se prenosi prvo
navedeni parametar, pa drugi, trei itd.).

Po prenosu svih parametara, prenosi se upravljanje


na podalgoritam koji sada moe otpoeti izvravanje
svojih operacija jer raspolae svim ulaznim
vrijednostima koje se nalaze u odgovarajuim
formalnim parametrima.
Obrnuti proces se deava na zavretku podalgoritma
prilikom vraanja upravljanja superordiniranom
algoritmu.

Prema smjeru prenosa vrijednosti, razlikuju se tri


tipa parametara:
1. Ulazni parametri nose u sebi ulazne vrijednosti
za dati podalgoritam. Na narednoj slici ulazni
parametri su navedeni odmah do strelica koje
oznaavaju prenos upravljanja ka pozvanom
podalgoritmu (ul1A, ul1B, ...)

Podalgoritam1
ul1A, ul1B,...

Glavni algoritam

naredba B1
naredba B2
naredba B3
povratak

naredba A1
naredba A2
podalgoritam 1
naredba A4
Podalgoritam2 Podalgoritam3
naredba A5 ul2A, ul2B,...
naredba C1 ul3A, ul3B,...
naredba D1
podalgoritam 2
naredba C2
naredba D2
naredba A7
podalgoritam 3
naredba D3
kraj

naredba C4
povratak

naredba D4
povratak

Glavni algoritam i njegovi podalgoritmi

Mehanizam prenosa ulaznih parametara ine koraci:


1. Superordinirani algoritam pri pozivu podalgoritma, a
prije transfera upravljanja, postavlja konkretne (stvarne)
vrijednosti na mjesta ulaznih stvarnih parametara.
2. Pozvani podalgoritam preuzima stvarne vrijednosti koje
su proslijeene i prihvata ih kao vrijednosti
odgovarajuih formalnih ulaznih parametara kada postaje
mogue izvravanje odreenih operacija nad njima u
tijelu podalgoritma.
Vano je istai da operacije podalgoritma mogu trajno
promijeniti vrijednosti koje su dobijene kao ulazni
parametri, pri emu te izmjene nisu vidljive van interijera
pozvanog algoritma.

Prema smjeru prenosa vrijednosti, razlikuju se tri


tipa parametara:
2. Izlazni parametri nose u sebi izlazne vrijednosti
datog podalgoritma, rezultate njegovog izvravanja.
Na narednoj slici izlazni parametri su navedeni
odmah do strelica koje iznaavaju prenos upravljanja
ka superordiniranom algoritmu (izl1A, izl1B, ...)

Podalgoritam1
naredba B1
naredba B2
naredba B3
povratak

Glavni algoritam
naredba A1
naredba A2
podalgoritam 1
naredba A4
naredba A5
podalgoritam 2
naredba A7
kraj

izl1A, izl1B,...

izl2A, izl2B,...

Podalgoritam2

Podalgoritam3

naredba C1
naredba C2
podalgoritam 3

naredba D1
naredba D2
naredba D3

naredba C4
povratak

naredba D4
povratak

izl3A, izl3B,...

Glavni algoritam i njegovi podalgoritmi

Mehanizam prenosa izlaznih parametara ine koraci:


1. Pozvani podalgoritam pri kraju svog izvravanja, a prije
transfera upravljanja, postavlja konkretne (stvarne)
vrijednosti na mjesta izlaznih formalnih parametara.
2. Superordinirani algoritam prihvata vrijednosti koje su
proslijeene kao izlazni parametri pozvanog
podalgoritma i dalje manipuliu njima kao vrijednostima
svojih internih promjenljivih koje su imale ulogu
stvarnih parametara.

Podalgoritam mora imati barem jedan izlazni


parametar jer u suprotnom ne bi imao sredstvo da
iskae rezultat svoga rada.

Prema smjeru prenosa vrijednosti, razlikuju se tri


tipa parametara:
3. Ulazno-izlazni parametri nose u sebi vrijednosti
koje za dati podalgoritam imaju ulogu i ulaznih i
izlaznih vrijednosti. Npr. Podalgoritam za sortiranje
elemenata niza po nekom kriterijumu ima parametar
niz koji je ulazno/izlaznog tipa jer pri pokretanju
podalgoritma on prenosi elemente niza na sortiranje,
dok na kraju rada podalgoritma vraa niz sortiranih
elemenata superordiniranom algoritmu
(podalgoritmu).

Mehanizam prenosa ulazno/izlaznih parametara ine


koraci:
1. Superordinirani algoritam pri pozivu podalgoritma, a prije
transfera upravljanja, uspostavlja vezu izmeu odreenih
internih promjenljivih koje sadre konkretne (stvarne)
vrijednosti sa ulazno/izlaznim stvarnim parametrima
2. Pozvani podalgoritam preuzima dobijene veze sa stvarnim
parametrima kako bi bio u mogunosti da pomou svojih
formalnih parametara pristupa vrijednostima interijera
superordiniranog algoritma. Na ovaj nain, pozvani
podalgoritam je snabdijeven ulaznim vrijednostima nad kojima
moe da izvri odreene operacije. Zahvaljujui
uspostavljenim vezama, svaka izmjena vrijednosti formalnih
ulazno/izlaznih parametara nainjena unutar pozvanog
podalgoritma bie vidljiva superordiniranom algoritmu i po
zavretku rada pozvanog algoritma.

Mehanizam prenosa ulazno/izlaznih parametara ine


koraci:
3. Kada se upravljanje vrati superordiniranom algoritmu, on u
odreenim stvarnim parametrima ima one vrijednosti koje je
postavio pozivani podalgoritam.

Algoritam: SrednjaIMinimalnaTemperatura
ULAZ: TEMP - niz ralnih brojeva gdje je TEMP[i]
temperatura izmjerena na i-tom mjernom mjestu
N-broj mjesta na kojima su oitavane temper., N>0
SREDTEMP-realni broj, srednja vrijednost temperat.
MINTEMP-realni broj, minim. vrijednost temperat.

1. Podalgoritam UnosNiza(TEMP,N,100).
2. Podalgoritam SrednjaVrijednostNiza(TEMP,N,SREDTEMP).
3. Podalgoritam MinimalnaVrijednostNiza(TEMP,N,MINTEMP).
4. Prikai korisniku SREDTEMP, MINTEMP.

5. Kraj.

Postoji posebna klasa podalgoritama koji su samo


sebi i superordinirani i subordinirani rekurzivni
podalgoritmi.
Rekurzivan podalgoritam poziva sam sebe sa
razliitim vrijednostima ulaznih parametara potreban
broj puta.
Mehanizam rekurzije se esto koristi i u matematici
prilikom definisanja raznih matematikih entiteta
kao to je faktorijel.
Samopozivanje rekurzivnog algoritma mora biti
uslovljeno.

Rekurzivni podalgoritmi su omoguili


rjeavanje nekih problema pomou raunara
koji su do tada bili ili nerjeivi ili rjeivi uz
velike napore.

Rekurzivni podalgoritmi se sastoje iz tri dijela:


Dio koji se izvrava u dubinu ine operacije
podalgoritma koje se izvravaju prije poziva
samog sebe. Ovaj dio se jedini izvrava tokom
jednog poziva rekurzivnog podalgoritma.
Uslovljeni poziv omoguava samopozivanje
rekurzivnog podalgoritma ako je ispunjen
postavljeni uslov. Uslov mora konvergirati
neispunjenosti kako bi se obezbijedio
zavretak rekurzivnog izvravanja. U
suprotnom dobila bi se beskonana rekurzija.

Rekurzivni podalgoritmi se sastoje iz tri dijela:


Dio koji se izvrava ka povrini ine
operacije koje se izvravaju poslije operacije
poziva samog sebe. Ovaj dio e se prvi put
izvriti unutar posljednjeg poziva rekurzivnog
podalgoritma i nastaviti izvravati ka
prethodnim pozivima sve do prvog poziva.

Rekurzivni podalgoritam ne mora sadravati


prvi, odnosno posljednji dio, ali mora
sadravati uslovljeni poziv.
Veoma je vano obezbijediti promjene
vrijednosti promjenljivih koje formiraju uslov
pozivanja da poslije odreenog broja pozivanja
uslov postane neispunjen.
Primjer: Konverzija dekadnog broja

Algoritam: KonverzijaDekadnogUBinarni
LOKALNE: N-cio broj, dekadni broj koji treba
konvertovati, N0
1. REPEAT Prihvat od korisnika broja N UNTIL N 0
2. Podalgoritam KonvertujDekadniBroj(N,2).

3. Kraj.

Podalgoritam: KonvertujDekadniBroj(broj,baza)
ULAZ: broj cio broj, dekadni broj koji treba konvertovati
baza cio broj, baza odredinog brojnog sistema,
baza>0
Lokalne: kolinik cio broj, kolinik cjelobrojnog dijeljenja
ostatak cio broj, ostatak cjelobrojnog dijeljenja
1. kolinik kolinik od (broj/baza).

2. IF kolinik > 0 THEN Podalgoritam


KonvertujDekadniBroj(kolinik,baza).

3. ostatakostatak od (broj/baza).
4. Prikai korisniku ostatak.
5. Povratak.

Matlab

Postoje dvije klase softverskih paketa za


rjeavanje matematikih problema:
programi zasnovani na simbolikom
rjeavanju i
programi zasnovani na numerikom
rjeavanju problema.
Tipian predstavnik prve klase programa je
Mathematica, a druge MATLAB.

MATLAB je dostupan u vie verzija koje su


prilagoene razliitim raunarskim platformama
od PC i Macintosh raunara, preko UNIX radnih
stanica do Cray raunara.
Predstavlja najee korien paket u svojoj oblasti.
Verzije MATLAB-a za razliite raunarske sisteme
se razlikuju donekle samo po korisnikom interfejsu
sve komande se jednako izvravaju na svim
platformama.
Ovdje e biti ukratko prikazan MATLAB u verziji
za Windows operativne sisteme.

Primjena MATLAB-a u rjeavanju


inenjerskih problema

MATLAB je moderan, multifunkcionalan


programski sistem koji je u prvom redu
namijenjen rjeavanju problema u tehnici.
MATLAB prua korisniku mogunost da
numeriki i logiki obradi podatke pomou
mnotva raspoloivih programskih jedinica, da
vizuelno prikae podatke i da proiri
funkcionalne mogunosti kreiranjem i
izvravanjem sopstvenih programa

Npr. Na veoma jednostavan nain, znatno bre


nego u drugim programskim jezicima,
rjeavamo tehnike probleme koji su
formulisani u matrinom obliku.
Sr MATLAB-a ine numerika linearna
algebra i matrini raun otuda i naziv
MATLAB-a (MATrix LABoratory).

MATLAB je i kreiran radi unapreenja


postojeeg softvera za matrine proraune.

U dananje vrijeme MATLAB je veoma


opsean sistem koji obuhvata i mnoge druge
numerike postupke, npr.: odreivanje nula
polinoma, numeriko rjeavanje poetnih
problema kod obinih diferencijalnih
jednaina itd.
Mnogobrojne grafike mogunosti
omoguavaju korisniku da formira dvo- i
trodimenzionalne kolor grafike kako na
ekranu, tako i na tampau ili na ploteru.

Iz MATLAB-a se mogu aktivirati programi na


jezicima FORTRAN i C, tj. omogueno je
korienje ve postojeih programa za
rjeavanje odreenih problema, ime se znatno
moe ubrzati rjeavanje zadataka u tehnici.
MATLAB sadri itav niz dodatnih modula
(tzv. toolbox-ova) koji su namijenjeni
razliitim oblastima primjene, kao npr.:
- Statika i dinamika konstrukcija u graevinarstvu,
- Statistika,
- Obrada slika,
- Simbolika matematika (Kompjuterska algebra),
- Kontrolni sistemi itd.

MATLAB je sistem koji se nalazi u


neprekidnom razvoju kome doprinose
mnogobrojni stvaraoci u svijetu.
Na mnogim univerzitetima MATLAB je
usvojen kao standardno sredstvo u okviru
kurseva iz oblasti matematike, inenjerstva i
nauke, a u industriji MATLAB se koristi kao
sredstvo u istraivanjima iji je cilj dalji razvoj
proizvodnje.

Osnovno okruenje MATLAB-a predstavlja


tekstualni prozor u kome se zadaju MATLAB
komande.
Komande se izvravaju neposredno nakon unosa.
Poseban simbol () predstavlja MATLAB prompt.
Pored toga, mogue je pisati i programe u
programskom jeziku kojeg nudi MATLAB.
Sam MATLAB programski jezik je nalik drugim
proceduralnim jezicima, izuzimajui njegovu
prilagoenost radu sa matricama.

MATLAB kao interaktivan sistem


Aritmetike operacije i promjenljive

Matlab moemo koristiti slino kao depni kalkulator;


ako poslije Matlab-ovog pokazivaa u komandnom
prozoru otkucamo matematike izraze.
Matlab e uraditi navedene raunarske operacije.
Unoenje sadraja jednog reda zavravamo pritiskom
na taster Enter.
O pravilima po kojima se izvravaju aritmetike
operacije detaljno emo govoriti kasnije.

Slijede neki osnovni elementi interaktivnog rada kod


korienja sistema MATLAB.

Aritmetika operacija

Aritmetiki operator

Sabiranje

Oduzimanje

Mnoenje

Dijeljenje

Stepenovanje

Kod izraza sa vie


uzastopnih operacija
stepenovanja, realizacija
se odvija s lijeva u desno.

2 ^3 ^2 = (23)2
ans =
64

Komandni prozor MATLAB-a


Nakon pokretanja Matlab-a, pojavljuje se
komandni prozor koji je sada aktivni prozor.
U njemu je omoguena komunikacija sa
Matlab programskim prevodiocem (engl.
interpreter).

Program daje znak kojim oznaava da je


spreman da prihvati komande od korisnika.

Pokretanje MATLAB-a
ili

Opisi funkcija tastera ili kombinacija tastera


koji omoguavaju ureivanje komandne linije:
Taster
, Ctrl+P
, Ctrl+N
, Ctrl+B
, Ctrl+F
Ctrl+
Ctrl+

Funkcija
Pozivanje prethodne linije
Pozivanje naredne linije
Pomjeranje kursora ulijevo za jedan znak
Pomjeranje kursora udesno za jedan znak
Pomjeranje kursora ulijevo za jednu rije
Pomjeranje kursora udesno za jednu rije

Home, Ctrl+A Pomjeranje kursora na poetak komandne linije


End, Ctrl+E
Esc
Del, Ctrl+D
Backspace
Ctrl+K

Pomjeranje kursora na kraj komandne linije


Brisanje komandne linije
Brisanje znaka na mjestu kursora
Brisanje znaka lijevo od kursora
Brisanje sadraja komandne linije do kraja

Uvod u rad
Osnovni element sa kojim manipulie
MATLAB je pravougaona numerika matrica
iji elementi mogu biti i kompleksni brojevi.
Specijalni sluajevi pravougaone matrice su
matrice tipa 1x1 koje predstavljaju skalare, dok
su vektori matrice sa samo jednom vrstom ili
kolonom.

Unoenje podataka
Matrice se u MATLAB mogu unositi na
nekoliko naina:
direktnim unoenjem elemenata,
generisanjem pomou funkcija ili izraza
ugraenih u MATLAB,
definisanjem u M datoteci,
prenoenjem iz spoljne datoteke sa
podacima.

Kada su u pitanju matrice malih dimenzija


najpogodniji je prvi nain.

Elementi jedne vrste se upisuju jedan za


drugim, meusobno razdvojeni praznim
mjestom ili zapetom.
Kraj svake vrste matrice oznaava se
znakom ; (taka zapeta).
Matrica se mora ograniiti uglastim
zagradama [].

Definisanje promenljivih
Promenljive se definiu tako to im se dodijeli
vrijednost. Naziv promenljive je niz slova i cifara
koji mora poeti slovom, pri emu se velika i mala
slova razlikuju.
Slijedi primjer definicije matrice dimenzije 3 x 3:
A = [1 2 3; 4 5 6; 7 8 9]
A=
123
456
789

Matricu A je mogue definisati i na drugi


nain:

A = [1 2 3
456
7 8 9]
A=
123
456
789

Vektor-vrsta se definie kao u sljedeem


primjeru:

x = [-1.3 sqrt(3.1) (1+2)/4*5]


x=
-1.300 1.7607 3.7500
Slino kao u prethodnom primjeru sa
matricom definie se i vektor-kolona.
Elemente matrice je neophodno odvojiti bar
jednim white space karakterom.

Prilikom definisanja vrijednosti promenljivih


posebno je koristan operator dvotaka (:).
Ovaj operator je namijenjen za definisanje vektora
iji se elementi dobijaju inkrementiranjem poetne
vrijednosti za konstantan korak.
Slijedi primjer:

x = 1:4
x=
1234

Mogue je navesti i korak razliit od 1, kao u


sljedeem primjeru:

y = 1:0.5:3
y=
1.0000 1.5000 2.0000 2.5000 3.0000

Operator dvotaka se moe koristiti i za dodjelu


vrijednosti matrici, ali samo u sluaju da je matrica
bila prethodno definisana (tj. poznate joj dimenzije).
Sljedei primjer ilustruje ovu mogunost.
A = [1 2 3; 4 5 6; 7 8 9];
A(:) = 21:29
A=
21 24 27
22 25 28
23 26 29
Ukoliko matrica A prethodno nije bila definisana,
rezultat bi bio vektor kolona.

MATLAB automatski dodjeljuje vrijednost


posljednjeg izraunatog izraza promenljivoj ans.
Tako se moe dobiti i vrijednost izraza koji nisu
dodijeljeni kao vrijednost nijednoj promjenljivoj.
Slijedi primjer:
sqrt (2)
ans =
1.4142

Selekcija elemenata matrice


Elementima matrice pristupa se preko njihovog indeksa.
Osim pojedinanih elemenata matrice, mogue je izdvojiti
vrstu, kolonu ili bilo koju podmatricu.
Za matricu definisanu izrazom:
A = [1 2 3; 4 5 6; 7 8 9];
element A(2,2) bi bio:

A(2,2)
ans =
5

Selekcija elemenata matrice


Izdvajanje tree kolone matrice A vri se
izrazom:
A(:, 3)
ans =
3
6
9

Selekcija elemenata matrice


Podmatrica koja predstavlja presjek prve i tree
vrste i druge i tree kolone matrice A dobija se
izrazom:

A([1 3], [2 3])


ans =
23
89

Selekcija elemenata matrice


Prethodni rezultat se moe dobiti i izrazom:
A([1 3], 2:3)

ili izrazom:
A(1:2:3, 2:3)

U izrazima za selekciju elemenata matrice mogue je koristiti


i prethodno definisane vektore promenljive. U MATLAB-u
je mogue promijeniti i dimenzije matrice.
Na primjer, izraz
A = [A; 10 11 12]
A=
1 2 3
4 5 6
7 8 9
10 11 12
e proiriti matricu A novom vrstom.

Ukoliko se matrica proiruje novim


elementima, a ne definiu se vrijednosti svih
novih elemenata, za njihove vrijednosti se
uzima nula. Na primjer:
x = 1 : 4;
x(6) = 7
x=
123407

Osnovne operacije sa matricama


Transponovanje
A = [1 2 3; 4 5 6; 7 8 9];
B = A
B=
147
258
369

Vektori
Ve je reeno da matrice sa jednim stupcem ili
jedim retkom zovemo vektori.
Vektori se u Matlab unose na sljedei nain:

>>a=[2 5 6] (ili a=[2,5,6])


a=
256

Vektori
>>b=[5;2;1]
b=

5
2
1

Vektori
ta dobijemo za a' i b'.

>>a'
ans= 2
5
6
>>b'

ans= 5 2 1

Sabiranje
C=A+B
C=
2 6 10
6 10 14
10 14 18

Sabiranje matrice i skalara


Prilikom sabiranja matrice sa skalarom, svaki
element matrice se sabira sa datim skalarom.
Sabiranje matrice sa skalarom je komutativno.

C=C2
C=
0 4 8
4 8 12
8 12 16

Sabiranje vektora sa skalarom:


>>a+2

ans=
478
>>b-1
ans=
4
1
0

Mnoenje matrica
Operator * obuhvata i mnoenje matrice i
vektora, mnoenje dva vektora i mnoenje
matrice ili vektora skalarom.
Naredni primjeri ilustruju ove mogunosti
MATLAB-a.

x
=
[1
2
3];
D=A*B

E
=
D*x
D=
E
=
14 32 50
228
32 77 122
552
50 122 194
876

Mnoenje matrica
y = [4 5 6];
x*y
ans =
4 5 6
8 10 12
12 15 18

y*x
ans =
32
y*2
ans =
8 10 12

>>a*3

>>b*-2
ans=
-10
-4
-2

ans=
6 15 18

Osnovne operacije nad dva vektora su mogue


samo ukoliko su istog oblika:
>>a+b
??? Error using ==> +
Matrix dimensions must agree.
>>a+b'

ans =
777

>>a'+b
ans =
7
7
7

Pored ovoga, MATLAB posjeduje operatore / i \ koji su


namijenjeni za mnoenje matrice inverzijom druge matrice.
Pri tome izraz A\B predstavlja mnoenje A-1*B, a izraz A/B
predstavlja mnoenje A*B-1.
Iz ovoga slijedi da se sistem linearnih jednaina Ax = b u
MATLAB-u moe relativno jednostavno rijeiti, kao u
sljedeem primjeru:
A = [10 2 6; 1 10 9; 2 -7 -10];
b = [28 7 -17];
x = A\b
x=
1.0000
-3.0000
4.0000

U sluaju da je matrica sistema singularna, ili bliska


singularnoj, MATLAB e ispisati upozorenje:
A = [1 2 3; 4 5 6; 7 8 9];
b = [10 4 2];
x = A\b
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 2.937385e-018
x=
1.0e+016 *
1.2609
-2.5218
1.2609

Operacije sa elementima matrice ili vektora


Elementi dvije matrice ili vektora se mogu pomnoiti
po principu element sa elementom, pomou
operatora .* . Pri tome dimenzije matrica ili vektora
koji se mnoe moraju biti jednake.
Slijedi primjer:
x = [1 2 3];
y = [4 5 6];
x .* y
ans =
4 10 18

Operacije sa elementima matrice ili vektora


Analogno prethodnom postoje i operatori ./ i .\ koji
predstavljaju dijeljenje sa desna, odnosno sa lijeva.
Sljedei primjer ilustruje upotrebu ovih operatora:
x ./ y
ans =
0.2500 0.4000 0.5000
x .\ y
ans =
4.0000 2.5000 2.0000

Stepenovanje
Ako je A kvadratna matrica i x cio broj, tada izraz
A^x predstavlja x-ti matrini stepen od A. Ukoliko je
x realan broj, tada je A^x = V*D.^x/V, gdje operator
.^ predstavlja stepenovanje matrica element po
element, V je matrica desnih sopstvenih vektora, a D
dijagonalna matrica sopstvenih vrijednosti.
Slijedi primjer:
A = [1 2 3; 4 5 6; 7 8 9]
A^2
ans =
30 36 42
66 81 96
102 126 150

A .^ 2
ans =
1 4 9
16 25 36
49 64 81

Matlab tipovi podataka


Informacioni objekti (objekti sa podacima)
koje obraujemo pomou raunara sadre u
sebi razliite tipove podataka.

Meutim, svaki objekat uvijek se moe


posmatrati kao spoj dva dijela: spoljanjeg i
unutranjeg.

Spoljanji dio objekta sastoji se iz jednog ili


veeg broja pokazatelja (imena,
identifikatora,..., oznaka).
To je ono to programer "vidi" od cijelog
objekta, tj. ono emu moe direktno da pristupi
i da ga koristi (na primjer: navodei ime
objekta u nekom programu).

Unutranji dio objekta jeste prikaz podataka koji


objekat ine unutar raunara; taj prikaz ostaje
skriven za korisnika.
Unutranji dio objekta ine jedna ili vie
vrijednosti i jedan ili vie pokazatelja poloaja tih
vrijednosti.

Ovi pokazatelji sadre informacije o tome gdje se


vrijednosti nalaze u memoriji raunara tokom rada
programa, tj. ti pokazatelji definiu vezu izmeu
imena i vrijednosti, kako je ematski pokazano na
narednoj slici.

IME

POKAZATELJ
POLOAJA
VRIJEDNOSTI

Spoljanji dio objekta


(u programu)

Unutranji dio objekta


(u raunaru)

VRIJEDNOSTI

Dijelovi objekata sa podacima

Razlikovanje izmeu pojmova spoljanjeg i


unutranjeg dijela objekta neophodno je ve
zbog toga to je unutranji prikaz objekta u
raunaru binaran i kao takav najee razliit
od spoljanjeg prikaza tog objekta.
U literaturi iz oblasti MATLAB-a termin
promjenljiva koristi se uopte za objekte,
ije vrijednosti mogu da se mijenjaju u toku
rada programa.

Drugim rijeima, promjenljive su objekti (tj.


skupovi vrijednosti) u kojima svaka vrijednost
moe da se mijenja.
Dakle, terminom promjenljiva obuhvaene su kako
tzv. skalarne promjenljive, tako i skupovi
vrijednosti ili polja (nizovi).
Meutim, mi emo esto koristiti i termin objekat
sa podacima.
MATLAB funkcionie tako da i skalarnu
promenljivu tretira kao matricu 1x1, dakle, kao
polje.

Na taj nain 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 odreujemo proizvode
brojeva a i b i proizvod matrica A i B imaju
analogne oblike: a*b i A*B, tj. operacija
mnoenja u oba sluaja oznaava se sa *.

Dakle, kako promenljiva znai polje tj. niz


(na primjer, to moe da bude jednodimenzioni
niz ili matrica), to je ime te promenljive
adresa cijelog niza.
Meutim, svaki lan (ili komponenta) niza ili
pojedini dijelovi tog niza (podskupovi cijelog
niza) takoe imaju svoja imena, koja se
konstruiu od imena promenljive i specijalnih
izraza za selekciju koji slijede poslije tog
imena, to omoguava da se pristupi tim
dijelovima niza.

POJAM TIPA PODATKA


Interni objekti prikazuju se u memoriji u binarnom
obliku. U mainskim i asemblerskim jezicima objekti
se posmatraju i sa njima se manipulie jedino na
ovom najniem nivou; jedini objekti sa kojima se
radi na mainskom nivou jesu brojevi i znaci.

Ovo znai da se inenjerski problemi veoma teko


mogu rjeavati korienjem ovih jezika, jer se
praktino radi samo o binarnim objektima i zahtijeva
se detaljno poznavanje rada raunara.

U viim programskim jezicima, kod kojih


korisnici i stvaraoci programa ne moraju da se
uputaju u detaljno sagledavanje rada
raunara, na raspolaganju stoji odreen broj
tipova podataka.
Za svaki objekt sa podacima deklarie se tip
podataka koje objekt sadri.
Taj tip se kod veine programskih jezika (kao,
na primjer, kod FORTRAN-a ) ne moe
mijenjati u toku rada programa.

Meutim, u MATLAB-u vai koncept tzv.


implicitnog deklarisanja tipa podatka.

Prilikom dodjeljivanja jedne vrijednosti


promjenljivoj implicitno se utvruje tip te
promenljive.
Kada se promjenljivoj odreenog tipa
dodijeli jedna vrijednost drugog tipa, tip
promjenljive e dinamiki biti promijenjen,
tj. postae isti kao tip vrijednosti koja je u
pitanju.

Na primjer, u jednu istu promjenljivu


moemo prvo smjestiti skalar, poslije toga
vektor, a zatim npr. jednu tekstualnu
konstantu.
Dakle, moemo konstatovati da se odreena
promjenljiva MATLAB-a uvodi prilikom
prvog unoenja 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


slue ze prikazivanje brojeva, teksta ili logikih
vrijednosti (istinito ili lano). Tip podataka jednog
objekta odreuje interni prikaz i nain interpretacije
tog prikaza.
Tip podatka karakterie se sljedeim svojstvima:
(1) imenom za identifikaciju tog tipa;
(2) opsegom vrijednosti;
(3) notacijom za prikazivanje konstanti tog tipa, ovo
znai da nain pisanja konstante jednoznano
odreuje kog je tipa ta konstanta;
(4) skupom operacija i relacija za objekte tog tipa.

NIZOVI (POLJA)
Skup pojedinanih vrijednosti sa istim tipom
podatka nazivamo niz.
Moemo rei da niz ima isti tip kao elementi niza.
Pojedinani element niza identifikuje se pomou
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, ..., i2max
Ukupan broj lanova niza A iznosi i1max x i2max
, a to je drugim rijeima ukupan broj moguih
razliitih kombinacija I i J. lanove
dvodimenzionog niza shvatamo kao elemente
matrice, gdje prvi indeks oznaava redni broj

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 mogunost korienja i takvih
tipova podatka koje korisnik sam uvodi.

Od sutinskog znaaja u MATLAB-u su samo dva


stalna tipa: double i char, zato to se svi prorauni
unutar raunara izvravaju u dvostrukoj tanosti i zato
to se svi tekstualni podaci smjetaju u promjenljive
tipa char.
Tipovi numerikih podataka int8, uint8, int16, iunt16,
int32, uint32 i single jedino slue za ekonomiko
skladitenje numerikih objekata u memoriji, tj. sa
ovim podacima nisu mogue bilo kakve matematike
operacije.
Tip sparse slui za kompaktno memorisanje i efikasno
obraivanje matrica sa malim brojem elemenata
razliitih od nule (tzv. "praznih" il "rijetkih" matrica).

TIP PODATAKA double


Tip podataka double slui za memorisanje
numerikih nizova (ili skalara, koji se u
MATLAB-u takoe tretiraju kao nizovi).
Elementi ovih nizova mogu da budu realni ili
kompleksni brojevi (znai 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 strunoj 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 ( 1 )

(Umjesto i moemo da piemo j.)

Brojevi koji odreuju konstantu mogu se prikazati na dva


naina.
Prvi nain ispisivanja broja odgovara uobiajenom
prikazu dekadnih brojeva; ovdje piemo dva niza
dekadnih cifara koji su razdvojeni decimalnom takom, s
tim to se jedan od tih nizova moe ispustiti, ako
cjelobrojnog (ili razlomljenog) dijela broja nema.
Znak broja u sluaju kada je broj pozitivan
moemo da izostavimo.
Primjeri:
-123.45, .51, +139.

Kod drugog oblika prikazivanja, poslije


decimalnog broja, u kome su date znaajne 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 sljedee konstante:

Inf (ili Inf) kao simbol za ,


NaN (ili nan) kao simbol za "not a number"
(ovo znai "nije broj"), ime se karakteriu
izrazi 0/0, / i slino.

LOGIKE PROMENLJIVE
U MATLAB-u ne postoji osnovni tip podatka za
logike vrijednosti (tj. tip podatka za - memorisanje
logikih vrijednosti istinito i lano). Logike
vrijednosti simuliraju se ipak uz pomo tipa double.
Promjenljiva tipa double, koja tokom rada programa
uzima jedino vrijednosti 0 i 1, u MATLAB-u se
interpretira kao logika promjenljiva. Numerika
vrijednost 1 oznaava vrijednost istinitog iskaza, a
numerika vrijednost 0 lanog iskaza.

Iako za memorisanje logike vrijednosti ne


posjeduje sopstveni tip podataka MATLAB
pravi razliku izmeu numerikih i logikih
objekata sa tipom double; jedan numeriki
niz sa vrijednostima 0 i 1, prije nego to e
moi biti primijenjen kao logiki objekat,
mora da bude konvertovan naredbom logical.

TIPOVI PODATAKA ZA EFIKASNO


MEMORISANJE

Tipovi podataka int8, uint8, int16, uint16,


int32 i uint32 slue u prvom redu za efikasno,
tj. ekonomino iskorienje memorije
prilikom registrovanja cijelih brojeva.
Slino tome, tip podataka single slui za
memorisanje mjeovitih brojeva u obinoj
tanosti.

U sljedeoj tabeli daju se podaci koji se tiu


registrovanja cijelih brojeva u memoriji:
Tip podatka

Broj bitova

Vrijednosti koje se registruju

int8

-128 (-27),-127,...,127(27-1)

uint8

int16

16

-32768(-215), -32767, ..., 32767(2l5- 1)

uint16

16

0, 1, ..., 65535(216-1)

int32

32

-2147483648 (-231), ..., 2147483647 (23I-1)

uint32

32

0, 1, ..., 4294967295 (232-1)

0, 1, ...

255(28-1)

Definisanje promenljvih koje imaju jedan od


gore navedenih sedam tipova moe se
ostvariti iskljuivo pomou konverzije
promjenljivih u dvostrukoj tanosti i to
primjenom jedne od naredbi:
int8, uint8, int16, uint16, int32, uint32, single
Da bi se podatak sa jednim od ovih tipova
mogao koristiti u nekom proraunu, potrebno
je da prethodno opet bude konvertovan u tip
double - to se postie naredbom double.

TIP PODATAKA sparse


Tip podataka sparse slui za racionalno
memorisanje matrica sa malo elemenata razliitih
od nule (tzv. "rijetke" matrice). Kod rada sa ovim
matricama MATLAB primjenjuje naroito
optimizovane algoritme.
Meutim, naroiti nain memorisanja matrice, ne
utie na neke naredbe koje se u proraunu mogu
primjenjivati na ove matrice jer se te naredbe
potpuno isto primjenjuju kao pri radu sa "potpuno
popunjenim" matricama.

TIP PODATAKA char


Tip podataka char slui za memorisanje nizova iji
elementi sadre tekstualne podatke, tj. nizove
ASCII-znakova.
Niz znakova koji predstavlja tekstualni podatak
uvijek je ogranien apostrofima ('), tj. crticama koje
se piu kao gornji indeks. Meutim, ako apostrof
treba da bude znak koji e pripadati samom tekstu,
onda se taj znak pie udvojeno, tj. piu se dva
uzastopna apostrofa. MATLAB ta dva apostrofa
tretira kao jedan apostrof u tekstu.

Vektori i matrice, iji lanovi imaju tekstualni


sadraj definiu se u MATLAB-u slino kao i
numeriki vektori i matrice, unoenjem vrijednosti
izmeu uglastih zagrada. Vrijednosti su u ovom
sluaju tekstualne konstante, tj. nizovi karaktera
napisani izmeu apostrofa.
txtvek= ['DJORDJE ' ; 'MARINA' ; 'MARKO']

txtvek =
DJORDJE
MARINA
MARKO

TIP PODATAKA cell - NIZOVI TIPA cell


Objekat iji je tip podatka cell (koristi se i
termin cell array - to bi se moglo doslovno
prevesti kao "niz elija") slian je entitetu
koga nazivamo niz brojeva, ali je ovde rije
o nizu objekata (matrica, vektora, itd.).
Pored toga, objekat sa tipom cell moe da
bude skup komponenti sa razliitim
sadrajima (numerikim, tekstualnim, itd.).

MATLAB - linije

vvcell={[24.

kom mtari

9. 79.] 'MARINA'

2.5}

- Formiran je vektorvrsta-vvcell tipa

vvcell =

cell koga ine jedan

[1x3 double] 'MARINA' [2.5000]

numeriki vektorvrsta sa tri elementa.

vvcell(l)

jedan element tipa

ans =

char i jedan skalar.


Vidimo odgovor

[1x3 double]

MATLAB-a na

vvcell(1).

TIP PODATAKA struct - OBJEKTI TIPA


structure
U MATLAB-u se koristi pojam structure koji se
odnosi na skupove podataka koji se sastoje od
odreenog broja komponenti.
Za razliku od nizova, ove komponente mogu imati
razliit tip podatka i za razliku od nizova tipa cell,
ove komponente imaju jednoznano simboliko
ime.
Svaka komponenta poziva se iskljuivo preko svog
imena.

Komponente jedne strukture (tj. objekta tipa


structure) mogu da budu objekti tipa cell, ili da
budu matrice ili drugi objekti tipa structure.
U MATLAB-u vai koncept dinamikih struktura
to znai da se oblik objekata tipa structure nikada
ne definie eksplicitno. Dodjeljivanjem sadraja
pojedinim komponentama strukture, koje u
trenutku dodjeljivanja ne postoje, formiraju se
nove komponente objekta.

Jasno je da objekti tipa struct slue da bi se objekti


sa razliitim tipovima objedinili i da bi zatim
postojala mogunost da se svi tako sabrani podaci
mogu navesti pod imenom objekta tipa struct.
Meutim, postoji mogunost i da se manipulie sa
pojedinim komponentama objekta; ovakav nain
pristupa podacima naziva se selekcija.
U sluaju da jedna struktura kao komponente ima
druge strukture, selekcija moe da se protegne na
vie nivoa. Detaljnije objanjenje o radu sa
strukturama daemo kroz primjere.

Sutinsko svojstvo ovih objekata je u obliku


imena komponenti, koji u optem sluaju
izgleda ovako:
ime_objekta.ime_komponente
Ovo znai da ovdje ne postoje bilo kakvi
indeksi, kao kod nizova (kako obinih tako i
nizova tipa cell).

MATLAB - 1 nije

komentari

krug.radijus=5

- Ovdje su definisane tri komponente

krug =

strukture sa imenom krug:


krug.radijus je skalar,

radijus: 5

krug.centar je vektor-vrsta,
krug.boja je promenljiva tipa

krug.centar=[1. 0.5]

char. Odgovori MATLAB-a na

krug =

pojedine komande kojima se

definiu komponente strukture krug


radijus: 5

sadre prikaz svih komponenti koje

centar: [1 0.5000]

trenutno postoje.

krug.boja='plavo'
krug =
radijus: 5
centar: [1 0.5000]
boja: 'plavo'

MATLAB - 1 nije

komentari

krug.radijus=10

-Promijenjena je vrijednost

krug =

komponente strukture krug.

radijus: 10
centar: [1 0.5000]
boja: 'plavo'
krug.centar

-Pozivanje jedne komponente

ans =

strukture krug. Formiranje vektorvrsta ans.

1.0000

0.5000

krug.centar(l)

-Ovdje vidimo da je mogue

ans =

pojedinano navoenje elemenata

neke komponente ako je ta


l
krug.centar (1,2)
ans =
0.5000

komponenta matrica.

You might also like