Šta je algoritam i zašto je važan za programiranje?

Iako je algoritam pre svega matematički pojam, u savremenom dobu se najviše vezuje za informatiku, tj. programiranje. 

Šta je algoritam programeri programiranje

Da bismo odgovorili na pitanje šta je algoritam, potrebno je da se prvo vratimo u 9. vek. Tada je živeo persijski matematičar Muhamed el Horezmi. Veruje se da je upravo on otac algebre i da je po njemu algoritam dobio ime (na osnovu transkripcije njegovog imena na latinski). Ipak, ono što danas smatramo algoritmom u računarstvu prva je definisala Ejda Lavlejs u 19. veku.  

Ona je napisala prvi algoritam koji bi trebalo da izvrši mašina za računanje, prepoznajući potencijal nečega iz čega će nastati savremeni kompjuteri. Zbog svog doprinosa, ona se smatra prvim programerom u istoriji. Danas se na algoritam pre svega gleda kao na osnovu svakog kompjuterskog programa, te time postaje neizbežni deo priče o programiranju. Zato, ukoliko želite da se bavite programiranjem, morate da razumete važnost algoritmova.

Šta je algoritam - definicija

Postoji dosta definicija algoritma, a nas najviše zanima njegova uloga u rešavanju računarskih problema. Po jednoj definiciji algoritam predstavlja niz koraka kojih treba da se držimo kako bismo rešili određeni zadatak. Drugim rečima, on predstavlja skup operacija potrebnih za rešavanje nekog zadatka koja se izvršavaju po tačno određenom redosledu. 

Da bi algoritam rešio problem, potrebno je da se on definiše na „ulazu”, dok se na „izlazu” nalazi rešenje problema. Ono što je važno napomenuti jeste da algoritam mora imati ispravan postupak. Dakle, svaki segment postavljenog problema (na ulazu) mora da ima definisano rešenje (na izlazu). Ukoliko je jasno postavljen i nema nijednu grešku, smatra se da je postupak uspešan. 

Algoritmi i strukture podataka

Svaki algoritam se sastoji od početka i kraja, dok se između toga nalaze elementi koji predstavljaju osnovne delove koji sadrže definisani put ka rešenju problema. Da bismo uopšte počeli sa rešavanjem problema, prvo moramo da ga definišemo i postavimo rešenje. 

Algoritam može biti opisan na više načina: prirodnim jezikom, dijagramima, pseudokodom i programskim jezikom. Dijagrami su možda i najpopularniji način, jer se na jednostavan a slikovit način predstavlja problem i njegovo rešavanje. Za to vam nije potreban kompjuter, već prosto olovka i papir na kojem ćemo iscrtati algoritamsku šemu, tj. grafički prikaz algoritma.  

U zavisnosti od kompleksnosti problema, u procesu rešavanja koriste se tri osnovne strukture algoritma: 

Linijiski

Linijska algoritamska struktura je ona gde se koraci izvršavaju jedan po jedan, s tim da se ne ponavljaju, već se svaki izvršava samo jednom. Reč je o najjednostavnijem obliku, pa ujedno predstavljaju način za pisanje najprostijih programa. Ipak, to ne znači da ova struktura nije bitna kada su algoritmi u pitanju. 

Razgranati 

Razgranata algoritamska struktura je ona kod koje se svaki korak izvršava jednom ili nijednom. To zavisi od uslova koji se postavlja, pa se može desiti da se neka komanda nikad ne izvrši. Više koraka se tako postavlja da bismo pokrili sve moguće uslove, te na ovaj način pokušavamo da imamo odgovor na svaku situaciju. 

To znači da u određenom delu algoritma dolazi do račvanja gde je sledeći korak uslovljen situacijom na konkretnom račvanju. Kako se lako može desiti da „skrenete levo, a ne desno”, komande koje se nalaze „desno” nikad neće biti izvršene. Za slučaj da postoji više opcija, koristi se višestruko grananje. 

Ciklični

