53
Algoritam Prije pisanja programa u programskom jeziku treba osmisliti korake u rješavanju problema. Ti koraci moraju biti nedvosmisleni, jer raˇ cunari mogu da izvršavaju samo nedvosmislene direktive. Slijed koraka koji vode ka rješenju nekog problema naziva se algoritam. Termin algoritam potiˇ ce od imena persijskog mislioca Abu Abdulah Muhameda bin Musa Al-Kwarezmija, koji je u IX vijeku osmislio postupke za obavljanje osnovnih matematiˇ ckih operacija. Kada se programer suoˇ ci sa nekim problemom, treba da razvije postupak za njegovo rješavanje – algoritam, a zatim da taj algoritam pretvori u kôd (tj. tekst) nekog programa. M. Dakovi´ c (Elektrotehniˇ cki fakultet) Osnovi raˇ cunarstva II – ˇ Cas 1 2. februar 2015 11 / 36

Algoritam - sau.ac.me

  • Upload
    others

  • View
    20

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Algoritam - sau.ac.me

Algoritam

Prije pisanja programa u programskom jeziku treba osmisliti korakeu rješavanju problema.

Ti koraci moraju biti nedvosmisleni, jer racunari mogu da izvršavajusamo nedvosmislene direktive.

Slijed koraka koji vode ka rješenju nekog problema naziva sealgoritam.

Termin algoritam potice od imena persijskog mislioca Abu AbdulahMuhameda bin Musa Al-Kwarezmija, koji je u IX vijeku osmisliopostupke za obavljanje osnovnih matematickih operacija.

Kada se programer suoci sa nekim problemom, treba da razvijepostupak za njegovo rješavanje – algoritam, a zatim da tajalgoritam pretvori u kôd (tj. tekst) nekog programa.

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 1 2. februar 2015 11 / 36

Page 2: Algoritam - sau.ac.me

Program – algoritam i podaci

Program je niz instrukcija koje racunar može izvršiti i ciji je rezultatrješenje nekog konkretnog problema (zadatka).

Programski jezik je skup svih dozvoljenih instrukcija i pravilanjihovog kombinovanja.Po terminologiji koju je uveo Niklaus Wirth, program se sastoji oddvije cjeline:

algoritma ipodataka.

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 1 2. februar 2015 12 / 36

Page 3: Algoritam - sau.ac.me

Podaci

U racunarskoj terminologiji poznati su: elementarni (osnovni) isloženi (izvedeni) tipovi podataka.Elementarni tipovi podataka su:

cijeli brojrealni (decimalni) brojkarakter (slovni podatak)

Tri elementarna tipa podataka su realizovana i tumace sehardverski.

Konkretno ovo znaci da se dekadna vrijednost cijelog broja tumacina osnovu njegovog binarnog memorijskog zapisa (npr.00101011(2) = 43(10)), a da se negativni cijeli brojevi prikazujupreko dvojnog komplementa (npr. 10101011(2) =−85(10)).Tumacenje karaktera se obavlja preko ASCII (ili neke druge)tabele.

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 1 2. februar 2015 13 / 36

Page 4: Algoritam - sau.ac.me

Podaci — nastavak

Podaci odredenog tipa zauzimaju tacno definisanu memoriju. Naprimjer karakteri zauzimaju 1 bajt, cijeli brojevi se cesto zapisujusa 32 bita, odnosno zauzimaju 4 bajta, realni brojevi se cestozapisuju u pokretnom zarezu sa ukupno 64 bita (8bajtova).

Podaci imaju domen. Domen predstavlja opseg vrijednosti kojemože uzeti promjenljiva odredenog tipa. Na primjer ako cjelobrojnapromjenljiva zauzima 1 bajt ona ne može imati više od 256 = 28

razlicitih vrijednosti.

Kod svakog tipa podataka imamo i operacije koje se nad tim tipomsprovode (npr. sabiranje, oduzimanje, uporedivanje itd). Operacijese izvode uglavnom po matematickim pravilima.

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 1 2. februar 2015 14 / 36

Page 5: Algoritam - sau.ac.me

Imenovanje podataka

Imena podataka u svim programskim jezicima (što cemo mi usvojitiza naše algoritme) moraju se sastojati od slova (ukljucujuci i znakunderscore ili podvlaka _ ) i cifara, s tim da ime ne smije pocinjaticifrom.

Pojedini programski jezici razlikuju mala i velika slova prilikomimenovanja promjenljivih (za njih kažemo da su „case sensitive“),dok drugi ovu razliku ne poznaju.

Svakom imenovanom podatku pridružuje se dio radne memorije ukojoj se skladišti vrijednost podatka.

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 1 2. februar 2015 15 / 36

