Algoritmi


         Definicija
     Elementi algoritma
  Predstavljanje algoritama
Definicija algoritma
 Algoritam predstavlja konačan skup jasno definisanih pravila
   za rešavanje nekog zadatka.

 Algoritam je opis za rešavanje nekog problema


 Poznati programerski istraživač i profesor Niklaus Wirth je dao
   ovakvu definiciju:
           Programs = Algorithms + Data

 Iz prethodnog stava sledi da je algoritam je plan za izradu
   programa
O nastanku
 Algoritam je u matematiku uveo arapski
   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 je kasnije prevedena na latinski
   kao Algoritmi de numero indorum.

 Od lošeg latinskog prevoda njegovog
   prezimena i potiče reč algoritam,

 Reč algoritam dugo je označavala postupak
   za račun sa decimalnim brojnim sistemom (i
   indijskim odnosno, kako se kasnije pričalo,
   arapskim ciframa).
Gde sve srećemo algoritme?
 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.

 U svakodnevnom životu smo zapravo stalno u kontaktu sa
   algoritmima, a često i postupamo po algoritmima a da toga
   nismo svesni.

 Znati "algoritamski" razmišljati dobro je bez obzira da li se
   bavimo programiranjem ili ne.
Gde sve srećemo algoritme?

 Neko je rekao da je računar idiot velike brzine. To je ustvari
   suština priče o algoritmima:

           put do rešenja moramo toliko rascepkati i detaljno
            napisati da bi ga mogao razumeti i taj "idiot velike
            brzine".

 Drugim rečima, uputstva moraju biti jednostavna i precizna tako
   da ih može izvršavati i mašina.
Gde sve srećemo algoritme?
Evo najpre jednog jednostavnog algoritma za spremanje čaja:

1.   Ako u čajniku nema vode napunite čajnik vodom
2.   Stavite čajnik na šporet i uključite odgovarajuću ringlu.
3.   Uzmite šolju za čaj.
4.   Stavite kesicu čaja u šolju za čaj.
5.   Ako želimo dodamo šećer, mleko ili limun.
6.   Ako kuvamo dve šoljice čaja vratimo se na korak 3.
7.   Ako voda u čajniku nije provrela idite na korak 7, ako jeste idite na korak 8.
8.   Isključite ringlu.
9.   Sipajte vodu iz čajnika u šolju (pazite da ne prelijete).
KoraciDa li 6 i 7 sadrže donošenje (i u kom) treba da donese neka
       1,5, se u nekom od koraka odluka,
Koraciodluka?
       6 i 7 sadrže ponavljanje:
    kod koraka 6 vraćamo se unazad i ponavljamo korake 3,4 i 5
      Da li se neki koraci ponavljaju i koliko puta?
    ukupno dva puta
    kod koraka 7 izvršava proces čekanja na vodu sve dok ne provri.
Elementi algoritma
    Uputstvo može sadržati korake
       koji se izvšavaju samo jednom,
       one koji se ponavljaju više puta ili
       korake kada treba doneti neku odluku, na osnovu nekog
        kriterijuma.


    Algoritam se dobija kao sklop sledećih struktura:
    1.   Sekvenca – niz (proces)
    2.   Odlučivanje (selekcija)
    3.   Ponavljanje (repeticija, iteracija, ciklus, petlja)
Elementi algoritma
Sekvenca (niz operacija)

    Sekvenca znači da se svaki korak sekvence izvršava u unapred datom
     redosledu – onako kako se pojavljuju u sekvenci, jedan za drugim.

Odluka (Selekcija)

    Selekcija omogućava izbor puta kojim će se nastaviti izvršavanje
     instrukcija.

    Odluka se bazira na uslovu koji može da ima vrednost tačno ili netačno,
     na primer:

        AKO danas je sreda ONDA imam laboratorijski dan
Elementi algoritma

    Tvrdnja (uslov) može biti ILI tačna ILI netačna, tj. “danas JE sreda ili
     danas NIJE sreda”. (Ne može istovremeno i jedno i drugo, niti nešto treće)

    Odluka može da ima i nešto složeniji oblik:

        AKO uradio sam više od 5 pitanja
        ONDA dobiću pozitivnu ocenu
        U SUPROTNOM dobiću keca.

    Ovo znači da ako je tvrdnja tačna tada se izvršava proces1 a ako je
     netačna proces2.
Elementi algoritma