Ciklična algoritamska struktura predstavlja mogućnost korišćenja određenih koraka više puta. To se dešava kada nisu poznate sve vrednosti koje će biti unete. Ciklusi predstavljaju mogućnost da se vratimo korak unazad i omogućimo unos drugih informacija.  

Na ovaj način se kreira petlja, tj. ponavlja se ciklus. To ponavljanje se zove „iteracija”, što podrazumeva ponavljanje koraka u algoritmu, ali uz korišćenje drugih vrednosti. Naglašavamo da ove strukture nisu međusobno isključive, naprotiv, one se često koriste zajedno pri kreiranju algoritma.

kodiranje korišćenje algoritama

Algoritam i programiranje

Da bismo razumeli važnost algoritama i programiranja, potrebno je da shvatimo njihovu primenu u praksi kroz korišćenje kompjutera. Naime, algoritmima je često potreban specifičan hardver da bi se određene operacije izvele. Iako samo pisanje nije zahtevno, pojedine operacije zahtevaju specijalizovane čipove i dodatnu tehniku. 

Ovi specijalizovani komadi hardvera već se nalaze svuda oko nas, iako toga možda nismo svesni. Gde god se vrši neka automatska radnja koja zavisi od postavljenih uslova, za njihovo sprovođenje se koriste neki čipovi koji to obrađuju. 

Što se tiče primene u programiranju, algoritam predstavlja niz naredbi koje se vrše u okviru nekog programa. Ovde je važno znati da se kompjuteri zasnivaju na doslovnom sprovođenju komandi korišćenjem informacija koje su mu date. Programiranje je praktično objašnjavanje računaru njegovim jezikom šta treba da uradi u određenim situacijama.  

Naravno, sam kompjuter ne rešava probleme koje mu postavite, već izvršava istrukcije koje mu zadajete kako bi došao do rešenja. Dakle, ako ne razumete problem i samim tim ne vidite put do rešenja, ni najmoćniji računar vam neće pomoći.  

Da bi algoritam bio primenjiv na računaru, potrebno je da se ispune sledeći uslovi: 

  • Svaki korak mora da bude definisan – U svakom trenutku mora da bude jasno „šta je pisac hteo da kaže”, tj. nema mesta dvosmislenim komandama.
  • Ne može da bude beskonačan – On mora da ima definisan broj koraka koji će dovesti do rešenja.
  • Mora da postoji jedan ili više podataka na ulazu – Ovi podaci treba da se unesu na početku ili tokom samog rada.
  • Mora da postoji jedan ili više podataka na izlazu – Poenta kreiranja algoritma jeste da reši problem i ponudi rezultat svog rada.
  • Mora biti primenjiv na kompjuteru – Ono što osmislite mora biti primenjivo u praksi, tj. pisanjem koda u nekom programskoj jeziku.

Na ovaj način „računarski algoritam” predstavlja nacrt problema i načina za rešavanje problema. Prednost algoritma je što se može primeniti u bilo kom od programskih jezika, kao što su: Java, Python, C++, Javascript, PHP

pisanje algoritama

Razvrstavanje algoritama po načinu programiranja

Kada je u pitanju pristup rešavanju nekog problema, postoji nekoliko različitih pristupa programiranju:  

Podeli, pa vladaj

Rešavanje problema nikad nije lako, a još teže je kada imate ograničene resurse. U tom slučaju je dobrodošla strategija koju su sprovodili još stari Rimljani – podeli, pa vladaj! Mnogo je lakše rešiti veliki problem ukoliko se on podeli na manje. Ideja je da se svaki problem pojedinačno reši i poveže u jedno kompletno rešenje.  

Na ovaj načini se instanca problema smanjuje sve dok ona ne bude toliko mala da može sa lakoćom da se reši. Dobar primer ove metode jeste rad sa sortiranjem. Podelom se vrši sortiranje na kategorije koje su primenjive za sve delove. Nakon uspešnog sortiranja, vrši se ponovno spajanje u jednu celinu i pritom se poštuje i prethodno urađena klasifikacija. 

Pohlepni algoritam