Page 6: Algoritam - sau.ac.me

Dodjela vrijednosti

Podatku A dodijelimo vrijednost 5A = 5

Podatku B dodijelimo vrijednost ’m’B = ’m’

Vrijednost podatka C odredimo kao 2A+7C = 2∗A+7

Sve ove operacije vrše dodjelu vrijednosti imenovanom podatku.Operaciju dodjele vrijednosti obilježavacemo sa = vodeci racunada to nije matematicka jednakost. Na lijevoj strani mora bitiimenovani podatak a na desnoj strani izraz, koji kada se „izracuna“postaje vrijednost imenovanog podatka.

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 1 2. februar 2015 16 / 36

Page 7: Algoritam - sau.ac.me

Dodjela vrijednosti – nastavak

Nije dozvoljeno (iako je matematicki korektno):3+A = B

jer na lijevoj strani operatora = nije imenovani podatak.

Sa druge strane, dozvoljeno je (iako matematicki nije bašsmisleno):

A = A+BA i B se saberu i rezultat smjesti u promjenljivu A.

U nekim programskim jezicima se koristi := kao operator dodjelevrijednosti. (A := 3)

U algoritmima se dodjela vrijednosti nekad obilježava sa strelicom(A← 3)

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 1 2. februar 2015 17 / 36

Page 8: Algoritam - sau.ac.me

Aritmeticke operacije

Sabiranje, množenje, oduzimanje, dijeljenje ...

Operacije se obavljaju u ALU racunara koja ima ogranicenu dužinuregistara.

U programiranju se ne može podrazumijevati da je sabiranjeasocijativna operacija (a+b)+ c = a+(b+ c) (ovo ce bitidemonstrirano kasnije)

Iz matematike znamo da je x+1 uvijek vece od x ako je x cijelibroj. Razmislite šta ce se desiti ako je cijeli broj u registru racunarazapisan kao niz jedinica 111...111 i dodamo mu 1.

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 1 2. februar 2015 18 / 36

Page 9: Algoritam - sau.ac.me

Operacije poredenja

U našim algoritmima koristicemo sljedece (binarne) operacijeporedenja:

> vece od — prvi operand je veci od drugog;< manje od — prvi operand je manji od drugog;≥ vece ili jednako — prvi operand je veci ili jednak od drugog;≤ manje ili jednako — prvi operand je manji ili jednak od drugog;≡ jednakost — prvi operand je jednak drugom;6= nejednakost — prvi operand nije jednak drugom.

U programskim jezicima se koriste operatori: >=, <=, ==, <>

Važno je da operator poredenja na jednakost ≡ razlikujemo odoperatora pridruživanja (dodjele vrijednosti) =.

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 1 2. februar 2015 19 / 36

Page 10: Algoritam - sau.ac.me

Logicke operacije

Programiranje poznaje logicke operacije, tj. operacije Bulovealgebre koje ste naucili u prethodnom semestru.

Operacija negacije, u oznaci ¬A daje vrijednost tacno ako je Anetacno i obrnuto.

Tabele istinitosti operacija i, ili i ekskluzivno ili, su prikazane ispod:

I (AND)

A B A∧B⊥ ⊥ ⊥⊥ > ⊥> ⊥ ⊥> > >

ILI (OR)

A B A∨B⊥ ⊥ ⊥⊥ > >> ⊥ >> > >

EX-ILI (XOR)

A B A⊕B⊥ ⊥ ⊥⊥ > >> ⊥ >> > ⊥

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 1 2. februar 2015 20 / 36

Page 11: Algoritam - sau.ac.me

Prioritet operacija

Prioritet operacija u programiranju je isti kao u matematici:množenje i dijeljenje imaju veci prioritet od sabiranja i oduzimanja.U izrazu: A+B∗C ce se prvo obaviti množenje, pa tek ondasabiranje.

Prioritet se može promijeniti upotrebom malih zagrada: (A+B)∗Cgdje se prvo izracuna izraz unutar zagrada, pa se tek ondapomnoži sa brojem C.

Operacije poredenja se uvijek obavljaju prije logickih operacija:x > 2∧ x≤ 4. Za razliku od prethodnog primjera, ovdje zagradenijesu potrebne.

Zagrade je poželjno stavljati i tamo gdje se mogu izostaviti, ukolikoizrazi postaju jasniji.

Ako postoji bilo kakva dilema o prioritetu operacija treba postavitizagrade bez „ustrucavanja“.

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 1 2. februar 2015 21 / 36

Page 12: Algoritam - sau.ac.me

Karakter tip podatka

U memoriji racunara karakteri se, kao i svi drugi podaci, prikazujupreko bitova.

Numericki ekvivalent zapisanog karaktera se naziva kôdom togakaraktera

