Strukture podataka i algoritmi |
1. Uvod |
Ovaj predmet je zamisljen da vas nauci efikasnom programiranju. Pretpostavlja se
Postoji vise osobina dobrih programa: oni moraju
|
|
Prva od ovih osobina je ocigledna -
programi koji se ne izvrsavaju ispravno bas i nemaju veliku vrednost.
Pod "efikasnoscu" se obicno podrazumeva "za sto krace vreme" -
ali se ponekad javljaju i druga ogranicenja, kao sto je kolicina memorije,
koje ce biti najvaznije.
Kao sto ce se kasnije videti,
bolja vremena izvrsavanja ce se, u opstem slucaju,
dobiti upotrebom odgovarajucih struktura i
algoritama,
pre nego "hack-ovanjem", tj.
izbacivanjem nekoliko komandi pomocu
mudrijeg kodiranja -
ili jos gore, programiranjem u asembleru!
Glavni cilj ovog predmeta ce biti efikasno resavanje problema: bice vam predstavljene mnoge osnovne strukture podataka i algoritmi (ili procedure) za njihovo manipulisanje. |
Vaznost ostalih osobina dobrih programa je manje ocigledna. Rana istorija mnogih racunarskih instalacija je, u svakom slucaju, svedocanstvo o njihovoj vaznosti. Mnoge studije su procenile enormne troskove izgradnje softverskih sistema koji NISU imali sve date osobine. (Klasicna referenca je Boehm-ova knjiga.) Na zalost, mnogi skorasnji primeri pokazuju da ovi principi jos uvek nisu u potpunosti usvojeni! Svaki pregled Risks foruma bi vas brzo uverio da postoji strasno mnogo loseg softvera u upotrebi. Disciplina softverskog inzinjerstva se bavi izgradnjom velikih softverskih sistema koji se ponasaju onako kako njihovi korisnici ocekuju, koji su pouzdani i laki za odrzavanje. Ovaj predmet ce uvesti neke principe softverskog inzinjerstva, ali cemo se mi koncentrisati samo na pisanje malih programa. Koristeci dobro poznate, efikasne tehnike za resavanje problema, ne samo da stvarate ispravne i brze programe u najkracem vremenu, vec i vasi programi postaju laksi za prepravljanje. Drugom softverskom inzinjeru ce biti mnogo lakse da radi sa dobro poznatim resenjem nego sa necim sto je sklepano zajedno i "podseca" na neki algoritam iz knjige.
Kljucni pojmovi |
Dalje na Strategije programiranja |
Nazad na Sadrzaj |