You are on page 1of 7

ProgramiranjeI_sylabus.

doc

Fakultet informacijskih tehnologija

Datum:25.02.2009.

Sadrajpredavanjabr.1
Uvodne napomene Pojam algoritma i struktura podataka Vanost algoritama i struktura podataka Algoritmi u kontekstu razvoja softvera

Kakopostiiuspjehnaovompredmetu?
Redovno dolazite na predavanja i vjebe. Na predavanjima ete: Razumjeti i usvojiti pojmovni sistem relevantan za ovaj predmet Nauiti i razumjeti koncepte relevantne za algoritme i strukture podataka Vidjeti praktinu realizaciju mnogih teoretski objanjenih koncepata. Nauiti razlikovati bitno od nebitnog.

Redovno dolazite na vjebe i samostalno rjeavajte zadatke. Kljuna aktivnost koja e vas voditi uspjenom polaganju predmeta je da samostalno ili timski ako je to potrebno rjeavate postavljene zadatke. Zadatke koje ne uspijete rijeiti na vjebama, potrudite se da ih rijeite kod kue

Redovno i samostalno radite domae zadae

Ukoliko je potrebno dodatno proitajte potrebne segmente iz drugih izvora ( literatura, WWW, ...)

Kakoneetepostiiuspjehnaovompredmetu?
Ne moete oekivati da ete poloiti predmet ako:
Algoritmi i strukture podataka::Predavanje http://dl.fit.ba/

ProgramiranjeI_sylabus.doc Ne radite samostalno domae zadae

Fakultet informacijskih tehnologija

Ne trudite se da samostalno rjeavate zadatke na vjebama Ne dolazite redovno na predavanja Ne sluate paljivo predavanja i aktivno uestvujete u nastavi Krenete uiti predmet nekoliko dana prije ispita

Literatura
1. Biljeke i slajdovi s predavanja (moi e se vidjeti na WEB situ Fakulteta) 2. Strukture podataka i algoritmi, Nina Bijedi, Dragica Radosav, Ljiljana uretanovi; FIT Mostar

Nekedodatneuvodnenapomene
Na ovom mjestu elim istaknuti da je kljuna pretpostavka za uspjeno savladavanje ovog predmeta znanje programskih jezika C/C++. Svim studentima, a posebno onima koji imaju loe predznanje iz prethodno navedenih jezika savjetujem da u to kraem roku upotpune svoje znanje iz jezika C++. U suprotnom, studenti koji budu imali loe predznanje imat e ozbiljnih problema s polaganjem ovog ispita. Stoga ih upozoravamo da manjkavosti u svom znanju pravovremeno nadoknade.

Nastanakrijeialgoritam
U svojoj knjizi arapski matematiar Muhamed ibn Musa al Horezmi (9. stoljee) je opisao pravila za obavljanje aritmetikih operacija nad brojevima zapisanim u dekadskom sistemu. Original te knjige na arapskom jeziku je izgubljen, ali postoji prijevod na latinski. U latinskom prijevodu isperd svakog pravila pie: Dixit Algorizmi to je u prijevodu: Algorizmi je govorio. Zadnji dio imena al Horezmi pretvoren je u Algorizmi. Postepeno Algorizmi je govorio se pretvara u algoritam glasi. U poetku su se pod pojmom algoritma podrazumijevala samo pravila za raunanje brojevima. Danas se pod algoritmom podrazumijevaju pravila za obavljanje zadataka u razliitim oblastima, a najee u raunarstvu.
Algoritmi i strukture podataka::Predavanje http://dl.fit.ba/

ProgramiranjeI_sylabus.doc

Fakultet informacijskih tehnologija

Pojamalgoritma
Algoritam je logiki niz diskretnih koraka koji opisuju rjeenje za neki dati problem pri emu rjeenje treba biti izraunljivo u konanom vremenu. Algoritmi imaju slijedee karakteristike: obino imaju jedan ili vie ulaznih objekata (slika 1), imaju barem jedan izlazni objekat, koji nastaje kao rezultat rada algoritma, znaenje svih naredbi od kojih se algoritam sastoji treba biti nedvosmisleno, algoritam se mora izvesti u konanom vremenu, svaka naredba algoritma mora biti ostvarljiva raunarskim instrukcijama u konanom vremenu. Vano je istaknuti i to da algoritme karakterizira deterministiko ponaanje. Pod pojmom deterministikog ponaanja podrazumijevamo da se algoritam pod istim uvjetima ponaa uvijek na isti nain. Slika 1 ilustrira znaenje pojma algoritam.