Na osnovu saznanja da je na odredenoj memorijskoj lokacijiupisan karakter i na osnovu sadržaja te memorijske lokacije vrši setumacenje koji je karakter u pitanju.

Da bi razlikovali konstante tipa karakter od imena promjenljivih tocemo u našim algoritmima ove konstante navoditi unutar apostrofa:’A’, ’+’, ’1’, ’*’.

Sa karakter podacima su dozvoljene operacije poredenja, pri cemuse u vecini slucajeva poredenje vrši leksikografski vodeci racunada su cifre „ispred“ slova, i da su velika slova „ispred“ malih.

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 1 2. februar 2015 22 / 36

Page 13: Algoritam - sau.ac.me

Nizovi i matrice

Programski jezici cesto rade sa vecom kolicinom podataka istogtipa. Ti podaci se po potrebi mogu smjestiti u niz.

Elementi niza dužine N se mogu obilježiti sa:a(1),a(2), ...,a(N)a[1],a[2], ...,a[N] ilia1,a2, ...,aN

Napomenimo da razliciti programski jezici usvajaju drugacijenotacije za indeksiranje nizova.

Kod matrica dimenzija M×N elementi su indeksirani kao:a(1,1),a(1,2), ...,a(1,N)a(2,1),a(2,2), ...,a(2,N)...a(M,1),a(M,2), ...,a(M,N)

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 1 2. februar 2015 23 / 36

Page 14: Algoritam - sau.ac.me

Nizovi i matrice — nastavak

Sa elementima niza su dozvoljene sve operacije koje sudozvoljene u radu sa elementarnim podacima tipa kojem pripadajuelemnti niza:

b(1) = b(2)−b(3)a(2,3) = a(1,2)−b(1)b(1)> 2

Niz karaktera se naziva string.

Sa clanovima niza karaktera mogu da se vrše sve operacije kojese mogu vršiti sa podacima tipa karakter.

Jedna bitna razlika u odnosu na nizove cijelih i realnih brojeva je tada se podaci koji cine niz brojeva ucitavaju sa tastature racunarajedan po jedan, i na isti nacin prikazuju na ekranu, dok se nizkaraktera može ucitati i prikazati odjednom.

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 1 2. februar 2015 24 / 36

Page 15: Algoritam - sau.ac.me

Algoritamski koraci

U algoritmima prepoznajemo sljedece korake:Pocetak algoritma;

Najavu korišcenja promjenljivih (sekcija za deklaraciju);

Ulaz (unos) podataka;

Sekvencu (seriju pojedinacnih naredbi, jedna za drugom);

Selekciju (dio naredbi koje se izvršavaju u zavisnosti od ispunjenjanekog logickog uslova);

Ciklus (dio naredbi koji se ponavlja više puta);

Izlaz (ispis, štampanje) podataka;

Kraj algoritma.

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 1 2. februar 2015 25 / 36

Page 16: Algoritam - sau.ac.me

Predstavljanje algoritama

Najjednostavniji nacin za predstavljanje algoritma bi bio tekstualnizapis. Ovakav nacin u vecini slucajeva nije prihvatljiv jer vecinagovornih jezika nije jednoznacna (istu stvar možemo kazati na višenacina a jedna tvrdnja može biti razlicito tumacena)

Odomacen nacin je graficki, preko algoritamske šeme, koja koristiljudske vizuelne sposobnosti. Ovdje se algoritamski koracipredstavljaju jednostavnim grafickim simbolima.

Pored ovoga, postoji mnogo drugih nacina, ali cemo mi posmatratijoš samo pseudokod.

Pseudokod je slican tekstu u nekom govornom jeziku (obicnoengleskom, ali može i našem), a ujedno je i slican programskimjezicima, mada ne posjeduje komplikovana pravila koja mogupostojati (cesto i smetati) u programskim i govornim jezicima.

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 1 2. februar 2015 26 / 36

Page 17: Algoritam - sau.ac.me

Pocetak i kraj algoritma

Pocetak i kraj algoritma se u algoritamskoj shemi predstavljajuelipsama sa tekstom START, odnosno END.

Od START-a pocinje izvršavanje programa. Tok izvršavanjaprograma ilustruju orjentisane linije, koje povezuju pojedine djelovealgoritma. Tok izvršavanja je po pravilu odozgo na dolje.

U našem pseudokodu pocetak i kraj algoritma ce biti naglašenirijecima START i END u prvom i posljednjem redu pseudokoda.

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 1 2. februar 2015 27 / 36

Page 18: Algoritam - sau.ac.me

Deklaracija promjenljivih

Deklaracija (najava korišcenja) ce se u našoj šemi obilježavatipravougaonikom sa isprekidanim ivicnim linijama. Unutarpravougaonika navodimo imena promjenljivih i odgovarajuci tip.

