Algoritam prof Zoran Vuliki dipl in Pojam algoritma

  • Slides: 54
Download presentation

Algoritam prof. Zoran Vulikić, dipl. inž.

Algoritam prof. Zoran Vulikić, dipl. inž.

Pojam algoritma Algoritam je opis za rešavanje nekog problema. Reč dolazi iz prezimena persijskog

Pojam algoritma Algoritam je opis za rešavanje nekog problema. Reč dolazi iz prezimena persijskog matematičara Al Horezmija. Algoritam je bio izraz koji opisuje način računanja decimalnim brojevima uvedenim oko 1600. godine u Evropi. Algoritmičarima su se Evropi. ranije zvali oni matematičari koji ne operišu simbolima množina predstavljenim na abakusu, nego jednim (indijskim ili arapskim) sistemom znakova za brojeve (od 16. veka raširenim u Evropi).

U novije vreme, algoritam je pojam koji se gotovo isključivo vezuje za informatiku i,

U novije vreme, algoritam je pojam koji se gotovo isključivo vezuje za informatiku i, mada ne postoji jedinstvena opšteprihvaćena definicija, podrazumeva se da je u pitanju nekako opisana procedura za obavljanje posla. U tu svrhu se definišu algoritamski jezici. To su formalizovani jezici kojima se relativno lako opisuju postupci rešavanja problema predstavljenih algoritmom, takvi su na primer programski jezici Algol, Fortran i Kobol.

U matematičkoj logici je algoritam generalizovan pojam i odnosi se na postupak za postupno

U matematičkoj logici je algoritam generalizovan pojam i odnosi se na postupak za postupno pretvaranje nizova znakova.

O nastanku • Algoritam je u matematiku uveo persijski matematičar Muhamed Al Horezmi. Napisao

O nastanku • Algoritam je u matematiku uveo persijski matematičar Muhamed Al Horezmi. Napisao je knjigu Al Horezmi o indijskoj veštini računanja gde u arapsku matematiku uvodi indijske cifre i decimalni brojni sistem. Ova knjiga biva kasnije prevedena na latinski kao Algoritmi de numero indorum. Od lošeg latinskog prevoda njegovog prezimena i potiče reč algoritam, i dugo je označavala postupak za račun sa decimalnim brojnim sistemom (i indijskim odnosno, kako se kasnije pričalo, arapskim ciframa). • Algoritam predstavlja šematski prikazano, postupno rešavanje nekog problema, toka nekog procesa ili izrade nekog predmeta.

Definicija • Algoritam je konačan i precizno definisan proces, niz dobro definisanih pravila, kojom

Definicija • Algoritam je konačan i precizno definisan proces, niz dobro definisanih pravila, kojom se ulazne vrednosti transformišu u izlazne, ili se opisuje izvršavanje nekog postupka. • Danas se reč algoritam često vezuje za pojam računarstva mada uopšteno algoritam možemo smatrati kao uputstvo kako rešiti neki zadatak ili problem. Tako se i uputstvo za slanje čoveka na Mesec i uputstvo za pravljenje ruske salate sastoji od niza koraka, postupaka, koje treba uraditi i koji vode ispunjenju cilja ili rešavanju problema.

Uputstvo može sadržati korake koji se ponavljaju više puta ili korake kada treba doneti

Uputstvo može sadržati korake koji se ponavljaju više puta ili korake kada treba doneti neku odluku, na osnovu nekog kriterijuma. Dobro uputstvo predviđa i postupak kada nisu svi uslovi ispunjeni npr. prva postupak kada nisu svi uslovi ispunjeni posada za slanje na Mesec izgorela pri testiranju, ili nema krompira u frižideru a počeli smo da spremamo žumance za majonez. Korektno izvršavanje svakog koraka ne rešava zadatak ako je algoritam bio pogrešan.

Različiti algoritmi mogu rešiti isti problem različitim nizom postupaka uz manje ili više napora,

Različiti algoritmi mogu rešiti isti problem različitim nizom postupaka uz manje ili više napora, za kraće ili duže vreme. Obzirom da je rezultat isti, algoritmi se mogu porediti po svojoj efikasnosti, brzini ili kompleksnosti.