Slika 1.

Vanoststrukturapodatakaialgoritama
Algoritmi i strukture podataka predstavljaju ine kljune elemente za implementaciju razliitih programskih rjeenja. Pod pojmom struktura podataka podrazumijevamo nain organizacije podataka i informacija, dok pod terminom algoritam podrazumijevamo nain manipulacije i obrade podataka (slika 2).
Algoritmi i strukture podataka::Predavanje http://dl.fit.ba/

ProgramiranjeI_sylabus.doc

Fakultet informacijskih tehnologija

Da bi mogli da oblikujemo programe sa kvalitetno napravljenim programskim kodom potrebno je da poznajemo neke osnovne algoritme i strukture podataka. Drugim rijeima, moemo rei da se pisanje kvalitetnog programskog koda sastoji od oblikovanja prikladnih struktura podataka i od oblikovanja efikasnih algoritama koji rjeavaju dati problem (slika 2). Pod kvalitetno napravljenim programskim kodom podrazumijevamo program koji efikasno rjeava postavljeni problem uzimajui u obzir i postavljena ogranienja (vrijeme, broj programera i projektanata, i drugi resursi). Ne moe se postati dobar kompjuterski profesionalac bez poznavanja osnovnih algoritama i struktura podataka.

Slika 2.

4
Algoritmi i strukture podataka::Predavanje http://dl.fit.ba/

ProgramiranjeI_sylabus.doc

Fakultet informacijskih tehnologija

Algoritmiirazvojsoftvera
Ako je rije o razvoju softvera koji ukljuuje na desetine hiljada linija programskog koda, te ako se razvoj odvija u timskom okruenju onda su u ukupni ivotni ciklus nekog softverskog proizvoda ukljuene slijedee aktivnosti: Analiza problema Definicija zahtjeva Projektiranje na visokom i niskom nivou Implementacija Testiranje i verifikacija Isporuka softvera Upotreba softvera Odravanje softvera

Mnoge od prethodno navedenih aktivnosti se izvode istovremeno. Na primjer, dok se kodira jedan od dijelova softverskog proizvoda, u isto vrijeme moe se odvijati proces dizajniranja nekog drugog dijela tog istog softverskog proizvoda. esta je situacija da odreeni broj ininjera radi na jednom dijelu razvoja softvera, dok druga grupa ininjera radi na nekom drugom dijelu istovremeno. Upravljanje svim aktivnostima u takvim sluajevima nije jednostavan zadatak. Ciljevi dobro napravljenog softvera su: Treba tano i u potpunosti obaviti zadatak za koji je dizajniran Prema tome, prvi korak u razvojnom procesu je tano i precizno definiranje zahtijeva koje softver treba ispuniti. Kad je rije o programima koje studenti dobivaju na vjebama i ispitima ti zahtijevi su definirani od strane nastavnika ili asistenta u vidu zadataka. S druge strane, kad je rije o razvoju softvera za primjenu u stvarnom ivotu, tada dokument koji opisuje zahtjeve moe sadravati na stotine stranica. Kvalitetan softver treba biti takav da se moe mijenjati; Promjene nekog softvera se dogaaju u svim fazama njegovog postojanja. Nije rijetkost da naruilac softvera da jedne spcifikacije koje opisuju eljeni softver, a

5
Algoritmi i strukture podataka::Predavanje http://dl.fit.ba/

ProgramiranjeI_sylabus.doc

Fakultet informacijskih tehnologija

da nakon nekog vremena u manjoj ili veoj mjeri promijeni svoje zahtijeve. Dakako, promjene se deavaju i u fazi kodnja. Na primjer, moda smo upravo u toj fazi pronali neko novo bolje rjeenje za postavljeni problem. Promjene se dogaaju i u fazi testiranja. Ako nam program daje pogrene rezultate, morat emo napraviti neophodne ispravke.