Deklarisano je da ce A biti cijeli broj, Brealni broj, C i D karakteri (dozvoljeno jeodjednom deklarisati više promjenljivihistog tipa) i da cemo koristiti niz X sanajviše 50 clanova (svaki clan je cijeli broj).

U pseudokodu sekcija za deklaraciju se prikazuje na isti nacin, alibez strelica i isprekidanih linija.

Sekciju za deklaraciju na pocetku ostavite praznu i dopunjavate jekada god uvedete novu promjenljivu u ostatku algoritma.

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 1 2. februar 2015 28 / 36

Page 19: Algoritam - sau.ac.me

Ulaz i izlaz podataka

Graficki simboli za ulaz i izlaz podataka su trapezi. Kod ulaza, jeveca gornja osnovica, a kod izlaza donja.

U našem pseudokodu, naredba za ulaz je INPUT, dok je naredbaza izlaz OUTPUT.

I jedna i druga naredba su pracene sa listom promjenljivih kojekorisnik unosi ili koje se prikazuju korisniku.

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 1 2. februar 2015 29 / 36

Page 20: Algoritam - sau.ac.me

Obrada podataka

Graficki obradu podtaka predstavljamo pravougaonikom.

Unutar pravougaonika upisujemo o kojoj se operaciji radi. Ovajopis mora biti nedvosmislen.

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 1 2. februar 2015 30 / 36

Page 21: Algoritam - sau.ac.me

Sekvenca naredbi

Sekvenca predstavlja niz naredbi koje seizvršavaju redom.

Sekvenca se u algoritmu oznacava kao nizalgoritamskih koraka povezanih strelicama upravcu izvršavanja programa (ako nemastrelica podrazumjeva se odozgo na dolje),dok se naredbe u pseudokodu upisuju jednaza drugom.

U primjeru su navedeni koraci obradepodataka, ali jasno je da bilo koji algoritamskikorak može biti dio sekvence.

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 1 2. februar 2015 31 / 36

Page 22: Algoritam - sau.ac.me

Selekcija

Kod selekcije se naredbe izvršavajuako je zadovoljen neki logicki uslov.

Uslov kod selekcije se upisuje unutarromba ili šestougaonika.

Primjer: ako je Y manje od 30 tadaumanji X za 10

Uocite da je u pseudokoduneophodan ENDIF

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 1 2. februar 2015 32 / 36

Page 23: Algoritam - sau.ac.me

Selekcija – nastavak

Druga varijanta selekcije je oblika: „Ako je zadovoljen neki uslovuradi jednu akciju, a ako nije uradi drugu.“

Uocite kljucnu rijec ELSE u pseudokodu.

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 1 2. februar 2015 33 / 36

Page 24: Algoritam - sau.ac.me

Primjer – kvadratna jednacina

Posmatrajmo realna rješenja kvadratne jednacine

Ax2 +Bx+C = 0

gdje su A, B i C poznati koeficijenti.

Rješenja jednacine zavise od njene diskriminante D = B2−4AC.

Ako je diskriminanta pozitivna (D > 0) i A 6= 0 tada jednacina imadva rješenja:

x1 =−B+

√B2−4AC

2Ax2 =

−B−√

B2−4AC2A

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 1 2. februar 2015 34 / 36

Page 25: Algoritam - sau.ac.me

Primjer – kvadratna jednacina

Ako je diskriminanta jednaka nuli i A 6= 0, onda postoji jednorješenje: x =−B/(2A)Ako je diskriminanta manja od nule, a A 6= 0, jednacina nemarješenja u skupu realnih brojeva.

Ako je A≡ 0 i B 6= 0 postoji jedno rješenje x =−C/B.

Ako je A≡ 0, B≡ 0 i C 6= 0 nema rješenja.

Ako je A≡ 0, B≡ 0 i C ≡ 0 rješenje je trivijalno, odnosno, svako xje moguce rješenje.

O svim ovim slucajevima moramo voditi racuna prilikom sastavljanjaalgoritma za rješavanje kvadratne jednacine jer racunar nece„pretpostavljati“ ništa, niti ce se sam snaci da riješi nestandardneslucajeve kvadratne jednacine.

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 1 2. februar 2015 35 / 36

Page 26: Algoritam - sau.ac.me

Laboratorijske vježbe

Algoritme cemo raditi na predavanjima i racunskim vježbama.

Dok se bavimo algoritmima na laboratorijskim vježbama ce seraditi MS Word i MS Excel.

Cilj ovog dijela vježbi je da steknete vještinu samostalne izradeseminarskog ili specijalistickog rada.

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 1 2. februar 2015 36 / 36

