programiranje u saobracaju i dio 2013 14

Upload: hadzic-emina

Post on 01-Jun-2018

235 views

Category:

Documents


0 download

TRANSCRIPT

  • 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 

    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

    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