ALGORITMI TEORIJSKA OSNOVA RAUNARA Sve poslove koje raunar

  • Slides: 36
Download presentation
ALGORITMI

ALGORITMI

TEORIJSKA OSNOVA RAČUNARA Sve poslove koje računar obavlja izvode se postupno, korak po korak,

TEORIJSKA OSNOVA RAČUNARA Sve poslove koje računar obavlja izvode se postupno, korak po korak, u konačnom vremenu. Svaki korak je jasno preciziran, kao i prelazak na svaki naredni korak. Na kraju postupka, kad računar završi rad (ukoliko se to uopšte desi, jer moguće je i da se rad nikada ne završi), dobije se nešto kao rezultat.

TEORIJSKA OSNOVA RAČUNARA Algoritam predstavlja skup akcija sa definisanim redosledom njihovog obavljanja, koji primenjen

TEORIJSKA OSNOVA RAČUNARA Algoritam predstavlja skup akcija sa definisanim redosledom njihovog obavljanja, koji primenjen na polazni skup podataka, dovodi do traženih rezultata. U procesu programiranja, skup akcija definisan je mogućnostima računara, odnosno naredbama programskog jezika koji se koristi, dok se redosled izvršavanja akcija zadaje pomoću algoritamskih (programskih) struktura.

TEORIJSKA OSNOVA RAČUNARA Efektivni postupci su svuda prisutni u realnosti, od onih svakodnevnih: buđenja,

TEORIJSKA OSNOVA RAČUNARA Efektivni postupci su svuda prisutni u realnosti, od onih svakodnevnih: buđenja, ustajanja, umivanja, doručka, koji se obično izvode rutinski, po ustaljenim navikama i redu.

OSNOVNI POJMOVI ALGORITAMA Pomenimo da postoji veliki broj različitih matematičkih formalizacija pojma algoritma. Mi

OSNOVNI POJMOVI ALGORITAMA Pomenimo da postoji veliki broj različitih matematičkih formalizacija pojma algoritma. Mi ćemo pomenuti najvažnije: 1. 2. 3. 4. 5. 6. 7. Tjuringove mašine Postovi sistemi Karkovljevi algoritmi Rekurzivne funkcije Čerčov -račun Kombinatorski račun URK (beskonačne registarske mašine)

OSNOVNI POJMOVI ALGORITAMA Matematički se dokazuje da su sve ove formalizacije algoritama međusobno ekvivalentne,

OSNOVNI POJMOVI ALGORITAMA Matematički se dokazuje da su sve ove formalizacije algoritama međusobno ekvivalentne, odnosno svaki algoritam koji se može predstaviti pomoću jedne od ovih formalizacija, može se predstaviti i pomoću bilo koje druge.

OSNOVNI POJMOVI ALGORITAMA Za nas je dovoljno da koristimo neku od intuitivnih definicija algoritma:

OSNOVNI POJMOVI ALGORITAMA Za nas je dovoljno da koristimo neku od intuitivnih definicija algoritma: Ø Algoritam je precizan opis postupaka koji vode željenom cilju. Ø Algoritam je uputstvo za obavljanje posla. Ø Algoritam je skup uputstava koja opisuju kako doći do rešenja problema.

OSNOVNI POJMOVI ALGORITAMA Svaki programski jezik predstavlja neku formalizaciju algoritama, pa zato možemo koristiti

OSNOVNI POJMOVI ALGORITAMA Svaki programski jezik predstavlja neku formalizaciju algoritama, pa zato možemo koristiti definiciju pojma program: Program je algoritam zapisan na nekom programskom jeziku.

OPISIVANJE ALGORITMA Na osnovu prethodno rečenom o algoritmu, jasno je da se algoritam može

OPISIVANJE ALGORITMA Na osnovu prethodno rečenom o algoritmu, jasno je da se algoritam može opisati kako pomoću bilo koje od navedenih matematičkih formalizacija, tako i pomoću nekog programskog jezika. Upoznaćemo neke od načina za opisivanje algoritama: Ø prirodni jezik Ø pseudo jezik Ø blok šeme (dijagrami toka)

OPIS ALGORITMA PRIRODNIM JEZIKOM Da bi algoritam koji saopštavamo prirodnim jezikom bio precizan i

OPIS ALGORITMA PRIRODNIM JEZIKOM Da bi algoritam koji saopštavamo prirodnim jezikom bio precizan i dovoljno detaljan potrebno je voditi računa da izlaganje bude jasno i nedvosmisleno, što je posebno značajno pri izlaganju redosleda operacija koje se moraju izvršiti.

OPIS ALGORITMA PSEUDO JEZIKOM Pseudo jezik je neformalna kombinacija prirodnog jezika i nekog zamišljenog

OPIS ALGORITMA PSEUDO JEZIKOM Pseudo jezik je neformalna kombinacija prirodnog jezika i nekog zamišljenog programskog jezika, pa njegova upotreba podrazumeva zapisivanje algoritama u obliku koji je nalik na neki programski jezik. *Zdravo svete! #include <iostream. h> int main () { cout << "Zdravo svete!n"; return 0; }