Page 27: Algoritam - sau.ac.me

Ciklusi

Odredeni broj algoritamskih koraka koji se ponavlja više puta senaziva ciklusom.Postoji više tipova ciklusa:

ciklusi koji se ponavljaju tacno odreden broj putaciklusi koji se ponavljaju dok je ispunjen odredeni logicki uslov.U zavisnosti od mjesta u ciklusu gdje se logicki uslov provjeravaimamo:

cikluse sa izlazom na pocetkucikluse sa izlazom na krajucikluse sa izlazom u sredini

Svi ciklusi se mogu svesti na ciklus sa izlaskom na pocetku!

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 2 10. februar 2015. 2 / 28

Page 28: Algoritam - sau.ac.me

Ciklus sa unaprijed zadatim brojem izvršavanja

Odredenu operaciju treba ponovitiN puta gdje je N unaprijed zadatibroj

Koristi se brojacka varijabla

Najcešce korišceni tip ciklusaPrimjeri:

Unos N elemenata nizaRacunanje zbira elemenata nizadužine N

Pseudokod:

FOR i = 1,N...

NEXT

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 2 10. februar 2015. 3 / 28

Page 29: Algoritam - sau.ac.me

Primjer: Unos elemenata niza

Broj elemenata niza mora bitiunaprijed poznat

U jednom ulaznom koraku možese ucitati samo jedan elementniza

Pseudokod:

...INPUT NFOR i = 1,N

INPUT X[i]NEXT...

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 2 10. februar 2015. 4 / 28

Page 30: Algoritam - sau.ac.me

Primjer: Racunanje zbira prvih N prirodnih brojeva

Rezultat je u varijabli SInicijalizacija sume (S = 0)

Podrazumijeva se da je N poznatoprije izvršavanja navedenihkoraka i da je suma S iskorišcenau nastavku algoritma.

Pseudokod:

...S = 0FOR i = 1,N

S = S+iNEXT...

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 2 10. februar 2015. 5 / 28

Page 31: Algoritam - sau.ac.me

Primjer: Racunanje zbira prvih N prirodnih brojeva

Alternativno rješenje bez upotrebeciklusa

Smanjen je broj racunskihoperacija

Zahtijeva detaljniju analizuposmatranog problema

Pseudokod:

...S = N*(N-1)/2...

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 2 10. februar 2015. 6 / 28

Page 32: Algoritam - sau.ac.me

Ciklus sa izlazom na pocetku

Broj ponavljanja ciklusa možebiti nula (na samom pocetkuuslov nije zadovoljen)

Primjena:Polazimo od moguceg rješenjaproblema i popravljamo ga usvakoj iteraciji (ciklusu) svedok ne budemo zadovoljni

Pseudokod:

WHILE uslov...

ENDWHILE

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 2 10. februar 2015. 7 / 28

Page 33: Algoritam - sau.ac.me

Ciklus sa izlazom na kraju

Broj ponavljanja ciklusa jenajmanje 1

Primjena:Unos podataka koji morajuzadovoljiti postavljenekriterijumePrimjer: od korisnika tražimounos pozitivnog cijelog broja

Pseudokod:

DO...

WHILE uslov

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 2 10. februar 2015. 8 / 28

Page 34: Algoritam - sau.ac.me

Ciklus sa izlazom u sredini

Dio ciklusa mora biti izvršen anakon toga se donosi odlukada li nastaviti sa izvršavanjemdrugog dijela.

Svaki ciklus se može svesti naciklus sa izlazom na pocetku.

Pseudokod:

DO...

IF uslov THEN EXIT...

LOOP

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 2 10. februar 2015. 9 / 28

Page 35: Algoritam - sau.ac.me

Ciklus – primjer

Kao primjer ciklusa (onog koji se izvršava nepoznat broj puta, odnosno,dok je zadovoljen odredeni logicki uslov) navodimo Njutnov algoritamza približno odredivanje kvadratnog korijena realnog broja.

Korak 1. Neka tražimo kvadratni korijen broja X . Kao pocetnopogadanje njegovog kvadratnog korijena uzmimoG = X/2. Izracunajmo broj H kao H = X/G.

Korak 2. Ako su G i H približno jednaki s obzirom da je G∗Hjednako X , zakljucujemo da su G i H približno jednakikvadratnom korijenu broja X .

Korak 3. Ako G i H nijesu približno jednaki onda treba uzeti da jenovo G jednako G = (G+H)/2 i ponovo sracunati H kaoH = X/G.

Korak 4. Koraci 2 i 3 se ponavljaju dok se ne dode do rješenja.

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 2 10. februar 2015. 10 / 28

Page 36: Algoritam - sau.ac.me

