algoritmi algoritmi algoritmi algoritmi

Upload: milan-aleksic

Post on 03-Apr-2018

347 views

Category:

Documents


4 download

TRANSCRIPT

  • 7/28/2019 algoritmi algoritmi algoritmi algoritmi

    1/36

    ALGORITMI

  • 7/28/2019 algoritmi algoritmi algoritmi algoritmi

    2/36

    TEORIJSKA OSNOVA RAUNARA

    Sve poslove koje raunar obavlja izvode se postupno,korak po korak, u konanom vremenu.Svaki korak je jasno preciziran, kao i prelazak na svakinaredni korak.Na kraju postupka, kad raunar zavri rad (ukoliko se to

    uopte desi, jer mogue je i da se rad nikada ne zavri), dobijese neto kao rezultat.

  • 7/28/2019 algoritmi algoritmi algoritmi algoritmi

    3/36

    TEORIJSKA OSNOVA RAUNARAAlgoritam predstavlja skup akcija sa definisanimredosledom njihovog obavljanja, koji primenjen na polazni skuppodataka, dovodi do traenih rezultata.U procesu programiranja, skup akcija definisan je

    mogunostima raunara, odnosno naredbama programskogjezika koji se koristi, dok se redosled izvravanja akcija zadajepomoualgoritamskih (programskih) struktura.

  • 7/28/2019 algoritmi algoritmi algoritmi algoritmi

    4/36

    TEORIJSKA OSNOVA RAUNARA

    Efektivni postupci su svuda prisutni u realnosti, od onihsvakodnevnih:buenja,ustajanja,umivanja,doruka,koji se obino izvode rutinski, po ustaljenim navikama i redu.

  • 7/28/2019 algoritmi algoritmi algoritmi algoritmi

    5/36

    OSNOVNI POJMOVI ALGORITAMAPomenimo da postoji veliki broj razliitih matematikihformalizacija pojma algoritma.Mi emo pomenuti najvanije:1. Tjuringove maine2. Postovi sistemi3. Karkovljevi algoritmi4. Rekurzivne funkcije5. erov -raun6. Kombinatorski raun7. URK (beskonane registarske maine)

  • 7/28/2019 algoritmi algoritmi algoritmi algoritmi

    6/36

    OSNOVNI POJMOVI ALGORITAMA

    Matematiki sedokazuje da su sve oveformalizacije algoritamameusobno ekvivalentne,odnosno svaki algoritam kojise moe predstaviti pomoujedne od ovih formalizacija,moe se predstaviti ipomou bilo koje druge.

  • 7/28/2019 algoritmi algoritmi algoritmi algoritmi

    7/36

    OSNOVNI POJMOVI ALGORITAMA

    Za nas je dovoljno da koristimo neku od intuitivnih definicijaalgoritma: Algoritam je precizan opis postupaka koji vode eljenom cilju. Algoritam je uputstvo za obavljanje posla. Algoritam je skup uputstava koja opisuju kako doi do reenja

    problema.

  • 7/28/2019 algoritmi algoritmi algoritmi algoritmi

    8/36

    OSNOVNI POJMOVI ALGORITAMA

    Svaki programski jezikpredstavlja neku formalizacijualgoritama, pa zato moemokoristiti definiciju pojmaprogram:Program je algoritam zapisanna nekom programskom jeziku.

  • 7/28/2019 algoritmi algoritmi algoritmi algoritmi

    9/36

    OPISIVANJE ALGORITMA

    Na osnovu prethodno reenom o algoritmu, jasno je da sealgoritam moe opisati kako pomou bilo koje od navedenihmatematikih formalizacija, tako i pomou nekog programskogjezika.Upoznaemo neke od naina za opisivanje algoritama:

    prirodni jezikpseudo jezikblok eme (dijagrami toka)

  • 7/28/2019 algoritmi algoritmi algoritmi algoritmi

    10/36

    OPIS ALGORITMA PRIRODNIM JEZIKOM

    Da bi algoritam koji saoptavamo prirodnim jezikom bioprecizan i dovoljno detaljan potrebno je voditi rauna daizlaganje bude jasno i nedvosmisleno, to je posebno znaajnopri izlaganju redosleda operacija koje se moraju izvriti.

  • 7/28/2019 algoritmi algoritmi algoritmi algoritmi

    11/36

  • 7/28/2019 algoritmi algoritmi algoritmi algoritmi

    12/36

    OPIS ALGORITMA DIJAGRAMOM TOKA

  • 7/28/2019 algoritmi algoritmi algoritmi algoritmi

    13/36

    PROMENLJIVE VELIINE U ALGORITMU

    Promenljiva je prostor u memoriji raunara koji je imenovani slui za uvanjeodgovarajuih vrednosti.Pri izradi algoritama promenljivim se daju imena (oznake)po elji, bitno je samo da se ta imena mogu zapisati u okviruzapisa algoritma.U programimskim jezicima imena se obino ograniavajuna slova latinice i jo neke dopunske simbole.

  • 7/28/2019 algoritmi algoritmi algoritmi algoritmi

    14/36

    PROMENLJIVE VELIINE U ALGORITMUprimeriNapraviti algoritam za poveavanje promenljive X za 2.reenje:X = X+2.Napraviti algoritam za meusobnu zamenu vrednostipromenljivih X i Y.reenje:Z = X;X = Y;Y = Z.

  • 7/28/2019 algoritmi algoritmi algoritmi algoritmi

    15/36

    ELEMENTARNE STRUKTURE ALGORITMA

    Strukturno programiranje je stil programiranja (pisanjaprograma i formiranja algoritama) koji podrazumeva upotrebuizvesnih pravila koja su poznata kao (lepo pisanje) kojaobezbeuju preglednost programa.

  • 7/28/2019 algoritmi algoritmi algoritmi algoritmi

    16/36

    ELEMENTARNE STRUKTURE ALGORITMA

    Kao rezultat upotrebe novog stila rada poveana je itljivostprograma, smanjena verovatnoa pojavljivanja greaka iolakano njihovo pronalaenje, olakano je dokazivanjekorektnosti programa, pojednostavljen je postupak naknadnogprilagoavanja i prepravljanja programa.

  • 7/28/2019 algoritmi algoritmi algoritmi algoritmi

    17/36

    ELEMENTARNE STRUKTURE ALGORITMA

    Dokaz da se svaki algoritam moe predstaviti i bezupotrebe skokova, samo uz upotrebu programskih struktura:if...then...else...(ako...onda...inae..struktura koja

    obezbeujeodluivanje i grananje) iwhile...repeat... (dok vai...ponavljaj... struktura kojaobezbeuje ponavljanje) praktino je omogueno zasnivanje iupotrebu novog stila. Radi itljivosti i efikasnosti proceduralniprogramski jezici najee obuhvataju i jo neke programske

    strukture.

  • 7/28/2019 algoritmi algoritmi algoritmi algoritmi

    18/36

    ELEMENTARNE STRUKTURE ALGORITMA

    Pod algoritamskom (programskom) strukturompodrazumevamo vie koraka (komandi programskog jezika)koji ine jednu celinu. Postoje tri elementarne algoritamskestrukture:

    Linijska Razgranata Ciklina

  • 7/28/2019 algoritmi algoritmi algoritmi algoritmi

    19/36

    LINIJSKA STRUKTURA

    Niz algoritamskih koraka koji se bezuslovno izvode jedanza drugim naziva se linijskom (sekvencijalnom) algoritamskomstrukturom.

  • 7/28/2019 algoritmi algoritmi algoritmi algoritmi

    20/36

    LINIJSKA STRUKTURALinijska algoritamska struktura ima tano jednu ulaznutaku, tano jednu izlaznu taku i takav tok da se svaki njenkorak bezuslovno izvravatano jednom. Predstaviemo pseudojezikom i dijagramom toka elementarnu linijsku strukturu koju ini

    niz od dva koraka: proces 1; proces 2;

  • 7/28/2019 algoritmi algoritmi algoritmi algoritmi

    21/36

    LINIJSKA STRUKTURAprimer: Svima nama poznat je algoritam koji opisuje kako stavitimleko u friider:

    Pocetak

    Otvoriti

    friider

    Kraj

    (1) Otvoriti friider;

    (2) Staviti mleko u friider;

    (3) Zatvoriti friider.

    Staviti mleko

    u friider

    Zatvoritifriider

  • 7/28/2019 algoritmi algoritmi algoritmi algoritmi

    22/36

    RAZGRANATA STRUKTURAAlgoritamska struktura koja obezbeuje izvoenje dvarazliita postupka pri emu izbor zavisi od nekog uslova nazivase uslovnim grananjem ili razgranatom algoritamskom

    strukturom.

  • 7/28/2019 algoritmi algoritmi algoritmi algoritmi

    23/36

    RAZGRANATA STRUKTURAUslovno grananje ima tano jednu ulaznu taku, tanojednu izlaznu taku i takav tok da se svaki njen korak izvravanajvie jednom, pri emue svaki korak biti izvren pod nekimodgovarajuim uslovom (ne postoji korak koji se ni pod kojim

    uslovima neeizvriti).

    proces 1 proces 2

    uslovDa Ne

  • 7/28/2019 algoritmi algoritmi algoritmi algoritmi

    24/36

    RAZGRANATA STRUKTURAPoseban sluaj uslovnog grananja je viestruko grananje.Viestruko grananje moemo predstaviti kao vie dvostrukihuslovnih grananja, a u sluaju kada se odluuje na osnovuvrednosti samo jednog izraza tada moemo koristiti i poseban

    zapis:

    Uslov

    Proces 1 Proces 2 Proces n...

    ... vrednost n ostalo

    Proces n+1

    ...vrednost 1 vrednost 2

  • 7/28/2019 algoritmi algoritmi algoritmi algoritmi

    25/36

    RAZGRANATA STRUKTURAPoetak

    Kraj

    1) Uneti X;

    2) Ako je X=1 onda:

    dan je ponedeljak

    3) ...inae, ako je X=2 onda:

    dan je utorak

    4) ...inae, ako je X=3 onda:

    dan je sreda

    5) ...inae, ako je X=4 onda:

    dan je etvrtak

    6) ...inae, ako je X=5 onda:

    dan je petak

    7) ...inae, ako je X=6 onda:dan je subota

    8) ...inae, dan je nedelja;

    9) Ispisati dan.

    Uneti X

    X=1

    Ispisati

    dan

    Da

    Ne

    X=2

    X=3

    Ne

    X=4

    Ne

    X=5

    Ne

    X=6

    Ne

    Da

    Da

    Da

    Da

    Da

    dan = 'nedelja'

    Ne

    dan = 'utorak'

    dan =

    'ponedeljak'

    dan = 'sreda'

    dan = 'etvrtak'

    dan = 'petak'

    dan = 'subota'

  • 7/28/2019 algoritmi algoritmi algoritmi algoritmi

    26/36

    CIKLINA STRUKTURA

    Ponavljanjem, iliciklinom algoritamskomstrukturom nazivamo strukturukoja obezbeuje ponavljanjenekih koraka algoritma.

  • 7/28/2019 algoritmi algoritmi algoritmi algoritmi

    27/36

    CIKLINA STRUKTURA

    Ciklina algoritamska struktura ima tano jednu ulaznutaku,tano jednu izlaznu taku i obezbeuje da se u zavisnostiod nekog uslova izvravaju koraci koji se ponavljaju ili izlazi izstrukture.

    U upotrebi je vieciklinih struktura:(dok) struktura (while)(do) struktura (until)brojaka struktura (for)

  • 7/28/2019 algoritmi algoritmi algoritmi algoritmi

    28/36

    CIKLINA STRUKTURAPredstaviemo dok strukturu pseudo jezikom i na dvanaina dijagramom toka:1.dok je ispunjen uslov ponavljati: 22.proces;

    proces

    uslovDa

    Ne

    proces

    uslov

    Da

    Ne

  • 7/28/2019 algoritmi algoritmi algoritmi algoritmi

    29/36

    CIKLINA STRUKTURAPoetak

    Kraj

    1) Postaviti Zbir=0;

    2) Uneti Broj;

    3) Dok je Broj>=0 ponavljati 4-5

    5) Uneti Broj;

    4) Zbir=Zbir+Broj;

    6) Ispisati Zbir;

    Uneti Broj

    Broj >= 0

    Ispisati

    Zbir

    Da

    Ne

    Zbir = 0

    Zbir=Zbir+Broj

    Uneti Broj

    Ovo je primer upotrebe "dok" strukture.

  • 7/28/2019 algoritmi algoritmi algoritmi algoritmi

    30/36

    CIKLINA STRUKTURAFormirati algoritam za izraunavanje proizvoda dva prirodna broja:

    Poetak

    Kraj

    1) Uneti M i N;

    2) Postaviti Proizvod=0;

    3) Ponavljati:4-5 do: N=0

    4) Proizvod = Proizvod + M;

    5) N = N-1;

    6) Ispisati Proizvod;

    Uneti M,N

    N=0

    IspisatiProizvod

    Ne

    Da

    Proizvod = 0

    Proizvod = Proizvod + M

    N = N - 1

    Ovo je primer upotrebe "do" strukture.

  • 7/28/2019 algoritmi algoritmi algoritmi algoritmi

    31/36

    CIKLINA STRUKTURA

    Brojaka strukturaobezbeuje ponavljanjenekog procesa zadati broj

    puta. Ulazna taka jepoetak brojanja, izlaznataka je kraj brojanja.Brojaka strukturapredstavlja skraivanjezapisa "dok" strukture:

    proces

    brojac

  • 7/28/2019 algoritmi algoritmi algoritmi algoritmi

    32/36

    CIKLINA STRUKTURA1. neka je broja := poetak;2. dok je broja

  • 7/28/2019 algoritmi algoritmi algoritmi algoritmi

    33/36

    CIKLINA STRUKTURAu obliku:

    za broja := poetak do kraj (sa korakom 1) ponavljati: 2proces;

    Brojakustrukturu u dijagramu toka moemo predstavljati kao

    gde je i broja, p poetna vrednost brojaa, k krajnja vrednostbrojaa i s korak kojim se broja menja.

    proces

    brojac

  • 7/28/2019 algoritmi algoritmi algoritmi algoritmi

    34/36

    CIKLINA STRUKTURAprimerFormirati algoritam za izraunavanje sume brojeva 1 do N, gde

    se N uitava:

    Poetak

    Kraj

    1) Uneti N;

    2) Postaviti Suma=0;

    3) Za A:=1 do N ponavljati:4

    4) Suma:=Suma+A;

    6) Ispisati Suma;

    Uneti N

    Ispisati

    Suma

    Suma = 0

    Suma := Suma + A

    za A:=1..N

  • 7/28/2019 algoritmi algoritmi algoritmi algoritmi

    35/36

    FORMIRANJE ALGORITMA

    Postoji vie metoda formiranja algoritma, ali mi emo se

    zadrati na metodu od vrha nanie (top-down).Metod formiranja algoritama od vrha prema dnu

    podrazumeva postepeno reavanje detalja u polaznom vrlo

    uoptenom algoritmu.

    Reavanje po nivoima omoguava izgradnju sloenog

    algoritma iz vie jednostavnijih, ime se postupak inijednostavnijim i brim i smanjuje se verovatnoa pojavljivanja

    greaka.

  • 7/28/2019 algoritmi algoritmi algoritmi algoritmi

    36/36

    FORMIRANJE ALGORITMA

    Konstrukcija algoritma se zavrava kada svi procesi budu

    do kraja razvijeni, odnosno opisani dovoljno detaljno da se

    algoritam moe implementirati.

    Ovaj metod se dobro uklapa u strukturno programiranje i

    kao svoj zavrni rezultat daje program na nekom programskom

    jeziku.