OPIS ALGORITMA DIJAGRAMOM TOKA

OPIS ALGORITMA DIJAGRAMOM TOKA

PROMENLJIVE VELIČINE U ALGORITMU Promenljiva je prostor u memoriji računara koji je imenovan i

PROMENLJIVE VELIČINE U ALGORITMU Promenljiva je prostor u memoriji računara koji je imenovan i služi za čuvanje odgovarajućih vrednosti. Pri izradi algoritama promenljivim se daju imena (oznake) po želji, bitno je samo da se ta imena mogu zapisati u okviru zapisa algoritma. U programimskim jezicima imena se obično ograničavaju na slova latinice i još neke dopunske simbole.

PROMENLJIVE VELIČINE U ALGORITMU primeri Napraviti algoritam za povećavanje promenljive X za 2. rešenje:

PROMENLJIVE VELIČINE U ALGORITMU primeri Napraviti algoritam za povećavanje promenljive X za 2. rešenje: X = X+2. Napraviti algoritam za međusobnu zamenu vrednosti promenljivih X i Y. rešenje: Z = X; X = Y; Y = Z.

ELEMENTARNE STRUKTURE ALGORITMA Strukturno programiranje je stil programiranja (pisanja programa i formiranja algoritama) koji

ELEMENTARNE STRUKTURE ALGORITMA Strukturno programiranje je stil programiranja (pisanja programa i formiranja algoritama) koji podrazumeva upotrebu izvesnih pravila koja su poznata kao (lepo pisanje) koja obezbeđuju preglednost programa.

ELEMENTARNE STRUKTURE ALGORITMA Kao rezultat upotrebe novog stila rada povećana je čitljivost programa, smanjena

ELEMENTARNE STRUKTURE ALGORITMA Kao rezultat upotrebe novog stila rada povećana je čitljivost programa, smanjena verovatnoća pojavljivanja grešaka i olakšano njihovo pronalaženje, olakšano je dokazivanje korektnosti programa, pojednostavljen je postupak naknadnog prilagođavanja i prepravljanja programa.

ELEMENTARNE STRUKTURE ALGORITMA Dokaz da se svaki algoritam može predstaviti i bez upotrebe skokova,

ELEMENTARNE STRUKTURE ALGORITMA Dokaz da se svaki algoritam može predstaviti i bez upotrebe skokova, samo uz upotrebu programskih struktura: if. . . then. . . else. . . (ako. . . onda. . . inače. . struktura koja obezbeđuje odlučivanje i grananje) i while. . . repeat. . . (dok važi. . . ponavljaj. . . struktura koja obezbeđuje ponavljanje) praktično je omogućeno zasnivanje i upotrebu novog stila. Radi čitljivosti i efikasnosti proceduralni programski jezici najčešće obuhvataju i još neke programske strukture.

ELEMENTARNE STRUKTURE ALGORITMA Pod algoritamskom (programskom) strukturom podrazumevamo više koraka (komandi programskog jezika) koji

ELEMENTARNE STRUKTURE ALGORITMA Pod algoritamskom (programskom) strukturom podrazumevamo više koraka (komandi programskog jezika) koji čine jednu celinu. Postoje tri elementarne algoritamske strukture: § § § Linijska Razgranata Ciklična

LINIJSKA STRUKTURA Niz algoritamskih koraka koji se bezuslovno izvode jedan za drugim naziva se

LINIJSKA STRUKTURA Niz algoritamskih koraka koji se bezuslovno izvode jedan za drugim naziva se linijskom (sekvencijalnom) algoritamskom strukturom.

LINIJSKA STRUKTURA Linijska algoritamska struktura ima tačno jednu ulaznu tačku, tačno jednu izlaznu tačku

LINIJSKA STRUKTURA Linijska algoritamska struktura ima tačno jednu ulaznu tačku, tačno jednu izlaznu tačku i takav tok da se svaki njen korak bezuslovno izvršava tačno jednom. Predstavićemo pseudo jezikom i dijagramom toka elementarnu linijsku strukturu koju čini niz od dva koraka: • proces 1; • proces 2;

LINIJSKA STRUKTURA primer: Svima nama poznat je algoritam koji opisuje kako staviti mleko u

LINIJSKA STRUKTURA primer: Svima nama poznat je algoritam koji opisuje kako staviti mleko u frižider:

RAZGRANATA STRUKTURA Algoritamska struktura koja obezbeđuje izvođenje dva različita postupka pri čemu izbor zavisi

RAZGRANATA STRUKTURA Algoritamska struktura koja obezbeđuje izvođenje dva različita postupka pri čemu izbor zavisi od nekog uslova naziva se uslovnim grananjem ili razgranatom algoritamskom strukturom.

RAZGRANATA STRUKTURA Uslovno grananje ima tačno jednu ulaznu tačku, tačno jednu izlaznu tačku i

