FPI Seminar Ski Rad Principi Programiranja

download FPI Seminar Ski Rad Principi Programiranja

of 23

Transcript of FPI Seminar Ski Rad Principi Programiranja

  • 8/3/2019 FPI Seminar Ski Rad Principi Programiranja

    1/23

    SADRAJ

    Razvoj Algoritama....................................................................................................................3

    ivotni ciklus softvera..............................................................................................................5

    Strategija razvoja Algoritma.....................................................................................................7

    Teorema o programskoj strukturi.............................................................................................8

    Metode prikazivanja Algoritma................................................................................................11

    - Prirodni jezik...............................................................................................................12- Dijagram toka.............................................................................................................12- Pseudo kod.................................................................................................................15- Nasi-najderman dijagrami (Nassi-SneidermanN/S diagrms)...16- Deksonovi Strukturalni dijagrami (Jackson Structured Diagrams JSD)...17

    Primjeri jednostavnih Algoritama............................................................................................20

  • 8/3/2019 FPI Seminar Ski Rad Principi Programiranja

    2/232 | P a g e

    Razvoj Algoritama

    Algoritam je opis za reavanje nekog problema. Re se koristi jo od srednjeg veka i tada je

    oznaavala neto sasvim drugo. Izvorno, algoritam je izraz koji opisuje nain raunanjadecimalnim brojevima uvedenim oko 1600. godine u Evropi. Algoritmiari su se ranije zvali onimatematiari koji ne operiu simbolima mnoina predstavljenim na abakusu, nego jednim(indijskim ili arapskim) sistemom znakova za brojeve (od XVI veka rairenim u Evropi).

    U novije vreme, algoritam je pojam koji se gotovo iskljuivo vezuje za informatiku i, mada nepostoji jedinstvena opteprihvaena definicija, podrazumeva se da je u pitanju nekako opisanaprocedura za obavljanje posla. U tu svrhu se definiu algoritamski jezici. To su formalizovanijezici kojima se relativno lako opisuju postupci reavanja problema predstavljenih algoritmom,takvi su naprimer programski jezici Algol, Fortran i Kobol.

    Algoritam je u matematiku uveo arapski matematiar Muhamed Al Horezmi. Napisao je knjiguAl Horezmi o indijskoj vetini raunanja gde u arapsku matematiku uvodi indijske cifre idecimalni brojni sistem. Ova knjiga biva kasnije prevedena na latinski kao Algoritmi de numero

    indorum. Od loeg latinskog prevoda njegovog prezimena i potie re algoritam, i dugo jeoznaavala postupak za raun sa decimalnim brojnim sistemom (i indijskim odnosno, kako sekasnijeprialo, arapskim ciframa).

    Def:

    Algoritam je konana i precizno definisana procedura, niz dobro definisanih pravila,kojom se ulazne vrednosti transformiu u izlazne, ili se opisuje izvravanje nekogpostupka.

    Prvi algoritam koji se moe smatrati procedurom ija je namena raun na automatskoj maini jenapisala Ada Bajron 1842. godine. U pitanju je algoritam za raun Bernulijevih brojeva naanalitikoj maini arlsa Bebida. Ta maina nikad nije proradila, ali je njen algoritam ostaviodubok trag. Danas se to priznaje kao prvi raunarski algoritam, a Ada Bajron, ledi Lovlejs, jepriznata kao prvi programer u istoriji. U njenu ast je i jedan od najkompleksnijih programskihjezika dobio naziv Ada.

    Znaajan napredak u formalizaciji uvoenja algoritmau matematiku i logiku je uinio Alan

    Tjuring u svojim radovima definisanjem Tjuringove maine. To je primitivan automat, misaonatvorevina, ali poseduje mogunost izvoenja nekoliko operacija koje su dovoljne za izvoenjeskoro svih algoritama. ur-Tjuringova teza tvrdi da se svaki algoritam koji je dobro definisanmoe izvriti na takvoj maini. Tako se, i pored jednostavnosti ove maine, zaela teorijakonanih automata kao nova oblast. Istraivanjem se dolo i do teorijskih problema: Tjuringovproblem zaustavljanja, NP-teak problem, NP-potpun problem i tako dalje.

  • 8/3/2019 FPI Seminar Ski Rad Principi Programiranja

    3/233 | P a g e

    Algoritam je kljuni pojam u raunarskoj obradi podataka jer je raunarski program izvestanalgoritam koji raunaru objanjava koje korake (naredbe) i kojim redosledom treba da obavlja.Tako se algoritmom moe smatrati bilo koji niz instrukcija koja se moe uraditi na Tjuring-

    kompletnoj maini.

    Tipino, kada se uz algoritam vezuje pojam obrade podataka, podrazumeva se da se podatakprvo uita preko ulazne jedinice a ispisuje se na izlaznujedinicu ili uva za kasniju upotrebu.Sauvani podaci se smatraju delom unutranjeg stanja sistema.

    Za svaki raunarski posao algoritam mora biti jasno definisan; naveden na nain kojipodrazumeva sve mogue situacije koje se mogu pojaviti. Znai, svaki uslovni korak se morasistematino obraditi, sluaj po sluaj; uslov za svaki sluaj mora biti jasan i izraunljiv.

    Poto je algoritam jasan niz preciznih koraka, redosled izraunavanja je uvek kritian za

    funkcionisanje algoritma. Pretpostavlja se da su instrukcije navedene jasno, da poinju od vrha ida teku do dna. Ova ideja se formalno opisuje kontrolom toka.

    Kod ovakve formalizacije se unapred uzimaju pretpostavke o imperativnom programiranju. Ovo

    je najuobiajeniji koncept u programiranju i opisujepostupke na mehaniki nain. Jedinstveno zaovaj koncept je operacija dodeljivanja, to je davanje vrednosti promenljivoj. Ovo proizilazi izintuitivnog poimanja memorije kao privremenog skladitenja odnosno pamenja. Nie u tekstuse moe nai primer ovakvog dodeljivanja.

    Algoritmi se realizuju u obliku raunarskih programa, ali mogu i na drugi nain. Sem elektrinih

    kola i mehanikih sprava koje obavljaju neke radnje isto tako postoje i bioloke neuralne mreekakva je, na primer, mozak oveka koji je nauio matematike operacije ili insekta koji premetahranu.

    Analiza i prouavanje algoritama je jedna oblast raunarstva i esto se obavlja apstraktno bezupotrebe konkretnog programskog jezika. Nalik slinim matematikim disciplinama ovde seizuavaju zakonitosti i principi algoritama a ne konkretne implementacije. Algoritam se ipakzapie na nekakav nain ali je to upotrebom pseudokoda, opteg jezika za opis algoritma.

    Neki autori ograniavaju definiciju algoritma na procedure koje se konano zavravaju. Drugiukljuuju i procedure koje se izvravaju zauvek bez zaustavljanja, obrazlaui to potrebom da seneke vrste poslova obavljaju u kontinuitetu. U poslednjem primeru se uspeh izvravanja ne moeopisati u smislu zaustavljanja uz davanje izlaznog rezultata. Umesto toga, moe se definisatiuspenost rada, a da je definisan nevezan izlazni niz kao rezultat. Na primer, algoritam kojiispituje da li u beskonanom nizu sluajnih binarnih cifara ima vie jedinica ili nula mora raditizauvek da bi posao obavio do kraja. Ako je implementiran ispravno algoritam ipak daje korisne

    rezultate: dok god ispituje niz cifara daje pozitivan odziv dok je vie nula nego jedinica, anegativan odziv u drugom sluaju. Uspeh ovog algoritma bi konano bio definisan kao davanjepozitivnog odziva ako je broj nula vei u nizu, a u drugim situacijama negativnog odziva.

  • 8/3/2019 FPI Seminar Ski Rad Principi Programiranja

    4/234 | P a g e

    ivotni ciklus softvera

    Vekovima su ljudi pokuavali da olakaju i ubrzaju izraunavanje matematikih problema. U IXveku se pojavilo mnotvo novih teorija u oblasti matematike i fizike, koje nisu mogle biti

    proverene zbog zamanosti matematikih prorauna. Pojavom kompjutera (elektronskih uredjajaza skladitenje i obradu podataka) ubrzan je tehnoloki i informativni razvoj civilizacije. Zarazliku od od pronalazaka za koje se tano zna ko ih je i kada izumeo, za kompjuter se tekomoe imenovati samo jedna osoba kao pronalaza.

    Kao zaetnik informatike smtra se Britanac arls Bebid (Charles Babbage, 1792-1871). On jeizmislio diferencijalnu i analitiku mainu za raunanje.

    Alen Tjuring (Alan Turing,1912-1954) je jo jedna karika u lancu zahvaljujui kojem je

    pronaen raunar. Tjuring je tokom drugog svetskog rata bio angaovan na problemudeifrovanja nemakih tajnih poruka. Njegov pristup tom problemu zasnivao se na iznalaenjumaine koja e biti u stanju da rei svaki problem predstavljen nizom elementarnih operacija, anjena memorija je trbalo da bude dovoljno velika da moe da skladiti instrukcije potrebne zaraun. On je dao jedan apstraktni model takve maine znan kao Tjuringova maina.

    Dzon fon Nojman (John von Neumann ,1903-1957 ) je dao osnovne principe arhitekture

    dananjih raunara. On je pravio razliku imedju materijalnog dela raunara - hardvera (hardware)i softvera (software) odnosno programskog dela raunara. On 1943. poinje sa radom ulaboratoriji Los Alamos gde 1944. zajedno sa Dzon Moklijem (John Mauchley) i Dzon P.Ekertom (John P. Eckert) radi na projektu EDVAK (EDVAC). Oni su smislili prvi potpuno

    elektronski raunar koji je radio na osnovu unapred zadatog programa.

    Raunarski softver ili softver (en. software) je u biti raunarski program napisan tako da jenjegov sadraj lagano promjeniti (mogue i pomou nekog programa). Softverov glavni zadatakje da upravlja hardverom, izvravaizraunavanja, te da obezbijedi komunikaciju sa ostalim, istotako, softverom, tanije reeno - programom.

    Softver ne moe raditi bez hardvera, kao to hardver ne moe raditi bez softvera. Na hardveru(kao to je hard disk) se nalazi softver (kao to je operativni sistem), softver upravlja hardverom.Obino, softver sa hard diska se uitava na RAM memoriju odakle se prosljeuje procesoru kojiizvrava naredbe koje sadri neki program (softver). Najnii nivo softvera je mainski kod(binarni kod), najjednostavniji oblik programa koji je obino teko promjeniti. Softver se zatoee pie u programskim jezicima vieg nivoa koje ljudi mnogo bolje razumiju nego li nule ijedinice. Za prevoenje programskih naredbi se koristi kompajler koji ponovo prevodi taj kod u,najnii, mainski kod koji raunar razumije (nule i jedinice).

  • 8/3/2019 FPI Seminar Ski Rad Principi Programiranja

    5/235 | P a g e

    -Podjela softvera prema namjeni;

    Raunarski softver se dijeli na tri glavne grane: sistemski softver, izvrni softver, programskisoftver.

    Sistemski softverpokree raunar. To moe biti operativni sistem, drajver, server, razni alati iostalo. Operativni sistem dobija pravo da upravlja cjelokupnim raunarom, podacima, procesimaitd. Najpoznatiji operativni sistemi su Microsoft Windows, Linux i Mac OS X.

    Izvrni softver(aplikativni, namjenski softver) omoguava korisniku da izvrava odreenezadatke. To moe biti poslovni softver, edukacijski softver, baza podataka, office paketi i ostalo.

    Programski softverje obino alat koji pomae nekom programeru da izvri neki zadatak koristeineki programski jezik. To moe biti ureiva teksta, kompajler, interpreter, linker, debugger itako dalje. U raunarskoj grafici se koristi termin grafiki softver, koji je specijaliziran za rad sa

    grafikom.

    -Agilni razvoj softvera;

    Obrazovanje moderne definicije agilnog razvoja softvera potie iz sredine 1990-tih godina i tokao deo sve ire negativne reakcije na robusne ("heavyweith") metode, pre svega zbog vrstoregulisanih, jako rasprostranjenih i sitniavo-korienihwaterfall modela razvoja. Procesi kojisu nastajali iz ovakvog korienja tog modela posmatrani su kao spori, birokratski, zahtevni ikontradiktorni onome kako se programiranje zaista odvija u praksi.

    U poetku, agilne metode zvane su lagane (lightweight). 2001. godine istaknuti svetski softverskiinenjeri su se sastali u mestu Snowbird, Utah, SAD, gde su usvojili naziv agilne metode. Nekiod njih su kasnije oformili neprofitnu organizaciju The Agile Aliance iji je cilj promovisanjeagilnog razvoja. Stvaraoci agilne metodologije kreiraju manifest agilnih metodologija koji

    propisuje vrednosti i principe koje moraju prihvatiti sve ovakve metode da bi bile agilne.

    Nastanak ranih agilnih metoda vezuje se za period pre 2000.godine:

    - 1986.SCRUM u oblasti opteg menadmenta- 1995.Adaptivni razvoj softvera, Razvoj voen karakteristikama i Metod

    dinaminog razvoja sistema- 1996.Crystal clear i ekstremno programiranje

  • 8/3/2019 FPI Seminar Ski Rad Principi Programiranja

    6/236 | P a g e

    Tek sa ekstremnim programiranjem nastaje svest o novoj vrsti metodologija. Najpoznatije

    metode agilnog softverskog razvoja danas su:

    - Ekstremno programiranje (XP) i Industrijsko ekstremno programiranje (IXP)- Scrum-

    Agilno modeliranje- Adaptivni razvoj softvera (ASD)- Crystal clear i ostale crystal metode- Metod dinaminog razvoja sistema (DSDM)- Razvoj voen karakteristikama (FDD)- Suvi razvoj (lean development)- Agile Unified Process (AUP)

    Agilne metode imaju znaajne razlike u odnosu na ranije planskocentrine inenjerske metode.Najuoljivija razlika je insistiranje na manje obimnoj dokumentaciji za dati problem. Umesto

    dokumentaciono-orjentisane, agilne metode su pre orjentisane ka izvornom kodu kao kljunomdelu dokumentacije.

    Ovo je ipak samo povrno gledite. To je samo simptom mnogo dubljih razlika a one su poMartinu Fowleru sledee:

    - Agilne metode su pre adaptivne nego predvidive.- Agilne metode su orjentisane ka ljudima radije nego ka procesima.

    Adaptivno programiranje stoji nasuprot predvidivom, negde izmeu njih se nalazi iterativnoprogramiranje. Ipak adaptivno nije i potpuno nepredvidivo, nego je, recimo, razumna mera

    trokova za dovoljnu predvidivost. Na utrb velikoj predvidivosti ovde je jako povean nivofleksibilnosti, tj. prilagodljivosti promenama u okruenju.

    Primena agilnog razvoja nije do kraja istraena do danas. Oekuje se potvrda vremena, dotle zaneke situacije ostaju otvorena pitanja upotrebljivosti.

    Strategija razvoja Algoritma

    Strategiju razvija Algoritma moemo podjeliti na 3 koraka i ona izgleda ovako:

    Korak 1: Istraivaki korako Identiifikovati procese

    o Identifikovati glavne odlukeo Identifikovati ponavljanja

    o Identifikovati varijable

  • 8/3/2019 FPI Seminar Ski Rad Principi Programiranja

    7/237 | P a g e

    Korak 2: Izrada preliminarnog (grubog) algoritma

    o Izrada algoritma vieg nivoao Proi kroz algoritam misaonom simulacijom. Ako simulacija otkrije

    probleme ispraviti algoritam.

    Korak 3: Izrada finalnog (detaljnog) algoritma

    o Do detalja razraditi grubi algoritam napravljen u koraku 2.o Grupiite procese koji se mogu grupisatio Grupiite varijable koje se mogu grupisatio Testirajte algoritam simulacijom korak po korak.

    Teorema o programskoj strukturi

    Analizirajui razne algoritme Bohm i Jacopini su uoili da se svaki algoritam moeizraziti sa sledee tri vrste koraka.

    1. Sekvenca - proces

    2. Selekcija - odluka

    3. Ciklus - repeticija, iteracija, , petlja, ponavljanje

    Sekvenca;

  • 8/3/2019 FPI Seminar Ski Rad Principi Programiranja

    8/238 | P a g e

    Selekcija;

    Selekcija apsolutna vrijednost;

    Primjer raunanja apsolutne vrijednosti broja. Apsolutna vrijednost (oznaka |X|) jejednaka samom broju X ako je vei ili jednak od nule, aX ako je manji od nule.

    Matematiki se ovo moe oznaiti kao:, ako je 0,

    | |, u ostalim sluajevima.

    X XX

    X

  • 8/3/2019 FPI Seminar Ski Rad Principi Programiranja

    9/239 | P a g e

    Selekcija primjer;

    Ciklus;

    Ciklus ili petlja je dio algoritma koji se ponavlja vie puta. Postoje:

    ciklusi koji se ponavljaju tano odreen broj puta; ciklusi koji se ponavljaju dok je zadovoljen logiki uslov.

  • 8/3/2019 FPI Seminar Ski Rad Principi Programiranja

    10/2310 | P a g e

    Ciklus primjer;

    Metode prikazivanja Algoritma

    Algoritmi mogu biti prikazani ili realizovani na vie naina. Neki od njih su:

    o Prirodni jezik (korana forma)o Dijagrami toka (Flowcharts)o Pseudo kod (Pseudo cod)

    o Nasi-najderman dijagrami (Nassi-SneidermanN/S diagrams)o Deksonovi Strukturalni dijagrami (Jackson Structured DiagramsJSD)

    Za svaku od navedenih tehnika, pored opisa, daemo i kratak komentar o uzajamnimprednostima i nedostacima.

  • 8/3/2019 FPI Seminar Ski Rad Principi Programiranja

    11/2311 | P a g e

    Prirodni jezik

    Ovom tehnikom se algoritam prikazuje kao niz brojem oznaenih koraka. Svaki korakse sadri jednu ili vie reenica prirodnog kezika (srpskog, na primer) kojim se

    opisuje proces (operacija) koju u tom koraku treba izvriti.

    Evo jednog jednostavnog primera:

    Problem: Prikazati (na monitoru raunara, na primer) dvostruku vrednost broja koji jepredhodno unet u raunar (pomou tastature, na primer).

    Algoritam u priprodnom jeziku:

    1. Traiti od korisnika da uz pomo tastature unese broj.2. Uitati broj koji korisnik ukuca na tastaturi.3. Pomnoiti uitani broj sa brojem 2.

    4. Prikazati rezultat operacije iz koraka 3 na monitoru raunara.

    Sekvenca se prikazuje jednostavno ninizanjem koraka jedan za drugim, pri emu svakikorak dobija redni broj u redsledu kojim treba da se iyvravaju.Odluka se prikazuje opisom uslova i uputstvom na koji korak se ide za sluaj da jeuslov ispunjen, a na koji korak kada uslov nije ispunjen. Na slian nain moemoizvriti i selekciju iz vie moguih rezultata nekog uslova.

    Repeticijaiteracija se postie tako to se izvrenje nastavlja nekim korakom kojiima manji redni broj od onog u kojem se postavlja uslov repeticije.

    Prednisti prirodnog jezika:

    o Jednostavan za uenje, jer se ionako sluimo prirodnim jezikom.

    Nedostaci:

    o Koraci su predugaki jer se mora koristitu puno rei za njihov opis.o Prevoenje iz prirodnog jezika u kompjuterski jezik moe biti teko jer zarazliku od prirodnih jezika, kompjuterski (programski) jezici imaju vrlo

    precizno definisanu sintaksu (gramatiku) i semantiku (znaenje).

    Dijagrami toka (Flowcharts)

    Ova tehnika koristi niz grafikih simbola povezanih usmerenim linijama (strelicama)kojima se pokazuje sekvenca (niz) u kojoj e koraci opisani grafikim simbolima bitiizvravani. Unutar grafikog simbola upisuje se prirodnim jezikom (ili pseudokodom) proces (operacija) koju treba izvriti. Grafiki simboli koji se najee koristeza prikaza algoritama dijagramom toka su sledei:

  • 8/3/2019 FPI Seminar Ski Rad Principi Programiranja

    12/2312 | P a g e

    Pravouganiksadri opis procesa (naredbi) koje seizvravaju jedna za drugom u redosledu kako su napisane.Nakon to se naredbe (jedna ili vie) izvre nastavlja se sasledeim grafikim simbolom koji sledi. Dakle,

    pravougaonik odgovara programskoj sekvenci.sekvenci

    Rombpredstavlja ili ulaznu ili izlaznu naredbu kojim sepodaci unose u kompjutersku memoriju (ulaz) ili iz

    kompjuterske memorije prikazuju na nekom spoljnjem

    ureaju (izlaz). Nakon to se naredba ulaza (izlaza) izvri,algoritam se nastavlja naredbom iz sledeeg simbola.

    Dijamantpredstavlja proces donoenja odluke.

    Odluka sadri pitanje koje obino ima dva odgovora, DA iliNE, pa se nakon utvrivanja koji od tih odgovora je taanalgoritam nastavlja jednom od dve mogue putanje kojeslede (izlaze) iz ovog simbola.

    Strelicaslui za povezivanje grafikih simbola u smerunjihog logiki sukcesivnog izvravanja.

    Krugkoristi se za povezivanje delova dijagranmatoka. Kada dijagram toka ne moe da bude prikazan na jednojstranici (to je est sluaj) ovaj znak se koristi za povezivanje delovadijagrama koji se nalaze na razliitim stranicama.

    Oval (elipsa)se koristi za oznaavanje poetka i krajaalgoritma. Oval za start pokazuje gde algoritam zapoinje iobino sadri re Start, a oval za kraj pokazuje gde sealgoritam zavrava i obino sadri re Kraj.

    Evo kako bi algoritam iz predhodnog primera (prikaz dvostruke vrednosti uitanogbroja) bio prikazan ovom tehnikom:

    Proces

    Ulaz/Izlaz

    Odluka

    A

    Oval

  • 8/3/2019 FPI Seminar Ski Rad Principi Programiranja

    13/2313 | P a g e

    Kako se prikazuje repeticija dijagramima toka?

    Kako smo ve videli dijagrami toka imaju simbole za sekvencu (pravougaonik) iodluku (dijamant). Ali, kao prikazati repeticiju (do...until i while tipa na primer).

    To se postie kombinacijom simbola za sekvencu i odluku.

    Tako se repeticija tipa:

    do {proces;

    }until(uslov)

    postie sledeim dijagramom:

    Slino tome repeticija:

    while (uslov) {proces;

    }

    moe da se izrazi dijagramom toka na sledei nain:

  • 8/3/2019 FPI Seminar Ski Rad Principi Programiranja

    14/2314 | P a g e

    Prednosti dijagrama toka:

    o Grafika prezentacija algoritma olakava pronalaenje logikih greaka ualgoritmu (slika vredi hiljadu rei stara kineska poslovica).

    o Postojanje znaka za povezivanje (krug) omoguava veoma lako dodavanjenovig delova algoritma.

    o Algoritam prikazan grafiki lake se prevodi u programski kod nego to je tosluaj sa prirodnim jezikom ili pseudokodom.

    Nedostaci:

    o Treba upamtiti znaenje grafikih simbola.o Kada postoji mnogo koraka odluke i ponavljanja, dijagram toka moe da se

    pretvori u vrlo zamrenu mreu iz koje je teko sainiti valjan programski kod.

    Pseudo kod

    Ova tehnika je veoma slina prirodnom jeziku s tom razlikom to se umesto prirodnogjezika koristi neki drugi jezik (slian prirodnom) koji ima precizniju sintaksu, koristimanji broj unapred zadatih rei, pa je time lake definisati i semantiku (znaenje) reenica koje se formiraju u tom jeziku. Takav jezik esto podsea i na programskejezike, to jest on predstavlja kompromis izmeu prirodnog i programskog jezika.

    Kompromis u smislu da je dovoljno jednostavan i razumljiv za oveka, a istovremenopogodan za dalje transformisanje algoritma u program. Recimo takav jezik moesadrati rei kao to su: display (za prikaz poruke na monitoru), read (za uitavanjepodatka), kao i simbole +,-,*,/,= za korienje u matematikim formulama itd.

    Primer algoritma moe pseudo kodom biti prikazan kako sledi:

    1. display poruka2. read broj

    3. rezultat = broj*2

    4. display rezultat

    Prednosti:

    o Jednsotavan za uenje skoro kao i kod prirodnog jezika.o Laki za prevoenje u programski jezik, jer kao to je reeno jako podsea

    na stvarne programske jezike.

    Nedostaci:

    o Ova tehnika se oslanja na poznavanje takozvanih imperativnih

    (proceduralnih) jezika, pa za one koji se prvi put sreu sa ovom vrstomjezika moe biti malo zbunjujue mea se prirodni i simboliki jezik.

  • 8/3/2019 FPI Seminar Ski Rad Principi Programiranja

    15/2315 | P a g e

    Nasi-najdermanovi dijagrami (N/S dijagrami)

    I kod Nasi-najdermanovih algoritama se koriste grafiki simboli kao i kod dijagramatoka, ali se ovde itav algoritam stavlja u jedan jedini pragougaonik (boks). Simboli

    (koraci algoritma) se izvravaju poev od prvog simbola na vrhu boksa i nastavljajuredom do poslednjeg na prikazanog dnu boksa. Svaki simbol sadri ili prirodnimjezikom ili pseudokodom prikazane naredbe (procese).

    Postoje tri vrste simbola: za sekvencu, za odluku i za repeticiju, u skladu sa teoremom

    o programskoj strukturi.

    Simboli su:

    Pravougaonikkoristi se za naredbe koje se izvravajujedna za drugom (sekvenca). Kada se sve naredbe iz

    pravouganika izvre algoritam se nastavlja sledeimN/S simbolom.

    Simbol za odluku se sastoji od dela ukojem se nalazi uslov i dva prevougaonika

    koji sadre alternativne naredbe ako jeuslov ispunjen (DA) i ako nije (NE). Kada

    se izvri odgovarajua naredba algoritamse nastavlja sledeim N/S simbolom.

    Repeticija se sastoji od ulsova i naredbe

    (ili niza naredbi) koje se izvravaju svedok je uslov ispunjen (while ciklus).Kada uslov nije ispunjen algoritam

    nastavlja rad sledeim N/S simbolom.

    Repeticija za sluaj do...while ciklusa izgleda ovako:

    U ovom sluaju, za razliku od predhodnog,Naredbe e biti izvrene pre testiranja da lije uslov ispunjen. Ako jeste ponavlhja se

    iyvravanje Naredbi, a ako nije algoritamnastavlja rad sledeim N/S simbolom.

  • 8/3/2019 FPI Seminar Ski Rad Principi Programiranja

    16/2316 | P a g e

    Evo kako bi izgledao na standardni primer korienjem N/S dijagrama:

    Prednosti N/S dijagrama:o Grafika prezentacija algoritma olakava pronalaenje logikih greaka ualgoritmu (kao kod dijagrama toka).

    o Lake se prevodi u programski kod nego dijagram toka. Tri programskestrukture (sekvenca, odluka i repeticija) zastupljene su u svim programskim

    jezicima.

    o Poto nema sterlica kao kod dijagrama toka ne mogu se kreirati zamrenestrukture, ve algoritam glatko sledi logiku reenja.

    Nedostaci:o Moraju se pamtiti grafiki simboli koji predstavljaju sekvencu, odluku i

    repeticije.

    o Oteano je umetanje novih koraka u ve sainjeni algoritam, a to je bilo lakokod dijagrama toka (korienjem simbola za konekciju kruga). S drudestrane nastavljanje algoritma na sledeoj strani je jednostavno nacrtate noviboks a stranu obeleite brojem 2, itd.

    Deksonovi strukturalni dijagrami (Jackson Structured Diagrams) JSD dijagrami

    Deksonovi dijagrami slede ideju o podeli problema na niz podproblema manjesloenosti (strategija poznata kao devide and conquer podeli pa vladaj).Ali oni takoe zadovoljavaju i teoremu o programskoj strukturi, to jest JSD dijagramiimaju grafiki simbol za sve tri osnovne komponente algoritma sekvencu, odluku irepeticiju.

  • 8/3/2019 FPI Seminar Ski Rad Principi Programiranja

    17/2317 | P a g e

    Sledi opis naina na koji se prikazuju ove komponente.

    a) Sekvenca

    Ovde je proces A sloen proces koji se sastoji od prostih procesa B i C. Da bi seobavio proces A potrebno je najpre obaviti proces B a onda proces C. Podprocesi se ,

    dakle, izvravaju sleva udesno jedan za drugim. Naravno proces A je mogao biti jedanjednostavan proces koji ne zahteva dalju podelu.

    b) Odluka (selekcija)

    Odluka se oznaava tako to se proces A deli na procese B i C, ali uslovno, tako da seproces A ispunjava bilo izvravanjem procesa B (kada je uslov 1 ispunjen) biloizvravanjem procesa C (kada je uslov 2 ispunjen). Uoite mali krui u gornjem desnom uglu pravougaonika procesa B i C. Ti se kruii koriste da se pravougaonikodluke razlikuje od pravougaonika sekvence.

  • 8/3/2019 FPI Seminar Ski Rad Principi Programiranja

    18/2318 | P a g e

    c) Repeticija

    Repeticijaiteracija je sloena komponenta koja se izvrava ponavljanjem nekog

    procesa nula ili vie puta u zavisnosti da li je uslov ispunjen ili ne.

    Evo kako bi izgledao na primer prikazan JSD dijagramom:

    Prednosti:

    o Grafika prezentacija algoritma olakava pronalaenje logikih greaka ualgoritmu (kao kod dijagrama toka).

    o Jednostavniji grafiki simboli nego kod dijagrama toka i N/S dijagrama.o Sledi logiku reenja podelom na podprobleme.

    Nedostaci:

    1. Ne uoavaju se lako odluke i repeticije.2. Prevoenje u programski kod je neto sloenije mora se voditi rauna o

    redosledu izvravanja procesa.

  • 8/3/2019 FPI Seminar Ski Rad Principi Programiranja

    19/2319 | P a g e

    Primjeri jednostavnih Algoritama

    Primjer 1;

    Primjer 2;

  • 8/3/2019 FPI Seminar Ski Rad Principi Programiranja

    20/2320 | P a g e

    Primjer 3;

    Odrediti ostatak pri dijeljenju dva prirodna broja.Uzmimo primjer: Pri dijeljenju 9 sa 4 ostatak je 1 jer je 2x4+1=9.

    Olakavajua okolnost je to to raunar kada dijeli cijele brojeve daje cijeli broj ako korisnik nezatrai konverziju podataka.

    Primjer 4;

    Unesen je prirodan broj. Odrediti sumu njegovih cifara. Posmatrajmo broj 324. Suma njegovih cifara je 3+2+4=9. Najjednostavniji nain da se

    ovo odredi je da se kreira jedna promjenljiva koja e da uva podatke o sumi cifara brojai da se inicijalizuje na nulu (S=0). Zatim se odredi ostatak dijeljenja broja sa 10 (to je broj

    4, S=4) i podjeli broj sa 10 (dobija se rezulatat 32). 32 se zatim podjeli sa 10 (dobija se 3)

    i ostatak je 2 koje se pridoda 4 iz prethodnog sluaja (S=6). Dobijeno 3 se podijeli sa 10rezultat je nula i ostatak 3 se pridoda dosadanjoj sumi (S=9). Kada se dobije rezultat 0moe se obustaviti dalja procedura.

  • 8/3/2019 FPI Seminar Ski Rad Principi Programiranja

    21/2321 | P a g e

    Primjer 5;

    Napisati program koji rauna korjene kvadratne jednaine u zavisnosti od unesenihvrijednosti a, b, c: ax

    2+bx+c=0.

    Pretpostaviti da se trae rjeenja u skupu realnih brojeva.

    Za a

    0 i b

    2

    -4ac>0 jednaina ima dva rjeenja:

    Za a0 i b2-4ac=0 jednaina ima jedno rjeenje: x=-b/2a. Za a0 i b2-4ac

  • 8/3/2019 FPI Seminar Ski Rad Principi Programiranja

    22/2322 | P a g e

    Primjer 6;

    Alternativni algoritam:

    Korak 1.Poimo od realnogbroja X i kao poetno pogaanje kvadratnog korjenauzmimo G=X/2. Tada postoji broj H takav da je H=X/G.

    Korak 2. Ako su H i G veoma bliski to znai da je H*G priblino jednako X, odnosno dasu G i H priblino jednaki kvadratnom korjenu.

    Korak 3. Ako nijesu bliski onda treba uzeti da je novo G jednako G=(G+H)/2 i ponovosraunati H.

    Koraci 2 i 3se ponavljaju dok se ne doe do rjeenja, tj. do situacije da su G i Hdovoljno bliski.

  • 8/3/2019 FPI Seminar Ski Rad Principi Programiranja

    23/23

    Primjer 7;

    Napisati algoritam koji provjerava da li je dati broj prost. Broj je prost ako je djeljiv bez ostatka samo sa samim sobom i sa jedinicom.