Post on 01-Jun-2018
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
1/238
ALGORITMI
Rješavanje problema prim jenom računara
Rješavanje problema prim jenom računara prolazi
kroz tri faze: analiza problema;
razvoj algoritma za rješavanje problema;
transformacija algoritma u računarski program(programiranje).
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
2/238
Analiza problema
Analiza problema je najkritičnija faza u rješavanju
problema.Cilj ove faze je da pruži preciznu definiciju i opis problema, specifikaciju ulaznih podataka,
specifikaciju izlaznih podataka (rezultate koji seočekuju), kao i postupak da se do takvih rezultatadođe. Problemi koji se mogu jednostavno izrazitimatematičkim jezikom mogu se i precizno definisatii opisati pri rješavanju na računaru. Za klasunematematičkih problema to nije tačno. Za fazuanalize problema postoji više različitih, manje ili
više formalizovanih, postupaka.
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
3/238
Ne ulazeći u suštinu metoda, u najširem smislu, oneobuhvataju:
1.uočavanje (identifikaciju) problema, 2.definisanje (formulisanje) ciljeva rješenja, 3.definisanje sistema koji omogućuje ostvarivanje
definisanih ciljeva,
4.analizu definisanog sistema (studije izvodljivosti – tehničke i ekonomske),
5.projektovanje novog sistema,
6.uvođenje i eksploataciju projektovanog sistema.
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
4/238
Algoritmi
Algoritam predstavlja niz uputstava koje tačnoodređuju redoslijed operacija koje će dovesti dorješenja za ma koji problem datog tipa.
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
5/238
Šta je algoritam?
• Abu Ja'far Mohammedibn Musa al Khowarizmi
• rođen u mjestu Khwarizm,danas Khiva, Uzbekistan,
oko 780. g.
• umro u Bagdadu, oko 850
godine.• jedan od 10 najcjenjenijih
matematičara svih vremena
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
6/238
Šta je algoritam?
• potiče korištenje Hindu-arapskih brojeva (pogrešnosmatranih arapskim izumom - veće zasluge imaju Indijci),uvodi nulu
• oko 825 godine napisao knjigu o vještini računanja pomoćučetiri osnovne operacije: Hidab al-jabr w'al-muqubala
(Nauka o prenošenju i poništenju) jabr (JAH-ber) - prenošenje na suprotnu stranu jednačine
x - 2 = 12 x = 12 + 2
muqubala (moo-KAH-ba-lah) - poništenje jednakih izraza slijeve i desne strane jednačine
x + y = y + 7 x = 7al-jabr -> algebra
Nematematički (maursko porijeklo):algebrista namještač kostiju
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
7/238
Šta je algoritam?
• Vjerovao da se bilo koji matematički problem može raščlaniti nakorake, tj. niz pravila.
• U latinskom prevodu knjige (12. vijek) ispred svakog pravila piše
– Dixit Algorizmi - rekao je Al Kowarzimi
algoritam glasi
• U početku algoritmom se nazivaju samo pravila računanja s
brojevima, kasnije i pravila obavljanja ostalih zadataka u matematici• u XX vijeku, pojavom računara, pojam se proširuje na računarstvo,
a zatim i na druga područja
• pravila za postizanje željenog rezultata
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
8/238
Algoritam
• Precizno opisan način rješenja nekog problema
• Jednoznačno određuje šta treba napraviti• Moraju biti definisani početni objekti koji pripadaju nekoj
klasi objekata na kojima se obavljaju operacije
• Kao ishod algoritma pojave se završni objekt(i) ili rezultat(i).
• Konačni broj koraka; svaki korak opisan instrukcijom• Obavljanje je algoritamski proces• Upotrebljiv, ako se dobije rezultat u konačnom vremenu
• Primjeri za nedopuštene instrukcije: – izračunaj 5/0 – uvećaj x za 6 ili 7
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
9/238
Algoritam
• Algoritam mora biti djelotvoran:
– U konačnom vremenu može se dobiti rezultatkoristeći olovku i papir.
• Primjeri:
– Sabiranje cijelih brojeva je djelotvorno – Sabiranje realnih brojeva – nije, jer se može pojaviti broj s beskonačno mnogo cifri
• Sa znanjem programiranja i uz razumijevanje problema
koji rješava, student može napisati djelotvoran (effective) algoritam.
• Množenje se može svesti na ponavljanje sabiranja – djelotorno, ali nije učinkovito!
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
10/238
Karakteristične osobine za algoritam jesu:1. broj operacija koje se moraju izvršiti za rješenje
konkretnog problema nije unaprijed poznat,2. procedura određena algoritmom je deterministički proces koji se može ponavljati bilo kad i od strane bilo koga; ona mora biti data u obliku konačnog
broja instrukcija koje tačno definišu operacijekoje se izvršavaju u svakoj fazi procedure,
3. instrukcije koje čine algoritam definišu proceduru
koja se može izvršiti na odgovarajućem skupu podatakai koja u svakom slučaju dovodi dokorektnog rezultata.
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
11/238
Važne osobine algoritma jesu: Konačnost
Algoritam se mora okončati poslije konačnog broja koraka.
Definisanost Svaki korak algoritma mora biti precizno definisan (operacije koje treba
da se izvedu moraju biti rigorozno specificirane, bez dvosmislenosti).
Ulaz
Označava ulazne podatke u algoritam. Za izvođenje pojedinog algoritma
može biti potrebno više ulaznih podataka, ali i nijedan. Ulazni podaci suveličine iz datog skupa i predstavljaju početne vrijednosti za početakizvođenja algoritma. Izlaz
Označava izlazne podatke kao rezultat primjene algoritma na ulazne podatke. Svaki algoritam posjeduje jednu ili više izlaznih veličina. Efikasnost
Kriteriji efikasnosti mogu biti vrijeme (računara ili čovjeka) okončanjaalgoritma, prilagođenost algoritma za realizaciju na računaru,
jednostavnost, elegancija itd.
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
12/238
Tehnike prikazivanja algoritama (tokom predavanja):
Prirodni jezik (koračna forma) Dijagrami toka (Flowcharts)
Pseudo kôd (Pseudo cod)
Nasi-Šnajderman dijagrami (Nassi-Sneiderman – N/S diagrams)
Džeksonovi strukturalni dijagrami (Jackson
Structured Diagrams – JSD)
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
13/238
Prirodni jezik
Ovom tehnikom se algoritam prikazuje kao niz
brojem označenih koraka.
Svaki korak sadrži jednu ili više rečenica prirodnog jezika (npr. srpskog) kojim se opisuje proces
(operacija) koju u tom koraku treba izvršiti.
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
14/238
Prirodni jezik
Jednostavan primjer:
Prikazati (na monitoru računara) dvostruku vr ijednost broja koji je prethodno unijet u računar (npr. pomoćutastature).
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
15/238
Prirodni jezik
Algoritam u prirodnom jeziku:1. Tražiti od korisnika da uz pomoć tastature unese broj. 2. Učitati broj koji korisnik ukuca na tastaturi.
3. Pomnožiti učitani broj brojem 2. 4. Prikazati rezultat operacije iz koraka 3 na monitoru
računara.
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
16/238
Prirodni jezik
Sekvenca se prikazuje jednostavno nizanjem koraka
jedan za drugim, pri čemu svaki korak dobija redni broj uredoslijedu kojim treba da se izvršavaju.
Odluka se prikazuje opisom uslova i uputstvom na kojikorak se ide za slučaj da je uslov ispunjen, a na kojikorak kada uslov nije ispunjen. Na sličan način možemo izvršiti i selekciju iz više mogućih rezultata nekoguslova.
Repeticija – iteracija se postiže tako što se izvršenjenastavlja nekim korakom koji ima manji redni broj od
onog u kojem se postavlja uslov repeticije.
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
17/238
Prirodni jezik
Prednosti prirodnog jezika:
Jednostavan za učenje, jer se ionako služimo prirodnim jezikom.
Nedostaci prirodnog jezika:- Koraci su predugački jer se mora koristiti puno r iječi zanjihov opis.
- Prevođenje iz prirodnog jezika u kompjuterski jezikmože biti teško jer za razliku od prirodnih jezika,kompjuterski (programski) jezici imaju vrlo precizno
definisanu sintaksu (gramatiku) i semantiku (značenje).
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
18/238
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
19/238
Ukratko se predstavljaju pojedini simboli
koji se najčešće koriste za prikazivanjealgoritama.
Treba napomenuti da postoje nacionalni
standardi za predstavljanje pojedinih
algoritamskih koraka, tj. u svijetu nije
unificirano predstavljanje algoritama.
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
20/238
Simbol odvijanja toka algoritma
Simbol odvijanja toka algoritma služi za označavanjelogičkog toka odvijanja algoritma povezujući blokovekoji 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 sjeći, a ako je to neizbježno,koriste se konektori.
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
21/238
Simbol obrade
Simbol obrade se koristi za predstavljanje svih
operacija u kojima dolazi do transformacijeinformacionih struktura najčešće aritmetičkim,logičkim ili operacijama prenosa informacionogsadržaja.
A = B *2
C A + B C A + BI = I + 1
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
22/238
Simbol ulaza/izlaza
Simbol ulaza/izlaza se koristi za predstavljanje
ulazno/izlaznih operacija koje uvode podatke uobradu i/ili ispisuju rezultate obrade.
Učitaj
X Učitaj
A, B, C
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
23/238
Simbol povezivanja (konektor)
Simbol povezivanja služi za povezivanje dijelova algoritma kada se: za blok dijagrame koristi više stranica te nije moguće koristiti
strelice koje ukazuju na tok odvijanja algoritma ili
dovodi do ukrštanja strelica. Unutar konektora se upisuje oznaka (broj ili slovo) koja identifikuje
konektor. Konektori sa istom oznakom predstavljaju tačke u algoritmukoje se poklapaju (može ih biti dvije ili više).
Početak
X A
X X +B
1
X X +C
X X +D
Kraj
1
Si b l dl k
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
24/238
Simbol odluke
Simbol odluke (testa) služi za označavanje operacija
odlučivanja ili grananja toka izvođenja algoritma, a prema nekom kriterijumu odlučivanja. Razlikuju se dvije vrste testa:
• aritmetički i • logički.
Kod aritmetičkog testa iz bloka odlučivanja postojedva ili tri izlaza - ilustrovano je na narednoj slici.
Dvotačka ( : ) se koristi za označavanje poređenjaaritmetičkih izraza E1 i E2.
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
25/238
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.
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
26/238
Kod logičkog testa iz blokaodlučivanja postoje dva izlaza (slikadesno).
Nailaskom na logički test algoritamse, u zavisnosti od logičkog izrazaL, odvija jednom od grana:
ukoliko je logički izraz istinitalgoritam se odvija granom
označenom sa DA ili ukoliko je logički izraz
neistinit algoritam se odvijagranom označenom sa NE.
L
DA
NE
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
27/238
Simbol podalgoritma
Simbol podalgoritma se koristi da označi višealgoritamskih koraka pogodno grupisanih ucjelinu i koju nije potrebno dalje razlagati u
detalje.
Motivacija za korišćenje podalgoritama: ponavljajuće dijelove grupisati u
podalgoritam,
dekompozicija problema na manje.
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
28/238
Simbol podalgoritma
Sortiranje niza
A(i) u rastućem
redoslijedu
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
29/238
Simbol komentara
Simbol komentara omogućava upisivanjekomentara ili bližeg opisa karakterističnihkoraka algoritma. Stavlja se pored toka
odvijanja algoritma.
x predstavlja
ugaoUčitaj
x
Ostali grafički simboli služe za bližu specifikaciju algoritamskih koraka.
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
30/238
Korišćenje blok dijagrama u predstavljanju algoritma imasljedeće prednosti:1. olakšano je praćenje logičkog toka odvijanja algoritma, 2. složene algoritme je moguće dekomponovati na module
koji se povezuju i čine hijerarhijsku strukturu algoritma, 3. zbog grafičke prirode simbola koji čine blok dijagram
olakšana je komunikacija sa korisnicima algoritma, 4. blok dijagrami omogućavaju predstavu algoritma koja je
nezavisna u odnosu na računar ili programski jezik kojiće se koristiti za rješavanje algoritma,
5. korišćenje blok dijagrama za predstavu algoritmaomogućava da veći broj lica istovremeno radi na razvojudijelova (modula) jednog složenog algoritma, odnosno daveći broj programera programira nezavisno pojedine
dijelove algoritma.
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
31/238
Nedostaci dijagrama toka:
- Treba upamtiti značenje grafičkih simbola. - Kada postoji mnogo koraka odluke i ponavljanja,
dijagram toka može da se pretvori u vrlo zamršenu mrežuiz koje je teško sačiniti valjan programski kôd.
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
32/238
Pseudo kôd
Ova tehnika je veoma slična prirodnom jeziku s tom razlikom
što se umjesto prirodnog jezika koristi neki drugi jezik (sličan prirodnom) koji ima precizniju sintaksu, koristi manji brojunaprijed zadatih riječi, pa je time lakše definisati i semantiku(značenje) rečenica koje se formiraju u tom jeziku.
Takav jezik često podsjeća i na programske jezike, to jest on predstavlja kompromis između prirodnog i programskog jezika. Kompromis u smislu da je dovoljno jednostavan i razumljiv za
čovjeka, a istovremeno pogodan za dalje transformisanjealgoritma u program.
Recimo takav jezik može sadržati riječi kao što su: display (za prikaz poruke na monitoru), read (za učitavanje podatka), kao isimbole +,-,*,/,= za korišćenje u matematičkim formulama itd.
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
33/238
Pseudo kôd
Tako naš prethodni primjer algoritma može pseudo kôdom
biti prikazan kako slijedi:
1. display poruka
2. read broj
3. rezultat = broj*24. display rezultat
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
34/238
Pseudo kôd
Prednosti:
Jednostavan za učenje skoro kao i kod prirodnog jezika. Lakši za prevođenje u programski jezik, jer jako podsjeća na stvarne programske jezike.
Nedostaci:- Ova tehnika se oslanja na poznavanje takozvanih
imperativnih (proceduralnih) jezika, pa za one koji se prvi
put sreću sa ovom vrstom jezika može biti malo zbunjujuće
– miješa se prirodni i simbolički jezik.
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
35/238
Nasi-Šnajdermanovi dijagrami (N/S dijagrami)
I kod Nasi-Šnajdermanovih algoritama se koriste grafički
simboli kao i kod dijagrama toka, ali se ovdje čitavalgoritam stavlja u jedan jedini pravougaonik (boks).
Simboli (koraci algoritma) se izvršavaju počev od prvogsimbola na vrhu boksa i nastavljaju redom do poslednjeg
na prikazanog dnu boksa. Svaki simbol sadrži ili prirodnim jezikom ili pseudokodom prikazane naredbe (procese).
Š
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
36/238
Nasi-Šnajdermanovi dijagrami (N/S dijagrami)
Postoje tri vrste simbola - za:
sekvencu, odluku i
repeticiju
Š
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
37/238
Nasi-Šnajdermanovi dijagrami (N/S dijagrami)
Simboli su:
Pravougaonik – koristi se za naredbekoje se izvršavaju jedna za drugom(sekvenca).
Kada se sve naredbe iz pravouganika izvrše algoritam senastavlja sljedećim N/S simbolom.
Naredba – proces
Š
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
38/238
Nasi-Šnajdermanovi dijagrami (N/S dijagrami)
Simboli su:
Simbol za odluku se sastoji od dijela
u kojem se nalazi uslov i dva
prevougaonika koji sadrže
alternativne naredbe ako je uslovispunjen (Da) i ako nije (Ne).
Kada se izvrši odgovarajuća naredbaalgoritam se nastavlja sljedećim N/Ssimbolom.
Š
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
39/238
Nasi-Šnajdermanovi dijagrami (N/S dijagrami)
Simboli su:
Repeticija se sastoji od uslova i
naredbe (ili niza naredbi) koje se
izvršavaju sve dok je uslov ispunjen
(while ciklus).Kada uslov nije ispunjen algoritam
nastavlja rad sljedećim N/Ssimbolom.
Š
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
40/238
Nasi-Šnajdermanovi dijagrami (N/S dijagrami)
Simboli su:
Repeticija za slučaj do...whileciklusa izgleda ovako:
U ovom slučaju, za razliku od
prethodnog, Naredbe će biti izvršene prije testiranja da li je uslov
ispunjen.
Ako jeste ponavlja se izvršavanje Naredbi, a ako nije algoritam
nastavlja rad sljedećim N/Ssimbolom.
Š
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
41/238
Nasi-Šnajdermanovi dijagrami (N/S dijagrami)
Prednosti N/S dijagrama:
Grafička prezentacija algoritma olakšava pronalaženje logičkihgrešaka u algoritmu (kao kod dijagrama toka).Lakše se prevodi u programski kôd nego dijagram toka. Tri
programske strukture (sekvenca, odluka i repeticija) zastupljene su u
svim programskim jezicima.Pošto nema strelica kao kod dijagrama toka ne mogu se kreiratizamršene strukture, već algoritam “glatko” slijedi logiku rješenja. Nedostaci N/S dijagrama:
- Moraju se pamtiti grafički simboli koji predstavljaju sekvencu,odluku i repeticije.- Otežano je umetanje novih koraka u već sačinjeni algoritam, a što
je bilo lako kod dijagrama toka (korišćenjem simbola za konekciju – kruga). S druge strane nastavljanje algoritma na sljedećoj strani je
jednostavno – nacrtate novi boks, a stranu obilježite brojem 2, itd.
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
42/238
Džeksonovi strukturalni dijagrami(Jackson Structured Diagrams) – JSD dijagrami
Džeksonovi dijagrami slijede ideju o podjeli problema na niz potproblema manje složenosti (strategija poznata kao “devide andconquer” – podijeli pa vladaj).
Ali oni takođe zadovoljavaju i teoremu o programskoj strukturi, to jest JSD dijagrami imaju grafički simbol za sve tri osnovnekomponente algoritma – sekvencu, odluku i repeticiju.
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
43/238
Džeksonovi strukturalni dijagrami(Jackson Structured Diagrams) – JSD dijagrami
a) Sekvenca
Ovde je proces A složen 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,
izvršavaju slijeva udesno jedan za drugim. Naravno
proces A je mogao biti jedan
jednostavan proces koji ne
zahtijeva dalju podjelu.
Proces A
Proces B Proces C
ž
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
44/238
Džeksonovi strukturalni dijagrami(Jackson Structured Diagrams) – JSD dijagrami
b) Odluka (selekcija)
Odluka se označava tako što se proces A dijeli na procese B i C,
ali uslovno, tako da se proces A
ispunjava bilo izvršavanjem
procesa B (kada je uslov 1ispunjen) bilo izvršavanjem
procesa C (kada je uslov 2
ispunjen).
Uočite mali kružić u gornjem desnom uglu pravougaonika procesa B i C. Ti se kružićikoriste da se pravougaonik
odluke razlikuje od
pravougaonika sekvence.
Proces A
Proces B Proces Co o
uslov 1 uslov 2
ž i i ij i
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
45/238
Džeksonovi strukturalni dijagrami(Jackson Structured Diagrams) – JSD dijagrami
c) RepeticijaRepeticija – iteracija je složenakomponenta koja se izvršava
ponavljanjem nekog
procesa nula ili više puta uzavisnosti da li je uslov
ispunjen ili ne.
Proces A
Proces B
*
uslov
Dž k i k l i dij i
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
46/238
Džeksonovi strukturalni dijagrami(Jackson Structured Diagrams) – JSD dijagrami
Prednosti:
Grafička prezentacija algoritma olakšava pronalaženjelogičkih grešaka u algoritmu (kao kod dijagrama toka). Jednostavniji grafički simboli nego kod dijagrama toka i
N/S dijagrama.
Slijedi logiku rješenja pod jelom na potprobleme.
Nedostaci:- Ne uočavaju se lako odluke i repeticije. - Prevođenje u programski kôd je nešto složenije – morase voditi računa o redoslijedu izvršavanja procesa.
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
47/238
Davanje naziva promjenljivim
Promjenljive u algoritmu se označavajuimenima koja se obično sastoje od jednog iliviše slovnih i brojnih znakova, tako da je prviznak obavezno slovo.
Imena promjenljivih se biraju tako da ukazuju
na prirodu promjenljive koju predstavljaju.
Pogodno je da je dužina imena što kraća i dase nazivi promjenljivih u algoritmu i
odgovarajućem programskom jeziku
poklapaju.
Na narednoj slici predstavljen je blok dijagram algoritma
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
48/238
Na narednoj slici predstavljen je blok dijagram algoritma
za rješavanje problema primjenom računara. POCETAK
ANALIZA
PROBLEMA
RAZVOJ
ALGORITMA
PROGRAMIRANJE
?
?
?
KRAJ
REZULTATI TACNI
GREŠKA U
PROGRAMU
GREŠKA U ALGORITMUDA
DA
NE
NE
NE
DA
Blok dijagram
algoritma za
rješavanje problema
primjenom računara
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
49/238
Postupci izrade algoritama nisu jednoznačni tezahtijevaju i kreativnost.
Inače bi već postojali generatori algoritama.
P i j
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
50/238
Programiranje
Nakon analize problema i razvoja odgovarajućeg
algoritma za rješavanje problema slijeditransformacija algoritma u računarski program,odnosno implementacija algoritma na računaru.
Suština programiranja je kodiranje (prevođenje)algoritma (ili računarskih metoda) na određeni programski jezik.
Program se može definisati kao niz naredbi(instrukcija) pisanih u određenom programskom jeziku (izvornom jeziku) koji posjeduje implicitan
ili eksplicitan redoslijed izvršavanja na računaru.
P i j čiti i t k k
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
51/238
Nakon pisanja programa slijedi:
testiranje i
otkrivanje grešaka (debagiranje – debugging):
greška u lošoj definiciji problema
logičke greške u algoritmu greške prilikom unosa programa.
Programiranje - naučiti sintaksu nekog proceduralnog jezika i steći osnovna intuitivna
znanja.
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
52/238
Programski jezici i razvoj programa
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
53/238
Ciljevi
Šta je programski jezik Mašinski jezik i asembler Viši programski jezici Popularni programski jezici
Razvojni ciklus programa
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
54/238
Programski jezici:
• Programski jezik je skup naredbi zaizvršavanje računarskih zadataka.
• Predstavlja skup riječi i skup pravila naosnovu kojih se piše program.
• Razvojni ciklus programa skup pravilana kojima se zasniva razvoj softvera.
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
55/238
Programski jezici:
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
56/238
Razvoj programskih jezika
• Programski jezici su podijeljeni pogeneracijama
• Jezici najnižeg nivoa su najstariji
• Postoji pet generacija programskih jezika: – Mašinski jezici – Asemblerski jezici – Proceduralni jezici – Problem-orijentisani jezici – Prirodni jezici
J i i ij
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
57/238
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.
J i i d ij
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
58/238
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.
J i i t ć ij
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
59/238
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 prevodkoda
• Fortran i COBOL su jezici treće generacije
K jl i i I t t i
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
60/238
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
J i i t ć ij ( t k)
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
61/238
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. softverskekrize 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
J i i t ć ij ( t k)
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
62/238
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
J i i t ć ij ( t k)
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
63/238
Jezici treće generacije (nastavak)
• Modularni programski jezici: – Razvijeni zbog problema koji su nastali u
struktuiranim programskim jezicima
– Koriste se za kreiranje programa koji suizdijeljeni na zasebne module
• Svaki modul obavlja specifičnu funkciju
– za različite ulazne vrijednosti daje različite izlazne vrijednosti
J i i č t t ij
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
64/238
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
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
65/238
Objektno-orijentisano programiranje
• Objektno-orijentisano programiranje (OOP): – Zasniva se na mogućnosti višestruke
upotrebe komponenata
• Sposobnost pravljenja programskihmodula koji obavljaju specifičanzadatak.
– Ukida razliku između programa i podataka – Upotreba objekata koji sadrže podatke i
procedure
Objekti
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
66/238
Objekti
• Objekti su jedinice informacija koji sadrže podatke kao i metode za procesiranje i rad sa
podacima
• Klase objekata: – Hijerarhija ili kategorija objekata
Jezici prilagođeni upotrebi na Web-u
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
67/238
Jezici prilagođeni upotrebi na Web u
• Markup jezici:– Hypertext markup language (HTML) postavlja atribute teksta i objekata na Web
strani– Extensible markup language (XML) sekoristi za razmjenu objekata u Web okruženju
• Scripting jezici:– VBScript se koriste za pisanje kratkih programa (script) koji su dio Web strana
– JavaScript Razvojni ciklus programa
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
68/238
Razvojni ciklus programa
• Plansko r ješavanje problema programiranja i podjela na značajne cjeline • Šest faza:
1. Definisanje problema2. Dizajniranje programa
3. Pisanje koda (Coding )
4. Testiranje i debagovanje5. Formalizovanje rješenja 6. Implementacija i praćenje rada programa
Faza 1: Definisanje problema
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
69/238
Faza 1: Definisanje problema
• Prvi korak • Sistem analitičari formiraju zahtjeve idostavljaju programeru
• Zahtjevi: – Ulazni podaci – Obrada
– Izlaz – Korisnički interfejs
Faza 2: Dizajniranje programa
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
70/238
• Odgovornost programera
– Top-down dizajn: polazi se od glavnog cilja pase 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
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
71/238
Sistemski i programski dijagram toka
Sistemski dijagram toka
Programski dijagram toka
Faza 3: Pisanje kôda
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
72/238
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
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
73/238
j j j g(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 senaziva debagovanje (debugging).
• Proces otklanjanja grešaka i testiranje programa po pravilu oduzima vrijeme većeod onoga koje je bilo potrebno za samo
programiranje.
Faza 4: Testiranje i otklanjanje grešaka
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
74/238
j j j g(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 provjerilida će ih program korektno prepoznati i kako
će se ponašati Faza 5: Formalizacija rješenja
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
75/238
j j j
• 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 tipizlaznih 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
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
76/238
p j jprograma
• 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 radidodatne verifikacije novog rješenja.
• Moguće je da se nakon ovog perioda javi potreba za modifikacijom rješenja
Algoritamske promjenljive
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
77/238
Algoritamske promjenljive se označavaju imenima
koja se obično sastoje od jednog ili više slovnih i brojnih znakova.
Prvi znak je slovo.
Imena promjenljivih se biraju tako da ukazuju na
prirodu promjenljive koju predstavljaju.
Preporučuje se da se imena promjenljivih ualgoritmu i u odgovarajućem programu poklapaju jer je na taj način olakšano “održavanje” programa.
Algoritamske promjenljive
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
78/238
Primjer: Algoritam nalaženja sume i razlike dva broja
Ulazni podaci Imena promjenljivih
Prvi broj A
Drugi broj B
Lista ulaznih promjenljivih i njihovih naziva
Rezultati Imena promjenljivihSuma SUMA
Razlika RAZ
Lista izlaznih promjenljivih i njihovih naziva Algoritamske promjenljive
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
79/238
Primjer:
Algoritam nalaženjasume i razlike dva broja
POČETAK
Ulaz:
A, B
SUMAA+B
RAZA-B
Izlaz:A, B, SUMA, RAZ
KRAJ
Osnovne algoritamske strukture
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
80/238
• Linijska struktura /tok obrade isključivo odozgo na dole/ • Struktura sa grananjem /algoritam sadrži simbol odluke
– u algoritmu se nalazi dvije ili više algebarskih grana/
• Ciklična struktura /izvršavanje se vraća na prethodnoveć izvršene algoritamske korake/
• Struktura sa podalgoritmima
Rješavanje različitih realnih problema dovodi do
različitih više ili manje složenih algoritama.
Razlikuju se:
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
81/238
Linijska algoritamska struktura
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
82/238
Primjer
:Sastaviti algoritam koji će promjenljivima A iB zamijeniti vrijednosti.
Često se koristi u složenijim problemima (npr.kod sortiranja niza brojeva).
Samostalno sastaviti algoritam!
Linijska algoritamska struktura
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
83/238
Primjer
:Ako u algoritmu, nakon učitavanja ulaznihvrijednosti za A i B napišemo u bloku obrade AB,šta će se desiti?
Prethodna vrijednost promjenljive A biće izgubljena.
Analogno: Ako u algoritmu, nakon učitavanjaulaznih vrijednosti za A i B napišemo u bloku obradeBA, prethodna vrijednost primjenljive B bićeizgubljena.
Kako riješiti problem? Linijska algoritamska struktura
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
84/238
Potrebna je pomoćna
promjenljiva čiji je zadatakda privremeno sačuvavrijednost jedne od
promjenljivih.
POČETAK
Ulaz:
A, B
POMAAB
BPOM
Izlaz:A, B
KRAJ
Algoritam za zamjenu
vrijednosti dva broja
Primjer: A=5, B=9
Linijska algoritamska struktura
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
85/238
Isti problem se može riješiti
i pomoću podalgoritma
POČETAK
Ulaz:
X, Y
Izlaz:X, Y
KRAJ
ZAMJENA (X,Y)POMA
AB
BPOM
PA ZAMJENA (A, B)
POVRATAK
Algoritam za zamjenu vrijednosti
dva broja sa podalgoritmom
Struktura sa grananjem
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
86/238
Strukture sa granjanjem (razgranate algebarske
strukture) pojavljuju se uvijek kada algoritam sadržisimbol odluke.U zavisnosti od vrste simbola odluke i od broja
sim bola odluke algoritam može da sadrži dvije iliviše grana.
Prilikom izvršavanja algoritma nailaskom na simbolodluke vrši se ispitivanje uslova postavljenih usimbolu odluke.
Izvođenje algoritma se nastavlja samo jednom odgrana, a kojom – to zavisi od uslova postavljenih u
simbolu odluke.
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
87/238
Struktura sa grananjem
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
88/238
Algoritam za
određivanje većeg broja
POČETAK
Ulaz:
A, B
A>B
MAXA MAXB
DA NE
Izlaz:
A, B, MAX
KRAJ
Struktura sa grananjem
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
89/238
Isti problem se može riješitii 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
A>B
ZAMJENA (A, B)
DA
NE
Struktura sa grananjem
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
90/238
Algoritamske strukture mogu da sadr že proizvoljan
broj simbola odluke i veliki broj grana.
Klasičan pristup problema sastoji se u poređenjusvakog broja sa svakim.
Takve strukture će biti prikazane na primjeruutvrđ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 Algoritam za određivanjeStruktura sa
grananjem
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
91/238
Ulaz:
A, B, C
KRAJ
maksimuma tri broja – klasično rješenje
grananjem
A>BDA NE
B>CA>C
MAXA MAXC MAXB MAXC
Izlaz:
A, B, C, MAX
DA DA NENE
POČETAK Algoritam za određivanjeStruktura sa
grananjem
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
92/238
Ulaz:
A, B, C
KRAJ
maksimuma tri broja – sekvencijalno odlučivanje
grananjem
B>MAXDA
C>MAX
MAXB
Izlaz:
A, B, C, MAX
NE
MAXA
DA
MAXC
NE
Prvi od brojeva se proglasi najvećim
Zatim se kroz dva poređenja utvrdikoji broj je zaista
veći
Struktura sa grananjem POČETAK
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
93/238
Treći pristup je uzastopno povezivanje već realizovanog
podalgoritma za utvrđivanjevećeg od dva broja.
Ulaz:
A, B, C
Izlaz:
A
KRAJ
MAKS (A, B)
MAKS (A, C)
U podalgoritmu će senajveća vrijednost dodijeliti prvoj od promjenljivih.
Petlja (ciklična struktura)
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
94/238
Ciklične algoritamske strukture su prirodninastavak 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 sevišestruko ponovi ista sekvenca obrade na
istim ili različitim podacima. Ciklične algoritamske strukture se čestonazivaju petlje.
Petlja (ciklična struktura)
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
95/238
Ciklične algoritamske strukture mogu biti:
- proste i
- složene.
Pod prostim cikličnim strukturama podrazumijevase algoritam koji sadrži samo jedan ciklus.
Složene ciklične strukture sadrže veći broj ciklusakoji su na različite načine ugrađeni u cijeli algoritam.
Proste ciklične strukture
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
96/238
U 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
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
97/238
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
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
98/238
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 promjenljivauvećava svoju vrijednost za vrijednostkoraka (u primjeru “C”)
Ako je vrijednost koraka pozitivna, petlja se
završava kada promjenljiva uzme vrijednostveću od krajnje vrijednosti, a ako jevrijednost koraka negativna, petlja se
završava kada promjenljiva uzme vrijednostmanju od krajnje vrijednosti.
Proste ciklične strukture
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
99/238
Postoje problemi koji se ne mogu riješiti pomoćukonstantnog broja ponavljanja tijela ciklusa, jer broj
ponavljanja nije unaprijed poznat.
Npr. problemi traženja maksimuma, minimuma ilinula 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
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
100/238
S obzirom da je potrebno beskonačno mnogo koraka
da bi dobili tačno rješenje, prihvatamo približnorješenje koje zadovoljava unaprijed određenuvrijednost.
Takvi algoritmi sadrže simbol odluke u kome seispituje ispunjenost uslova.
Razlikuju se dvije vrste cikličnih struktura sa
promjenljivim brojem ponavljanja tijela ciklusa:
• Do Until i
• Do While.
Proste ciklične strukture Al i ki k i d ž i
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
101/238
Ciklične algoritamske strukture tipa Do Until
USLOV
DA
NE
Algoritamski koraci sadržani utijelu petlje obavezno se izvršavaju bar jednom.
Ako postavljeni uslov u simbolu
odluke nije ispunjen, algoritamski
koraci iz tijela petlje će se ponovoizvršavati.
Ovom strukturom se rješavaju
problemi kod kojih se možedefinisati cilj (uslov završetka) kojitreba da bude dostignut.
Proste ciklične strukture
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
102/238
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 koracisadržani u tijelu petlje se izvršavaju, pase ponovo vrši ispitivanje uslova
Ovom strukturom se rješavaju problemikod kojih se može definisati uslovizvršavanja algoritamskih koraka iz tijela petlje.
USLOV
DA
NE
Proste ciklične strukture
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
103/238
Određivanje maksimuma niza brojeva je tipičan primjer primjene prostih cikličnih struktura.
Rješenje je u uvođenju indeks pokazatelja, odnosnoindeksa.
Članovima niza pridružuje se niz promjenljivih sarealnim 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
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
104/238
Indeksirana promjenljiva je konačan skup promjenljivih sa istim simboličkim nazivom irazlič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šedimenzionamatrica.
Proste ciklične strukture
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
105/238
Učitavanje niza podataka realizuje se pomoću prosteciklič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 POČETAK Ulaz:
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
106/238
Za određivanjemaksimuma niza brojeva najbolje je u
algoritmu iskoristiti većrealizovan podalgoritam
za utvrđivanje većeg oddva broja.
Algoritam za određivanje
maksimuma niza bro eva
N
Ulaz:A(I),I=1,N
MAXA(1)
I=2,N
MAKS(MAX;A(I))
Izaz:
MAX
KRAJ
Petlja (ciklična struktura)
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
107/238
• Suma niza: – Niz:
A = {a1, a2, a3, ..., a N}
= {ai}, i = 1, ..., N
POČETAK
ULAZ
N, A
KRAJ
=SUMA = SUMA + A(i)
I = 1
SUMA = 0
I = I + 1
IZLAZ
SUMA
I > N
DA
NE
A = {ai}, i = 1, ..., N
Petlja (ciklična struktura)
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
108/238
j ( )
• Primjer:
)!(!
!
ini
nn
i
n
i
n
i i
in
11
10
n
n
n
1
POČETAK
ULAZ
N,M
KRAJ
=BIN = (N-I)/(I+1)*BIN
I = 0
BIN = 1
I = I + 1IZLAZ
N, M, BIN
I : M
Složene ciklične strukture
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
109/238
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 ilisortiranje niza.
Kod složenih cikličnih struktura algoritam se sastojiod 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 ciklusagovorimo o ugniježdenim cikličnim strukturama.
Složene ciklične strukture
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
110/238
Ilustracija nekih složenih algoritamskih struktura
Složene ciklične strukture
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
111/238
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 brojaizvršavanja tog ciklusa i brojeva izvršavanjasvih 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 POČETAK Ulaz:
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
112/238
Ugniježdene ciklične
strukture klasično sortiranje
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 jesortiranje niza podataka.
Sortiranje članova niza
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
113/238
j
4 1 2 3
for i=1:3
for j=i+1:4
if a(i)>a(j)
temp=a(i)
a(i)=a(j)
a(j)=tempend
end
end
Složene ciklične strukture
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
114/238
Rješavanje realnih problema uglavnom dovodi do
složenih algoritamskih struktura. Uvedene su određene discipline u pisanjualgoritama i programa.
Modularna organizacija algoritama i strukturirano
programiranje su osnovni preduslovi za dobijanje
pouzdanih rješenja.
Složene ciklične strukture
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
115/238
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 odostalih modula i kasnije jednostavnim mehanizmima
povezati u cjelinu.
Složene ciklične strukture
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
116/238
Modularna organizacija rješavanja složenih problema
MODUL A
MODUL B
MODUL C
Struktura sa podalgoritmima
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
117/238
• Veza između algoritma i podalgoritma – listaulazno-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 iformalne liste mora da se poklapa.
Struktura sa podalgoritmima
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
118/238
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
Algoritam: Izračunavanje srednje vrijednosti temperatura
ALGORITAM SrednjaTemperatura
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
119/238
ALGORITAM SrednjaTemperatura
ULAZ: TEMP - niz realnih brojeva gde je TEMP[i] temperatura
izmjerena na i-tom mjernom mjestu N - broj mjesta na kojima su očitavane 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
dr gom korak pro jera a prema ograničenj
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
120/238
drugom koraku provjerava prema ograničenju.
Ako se ispostavi da je vrijednost N negativnaili nula, ponavlja se korak 1, u suprotnom tok
algoritma se nastavlja korakom broj 3.
Ovo rješenje nije najbolje iskoristilo semantikuif then else selekcije jer se zapravo radi o samo
jednoj putanji koja je alternativna normalnomtoku algoritma.
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
121/238
Peti korak realizuje sumiranje elemenata niza
pomoću FOR iteracije što se u matematici
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
122/238
pomoću FOR iteracije, što se u matematicioznačava simbolom sume (Σ).
Šesti korak realizuje dijeljenje sume iz prethodnog koraka brojem elemenata niza čimese 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
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
123/238
p p p j
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 kojiinicijalizuje 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 smješta zbir prve temperature i
nule
Algoritam: Izračunavanje minimalne vrijednosti temperature
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
124/238
Pronalaženje minimalne (ali i maksimalne)
vrijednosti unutar nekog skupa (niza) vrijednostitemperatura je proces koji se svodi na poređenjevrijednosti svake izmjerene temperature (TEMP[i])
sa trenutno minimalnom vrijednošću (promjenljivamin).
Ako je vrijednost (TEMP[i]) manja od vrijednosti
min, onda se za vrijednost min usvaja vrijednost(TEMP[i]) i nastavlja se poređenje nove vrijednostimin sa (TEMP[i+1]).
Slično prethodnom algoritmu, postoji probleminicijalizacije promjenljive min prije poređenja sa
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
125/238
j j p j j p j p jTEMP[i].
Inicijalizacija vrijednosti promjenljive min bi trebala biti
veća od najmanje izmjerene vrijednosti temperature kako bi bilo moguće sprovesti opisani postupak, ali minimalna
vrijednost izmjerenih temperatura je nepoznata – ona setek treba odrediti.
Postavlja se pitanje: Koliku vrijednost odabrati, imajući
u vidu opšte karakteristike oblasti primjene algoritma? (atmosferska temperatura, temperatura u čeličani i sl.)
Bilo bi dobro rješenje usvajanje neke
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
126/238
Bilo bi dobro rješenje usvajanje nekekonkretne vrijednosti iz niza TEMP kao
minimalne vrijednosti promjenljive min, npr.
TEMP[1], jer se tako dobija najefikasniji
algoritam pošto se može izostaviti poređenjesa prvim elementom.
Pri tome se pretpostavlja da ima više od jedne
izmjerene vrijednosti temperature, N>0.
Algoritam MinimalnaTemperaturaULAZ: TEMP - niz ralnih brojeva gdje je TEMP[i]
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
127/238
ULAZ: TEMP niz ralnih brojeva gdje je TEMP[i]
temperatura izmjerena na i-tom mjernom mjestu
N-broj mjesta na kojima su očitavane temper., N>0IZLAZ: 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]
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
128/238
j j j j j
temperature, promjenljiva N, unutar iteracije sa
izlaskom na dnu (najmanje jedno prihvatanjevrijednosti ili više puta ako se unese pogrešnavrijednost).
Drugi korak definiše kako će višedimenzionalna promjenljiva prihvatati vrijednosti za svoje elemente.
Kako je TEMP niz, dovoljna je jedna iteracija za
prihvat vrijednosti svakog elementa niza. Iskorištena 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 (ugniježdena
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
129/238
j j j j ( g jIF selekcija u FOR iteraciji).
U ovom koraku se prolazi kroz sve elemente niza
TEMP tražeći minimalnu vrijednost koja se čuva u
promjenljivoj min, pri čemu je ova promjenljivainicijalizovana u koraku 3.
Neophodno je naglastiti da ugniježđena struktura morapočeti i završiti unutar tijela spoljne strukture pričemu ne smije doći do njihovog preklapanja.
struktura 1 struktura 1
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
130/238
struktura 2
struktura 2.1
struktura 2.2
struktura 2.1.1
struktura 2.1.2
kraj strukture 1
kraj strukture 2
kraj strukture 2.1.1
kraj strukture 2.1kraj strukture 2.1.2
kraj strukture 2.2
Dobro strukturiran e Loše str kt riran e
struktura 2
struktura 2.1
struktura 2.2
struktura 2.1.1
struktura 2.1.2
kraj strukture 1
kraj strukture 2
kraj strukture 2.1.1
kraj strukture 2.1kraj strukture 2.1.2
kraj strukture 2.2
Podalgoritam i rekurzija
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
131/238
Za detaljnu specifikaciju modula koristi se
hijerarhijska struktura algoritama u kojoj se razlikuje jedan glavni algoritam i skup njegovih
podalgoritama.
Podalgoritam je algoritam koji rješava jedan aspekt problema i biva angažovan (pokrenut, pozvan) odstrane glavnog algoritma ili drugog podalgoritma.
naredba B1
Podalgoritam1
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
132/238
Glavni algoritam i njegovi podalgoritmi
naredba A1naredba A2
podalgoritam 1
naredba A4
naredba A5 podalgoritam 2
naredba A7
kraj
Glavni algoritam naredba B2
naredba B3 povratak
naredba C1
naredba C2
podalgoritam 3
naredba C4 povratak
Podalgoritam2naredba D1
naredba D2
naredba D3
naredba D povratak
Podalgoritam3
Parametri podalgoritama mogu se klasifikovati prema mjestu njihovog definisanja na:
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
133/238
• Formalne parametre – navode se pri definisanju podalgoritma kako bi se formalizovale ulazne iizlazne 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 obezbjeđuje masovnost algoritama.
Parametri podalgoritama mogu se klasifikovati prema mjestu njihovog definisanja na:
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
134/238
• Stvarne parametre – navode se pri pozivanju podalgoritma u superordiniranom algoritmu i onisadrže 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.
Razmotrićemo razmjenu navedenih tipova parametara.
Broj tip i redoslijed navođenja stvarnih parametara
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
135/238
Broj, tip i redoslijed navođenja stvarnih parametaramora biti identičan kao kod formalnih parametara pričemu se njihovi identifikatori ne moraju poklapati. To je dozvoljeno činjenicom da superordiniranialgoritam nema pristupa interijeru podalgoritma i
obrnuto. Prije prenosa upravljanja sasuperordiniranog algoritma na podalgoritam, vrši se prenos stvarnih parametara i dodjeljivanje njihovih
vrijednosti formalnim parametrima podalgoritma poredoslijedu njihovog navođenja (prvo se prenosi prvonavedeni parametar, pa drugi, treći itd.).
Po prenosu svih parametara, prenosi se upravljanje
na podalgoritam koji sada može otpočeti izvršavanje
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
136/238
svojih operacija jer raspolaže svim ulaznim
vrijednostima koje se nalaze u odgovarajućimformalnim parametrima.
Obrnuti proces se dešava na završetku podalgoritma prilikom vraćanja upravljanja superordiniranomalgoritmu.
Prema smjeru prenosa vrijednosti, razlikuju se tri
tipa parametara:
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
137/238
1. Ulazni parametri – nose u sebi ulazne vrijednostiza dati podalgoritam. Na narednoj slici ulazni
parametri su navedeni odmah do strelica koje
označavaju prenos upravljanja ka pozvanom
podalgoritmu (ul1A, ul1B, ...)
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
138/238
Mehanizam prenosa ulaznih parametara čine koraci:
1. Superordinirani algoritam pri pozivu podalgoritma, a
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
139/238
p g p p p g ,
prije transfera upravljanja, postavlja konkretne (stvarne)
vrijednosti na mjesta ulaznih stvarnih parametara.
2. Pozvani podalgoritam preuzima stvarne vrijednosti koje
su proslijeđene i prihvata ih kao vrijednosti
odgovarajućih formalnih ulaznih parametara kada postajemoguće izvršavanje određenih operacija nad njima utijelu podalgoritma.
Važno je istaći 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:
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
140/238
2. Izlazni parametri – nose u sebi izlazne vrijednostidatog podalgoritma, rezultate njegovog izvršavanja. Na narednoj slici izlazni parametri su navedeni
odmah do strelica koje iznačavaju prenos upravljanja
ka superordiniranom algoritmu (izl1A, izl1B, ...)
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
141/238
Mehanizam prenosa izlaznih parametara čine koraci:
1. Pozvani podalgoritam pri kraju svog izvršavanja, a prije
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
142/238
p g p j g j , p jtransfera upravljanja, postavlja konkretne (stvarne)
vrijednosti na mjesta izlaznih formalnih parametara.
2. Superordinirani algoritam prihvata vrijednosti koje su
proslijeđene kao izlazni parametri pozvanog
podalgoritma i dalje manipulišu njima kao vrijednostimasvojih internih promjenljivih koje su imale ulogustvarnih parametara.
Podalgoritam mora imati barem jedan izlazni parametar jer u suprotnom ne bi imao sredstvo da
iskaže rezultat svoga rada.
Prema smjeru prenosa vrijednosti, razlikuju se tri
tipa parametara:
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
143/238
3. Ulazno-izlazni parametri – nose u sebi vrijednostikoje 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 vraća niz sortiranih
elemenata superordiniranom algoritmu(podalgoritmu).
Mehanizam prenosa ulazno/izlaznih parametara činekoraci:
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
144/238
1. Superordinirani algoritam pri pozivu podalgoritma, a prije
transfera upravljanja, uspostavlja vezu između određenihinternih promjenljivih koje sadrže konkretne (stvarne)vrijednosti sa ulazno/izlaznim stvarnim parametrima
2. Pozvani podalgoritam preuzima dobijene veze sa stvarnim
parametrima kako bi bio u mogućnosti da pomoću svojihformalnih parametara pristupa vrijednostima interijerasuperordiniranog algoritma. Na ovaj način, pozvani
podalgoritam je snabdijeven ulaznim vrijednostima nad kojima
može da izvrši određene operacije. Zahvaljujućiuspostavljenim vezama, svaka izmjena vrijednosti formalnihulazno/izlaznih parametara načinjena unutar pozvanog
podalgoritma biće vidljiva superordiniranom algoritmu i po
završetku rada pozvanog algoritma
Mehanizam prenosa ulazno/izlaznih parametara činekoraci:
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
145/238
3. Kada se upravljanje vrati superordiniranom algoritmu, on u
određenim stvarnim parametrima ima one vrijednosti koje je postavio pozivani podalgoritam.
Algoritam: SrednjaIMinimalnaTemperatura
ULAZ: TEMP - niz ralnih brojeva gdje je TEMP[i]
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
146/238
temperatura izmjerena na i-tom mjernom mjestu
N-broj mjesta na kojima su očitavane temper., N>0SREDTEMP-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. Prikaži korisniku SREDTEMP, MINTEMP.
5. Kraj.
Postoji posebna klasa podalgoritama koji su samo
sebi i superordinirani i subordinirani – rekurzivni
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
147/238
podalgoritmi.
Rekurzivan podalgoritam poziva sam sebe sa
različitim vrijednostima ulaznih parametara potreban broj puta.
Mehanizam rekurzije se često koristi i u matematici prilikom definisanja raznih matematičkih entitetakao što je faktorijel.
Samopozivanje rekurzivnog algoritma mora biti
uslovljeno.
Rekurzivni podalgoritmi su omogućilirješavanje nekih problema pomoću računara
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
148/238
j j p pkoji su do tada bili ili nerješivi ili rješivi uzvelike napore.
Rekurzivni podalgoritmi se sastoje iz tri dijela:
Dio koji se izvršava u dubinu čine operacije
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
149/238
j z p j podalgoritma koje se izvršavaju prije pozivasamog sebe. Ovaj dio se jedini izvršava tokom
jednog poziva rekurzivnog podalgoritma.
Uslovl jeni poziv omogućava samopozivanjerekurzivnog podalgoritma ako je ispunjen
postavljeni uslov. Uslov mora konvergirati
neispunjenosti kako bi se obezbijediozavršetak rekurzivnog izvršavanja. Usuprotnom dobila bi se beskonačna rekurzija.
Rekurzivni podalgoritmi se sastoje iz tri dijela:
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
150/238
Dio koji se izvršava ka površini čineoperacije koje se izvršavaju poslije operacije poziva samog sebe. Ovaj dio će se prvi putizvršiti unutar posljednjeg poziva rekurzivnog podalgoritma i nastaviti izvršavati ka prethodnim pozivima sve do prvog poziva.
Rekurzivni podalgoritam ne mora sadržavati prvi, odnosno posljednji dio, ali mora
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
151/238
p , p j j ,
sadržavati uslovljeni poziv. Veoma je važno obezbijediti promjenevrijednosti promjenljivih koje formiraju uslov
pozivanja da poslije određenog broja pozivanjauslov postane neispunjen.
Primjer: Konverzija dekadnog broja
Algoritam: KonverzijaDekadnogUBinarni
LOKALNE: N-cio broj, dekadni broj koji treba
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
152/238
j, j j
konvertovati, N≥0
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 odredišnog brojnog sistema
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
153/238
baza – cio broj, baza odredišnog brojnog sistema,
baza>0Lokalne: količnik – cio broj, količnik cjelobrojnog dijeljenja ostatak – cio broj, ostatak cjelobrojnog dijeljenja
1. količnik
količnik od (broj/baza). 2. IF količnik > 0 THEN Podalgoritam
KonvertujDekadniBroj(količnik,baza).
3. ostatak ostatak od (broj/baza).4. Prikaži korisniku ostatak.
5. Povratak.
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
154/238
Matlab
Postoje dvije klase softverskih paketa za
j š j ičkih bl
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
155/238
rješavanje matematičkih problema:
• programi zasnovani na simboličkomrješavanju i• programi zasnovani na numeričkom
rješavanju problema.
Tipičan predstavnik prve klase programa jeMathematica, a druge MATLAB.
MATLAB je dostupan u više verzija koje su prilagođene različitim računarskim platformama –
d C i i h č k d ih
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
156/238
od PC i Macintosh računara, preko UNIX radnih
stanica do Cray računara.
Predstavlja najčešće korišćen paket u svojoj oblasti.
Verzije MATLAB-a za različite računarske sistemese razlikuju donekle samo po korisničkom interfejsu – sve komande se jednako izvršavaju na svim platformama.
Ovdje će biti ukratko prikazan MATLAB u verzijiza Windows operativne sisteme.
Primjena MATLAB-a u rješavanjuinženjerskih problema
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
157/238
inženjerskih problema
MATLAB je moderan, multifunkcionalan programski sistem koji je u prvom redu
namijenjen rješavanju problema u tehnici.
MATLAB pruža korisniku mogućnost danumerički i logički obradi podatke pomoću
mnoštva raspoloživih programskih jedinica, davizuelno prikaže podatke i da proširifunkcionalne mogućnosti kreiranjem i
i š j t ih
Npr. Na veoma jednostavan način, znatno brženego u drugim programskim jezicima,
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
158/238
nego u drugim programskim jezicima,
rješavamo tehničke probleme koji suformulisani u matričnom obliku.
Srž MATLAB-a čine numerička linearna
algebra i matrični račun – otuda i nazivMATLAB-a (MATrix LABoratory).
MATLAB je i kreiran radi unapređenja postojećeg softvera za matrične proračune.
U današnje vrijeme MATLAB je veomaopsežan sistem koji obuhvata i mnoge druge
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
159/238
opsežan sistem koji obuhvata i mnoge druge
numeričke postupke, npr.: određivanje nula polinoma, numeričko rješavanje početnih problema kod običnih diferencijalnih
jednačina itd. Mnogobrojne grafičke mogućnostiomogućavaju korisniku da formira dvo- itrodimenzionalne kolor grafike kako na
ekranu, tako i na štampaču ili na ploteru.
Iz MATLAB-a se mogu aktivirati programi na jezicima FORTRAN i C, tj. omogućeno jek išć j ć j ćih
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
160/238
korišćenje već postojećih programa za
rješavanje određenih problema, čime se znatnomože ubrzati rješavanje zadataka u tehnici. MATLAB sadrži čitav niz dodatnih modula(tzv. toolbox-ova) koji su namijenjeni
različitim oblastima primjene, kao npr.: - Statika i dinamika konstrukcija u građevinarstvu, - Statistika,- Obrada slika,
- Simbolička matematika (Kompjuterska algebra),
Kontrolni sistemi itd
MATLAB je sistem koji se nalazi u
neprekidnom razvoju kome doprinose
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
161/238
mnogobrojni stvaraoci u svijetu.
Na mnogim univerzitetima MATLAB je
usvojen kao standardno sredstvo u okviru
kurseva iz oblasti matematike, inženjerstva inauke, a u industriji MATLAB se koristi kao
sredstvo u istraživanjima čiji je cilj dalji razvoj proizvodnje.
Osnovno okruženje MATLAB-a predstavljatekstualni prozor u kome se zadaju MATLAB
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
162/238
komande.
Komande se izvršavaju neposredno nakon unosa.
Poseban simbol (») predstavlja MATLAB prompt.
Pored toga, moguće je pisati i programe u programskom jeziku kojeg nudi MATLAB.
Sam MATLAB programski jezik je nalik drugim proceduralnim jezicima, izuzimajući njegovu prilagođenost radu sa matricama.
MATLAB kao interaktivan sistem
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
163/238
Aritmetičke operacije i promjenljive
Matlab možemo koristiti slično kao džepni kalkulator;ako poslije Matlab-ovog pokazivača u komandnom
tk t tičk i
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
164/238
prozoru otkucamo matematičke izraze.
Matlab će uraditi navedene računarske operacije.
Unošenje sadržaja jednog reda završavamo pritiskom
na taster Enter.O pravilima po kojima se izvršavaju aritmetičkeoperacije detaljno ćemo govoriti kasnije.
Slijede neki osnovni elementi interaktivnog rada kod
korišćenja sistema MATLAB.
Aritmetička operacija Aritmetički operator
Sabiranje +
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
165/238
Oduzimanje -
Množenje *
Dijeljenje /
Stepenovanje ^
Kod izraza sa višeuzastopnih operacija
stepenovanja, realizacija
se odvija s lijeva u desno.
»2 ^3 ^2
ans =
64
= (23)2
Komandni prozor MATLAB-a
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
166/238
Nakon pokretanja Matlab-a, pojavljuje se
komandni prozor koji je sada aktivni prozor.
U njemu je omogućena komunikacija saMatlab programskim prevodiocem (engl.
interpreter ).
Program daje znak » kojim označava da jespreman da prihvati komande od korisnika.
Pokretanje MATLAB-a
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
167/238
ili
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
168/238
Opisi funkcija tastera ili kombinacija tasterakoji omogućavaju uređivanje komandne linije:
Taster Funkcija
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
169/238
j
↑, Ctrl+P Pozivanje prethodne linije
↓, Ctrl+N Pozivanje naredne linije
←, Ctrl+B Pomjeranje kursora ulijevo za jedan znak
→, Ctrl+F Pomjeranje kursora udesno za jedan znak
Ctrl+← Pomjeranje kursora ulijevo za jednu riječ Ctrl+→ Pomjeranje kursora udesno za jednu riječ
Home, Ctrl+A Pomjeranje kursora na početak komandne linije
End, Ctrl+E Pomjeranje kursora na kraj komandne linije
Esc Brisanje komandne linije
Del, Ctrl+D Brisanje znaka na mjestu kursora
Backspace Brisanje znaka lijevo od kursora
Ctrl+K B i j d ž j k d li ij d k j
Uvod u rad
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
170/238
Osnovni element sa kojim manipulišeMATLAB je pravougaona numerička matricačiji elementi mogu biti i kompleksni brojevi.
Specijalni slučajevi pravougaone matrice sumatrice tipa 1x1 koje predstavljaju skalare, doksu vektori matrice sa samo jednom vrstom ili
kolonom.
Unošenje podataka
Matrice se u MATLAB mogu unositi na
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
171/238
Matrice se u MATLAB mogu unositi na
nekoliko načina: • direktnim unošenjem elemenata, • generisanjem pomoću funkcija ili izraza
ugrađenih u MATLAB, • definisanjem u M datoteci,• prenošenjem iz spoljne datoteke sa
podacima.
Kada su u pitanju matrice malih dimenzija
najpogodniji je prvi način.
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
172/238
Elementi jedne vrste se upisuju jedan za
drugim, međusobno razdvojeni praznimmjestom ili zapetom.
Kraj svake vrste matrice označava se
znakom ; (tačka zapeta).Matrica se mora ograničiti uglastim
d []
Definisanje promenljivih
Promenljive se definišu tako što im se dodijeli
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
173/238
Promenljive se definišu tako što im se dodijeli
vrijednost. Naziv promenljive je niz slova i cifarakoji mora početi slovom, pri čemu se velika i malaslova razlikuju.
Slijedi primjer definicije matrice dimenzije 3 x 3:
» A = [1 2 3; 4 5 6; 7 8 9]
A =
1 2 3
4 5 6
7 8 9
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
174/238
Vektor-vrsta se definiše kao u sljedećem primjeru:
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
175/238
» x = [-1.3 sqrt(3.1) (1+2)/4*5]
x =
-1.300 1.7607 3.7500
Slično kao u prethodnom primjeru samatricom definiše se i vektor -kolona.
Elemente matrice je neophodno odvojiti bar
j d i hit k kt
Prilikom definisanja vrijednosti promenljivih
posebno je koristan operator dvotačka (:).
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
176/238
Ovaj operator je namijenjen za definisanje vektoračiji se elementi dobijaju inkrementiranjem početnevrijednosti za konstantan korak.
Slijedi primjer:
» x = 1:4
x =
1 2 3 4
Moguće je navesti i korak različit od 1, kao usljedećem primjeru:
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
177/238
» y = 1:0.5:3
y =
1.0000 1.5000 2.0000 2.5000 3.0000
Operator dvotačka se može koristiti i za dodjeluvrijednosti matrici, ali samo u slučaju da je matricabila prethodno definisana (tj poznate joj dimenzije)
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
178/238
bila prethodno definisana (tj. poznate joj dimenzije).
Sljedeći primjer ilustruje ovu mogućnost. » 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 izračunatog izraza promenljivoj ans.
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
179/238
Tako se može dobiti i vrijednost izraza koji nisudodijeljeni kao vrijednost nijednoj promjenljivoj.
Slijedi primjer:
» sqrt (2)
ans =
1.4142
Selekcija elemenata matrice
Elementima matrice pristupa se preko njihovog indeksa.
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
180/238
Osim pojedinačnih elemenata matrice, moguće je izdvojitivrstu, 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
I d j j t ć k l t i A ši
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
181/238
Izdvajanje treće kolone matrice A vrši seizrazom:
» A(:, 3)
ans =
3
6
9
Selekcija elemenata matrice
P d t i k j d t lj j k i t ć
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
182/238
Podmatrica koja predstavlja presjek prve i trećevrste i druge i treće kolone matrice A dobija seizrazom:
» A([1 3], [2 3])
ans =
2 3
8 9
Selekcija elemenata matrice
Prethodni re ltat se može dobiti i i ra om:
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
183/238
Prethodni rezultat se može dobiti i izrazom:
» A([1 3], 2:3)
ili izrazom:
» A(1:2:3, 2:3)
U izrazima za selekciju elemenata matrice moguće je koristitii prethodno definisane vektore – promenljive. U MATLAB-u
je moguće promijeniti i dimenzije matrice.
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
184/238
Na primjer, izraz
» A = [A; 10 11 12]
A =
1 2 34 5 6
7 8 9
10 11 12
će proširiti matricu A novom vrstom.
Ukoliko se matrica proširuje novimelementima, a ne definišu se vrijednosti svihnovih elemenata za njihove vrijednosti se
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
185/238
novih elemenata, za njihove vrijednosti se
uzima nula. Na primjer:
» x = 1 : 4;
» x(6) = 7
x =
1 2 3 4 0 7
Osnovne operacije sa matricama
Transponovanje
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
186/238
Transponovanje
» A = [1 2 3; 4 5 6; 7 8 9];
» B = A’ B =
1 4 7
2 5 8
3 6 9
Vektori
Već je rečeno da matrice sa jednim stupcem ili
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
187/238
Već je rečeno da matrice sa jednim stupcem ili jedim retkom zovemo vektori.
Vektori se u Matlab unose na sljedeći način:
>>a=[2 5 6] (ili a=[2,5,6])
a=
2 5 6
Vektori
>>b=[5;2;1]
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
188/238
>>b=[5;2;1]
b=
5
2
1
Vektori
Šta dobijemo za a' i b'.
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
189/238
j
>>a'
ans= 25
6
>>b'
ans= 5 2 1
Sabiranje
» C = A + B
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
190/238
» C = A + B
C =
2 6 10
6 10 14
10 14 18
Sabiranje matrice i skalara
Prilikom sabiranja matrice sa skalarom svaki
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
191/238
Prilikom sabiranja matrice sa skalarom, svaki
element matrice se sabira sa datim skalarom.
Sabiranje matrice sa skalarom je komutativno.
» C = C – 2C =
0 4 8
4 8 12
8 12 16
Sabiranje vektora sa skalarom:
>>a+2
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
192/238
ans=
4 7 8
>>b-1
ans=
4
1
0
Množenje matrica
Operator * obuhvata i množenje matrice i
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
193/238
vektora, množenje dva vektora i množenjematrice ili vektora skalarom. Naredni primjeri ilustruju ove mogućnosti
MATLAB-a. » x = [1 2 3]’; » E = D*x
E =
228552
876
» D = A * B
D =
14 32 5032 77 122
50 122 194
Množenje matrica
» y*x
ans =» y = [4 5 6];
*
8/9/2019 Programiranje u Saobracaju I Dio 2013 14
194/238
ans =
32
» y*2
ans =
8 10 12
» x*y
ans =
4 5 6
8 10 12
12 15 18
>>b*-2
ans=
-10
-4
-2
>>a*3
ans=
6 15 18
Osnovne operacije nad dva vektora su mogućesamo ukoliko su istog oblika:
8/9/2019 Programiranje u Saobracaju