際際滷

際際滷Share a Scribd company logo
Algoritmi


         Definicija
     Elementi algoritma
  Predstavljanje algoritama
Definicija algoritma
 Algoritam predstavlja konaan 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
   matematiar Muhamed Al Horezmi.

 Napisao je knjigu Al Horezmi o indijskoj
   ve邸tini raunanja, 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 potie re algoritam,

 Re algoritam dugo je oznaavala postupak
   za raun sa decimalnim brojnim sistemom (i
   indijskim odnosno, kako se kasnije prialo,
   arapskim ciframa).
Gde sve sreemo algoritme?
 Danas se re algoritam esto vezuje za pojam raunarstva
   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 sreemo algoritme?

 Neko je rekao da je raunar idiot velike brzine. To je ustvari
   su邸tina prie o algoritmima:

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

 Drugim reima, uputstva moraju biti jednostavna i precizna tako
   da ih mo転e izvr邸avati i ma邸ina.
Gde sve sreemo algoritme?
Evo najpre jednog jednostavnog algoritma za spremanje aja:

1.   Ako u ajniku nema vode napunite ajnik vodom
2.   Stavite ajnik na 邸poret i ukljuite odgovarajuu ringlu.
3.   Uzmite 邸olju za aj.
4.   Stavite kesicu aja u 邸olju za aj.
5.   Ako 転elimo dodamo 邸eer, 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.   Iskljuite 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 vraamo 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 sledeih struktura:
    1.   Sekvenca  niz (proces)
    2.   Odluivanje (selekcija)
    3.   Ponavljanje (repeticija, iteracija, ciklus, petlja)
Elementi algoritma
Sekvenca (niz operacija)

    Sekvenca znai da se svaki korak sekvence izvr邸ava u unapred datom
     redosledu  onako kako se pojavljuju u sekvenci, jedan za drugim.

Odluka (Selekcija)

    Selekcija omoguava izbor puta kojim e se nastaviti izvr邸avanje
     instrukcija.

    Odluka se bazira na uslovu koji mo転e da ima vrednost tano ili netano,
     na primer:

        AKO danas je sreda ONDA imam laboratorijski dan
Elementi algoritma

    Tvrdnja (uslov) mo転e biti ILI tana ILI netana, tj. danas JE sreda ili
     danas NIJE sreda. (Ne mo転e istovremeno i jedno i drugo, niti ne邸to tree)

    Odluka mo転e da ima i ne邸to slo転eniji oblik:

        AKO uradio sam vi邸e od 5 pitanja
        ONDA dobiu pozitivnu ocenu
        U SUPROTNOM dobiu keca.

    Ovo znai da ako je tvrdnja tana tada se izvr邸ava proces1 a ako je
     netana proces2.
Elementi algoritma

Ponavljanje (Iteracija)
   Iteracija omoguava ponavljanje odreenih 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, uim 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 zapoet?
           Doi e do ne転eljenog procesa koji e izazvati prelivanje vode
           iz ajnika.
Elementi algoritma

    Za takve sluajeve pogodnije je koristiti whiledo 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,
     mogunost prelivanja je eliminisana.
Metode prikazivanja algoritama


 Neke od metoda za prikaz algoritama:


          Prirodni jezik (korana forma)

          Pseudo kod (Pseudo cod)

          Dijagrami toka (Flowcharts)
Prirodni jezik
 Ovom tehnikom se algoritam prikazuje kao niz brojem oznaenih
   koraka opisanih jednom ili sa vi邸e reenica prirodnog jezika.

 Primer: Prikazati (na monitoru raunara, na primer) dvostruku vrednost
   broja koji je predhodno unet u raunar (pomou tastature)

 Algoritam u priprodnom jeziku:
         1.   Tra転iti od korisnika da uz pomo tastature unese broj.
         2.   Uitati broj koji korisnik ukuca na tastaturi.
         3.   Pomno転iti uitani broj sa brojem 2.
         4.   Prikazati rezultat operacije iz koraka 3 na monitoru raunara.

 Prednosti prirodnog jezika:
    Jednostavan za uenje, jer se ionako slu転imo prirodnim jezikom.
 Nedostaci:
    Koraci su predugaki jer se mora koristitu puno rei za njihov opis.
    Prevoenje iz prirodnog jezika u kompjuterski jezik mo転e biti te邸ko.
Pseudo kod
 Tehnika slina prirodnom jeziku ali se umesto prirodnog jezika koristi
   neki drugi jezik koji koristi manji broj unapred zadatih rei.

 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 uenje skoro kao i kod prirodnog jezika.
    Lak邸i za prevoenje u programski jezik.
 Nedostaci:
    Mo転e biti malo zbunjujue  me邸a se prirodni i simboliki jezik.
