U matematici i kompjuterskoj nauci algoritam je objasnjenje
resavanja problema.Algoritmi objasnjavaju resavanje jednacina,procesiranja podataka i zadatke automatskog rasudjivanja. Algoritam je efektivna metoda koja se moze izraziti u toku konacnog vremena i kroz dobro definisan formalni jezik.Zapocinje od pocetnog stanja i pocetnog ulaza(moguce praznog)kojeg instrukcije navode kroz njegovu obradu i nastanka konacne vrednosti koje zavrsavaju algoritam. Ovde je prikazan Euklidov algoritam za izracunavanje najveceg zajednickog delioca: Neformalna definicija algoritma glasi:Algoritam je skup pravila koji precizno definise niz operacija. Koncept algoritma je postojao vekovima,medjutim formalizacija toga sto je postalo moderan algoritam pocelo je pokusajima resavanja Entscheidungsproblem(Problema odluke) postavljenim od strane Davida Hilberta 1928 godine. Rec algoritam je kombinacija latinske reci arithmos i Grcke reci arithmos()sto bi znacilo broj. Algoritmi su neophodni za rad racunara. Svi kompjuterski programi koji su zasluzeni za nacin na koji se racunar ponasa se sluze algoritmima. Izrazavanje algoritama: Algoritmi mogu biti izrazeni na mnogo nacina ukljucujuci i prirodni jezik,pseudokod,drakon-u,programskim jezicima i u kontrolnim tablama.Izrazavanja algoritma prirodnim jezikom imaju tendenciju da budu dvosmisleni,i zato se i retko koriste za kompleksne i tehnicke algoritme.Pseudokod,drakon i kontrolne table su konstruisane tako da bi izbegli dvosmislenost cestu u prirodnom jeziku. Programski algoritmi su primarno namenjeni za izvedbu na kompjuteru. U kompjuterskim sistemima,algoritam je logican primer napisan u programskom jeziku,napisan od strane programera da bi stigao do zeljenog cilja koji bi proizveo izlaz od datog ulaza. Efektivan algoritam cak i na sporijem hardveru,bi proizveo rezultate brze nego kad bi smo koristili komplikovani algoritam iste namene.Time complexity je nacin na koji uporedjujemo brzinu izvrsavanja izmedju dva ili vise razlicitih algoritama iste namene. Cilj algoritma je da se izvrsi sto brze,i da je sto kompaktniji. Na slici je prikazan jednostavan linijski algoritam:
Algoritmi se dele na vise vrsta:
-Linijske -Razgranate-Algoritam sa diskriminatorom,odnosno if funkcijom -Ciklicne-Algoritam koji se izvrsava dok se ne ispuni zadati uslov odnosno while funkcijom Ovde je prikazan razgranati sistem za pojacavanje signala/popravku WIFI uredjaja:
Ovde je prikazan ciklicni algoritam za unos e-mail adrese:
Preporucljivo je napraviti algoritam pre pisanja programa,da ne bi doslo do zabune,mada kod nekih sitnijih projekata algoritam nije bitan. Za svaki proces koji obavljamo u svakodnevnom zivotu moze se napraviti algoritam,za kupovanje uzine,sklanjanje sobe itd. U prevodu algoritam je uputstvo za sve.