Ponavljanje (Iteracija)
   Iteracija omogućava ponavljanje određenih koraka potreban broj puta.
    Broj ponavljanja može biti unapred poznat (npr. kuvam 2 čaja ili kuvam 10
    čajeva...) ili se nešto ponavlja dok se ne ispuni zadati uslov (čekam dok
    ne provri, učim dok ne shvatim...)
   Evo jednog primera

        do
        Dodaj šolju vode u čajnik            TELO PETLJE
        while čajnik nije pun                USLOV na dnu

    U predhodnom primeru prvo sipamo, pa proveravamo da li je čajnik pun.

           Šta ako je čajnik već bio pun kada je ciklus započet?
           Doći će do neželjenog procesa koji će izazvati prelivanje vode
           iz čajnika.
Elementi algoritma

    Za takve slučajeve pogodnije je koristiti while…do ciklus:

        while čajnik nije pun                 USLOV na vrhu
        Dodaj šolju vode u čajnik             TELO PETLJE

    Pošto se odluka da li je čajnik pun ili ne donosi pre sipanja vode,
     mogućnost prelivanja je eliminisana.
Metode prikazivanja algoritama


 Neke od metoda za prikaz algoritama:


          Prirodni jezik (koračna forma)

          Pseudo kod (Pseudo cod)

          Dijagrami toka (Flowcharts)
Prirodni jezik
 Ovom tehnikom se algoritam prikazuje kao niz brojem označenih
   koraka opisanih jednom ili sa više rečenica prirodnog jezika.

 Primer: Prikazati (na monitoru računara, na primer) dvostruku vrednost
   broja koji je predhodno unet u računar (pomoću tastature)

 Algoritam u priprodnom jeziku:
         1.   Tražiti od korisnika da uz pomoć tastature unese broj.
         2.   Učitati broj koji korisnik ukuca na tastaturi.
         3.   Pomnožiti učitani broj sa brojem 2.
         4.   Prikazati rezultat operacije iz koraka 3 na monitoru računara.

 Prednosti prirodnog jezika:
    Jednostavan za učenje, jer se ionako služimo prirodnim jezikom.
 Nedostaci:
    Koraci su predugački jer se mora koristitu puno reči za njihov opis.
    Prevođenje iz prirodnog jezika u kompjuterski jezik može biti teško.
Pseudo kod
 Tehnika slična prirodnom jeziku ali se umesto prirodnog jezika koristi
   neki drugi jezik koji koristi manji broj unapred zadatih reči.

 Dovoljno je razumljiv za čoveka, a istovremeno pogodan za dalje
   transformisanje algoritma u program.

 Predhodni primer algoritma prikazan pseudo kodom :

         1.   display poruka
         2.   read broj
         3.   rezultat = broj*2
         4.   display rezultat

 Prednosti:
    Jednsotavan za učenje skoro kao i kod prirodnog jezika.
    Lakši za prevođenje u programski jezik.
 Nedostaci:
    Može biti malo zbunjujuće – meša se prirodni i simbolički jezik.
Dijagrami toka (Flowcharts)

 Dijagram toka podataka je grafički prikaz algoritma.


 Prednosti dijagrama toka nad pseudokodom:


       Zapisivanje ne zavisi od govornog jezika onoga koji sastavlja
        algoritam.

       Grafički prikaz je jednostavan, pregledan, lako se pronalaze greške.

       Problem se može jednostavno analizirati i skratiti vreme pronalaženja
        rešenja.
Dijagrami toka (Flowcharts)
 Grafički simboli koji se najčešće koriste za prikaza algoritama
   dijagramom toka su sledeći:

                     Granično mesto
                      (početak, kraj,
                         prekid)                          Odluka
                                                         (uslovno
                     Ulaz (unošenje                      grananje)
                      podataka za
                        obradu)
                                                        Potprogram
                     Izlaz (izdavanje
                                                       (ranije opisan
                    rezultata obrade)
                                                          proces)
                        Sekvenca                         Spajanje
                       (operacija ili                 (mesto spajanja
                     grupa operacija)                  dve linije toka)

                       Linija toka
                      (vezna linija)
Dijagrami toka (Flowcharts)
 Prethodni primer prikazan dijagramom toka:


                početak

                poruka                     display
                                              poruka

                  broj
                                           read broj

               broj=broj*2
                                           rezultat =
                                              broj*2
                  broj

                                           display
                  kraj                        rezultat
Primeri linijskih algoritama
 Uneti poluprečnik osnove r i visinu H valjka. Izračunati i štampati
   poršinu i zapreminu valjka.

 Napisati algoritam kojim se izračunava i štampa koliko sati, minuta i
   sekundi ima u datom broju dana.

 Za učenike zaposlene preko omladinske zadruge izračunati bruto i
   neto dohodak, ako je poznat broj radnih sati, cena po satu i procenat
   odbijanja na osnovu određenih doprinosa.

 Napisati program kojim se prevodi temperatura iz skale Celzijusa u
   skalu Farenhajta po formuli: Temeratura po Farenhajtu=(Temperatura
   po Celzijusu)*1.80+32