U kolskom okruenju razvoj programa zavrava kada rijeimo postavljeni zadatak i dobijemo ocjenu. Meutim, u stvarnom svijetu promjene u softveru se dogaaju i u fazi 'odravanja'. esta situacija je otkrivanje onih greaka u ovoj fazi koje nisu otkrivene u fazi testirnja, recimo. Isto tako, esto se ele dodati u postojei softver neke nove funkcije itd. Prema tome, vidimo da su promjene u softveru este i da se dogaaju u svim fazama njegovog ivotnog ciklusa. Imajui to na umu, softver-ininjeri trebaju pokuavati razvijati programe koji se mogu relativno lako modificirati. Nadalje, treba istaknuti injenicu da se modifikacije u programu esto izvode od strane programera koji uope nije izvorni autor tog programa, nego je rije o programeru-ininjeru koji radi na odravanju programa koji je neko drugi razvio (Jednog dana e i neki od vas biti u ulozi da moraju neto mijenjati u programima koje je neko drugi razvio).

Sada emo navesti neke elemente koji doprinose da se programi mogu lake mijenjati: Program bi trebao biti itljiv, razumljiv i dobro dokumentiran. Velike programe treba podijeliti na manje logike cjeline koje su relativno nezavisne jadna od druge. Kvalitetan softver treba biti viekratno iskoristiv. Jedan od naina da se utedi vrijeme za oblikovanje softverskih rjeenja je ponovna upotreba programa, klasa, funkcija i drugih komponenti koje su razvijene u prethodnim projektima. Vano je istaknuti da je za kreiranje softvera koji se moe viekratno koristiti potrebno uloiti dosta napora u fazama specifikacije i dizajniranja. Nadalje, takav softver treba biti razumljiv i dobro dokumentiran. Kvalitetan softver se treba zavriti u predvienim rokovima;

6
Algoritmi i strukture podataka::Predavanje http://dl.fit.ba/

ProgramiranjeI_sylabus.doc

Fakultet informacijskih tehnologija

U stvarnom svijetu vrlo je vano da se razvoj planiranog softvera zavri na vrijeme. Pa tako, na primjer, prije samog otvaranja i poetka rada nove banke neophodno je da je softver koji e biti koriten razvijen na vrijeme. Kada spomenemo rije programiranje, ono na ta prvo pomislimo je pisanje programa u nekom od programskih jezika. U kolama i na fakultetima se u pravilu piu programi koji rjeavaju relativno jednostavne probleme. Meutim, za oblikovanje i razvoj sloenijih softverskih proizvoda koji e svoju upotrebu nai u stvarnom svijetu potrebno je koristiti mnoge tehnike dijajniranja, standarde kodiranja, metode testiranja itd. da bi se upe razvio softver koji zadovoljava odreene standarde kvalitete.

Vanostalgoritamaistrukturapodatakazasoftverininjering
Postavlja se pitanje zato u situacijama kada trebamo pristupiti razvoju nekog softverskog rjeenja nije prikladno odmah sjesti za raunar i poeti pisati programe. Odnosno, da li je koritenje razliitih metodologija zapravo gubljenje vremena. Kako programi postaju sve vei i vei, potrebno je panju usmjeriti ne samo na kodiranje nego i na neka druga pitanja vezana uz razvoj softvera. U nastavku emo definirati to podrazumijevamo pod softver ininjeringom: Pod softver ininjeringom podrazumijevamo pristup dizajnu, proizvodnji i odravanju raunarskih programa pri emu se za razvoj koriste razni alati koji ininjerima pomau a upravljaju veliinom i kompleksnou rezultirajuih softverskih proizvoda.

Na kraju ovog uvodnog dijela jo jednom istaknimo da je poznavanje algoritama i struktura podataka vrlo vano za implementaciju kvalitetnih programskih rjeenja i kompleksnih softverskih sistema.

7
Algoritmi i strukture podataka::Predavanje http://dl.fit.ba/

You might also like