Kvadratni korijenPseudokod i algoritam

STARTINPUT XG = X/2H = X/GWHILE abs(G-H)>=0.0001

G=(G+H)/2H=H/G

ENDWHILEOUTPUT GEND

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 2 10. februar 2015. 11 / 28

Page 37: Algoritam - sau.ac.me

Ciklusi i selekcija

Unutar jednog ciklusa se može nalaziti proizvoljna sekvencanaredbi.

Nekoliko ciklusa mogu jedan za drugim da cine sekvencu.

Unutar ciklusa se može nalaziti selekcija.

Unutar selekcije se može nalaziti ciklus.

Unutar selekcije se može nalaziti druga selekcija

Unutar ciklusa se može nalaziti drugi ciklus (to se nazivaugnježdavanje ciklusa).

Važno pravilo je da se prvo završava unutrašnji dio (unutrašnji ciklus iliselekcija), pa tek onda spoljašnji, tj. ciklusi i selekcije ne mogu se sjeci.

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 2 10. februar 2015. 12 / 28

Page 38: Algoritam - sau.ac.me

Primjeri za vježbu – rad sa matricama

1 Sabiranje, oduzimanje i množenje dvije matrice, sa provjerom da liim dimenzije omogucavaju ove operacije

2 Odrediti sumu (ili proizvod) elemenata matrice3 Odrediti maksimalni (ili minimalni) element matrice4 Elemente date matrice upisati u niz (vrstu po vrstu)5 Odrediti sumu (ili proizvod) svih kolona (ili vrsta) matrice6 Kreirati vektor koji se sastoji od elemenata matrice sa glavne (ili

sporedne) dijagonale7 Provjeriti da li su ucitane kvadratne matrice inverzne8 Sracunati trag matrice (trag matrice je suma elemenata glavne

dijagonale matrice)9 Provjeriti da li je matrica simetricna10 Odrediti transponovanu matricu date matrice

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 2 10. februar 2015. 13 / 28

Page 39: Algoritam - sau.ac.me

Složenost algoritama

Broj operacija potreban da se algoritam izvrši od pocetka do kraja

Memorijski zahtjevi algoritma

U najjednostavnijim primjerima broj operacija i memorijski zahtjevialgoritma su konstantni.Primjer: Ucitati tri broja A, B i C i izracunati izraz 2A+B/C

broj racunskih operacija je 34 memorijske lokacije su iskorišcene (3 za ulazne podatke i jednaza rezultat)pod memorijskom lokacijom se smatra memorija dovoljna zapamcenje jednog „broja“.

Nijesu svi algoritmi koji rješavaju neki problem jednako kvalitetni.

Mjera kvaliteta algoritama je složenost.

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 2 10. februar 2015. 14 / 28

Page 40: Algoritam - sau.ac.me

Složenost algoritama – tipovi složenosti

Vremenska složenostKoje vrijeme je potrebno za izvršavanje algoritma.Proporcionalno je broju operacija (aritmetickih, logickih ili nekihdrugih), koje algoritam izvršava.Dakle, procjena vremenske složenosti se svodi na brojanjeoperacija u algoritmu.

Prostorna složenostPodrazumjeva koliko prostora u memoriji zauzimaju podaci ualgoritmu.Odreduje se sabiranjem velicine memorijskih lokacija kojezauzimaju promjenljive upotrijebljene u algoritmu.

Komunikaciona složenostOdreduje koliko je potrebno komunikacije procesora saperiferijama, diskovima i memorijom prilikom izvršavanja programa.Posebno je znacajna kod paralelnih kompjutera, kada razniprocesori medusobno komuniciraju.

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 2 10. februar 2015. 15 / 28

Page 41: Algoritam - sau.ac.me

Vremenska složenost algoritama

Mi cemo se detaljnije zadržati na vremenskoj složenosti i doneklena prostornoj, dok komunikacionu necemo razmatrati.

Pod vremenskom složenošcu se podrazumjeva vrijemeizvršavanja algoritma koje je proporcionalno broju operacija ualgoritmu

vrijeme = broj operacija×neki konstantni interval

Teško je odrediti svaku operaciju u algoritmu, a teško je generalnoi porediti operacije kao što su sabiranje i npr. operacije poredenja.

Uoceno je da, u pojedinim algoritmima, neka operacija dominiranad svim ostalim i da se cešce upotrebljava.

Na primjerima cemo videti kako se broje aritmeticke operacije.

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 2 10. februar 2015. 16 / 28

Page 42: Algoritam - sau.ac.me

Racunanje vremenske složenosti algoritma

Kod sekvence se broje operacije na koje se naide. Na primjer, akoje dominantna operacija u algoritmu sabiranje:

A=B+C+DE=A+FG=A*B