Primeri linijskih algoritama

 Napisati program kojim se prevodi količina tečnosti iz galona u litre
   (1galon = 4.54L)

 Napisati program kojim se američki dolari pretvaraju u evre ako se
   unosi dinarski kurs ovih valuta.

 Data su dva ugla ALFA i BETA izražena u stepenima, minutama i
   sekundama. Naći i prikazati njihov zbir i razliku.

 Ako je vrednost nekog artikla u dinarima data promenljivom cena,
   odrediti najmanju količinu novčanica od 1000din, 200din, 100din, 10din
   i 1din kojim se može platiti dati artikal.
Uneti poluprečnik osnove r i visinu H valjka. Izračunati i štampati
poršinu i zapreminu valjka.
Napisati algoritam kojim se izračunava i štampa koliko sati, minuta i
sekundi ima u datom broju dana.
Za učenike zaposlene preko omladinske zadruge izračunati bruto i neto
dohodak, ako je poznat broj radnih sati, cena po satu i procenat odbijanja
na osnovu određenih doprinosa.
Napisati program kojim se prevodi temperatura iz skale Celzijusa u skalu
Farenhajta po formuli: Temeratura po Farenhajtu=(Temperatura po
Celzijusu)*1.80+32
Napisati program kojim se prevodi količina tečnosti iz galona u litre
(1galon = 4.54L)
Napisati program kojim se američki dolari pretvaraju u evre ako se unosi
dinarski kurs ovih valuta.
Ako je vrednost nekog artikla u dinarima data promenljivom cena,
odrediti najmanju količinu novčanica od 1000din, 200din, 100din, 10din i
1din kojim se može platiti dati artikal.




                                             Ako su operandi dva cela
                                             broja:

                                             Operator / daje celobrojni
                                             količnik dva cela broja

                                             Operator % daje ostatak
                                             pri deljenju dva cela broja
Data su dva ugla ALFA i BETA izražena u stepenima, minutama i
sekundama. Naći i prikazati njihov zbir i razliku.




                                           Ako su operandi dva cela
                                           broja:

                                           Operator / daje celobrojni
                                           količnik dva cela broja

                                           Operator % daje ostatak
                                           pri deljenju dva cela broja