Kada niste sigurni kako će izgledati kraj procesa traženja rešenja, najbolje je koncentrisati se na pojedinačne slučajeve koji su pred vama u nadi da će vas oni odvesti do konačnog rešenja. Ovo je suština pohlepne metode rada sa algoritmima – biranje najboljeg rešenja od trenutno ponuđenih. 

Ovaj proces je po svom pristupu sličan dinamičkom programiranju, s tim što u ovom slučaju rešenja potproblema nisu uvek poznata. Kako ne vidimo mnogo unapred, rešenja koja prihvatamo jesu ona koja nam u datom trenutku deluju kao najbolja. 

To znači da algoritam obrađuje jedan po jedan problem, ne gledajući kako će se to odraziti na ukupni rezultat. Imajte uvek na umu da vam je, na kraju krajeva, potrebno dobro rešenje, a ne skup mini-rešenja koja ne rešavaju glavni problem.  

Čak i kada pronađete dobro rešenje, važno je da budete svesni koliko to rešenje košta. Vrlo lako može da se desi da vaše rešenje predstavlja programersku verziju Pirove pobede, gde je cena toliko velika da nadilazi vrednost rešenja. 

Dinamičko programiranje

Reč je o metodi programiranja gde se traže optimalna rešenja potproblema kako bi se skratilo vreme rešavanja celokupnog problema. Na ovaj način se potproblemi dele na dodatne pot-potprobleme.  

Ipak, za razliku od pohlepnih algoritama, kod dinamičkog programiranja algoritam na osnovu prethodnih odluka pretpostavlja da potencijalno dobro rešenje možda i nije toliko dobro. Ovakvim pristupom se traže rešenja na način da se u obzir uzimaju i posledice takve odluke. To se postiže tako što se određena rešenja koriste više puta, pa je ovaj proces često mnogo brži jer ne zahteva nove računske radnje. 

Heuristički algoritmi

Kod heurističkog pristupa ne traži se najbolje rešenje, već optimalno, tj. ono koje je zadovoljavajuće, ali u skladu sa postavljenim ograničenjima (vreme, memorija, cena…).  

Ova metoda se zasniva na samootkrivanju koje omogućava algoritmu da prikaže potencijalno dobar put do konačnog rešenja. Naravno, u ovom slučaju je i dalje potrebno učešće čoveka kako bi prepoznao najbolje od ponuđenih rešenja.

šta je algoritam

Algoritmi – zadaci i rešenja 

Da biste usavršili svoja znanja iz poznavanja i pisanja algoritama, neophodno je da se posvetite rešavanju zadataka. Na ovaj način ćete na najbolji način shvatiti važnost gledanja „velike slike”, tj. pravilnog uočavanja problema i pronalaska najboljeg rešenja. Za to je potrebna praksa kreiranja algoritama koji rešavaju i najkompleksnija rešenja.  

Iz tog razloga odvojte vreme i usavršite svoje veštine kroz rešavanje algoritamskih zadataka na ovoj strani. Na ovaj način ćete shvatiti kako se rešavaju problemi, ali i koji su najbolji pristupi određenim algoritamskim problemima. Jednostavno, baš kao i svaki drugi matematički izazov, i algoritmi predstavljaju kombinaciju kreativnog pronalaska problema uz poštovanje postavljenih pravila.  

Naravno, ovo je samo prvi korak ka daljem usavršavanju ukoliko želite da se bavite programiranjem. Sada kada znate šta je algoritam, napravili ste prvi korak ka uspešnoj karijeri software developera ili neke druge programerske pozicije u IT industriji. Na kraju krajeva, savladavanjem ovih veština postavljate sebe u poziciju da odlično zarađujete kao programer u Srbiji, regionu, ali i u svetu.

3 načina da dobijete odlično plaćen posao

Spremili smo dokument koji otkriva tri pouzdana načina za dolazak na dobro plaćenu poziciju za stručan rad sa računarima. Preuzmite izveštaj ovde.

Da li ima mesta? Upisni rok je otvoren!

Da saznate sve o upisu, kliknite ovde