3 sabiranja i 1 množenje (kod prvenaredbe postoje dva sabiranja).

Kod selekcije se uzima varijanta sa više operacija:

IF(A>3)B=A+B+3

ELSEC=A+1

ENDIF

2 sabiranja (uzeta je goravarijanta).

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 2 10. februar 2015. 17 / 28

Page 43: Algoritam - sau.ac.me

Racunanje vremenske složenosti algoritma

Kod ciklusa se broj operacija tokom jednog izvršavanja ciklusamnoži sa brojem ponavljanja ciklusa:

I=1WHILE I<12

A=A+BI=I+1

ENDWHILE

ukupno 22 operacije sabiranja (11ponavljanja po 2 operacije)

dodatno: 12 operacija poredenja i23 operacije dodjele vrijednosti

FOR I=1,NS=S+I;P=P*I+1;

NEXT

Ukupno 3N operacija. Dvasabiranja i jedno množenje posvakom prolazu kroz ciklus.

„Skrivena“ operacija uvecavanjabrojaca za 1.

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 2 10. februar 2015. 18 / 28

Page 44: Algoritam - sau.ac.me

Racunanje vremenske složenosti algoritma

Primjer kada se unutar jednog ciklusa nalazi drugi ciklus:

FOR I=1,NJ=0WHILE J<IJ=J+1IF P<100

P=P+I*JENDIFS=S+I*J

ENDWHILENEXT

Unutrašnji ciklus se ponavlja I puta. Uunutrašnjem ciklusu imamo tri sabiranja idva množenja, dakle 5 operacija.

Ukupan broj operacija je

1×5+2×5+ · · ·+N×5 =5N(N +1)

2

odnosno proporcionalan sa N2. Uocite daje u naredbi selekcije posmatran najgorislucaj.

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 2 10. februar 2015. 19 / 28

Page 45: Algoritam - sau.ac.me

Racunanje vremenske složenosti algoritma

Šta raditi kada ne postoji jedinstvena veza ulaznih podataka isloženosti? Postoje dvije strategije:

Analiza najgoreg slucaja (worst case analiza)Uzme se najgori moguci slucaj i kaže se da algoritam ima tolikuvremensku složenost u najgorem slucaju.Analiza prosjecnog slucaja (average case analiza)Ovdje analiziramo sve moguce slucajeve, dijelimo ih u klase(obilježimo broj klasa sa K), pri cemu smo za svaku klasu u stanjuda procijenimo potreban broj operacija N1,N2, . . .NK . Neophodnoje znati i vjerovatnoce sa kojima se posmatrana klasa javlja naulazu algoritma p1, p2, . . . pK . Zbir ovih vjerovatnoca mora bitijednak 1. Prosjecan broj operacija se racuna kao

Nop =K

∑i=1

piNi = p1N1 + p2N2 + · · ·+ pKNK

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 2 10. februar 2015. 20 / 28

Page 46: Algoritam - sau.ac.me

Racunanje vremenske složenosti algoritma

Primjer: Parni i neparni prirodni brojevi se pojavljuju kao ulaznipodaci algoritma sa jednakim vjerovatnocama. Broj operacija kodparnih brojeva je N +5, dok je kod neparnih 2N−1. Šta je najgorislucaj, a šta je prosjecni slucaj?

Najgori slucaj je kada se na ulazu pojavi neparan broj (veci od 6,zašto?). Tada je broj operacija jednak 2N−1Imamo K = 2 klase ulaznih podataka (parne i neparne brojeve),vjerovatnoce pojavlivanja klasa su p1 =

12 i p2 =

12 . Odgovarajuci

brojevi operacija su N1 = N +5 i N2 = 2N−1, a prosjecan brojoperacija

Nop =12(N +5)+

12(2N−1) =

32

N +2

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 2 10. februar 2015. 21 / 28

Page 47: Algoritam - sau.ac.me

O – notacija

Cesto je teško, ako ne i nemoguce, doci do tacnog broja potrebnihracunskih operacija. U takvim slucajevima se koristimoaproksimacijama i dolazimo do približnih rezultata.

Neka je sa g(N) obilježen tacan broj operacija potreban zaizvršenje algoritma, pri cemu je ulazni podatak N red problema.

Kažemo da je potreban broj operacija reda ne veceg od f (N),odnosno g(N) = O( f (N)) ukoliko je

limN→∞

g(n)f (n)

= const. < ∞

Na primjer, ako je tacan broj operacija g(N) = 4N3−32N2 +125možemo reci da je g(N) = O(N3).

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 2 10. februar 2015. 22 / 28

Page 48: Algoritam - sau.ac.me

Algoritam – primjer