Algoritmi

  • 1.
    Algoritmi Definicija Elementi algoritma Predstavljanje algoritama
  • 2.
    Definicija algoritma  Algoritampredstavlja konačan skup jasno definisanih pravila za rešavanje nekog zadatka.  Algoritam je opis za rešavanje nekog problema  Poznati programerski istraživač i profesor Niklaus Wirth je dao ovakvu definiciju: Programs = Algorithms + Data  Iz prethodnog stava sledi da je algoritam je plan za izradu programa
  • 3.
    O nastanku  Algoritamje u matematiku uveo arapski 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 je kasnije prevedena na latinski kao Algoritmi de numero indorum.  Od lošeg latinskog prevoda njegovog prezimena i potiče reč algoritam,  Reč algoritam dugo je označavala postupak za račun sa decimalnim brojnim sistemom (i indijskim odnosno, kako se kasnije pričalo, arapskim ciframa).
  • 4.
    Gde sve srećemoalgoritme?  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.  U svakodnevnom životu smo zapravo stalno u kontaktu sa algoritmima, a često i postupamo po algoritmima a da toga nismo svesni.  Znati "algoritamski" razmišljati dobro je bez obzira da li se bavimo programiranjem ili ne.
  • 5.
    Gde sve srećemoalgoritme?  Neko je rekao da je računar idiot velike brzine. To je ustvari suština priče o algoritmima:  put do rešenja moramo toliko rascepkati i detaljno napisati da bi ga mogao razumeti i taj "idiot velike brzine".  Drugim rečima, uputstva moraju biti jednostavna i precizna tako da ih može izvršavati i mašina.
  • 6.
    Gde sve srećemoalgoritme? Evo najpre jednog jednostavnog algoritma za spremanje čaja: 1. Ako u čajniku nema vode napunite čajnik vodom 2. Stavite čajnik na šporet i uključite odgovarajuću ringlu. 3. Uzmite šolju za čaj. 4. Stavite kesicu čaja u šolju za čaj. 5. Ako želimo dodamo šećer, mleko ili limun. 6. Ako kuvamo dve šoljice čaja vratimo se na korak 3. 7. Ako voda u čajniku nije provrela idite na korak 7, ako jeste idite na korak 8. 8. Isključite ringlu. 9. Sipajte vodu iz čajnika u šolju (pazite da ne prelijete). KoraciDa li 6 i 7 sadrže donošenje (i u kom) treba da donese neka 1,5, se u nekom od koraka odluka, Koraciodluka? 6 i 7 sadrže ponavljanje: kod koraka 6 vraćamo se unazad i ponavljamo korake 3,4 i 5 Da li se neki koraci ponavljaju i koliko puta? ukupno dva puta kod koraka 7 izvršava proces čekanja na vodu sve dok ne provri.
  • 7.
    Elementi algoritma  Uputstvo može sadržati korake  koji se izvšavaju samo jednom,  one koji se ponavljaju više puta ili  korake kada treba doneti neku odluku, na osnovu nekog kriterijuma.  Algoritam se dobija kao sklop sledećih struktura: 1. Sekvenca – niz (proces) 2. Odlučivanje (selekcija) 3. Ponavljanje (repeticija, iteracija, ciklus, petlja)
  • 8.
    Elementi algoritma Sekvenca (nizoperacija)  Sekvenca znači da se svaki korak sekvence izvršava u unapred datom redosledu – onako kako se pojavljuju u sekvenci, jedan za drugim. Odluka (Selekcija)  Selekcija omogućava izbor puta kojim će se nastaviti izvršavanje instrukcija.  Odluka se bazira na uslovu koji može da ima vrednost tačno ili netačno, na primer: AKO danas je sreda ONDA imam laboratorijski dan
  • 9.
    Elementi algoritma  Tvrdnja (uslov) može biti ILI tačna ILI netačna, tj. “danas JE sreda ili danas NIJE sreda”. (Ne može istovremeno i jedno i drugo, niti nešto treće)  Odluka može da ima i nešto složeniji oblik: AKO uradio sam više od 5 pitanja ONDA dobiću pozitivnu ocenu U SUPROTNOM dobiću keca.  Ovo znači da ako je tvrdnja tačna tada se izvršava proces1 a ako je netačna proces2.
  • 10.
    Elementi algoritma Ponavljanje (Iteracija)  Iteracija omogućava ponavljanje određenih koraka potreban broj puta. Broj ponavljanja može biti unapred poznat (npr. kuvam 2 čaja ili kuvam 10 čajeva...) ili se nešto ponavlja dok se ne ispuni zadati uslov (čekam dok ne provri, učim dok ne shvatim...)  Evo jednog primera do Dodaj šolju vode u čajnik TELO PETLJE while čajnik nije pun USLOV na dnu  U predhodnom primeru prvo sipamo, pa proveravamo da li je čajnik pun. Šta ako je čajnik već bio pun kada je ciklus započet? Doći će do neželjenog procesa koji će izazvati prelivanje vode iz čajnika.
  • 11.
    Elementi algoritma  Za takve slučajeve pogodnije je koristiti while…do ciklus: while čajnik nije pun USLOV na vrhu Dodaj šolju vode u čajnik TELO PETLJE  Pošto se odluka da li je čajnik pun ili ne donosi pre sipanja vode, mogućnost prelivanja je eliminisana.
  • 12.
    Metode prikazivanja algoritama Neke od metoda za prikaz algoritama:  Prirodni jezik (koračna forma)  Pseudo kod (Pseudo cod)  Dijagrami toka (Flowcharts)
  • 13.
    Prirodni jezik  Ovomtehnikom se algoritam prikazuje kao niz brojem označenih koraka opisanih jednom ili sa više rečenica prirodnog jezika.  Primer: Prikazati (na monitoru računara, na primer) dvostruku vrednost broja koji je predhodno unet u računar (pomoću tastature)  Algoritam u priprodnom jeziku: 1. Tražiti od korisnika da uz pomoć tastature unese broj. 2. Učitati broj koji korisnik ukuca na tastaturi. 3. Pomnožiti učitani broj sa brojem 2. 4. Prikazati rezultat operacije iz koraka 3 na monitoru računara.  Prednosti prirodnog jezika:  Jednostavan za učenje, jer se ionako služimo prirodnim jezikom.  Nedostaci:  Koraci su predugački jer se mora koristitu puno reči za njihov opis.  Prevođenje iz prirodnog jezika u kompjuterski jezik može biti teško.
  • 14.
    Pseudo kod  Tehnikaslična prirodnom jeziku ali se umesto prirodnog jezika koristi neki drugi jezik koji koristi manji broj unapred zadatih reči.  Dovoljno je razumljiv za čoveka, a istovremeno pogodan za dalje transformisanje algoritma u program.  Predhodni primer algoritma prikazan pseudo kodom : 1. display poruka 2. read broj 3. rezultat = broj*2 4. display rezultat  Prednosti: Jednsotavan za učenje skoro kao i kod prirodnog jezika.  Lakši za prevođenje u programski jezik.  Nedostaci:  Može biti malo zbunjujuće – meša se prirodni i simbolički jezik.
  • 15.
    Dijagrami toka (Flowcharts) Dijagram toka podataka je grafički prikaz algoritma.  Prednosti dijagrama toka nad pseudokodom:  Zapisivanje ne zavisi od govornog jezika onoga koji sastavlja algoritam.  Grafički prikaz je jednostavan, pregledan, lako se pronalaze greške.  Problem se može jednostavno analizirati i skratiti vreme pronalaženja rešenja.
  • 16.
    Dijagrami toka (Flowcharts) Grafički simboli koji se najčešće koriste za prikaza algoritama dijagramom toka su sledeći: Granično mesto (početak, kraj, prekid) Odluka (uslovno Ulaz (unošenje grananje) podataka za obradu) Potprogram Izlaz (izdavanje (ranije opisan rezultata obrade) proces) Sekvenca Spajanje (operacija ili (mesto spajanja grupa operacija) dve linije toka) Linija toka (vezna linija)
  • 17.
    Dijagrami toka (Flowcharts) Prethodni primer prikazan dijagramom toka: početak poruka display poruka broj read broj broj=broj*2 rezultat = broj*2 broj display kraj rezultat
  • 18.
    Primeri linijskih algoritama Uneti poluprečnik osnove r i visinu H valjka. Izračunati i štampati poršinu i zapreminu valjka.  Napisati algoritam kojim se izračunava i štampa koliko sati, minuta i sekundi ima u datom broju dana.  Za učenike zaposlene preko omladinske zadruge izračunati bruto i neto dohodak, ako je poznat broj radnih sati, cena po satu i procenat odbijanja na osnovu određenih doprinosa.  Napisati program kojim se prevodi temperatura iz skale Celzijusa u skalu Farenhajta po formuli: Temeratura po Farenhajtu=(Temperatura po Celzijusu)*1.80+32
  • 19.
    Primeri linijskih algoritama Napisati program kojim se prevodi količina tečnosti iz galona u litre (1galon = 4.54L)  Napisati program kojim se američki dolari pretvaraju u evre ako se unosi dinarski kurs ovih valuta.  Data su dva ugla ALFA i BETA izražena u stepenima, minutama i sekundama. Naći i prikazati njihov zbir i razliku.  Ako je vrednost nekog artikla u dinarima data promenljivom cena, odrediti najmanju količinu novčanica od 1000din, 200din, 100din, 10din i 1din kojim se može platiti dati artikal.
  • 20.
    Uneti poluprečnik osnover i visinu H valjka. Izračunati i štampati poršinu i zapreminu valjka.
  • 21.
    Napisati algoritam kojimse izračunava i štampa koliko sati, minuta i sekundi ima u datom broju dana.
  • 22.
    Za učenike zaposlenepreko omladinske zadruge izračunati bruto i neto dohodak, ako je poznat broj radnih sati, cena po satu i procenat odbijanja na osnovu određenih doprinosa.
  • 23.
    Napisati program kojimse prevodi temperatura iz skale Celzijusa u skalu Farenhajta po formuli: Temeratura po Farenhajtu=(Temperatura po Celzijusu)*1.80+32
  • 24.
    Napisati program kojimse prevodi količina tečnosti iz galona u litre (1galon = 4.54L)
  • 25.
    Napisati program kojimse američki dolari pretvaraju u evre ako se unosi dinarski kurs ovih valuta.
  • 26.
    Ako je vrednostnekog artikla u dinarima data promenljivom cena, odrediti najmanju količinu novčanica od 1000din, 200din, 100din, 10din i 1din kojim se može platiti dati artikal. Ako su operandi dva cela broja: Operator / daje celobrojni količnik dva cela broja Operator % daje ostatak pri deljenju dva cela broja
  • 27.
    Data su dvaugla ALFA i BETA izražena u stepenima, minutama i sekundama. Naći i prikazati njihov zbir i razliku. Ako su operandi dva cela broja: Operator / daje celobrojni količnik dva cela broja Operator % daje ostatak pri deljenju dva cela broja