RAZGRANATA STRUKTURA Uslovno grananje ima tačno jednu ulaznu tačku, tačno jednu izlaznu tačku i takav tok da se svaki njen korak izvršava najviše jednom, pri čemu će svaki korak biti izvršen pod nekim odgovarajućim uslovom (ne postoji korak koji se ni pod kojim uslovima neće izvršiti).

RAZGRANATA STRUKTURA Poseban slučaj uslovnog grananja je višestruko grananje. Višestruko grananje možemo predstaviti kao

RAZGRANATA STRUKTURA Poseban slučaj uslovnog grananja je višestruko grananje. Višestruko grananje možemo predstaviti kao više dvostrukih uslovnih grananja, a u slučaju kada se odlučuje na osnovu vrednosti samo jednog izraza tada možemo koristiti i poseban zapis:

RAZGRANATA STRUKTURA

RAZGRANATA STRUKTURA

CIKLIČNA STRUKTURA Ponavljanjem, ili cikličnom algoritamskom strukturom nazivamo strukturu koja obezbeđuje ponavljanje nekih koraka

CIKLIČNA STRUKTURA Ponavljanjem, ili cikličnom algoritamskom strukturom nazivamo strukturu koja obezbeđuje ponavljanje nekih koraka algoritma.

CIKLIČNA STRUKTURA Ciklična algoritamska struktura ima tačno jednu ulaznu tačku, tačno jednu izlaznu tačku

CIKLIČNA STRUKTURA Ciklična algoritamska struktura ima tačno jednu ulaznu tačku, tačno jednu izlaznu tačku i obezbeđuje da se u zavisnosti od nekog uslova izvršavaju koraci koji se ponavljaju ili izlazi iz strukture. U upotrebi je više cikličnih struktura: (dok) struktura (while) (do) struktura (until) brojačka struktura (for)

CIKLIČNA STRUKTURA Predstavićemo “dok” strukturu pseudo jezikom i na dva načina dijagramom toka: 1.

CIKLIČNA STRUKTURA Predstavićemo “dok” strukturu pseudo jezikom i na dva načina dijagramom toka: 1. dok je ispunjen uslov ponavljati: 2 2. proces;

CIKLIČNA STRUKTURA Ovo je primer upotrebe "dok" strukture.

CIKLIČNA STRUKTURA Ovo je primer upotrebe "dok" strukture.

CIKLIČNA STRUKTURA Formirati algoritam za izračunavanje proizvoda dva prirodna broja: Ovo je primer upotrebe

CIKLIČNA STRUKTURA Formirati algoritam za izračunavanje proizvoda dva prirodna broja: Ovo je primer upotrebe "do" strukture.

CIKLIČNA STRUKTURA Brojačka struktura obezbeđuje ponavljanje nekog procesa zadati broj puta. Ulazna tačka je

CIKLIČNA STRUKTURA Brojačka struktura obezbeđuje ponavljanje nekog procesa zadati broj puta. Ulazna tačka je početak brojanja, izlazna tačka je kraj brojanja. Brojačka struktura predstavlja skraćivanje zapisa "dok" strukture:

CIKLIČNA STRUKTURA 1. 2. 3. 4. neka je brojač : = početak; dok je

CIKLIČNA STRUKTURA 1. 2. 3. 4. neka je brojač : = početak; dok je brojač <= kraj ponavljati: 3 -4 proces; brojač : = brojač + 1;

CIKLIČNA STRUKTURA u obliku: za brojač : = početak do kraj (sa korakom 1)

CIKLIČNA STRUKTURA u obliku: za brojač : = početak do kraj (sa korakom 1) ponavljati: 2 proces; Brojačku strukturu u dijagramu toka možemo predstavljati kao gde je i brojač, p početna vrednost brojača, k krajnja vrednost brojača i s korak kojim se brojač menja.

CIKLIČNA STRUKTURA primer Formirati algoritam za izračunavanje sume brojeva 1 do N, gde se

CIKLIČNA STRUKTURA primer Formirati algoritam za izračunavanje sume brojeva 1 do N, gde se N učitava:

FORMIRANJE ALGORITMA Postoji više metoda formiranja algoritma, ali mi ćemo se zadržati na metodu

FORMIRANJE ALGORITMA Postoji više metoda formiranja algoritma, ali mi ćemo se zadržati na metodu od vrha naniže (top-down). Metod formiranja algoritama od vrha prema dnu podrazumeva postepeno rešavanje detalja u polaznom vrlo uopštenom algoritmu. Rešavanje po nivoima omogućava izgradnju složenog algoritma iz više jednostavnijih, čime se postupak čini jednostavnijim i bržim i smanjuje se verovatnoća pojavljivanja grešaka.

FORMIRANJE ALGORITMA Konstrukcija algoritma se završava kada svi procesi budu do kraja razvijeni, odnosno

FORMIRANJE ALGORITMA Konstrukcija algoritma se završava kada svi procesi budu do kraja razvijeni, odnosno opisani dovoljno detaljno da se algoritam može implementirati. Ovaj metod se dobro uklapa u strukturno programiranje i kao svoj završni rezultat daje program na nekom programskom jeziku.