Za zadati prirodan brojN treba odrediti svenizove uzastopnihprirodnih brojeva, cijaje suma jednaka N.Na primjer, ako jekorisnik zadao N = 21,treba da budu prikazanisljedeci nizovi:

1, 2, 3, 4, 5, 66, 7, 810, 1121

Krecemo od 1 i sabiramo sa 2, 3, 4,5, 6 i dobijamo 21, dakle jednorješenje je niz 1, 2, 3, 4, 5 i 6.

U narednoj iteraciji pocinjemo od 2.Formiramo zbir 2+3+4+5+6+7 i taj jezbir veci od 21, dakle pošto mu jesuma veca od 21 ne postoji nizuzastopnih prirodnih brojeva kojipocinje sa 2 i daje zbir 21.

Nastavljamo sa narednim iteracijama(brojevi 3, 4,..., N).

Zadatak sigurno ima jedno rješenje(niz od jednog prirodnog broja N)

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 2 10. februar 2015. 23 / 28

Page 49: Algoritam - sau.ac.me

Algoritam – analiza

Koji su ulazni podaci, šta je izlaz iz algoritma i koja je strukturaovakvog programa?

Ucitavamo ulazni podatak N.

U jednom ciklusu (petlji) idemo od K = 1 do K = N.

Unutar ciklusa inicijalizujemo sumu S na S = K, jer za svako Kpretpostavljamo da može da bude prvi element niza uzastopnihprirodnih brojeva cija je suma jednaka N.

U ugnježdenoj petlji (ciklusu) na sumu S dodajemo uzastopnebrojeve pocevši od P = K +1 i ostajemo u petlji sve dok je tasuma S manja od N.

Ako je S≡ N štampamo (prikazujemo) niz brojeva od K do P.

Zatim prelazimo na narednu vrijednost K.

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 2 10. februar 2015. 24 / 28

Page 50: Algoritam - sau.ac.me

Algoritam – pseudokod

Algoritam je realizovanpomocu brojacke petlje povarijabli K. Unutrašnja petljaje ciklus sa izlaskom napocetku. Za ispis rezultatakorišcena je brojacka petlja.

STARTN,K,S,P,M :INTEGERINPUT N

FOR K = 1,NS = KP = KWHILE S<N

P = P+1S = S+P

ENDWHILEIF S == N

FOR M = K,POUTPUT M

NEXTENDIF

NEXTEND

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 2 10. februar 2015. 25 / 28

Page 51: Algoritam - sau.ac.me

Algoritam – efikasnije rješenje

Naš cilj je da nademo nizove cijelih brojeva K,K +1, . . . ,K +Mcija je suma jednaka N. Sumu ovog niza možemo izracunati:

K +(K +1)+ · · ·+(K +M) = K(M+1)+M(M+1)

2

Problem se svodi na rješavanje jednacine

K(M+1)+M(M+1)

2= N K =

N− M(M+1)2

M+1

Ne zaboravimo da su K i M prirodni brojevi, pri cemu M može bitijednako nuli.

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 2 10. februar 2015. 26 / 28

Page 52: Algoritam - sau.ac.me

Algoritam – efikasnije rješenje

Formirajmo petlju po M, koja krece od 0 (jer se niz može sastojati iod samo jednog clana K). Zatim, za posmatrano M, provjerimo dali postoji prirodan broj K koji je rješenje posmatrane jednacine.

Ukoliko postoji rješenje po K štampamo niz brojevaK,K +1, . . . ,K +M kao jedno od rješenja našeg problema.

Problem koji trebamo pomenuti, prije nego predemo na pisanjekoda, je gornja granica za M. Ocigledno je, da M mora zadovoljitiuslov

M(M+1)2

< N

Na primjer, za N = 10 dovoljno je da petlja po M ide do 3, jer vecza M = 4 nije moguce ispunjenje prethodnog uslova.

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 2 10. februar 2015. 27 / 28

Page 53: Algoritam - sau.ac.me

Algoritam – efikasnije rješenje – pseudokod

STARTN,M,P,K,R :INTEGERINPUT NM=0WHILE M*(M+1)/2<N

P = N-M*(M+1)/2IF P-[P/(M+1)]*(M+1) == 0

K = P/(M+1)FOR R = K,K+M

OUTPUT RNEXT

ENDIFM = M+1

ENDWHILEEND

IF naredbomprovjeravamo da li jeP djeljivo bez ostatkasa M+1.

Uocite da se WHILEpetlja izvršavapribližno

√N puta.

Vremenskasloženost ovogalgoritma je O

(√N).

U prethodnomslucaju složenost jeO(√

N3).

M. Dakovic (Elektrotehnicki fakultet) Osnovi racunarstva II – Cas 2 10. februar 2015. 28 / 28