Algoritmi mogu biti prikazani ili realizovani na više načina : • prirodnim jezikom (razumljiv

Algoritmi mogu biti prikazani ili realizovani na više načina : • prirodnim jezikom (razumljiv samo govornicima prirodnim jezikom tog jezika) • Grafički, dijagramom toka (blok-dijagramom) Grafički, dijagramom toka ili strukturnim dijagramima ili • tekstualno - pseudokodom, veštačkim precizno tekstualno - pseudokodom definisanim jezikom koji liči na programski jezik • odgovarajućim programskim jezikom

Primeri algoritma Primer algoritma iz svakodnevnog života je kuvanje čaja. Svaki korak pripremanja čaja

Primeri algoritma Primer algoritma iz svakodnevnog života je kuvanje čaja. Svaki korak pripremanja čaja mora biti izvršen pravilno kako bi se moglo preći na sledeći i u konačnom vremenu dobili skuvan čaj.

Algoritam kuvanja čaja glasi : Uzeti lonče i sipati vodu. Uključiti ringlu. Sačekati dok

Algoritam kuvanja čaja glasi : Uzeti lonče i sipati vodu. Uključiti ringlu. Sačekati dok voda ne proključa. Kad voda proključa, skinuti lonče i isključiti ringlu. • Staviti kesicu čaja u lonče. • Po želji, dodati kašiku šećera, mleko ili limun. • Sipati čaj u šolju. • •

Iz ovog jednostavnog primera može se videti postupnost i konačnost algoritma. Naime, nema previše

Iz ovog jednostavnog primera može se videti postupnost i konačnost algoritma. Naime, nema previše koristi od algoritma koji se nikada ne završava ili algoritma čije se naredbe izvode nepredvidljivo ili im je rezultat nepredvidljiv.

Primer kompleksnijeg algoritma je Euklidov algoritam za određivanje najvećeg zajedničkog delioca : • Podeliti

Primer kompleksnijeg algoritma je Euklidov algoritam za određivanje najvećeg zajedničkog delioca : • Podeliti broj a brojem b pri čemu se dobija količnik c i ostatak r • Broj a uzima vrednost broja b • Broj b uzima vrednost r • Ponavljati sve dok ostatak r ne bude jednak 0. Najveći zajednički delilac je trenutna vrednost broja a

Istorija Prvi algoritam koji se može smatrati procedurom čija je namena račun na automatskoj

Istorija Prvi algoritam koji se može smatrati procedurom čija je namena račun na automatskoj mašini je napisala Ejda Bajron 1842. godine. U pitanju je algoritam za račun Bernulijevih brojeva na analitičkoj mašini Čarlsa Bebidža. Ta mašina nikad nije proradila, ali je njen algoritam ostavio dubok trag. Danas se to priznaje kao prvi računarski algoritam, a Ejda Bajron, ledi Lavlejs, je priznata kao prvi programer u istoriji. U njenu čast je i jedan od najkompleksnijih programskih jezika dobio naziv Ada.

Značajan napredak u formalizaciji uvođenja algoritma u matematiku i logiku je učinio Alan Tjuring

Značajan napredak u formalizaciji uvođenja algoritma u matematiku i logiku je učinio Alan Tjuring u svojim radovima definisanjem Tjuringove mašine. To je primitivan automat, misaona tvorevina, ali poseduje mogućnost izvođenja nekoliko operacija koje su dovoljne za izvođenje skoro svih algoritama. Čerč-Tjuringova teza tvrdi da se svaki algoritam koji je dobro definisan može izvršiti na takvoj mašini. Tako se, i pored jednostavnosti ove mašine, začela teorija konačnih automata kao nova oblast. Istraživanjem se došlo i do teorijskih problema: Tjuringov problem zaustavljanja, NPtežak problem, NP-potpun problem i tako dalje.

Osobine • diskretnost — u odvojenim koracima se izvršavaju diskretnost diskretne operacije algoritma koji

Osobine • diskretnost — u odvojenim koracima se izvršavaju diskretnost diskretne operacije algoritma koji vode ka konačnom cilju; • rezultativnost — označava sposobnost algoritma rezultativnost da posle konačnog broja koraka daje izlazne podatke; • determinisanost — za iste ulazne podatke determinisanost algoritam uvek generiše iste vrednosti na izlazima • masovnost — algoritam je primenljiv na veći broj masovnost ulaznih vrednosti.

Elementi • Rešenje bilo kog problema koji se može rešiti pomoću računara, se može

Elementi • Rešenje bilo kog problema koji se može rešiti pomoću računara, se može izraziti kao superpozicija sledećih struktura: sekvence, selekcije i iteracije. • Sekvenca je uređen niz instrukcija gde se po izvršenju i-te instrukcije, može preći na i+1 instrukciju, zatim na i+2 instrukciju i tako dalje. • Selekcija omogućava izbor jednog toka kojim će se nastaviti izvršavanje instrukcija. Izbor toka vrši se proverom uslova koji je definisan kao logički izraz (predikat).

Razlikuje se sledeći tipovi selekcija : • IF uslov THEN operacija (ako je uslov

Razlikuje se sledeći tipovi selekcija : • IF uslov THEN operacija (ako je uslov ispunjen tada izvrši operaciju) • IF uslov THEN operacija 1 ELSE operacija 2 (ako je uslov ispunjen, tada izvrši operaciju 1, u suprotnom izvrši operaciju 2) • CASE uslov OF vrednost 1: operacija 1 vrednost 2: operacija 2. . . ELSE operacija n (ako uslov ima vrednost 1 izvrši operaciju 1, ako uslov ima vrednost 2, izvrši operaciju 2. . . u suprotnom izvrši operaciju n)

Iteracija omogućava ponavljanje operacija tela operacije potreban broj puta. Broj ponavljanja operacije potreban broj

Iteracija omogućava ponavljanje operacija tela operacije potreban broj puta. Broj ponavljanja operacije potreban broj puta. se kontroliše uslovom u formi predikata.

Razlikuju se sledeći tipovi iteracije : • iteracije sa izlaskom (uslovom) na vrhu –

Razlikuju se sledeći tipovi iteracije : • iteracije sa izlaskom (uslovom) na vrhu – WHILE uslov DO operacija (sve dok je uslov ispunjem, radi operaciju) – FOR početak TO kraj DO operacija (od početne vrednosti do krajnje vrednosti, radi operaciju) • iteracije sa izlaskom (uslovom) na dnu – REPEAT operacija UNTIL uslov (ponavljaj operaciju sve dok se ne ispuni uslov)

Implementacija Algoritmi se realizuju u obliku računarskih programa, ali mogu i na drugi način.

Implementacija Algoritmi se realizuju u obliku računarskih programa, ali mogu i na drugi način. Sem električnih kola i mehaničkih sprava koje obavljaju neke radnje isto tako postoje i biološke neuralne mreže kakva je, na primer, mozak čoveka koji je naučio matematičke operacije ili insekta koji premešta hranu.

Analiza i proučavanje algoritama je jedna oblast računarstva i često se obavlja apstraktno bez

Analiza i proučavanje algoritama je jedna oblast računarstva i često se obavlja apstraktno bez upotrebe konkretnog programskog jezika. Nalik sličnim matematičkim disciplinama ovde se izučavaju zakonitosti i principi algoritama, a ne konkretne implementacije. Algoritam se ipak zapiše na nekakav način ali je to upotrebom pseudokoda, opšteg jezika za opis algoritma.

Primer računarskog algoritma Ovde je naveden jedan od najjednostavnijih algoritama i analizirani u koracima

Primer računarskog algoritma Ovde je naveden jedan od najjednostavnijih algoritama i analizirani u koracima od predstavljanja problema, analize problema, definisanja algoritma i analize ispravnosti.

Analiza ispravnosti • Detaljna analiza ispravnosti algoritma bi podrazumevala razmatranje svih, čak i skoro

Analiza ispravnosti • Detaljna analiza ispravnosti algoritma bi podrazumevala razmatranje svih, čak i skoro nemogućih situacija, što u ovom slučaju znači analiza rada algoritma u situaciji kada je : • dat prazan niz brojeva, • u niz upisana i neka vrednost koja nije broj Počinje se razmatranjem problema domena. To je oblast vrednosti koje može uzeti broj. Memorijski prostor promenljive najveći ne sme biti manji od veličine prostora za svaki broj iz niza L. Da se desilo sabiranje dva broja morala bi biti razmotrena situacija ako bi zbir izlazio van domena što bi izazvalo prekoračenje opsega. Ova vrsta provere je obavezna u svakoj analizi algoritma.

Linijski algoritmi

Linijski algoritmi

Program u paskalu : PROGRAM Kolicnik; VAR k, c, v: REAL; BEGIN READ(k, c);

Program u paskalu : PROGRAM Kolicnik; VAR k, c, v: REAL; BEGIN READ(k, c); v: =k*c; WRITE(‘Vrednost je ’+v); ili : write(v) END.

PROGRAM Pravougli_trougao; VAR a, b, c, o: REAL; BEGIN READ(a, b); c: =SQRT(a*a+b*b); sqrt

PROGRAM Pravougli_trougao; VAR a, b, c, o: REAL; BEGIN READ(a, b); c: =SQRT(a*a+b*b); sqrt - koren o: =a+b+c; WRITE(‘Obim je ’+o); END.

Za unete dužine stranica a i b, izračunati i ispisati površinu, obim i dijagonalu

Za unete dužine stranica a i b, izračunati i ispisati površinu, obim i dijagonalu pravougaonika.

PROGRAM Pravougaonik; VAR a, b, p, o, d: REAL; BEGIN READ(a, b); o: =2*a+2*b;

PROGRAM Pravougaonik; VAR a, b, p, o, d: REAL; BEGIN READ(a, b); o: =2*a+2*b; p: =a*b; d: =SQRT(a*a+b*b); sqrt - koren WRITE(‘O = ’+o+’ p = ’+p+’ d = ’+d); END.

Razgranati algoritmi

Razgranati algoritmi

Program u paskalu : PROGRAM Uslov; VAR x: REAL; BEGIN READ(x); IF x>0 THEN

Program u paskalu : PROGRAM Uslov; VAR x: REAL; BEGIN READ(x); IF x>0 THEN WRITE(‘Pozitivan’) ELSE IF x<0 THEN WRITE(‘Negativan’) ELSE WRITE(‘Nula’); END.

Unose se tri broja A, B i C. Izračunati zbir onih koji su veći

Unose se tri broja A, B i C. Izračunati zbir onih koji su veći od nule

Ciklični algoritmi

Ciklični algoritmi

Dodaću nekoliko zadataka. . .

Dodaću nekoliko zadataka. . .

Primeri zadataka (za svaki zadatak potrebno je napisati algoritam i program) • Učitati dva

Primeri zadataka (za svaki zadatak potrebno je napisati algoritam i program) • Učitati dva broja i naći sumu. • Jedan radnik uradi posao za M dana a drugi za N dana. Za koliko dana bi uradili posao ako rade zajedno. • Ako vozilo pređe sa x litara s km. Koliko potroši litara na 100 km. . • U banci imate određenu sumu novca. Godišnja kamata je 17%. Pod predpostavkom da ništa ne podižete u banci, koliko ćete novaca imati nakon tri godine.

 • Napisati program za izračunavanje pređenog puta (s) pri jednolikom ubrzanom kretanju (

• Napisati program za izračunavanje pređenog puta (s) pri jednolikom ubrzanom kretanju ( s=v 0 t + at 2/2 ). • Nacrtati algoritam za računanje godina starosti. • Koliko treba dodati primese u tečnost zapremine V da se sa 2% poveća na 5%.

Geometrija i trigonometrija Za poznati r naći O i P kruga. Izračunati sumu kubova

Geometrija i trigonometrija Za poznati r naći O i P kruga. Izračunati sumu kubova 3 učitana broja. Učitati stranice trougla i naći obim i površinu. Učitati katete pravouglog trougla. Izračunati površinu i hipotenuzu. • Izračunati O, P i V kvadra (za poznate stranice a, b, c). • Učitati koordinate dve tačke M 1(x 1, y 1) i M 2(x 2, y 2) i izračunati udaljenost. • •

Pretvaranja • Učitati časove, minute i sekunde. Ispisati koliko je to sekundi. • Nacrtati

Pretvaranja • Učitati časove, minute i sekunde. Ispisati koliko je to sekundi. • Nacrtati algoritam za pretvaranje dolara u evre. • Nacrtati algoritam za pretvaranje galona u litre. (1 galon = 4. 54 litre). • Nacrtati algoritam za pretvaranje km/h u m/s. • Nacrtati algoritam kojim se prevodi temperatura iz skale Celzijusa u skalu Farenhajta.

Aritmetička sredina • Naći aritmetičku sredinu tri broja. • Poznata je površina pravougaonika i

Aritmetička sredina • Naći aritmetičku sredinu tri broja. • Poznata je površina pravougaonika i stranica a. Izračunati obim i dijagonalu. . • Učitati 2 broja. Izračunati koren aritmetičke sredine njihovih apsolutnih vrednosti. • Učitati 4 broja. Izračunati koren aritmetičke sredine njihovih apsolutnih vrednosti.

Zadaci sa uslovima Uneti 2 broja i odrediti i ispisati veći od njih. Uneti

Zadaci sa uslovima Uneti 2 broja i odrediti i ispisati veći od njih. Uneti 3 broja i odrediti i ispisati veći od njih. Sabrati dva uneta broja ako su pozitivni. Ispitati da li imamo dovoljno novca za more (uneti sumu koju imamo, kao i cene smeštaja, hrane i puta). • Proveriti da li je uneti broj paran. • •

 • Izračunati O i P kruga na osnovu unetog poluprečnika r, ako je

• Izračunati O i P kruga na osnovu unetog poluprečnika r, ako je r>0. • Izračunati O i P pravougaonika na osnovu unetih stranica a i b, ako su a i b veći od 0.

Zadaci sa ciklusom • Izračunati zbir prvih 10 brojeva. • Izračunati zbir prvih N

Zadaci sa ciklusom • Izračunati zbir prvih 10 brojeva. • Izračunati zbir prvih N brojeva (N je potrebno uneti). • Sabrati sve brojeve između A i B (A, B treba uneti). • Izračunati proizvod prvih 10 brojeva. • Izračunati proizvod prvih N brojeva.