Dijagrami toka (Flowcharts)

 Dijagram toka podataka je grafiki prikaz algoritma.


 Prednosti dijagrama toka nad pseudokodom:


       Zapisivanje ne zavisi od govornog jezika onoga koji sastavlja
        algoritam.

       Grafiki 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)
 Grafiki simboli koji se naje邸e koriste za prikaza algoritama
   dijagramom toka su sledei:

                     Granino mesto
                      (poetak, 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:


                poetak

                poruka                     display
                                              poruka

                  broj
                                           read broj

               broj=broj*2
                                           rezultat =
                                              broj*2
                  broj

                                           display
                  kraj                        rezultat
Primeri linijskih algoritama
 Uneti poluprenik osnove r i visinu H valjka. Izraunati i 邸tampati
   por邸inu i zapreminu valjka.

 Napisati algoritam kojim se izraunava i 邸tampa koliko sati, minuta i
   sekundi ima u datom broju dana.

 Za uenike zaposlene preko omladinske zadruge izraunati bruto i
   neto dohodak, ako je poznat broj radnih sati, cena po satu i procenat
   odbijanja na osnovu odreenih 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 koliina tenosti iz galona u litre
   (1galon = 4.54L)

 Napisati program kojim se ameriki 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. Nai i prikazati njihov zbir i razliku.

 Ako je vrednost nekog artikla u dinarima data promenljivom cena,
   odrediti najmanju koliinu novanica od 1000din, 200din, 100din, 10din
   i 1din kojim se mo転e platiti dati artikal.
Uneti poluprenik osnove r i visinu H valjka. Izraunati i 邸tampati
por邸inu i zapreminu valjka.
Napisati algoritam kojim se izraunava i 邸tampa koliko sati, minuta i
sekundi ima u datom broju dana.
Za uenike zaposlene preko omladinske zadruge izraunati bruto i neto
dohodak, ako je poznat broj radnih sati, cena po satu i procenat odbijanja
na osnovu odreenih 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 koliina tenosti iz galona u litre
(1galon = 4.54L)
Napisati program kojim se ameriki dolari pretvaraju u evre ako se unosi
dinarski kurs ovih valuta.
Ako je vrednost nekog artikla u dinarima data promenljivom cena,
odrediti najmanju koliinu novanica od 1000din, 200din, 100din, 10din i
1din kojim se mo転e platiti dati artikal.




                                             Ako su operandi dva cela
                                             broja:

                                             Operator / daje celobrojni
                                             kolinik 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. Nai i prikazati njihov zbir i razliku.




                                           Ako su operandi dva cela
                                           broja:

                                           Operator / daje celobrojni
                                           kolinik dva cela broja

                                           Operator % daje ostatak
                                           pri deljenju dva cela broja

More Related Content

Algoritmi

  • 1. Algoritmi Definicija Elementi algoritma Predstavljanje algoritama
  • 2. Definicija algoritma Algoritam predstavlja konaan 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 Algoritam je u matematiku uveo arapski matematiar Muhamed Al Horezmi. Napisao je knjigu Al Horezmi o indijskoj ve邸tini raunanja, 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 potie re algoritam, Re algoritam dugo je oznaavala postupak za raun sa decimalnim brojnim sistemom (i indijskim odnosno, kako se kasnije prialo, arapskim ciframa).
  • 4. Gde sve sreemo algoritme? Danas se re algoritam esto vezuje za pojam raunarstva 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 sreemo algoritme? Neko je rekao da je raunar idiot velike brzine. To je ustvari su邸tina prie o algoritmima: put do re邸enja moramo toliko rascepkati i detaljno napisati da bi ga mogao razumeti i taj "idiot velike brzine". Drugim reima, uputstva moraju biti jednostavna i precizna tako da ih mo転e izvr邸avati i ma邸ina.
  • 6. Gde sve sreemo algoritme? Evo najpre jednog jednostavnog algoritma za spremanje aja: 1. Ako u ajniku nema vode napunite ajnik vodom 2. Stavite ajnik na 邸poret i ukljuite odgovarajuu ringlu. 3. Uzmite 邸olju za aj. 4. Stavite kesicu aja u 邸olju za aj. 5. Ako 転elimo dodamo 邸eer, 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. Iskljuite 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 vraamo 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 sledeih struktura: 1. Sekvenca niz (proces) 2. Odluivanje (selekcija) 3. Ponavljanje (repeticija, iteracija, ciklus, petlja)
  • 8. Elementi algoritma Sekvenca (niz operacija) Sekvenca znai da se svaki korak sekvence izvr邸ava u unapred datom redosledu onako kako se pojavljuju u sekvenci, jedan za drugim. Odluka (Selekcija) Selekcija omoguava izbor puta kojim e se nastaviti izvr邸avanje instrukcija. Odluka se bazira na uslovu koji mo転e da ima vrednost tano ili netano, na primer: AKO danas je sreda ONDA imam laboratorijski dan
  • 9. Elementi algoritma Tvrdnja (uslov) mo転e biti ILI tana ILI netana, tj. danas JE sreda ili danas NIJE sreda. (Ne mo転e istovremeno i jedno i drugo, niti ne邸to tree) Odluka mo転e da ima i ne邸to slo転eniji oblik: AKO uradio sam vi邸e od 5 pitanja ONDA dobiu pozitivnu ocenu U SUPROTNOM dobiu keca. Ovo znai da ako je tvrdnja tana tada se izvr邸ava proces1 a ako je netana proces2.
  • 10. Elementi algoritma Ponavljanje (Iteracija) Iteracija omoguava ponavljanje odreenih 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, uim 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 zapoet? Doi e do ne転eljenog procesa koji e izazvati prelivanje vode iz ajnika.
  • 11. Elementi algoritma Za takve sluajeve pogodnije je koristiti whiledo 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, mogunost prelivanja je eliminisana.
  • 12. Metode prikazivanja algoritama Neke od metoda za prikaz algoritama: Prirodni jezik (korana forma) Pseudo kod (Pseudo cod) Dijagrami toka (Flowcharts)
  • 13. Prirodni jezik Ovom tehnikom se algoritam prikazuje kao niz brojem oznaenih koraka opisanih jednom ili sa vi邸e reenica prirodnog jezika. Primer: Prikazati (na monitoru raunara, na primer) dvostruku vrednost broja koji je predhodno unet u raunar (pomou tastature) Algoritam u priprodnom jeziku: 1. Tra転iti od korisnika da uz pomo tastature unese broj. 2. Uitati broj koji korisnik ukuca na tastaturi. 3. Pomno転iti uitani broj sa brojem 2. 4. Prikazati rezultat operacije iz koraka 3 na monitoru raunara. Prednosti prirodnog jezika: Jednostavan za uenje, jer se ionako slu転imo prirodnim jezikom. Nedostaci: Koraci su predugaki jer se mora koristitu puno rei za njihov opis. Prevoenje iz prirodnog jezika u kompjuterski jezik mo転e biti te邸ko.
  • 14. Pseudo kod Tehnika slina prirodnom jeziku ali se umesto prirodnog jezika koristi neki drugi jezik koji koristi manji broj unapred zadatih rei. 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 uenje skoro kao i kod prirodnog jezika. Lak邸i za prevoenje u programski jezik. Nedostaci: Mo転e biti malo zbunjujue me邸a se prirodni i simboliki jezik.
  • 15. Dijagrami toka (Flowcharts) Dijagram toka podataka je grafiki prikaz algoritma. Prednosti dijagrama toka nad pseudokodom: Zapisivanje ne zavisi od govornog jezika onoga koji sastavlja algoritam. Grafiki 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) Grafiki simboli koji se naje邸e koriste za prikaza algoritama dijagramom toka su sledei: Granino mesto (poetak, 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: poetak poruka display poruka broj read broj broj=broj*2 rezultat = broj*2 broj display kraj rezultat
  • 18. Primeri linijskih algoritama Uneti poluprenik osnove r i visinu H valjka. Izraunati i 邸tampati por邸inu i zapreminu valjka. Napisati algoritam kojim se izraunava i 邸tampa koliko sati, minuta i sekundi ima u datom broju dana. Za uenike zaposlene preko omladinske zadruge izraunati bruto i neto dohodak, ako je poznat broj radnih sati, cena po satu i procenat odbijanja na osnovu odreenih 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 koliina tenosti iz galona u litre (1galon = 4.54L) Napisati program kojim se ameriki 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. Nai i prikazati njihov zbir i razliku. Ako je vrednost nekog artikla u dinarima data promenljivom cena, odrediti najmanju koliinu novanica od 1000din, 200din, 100din, 10din i 1din kojim se mo転e platiti dati artikal.
  • 20. Uneti poluprenik osnove r i visinu H valjka. Izraunati i 邸tampati por邸inu i zapreminu valjka.
  • 21. Napisati algoritam kojim se izraunava i 邸tampa koliko sati, minuta i sekundi ima u datom broju dana.
  • 22. Za uenike zaposlene preko omladinske zadruge izraunati bruto i neto dohodak, ako je poznat broj radnih sati, cena po satu i procenat odbijanja na osnovu odreenih doprinosa.
  • 23. Napisati program kojim se prevodi temperatura iz skale Celzijusa u skalu Farenhajta po formuli: Temeratura po Farenhajtu=(Temperatura po Celzijusu)*1.80+32
  • 24. Napisati program kojim se prevodi koliina tenosti iz galona u litre (1galon = 4.54L)
  • 25. Napisati program kojim se ameriki dolari pretvaraju u evre ako se unosi dinarski kurs ovih valuta.
  • 26. Ako je vrednost nekog artikla u dinarima data promenljivom cena, odrediti najmanju koliinu novanica od 1000din, 200din, 100din, 10din i 1din kojim se mo転e platiti dati artikal. Ako su operandi dva cela broja: Operator / daje celobrojni kolinik dva cela broja Operator % daje ostatak pri deljenju dva cela broja
  • 27. Data su dva ugla ALFA i BETA izra転ena u stepenima, minutama i sekundama. Nai i prikazati njihov zbir i razliku. Ako su operandi dva cela broja: Operator / daje celobrojni kolinik dva cela broja Operator % daje ostatak pri deljenju dva cela broja