Staa Vujii Konstruisati efikasan algoritam znai dati skup

  • Slides: 28
Download presentation
Staša Vujičić

Staša Vujičić

 Konstruisati efikasan algoritam znači dati skup preciznih uputstava kako doći do rešenja zadatog

Konstruisati efikasan algoritam znači dati skup preciznih uputstava kako doći do rešenja zadatog problema Algoritmi se mogu opisivati: pseudo jezikom prirodnim jezikom dijagramom toka. 2

 Opisati prirodnim jezikom detaljno, precizno i nedvosmisleno korake pri rešavanju problema, vodeći računa

Opisati prirodnim jezikom detaljno, precizno i nedvosmisleno korake pri rešavanju problema, vodeći računa o redosledu operacija koje se izvršavaju. 3

 Pseudo jezik je neformalna kombinacija prirodnog jezika i nekog programskoj jezika. Pri upotrebi

Pseudo jezik je neformalna kombinacija prirodnog jezika i nekog programskoj jezika. Pri upotrebi pseudo jezika mora se voditi računa da se jezičke konstrukcije koriste uvek na isti način i da budu praćene objašnjenjima (ako je potebno). 4

 Za ovaj oblik opisa koriste se grafički simboli čiji je opis propisan ISO

Za ovaj oblik opisa koriste se grafički simboli čiji je opis propisan ISO standardom. Tekst koji opisuje obradu se zapisuje unutar grafičkih simbola. Tok rada algoritma se opisuje linijama koje povezuju grafičke simbole koji reprezentuju obradu. 5

 Napisati algoritam za ispisivanje poruke ”Zdravo svete” na izlazu. Algoritam Ispis ulaz: Nema

Napisati algoritam za ispisivanje poruke ”Zdravo svete” na izlazu. Algoritam Ispis ulaz: Nema podataka na ulazu. izlaz: poruka ”Zdravo, svete!!!” početak izlaz: "Zdravo, svete!!!" kraj 6

 Napisati algoritam za sabiranje dva broja. Algoritam Sabiranje ulaz: x, y izlaz: zbir

Napisati algoritam za sabiranje dva broja. Algoritam Sabiranje ulaz: x, y izlaz: zbir brojeva x, y početak ulaz x, y; zbir = x + y; izlaz zbir; kraj 7

 Napisati algoritam za razmenu dva broja. Algoritam razmena ulaz: dva broja izlaz: razmenjena

Napisati algoritam za razmenu dva broja. Algoritam razmena ulaz: dva broja izlaz: razmenjena dva broja početak ulaz x, y; pom=x; /* pom je pomocna promenljiva */ x=y; y=pom; izlaz x, y; kraj 8

 Dat je prav valjak visine H i poluprečnika osnove r. Izračunati površinu i

Dat je prav valjak visine H i poluprečnika osnove r. Izračunati površinu i zapreminu valjka. Algoritam P i V valjka ulaz: visina valjka H i poluprecnik osnove r izlaz: P i V valjka početak ulaz H, r; B = πr 2; V = B * H; O = 2πr. H; P = O + 2 B; izlaz P, V; kraj 9

 Napisati algoritam za određivanje maksimuma dva broja. Algoritam Maksimum dva broja ulaz: x,

Napisati algoritam za određivanje maksimuma dva broja. Algoritam Maksimum dva broja ulaz: x, y; izlaz: veći od brojeva x i y početak ulaz x, y; ako je x>y onda je max=x; inace je max=y; izlaz max; kraj 10

 Napisati algoritam koji rešava kvadratnu jednačinu a * x 2 + b *

Napisati algoritam koji rešava kvadratnu jednačinu a * x 2 + b * x + c. Algoritam kvadratna jednačina ulaz: koeficijenti a, b, c izlaz: rešenje kvadratne jednačine x 1 i x 2 početak ulaz a, b, c; 11

D = b 2 - 4 ac; ako je D >= 0 onda je

D = b 2 - 4 ac; ako je D >= 0 onda je { x 1 = (- b + √D)/2 a x 2 = (- b - √D)/2 a } inace je { x 1 = (-b + i √-D)/2 a x 2 = (-b - i √-D)/2 a } izlaz x 1, x 2; kraj 12

 Napisati algoritam za izračunavanje sume brojeva koji se unose na ulazu sve dok

Napisati algoritam za izračunavanje sume brojeva koji se unose na ulazu sve dok se ne unese nula. Algoritam Zbir ulaz: brojevi sve dok se ne unese nula izlaz: zbir brojeva početak zbir = 0; /* Inicijalizujemo zbir na nulu */ ulaz x; /* Unosimo prvi u nizu brojeva */ 13

sve dok je x!=0 radi { zbir=zbir+x; /* Na tekuću vrednost zbira dodajemo broj

sve dok je x!=0 radi { zbir=zbir+x; /* Na tekuću vrednost zbira dodajemo broj sa ulaza */ ulaz x; /* Unosimo novi ulazni broj */ } izlaz zbir; /* Na izlaz saljemo izračunati zbir */ kraj 14

 Napisati algoritam za izračunavanje maksimuma brojeva koji se unose na ulazu sve dok

Napisati algoritam za izračunavanje maksimuma brojeva koji se unose na ulazu sve dok se ne unese nula. Algoritam Maksimum brojeva ulaz: brojevi sve dok se ne unese nula izlaz: maksimum unetih brojeva početak ulaz x; max = x; 15

sve dok je x!=0 radi { ulaz x; /* Unosimo novi ulazni broj */

sve dok je x!=0 radi { ulaz x; /* Unosimo novi ulazni broj */ ako je x>max onda je max=x; /* Proveravamo da li je uneti broj veći od tekućeg maksimuma i ako jeste onda tekućem maksimumu dodeljujemo njegovu vrednost */ } izlaz max; /* Na izlaz šaljemo izračunati maximum */ kraj 16

 Napisati algoritam za određivanje faktorijela prirodnog broja. Algoritam n! ulaz: prirodan broj n

Napisati algoritam za određivanje faktorijela prirodnog broja. Algoritam n! ulaz: prirodan broj n izlaz: faktorijel prirodnog broja n početak ulaz n; f=1; 17

sve dok je n>1 radi { f=f*n; n=n-1; } izlaz f; kraj 18

sve dok je n>1 radi { f=f*n; n=n-1; } izlaz f; kraj 18

 Napisati algoritam za izračunavanje celobrojnog količnika q i ostatka r pri deljenju broja

Napisati algoritam za izračunavanje celobrojnog količnika q i ostatka r pri deljenju broja x sa brojem y: x = qy + r; 0 ≤ r < y; 0 ≤ q. Algoritam količnik ulaz: prirodni brojevi x i y izlaz: količnik q i ostatak r pri deljenju x sa y početak ulaz x, y; 19

kolicnik=0; ostatak=x; sve dok je ostatak>=y radi { ostatak=ostatak-y; kolicnik=kolicnik+1; } izlaz kolicnik, ostatak;

kolicnik=0; ostatak=x; sve dok je ostatak>=y radi { ostatak=ostatak-y; kolicnik=kolicnik+1; } izlaz kolicnik, ostatak; kraj 20

 Napisati algoritam za izračunavanje n-tog Fibonačijevog broja. Algoritam Fibonaci ulaz: n izlaz: n-ti

Napisati algoritam za izračunavanje n-tog Fibonačijevog broja. Algoritam Fibonaci ulaz: n izlaz: n-ti Fibonacijev broj početak ulaz n; x 0=0; x 1=1; 21

ako je n=0 onda je rezultat=x 0; inace je { sve dok je n>1

ako je n=0 onda je rezultat=x 0; inace je { sve dok je n>1 radi { pom=x 0; x 0=x 1; x 1=pom+x 1; n=n-1; } } rezultat=x 1; izlaz rezultat; kraj 22

 Naći najveći zajednički delitelj za dva broja. Algoritam NZD 1 ulaz: prirodni brojevi

Naći najveći zajednički delitelj za dva broja. Algoritam NZD 1 ulaz: prirodni brojevi a, b izlaz: nzd(a, b) početak ulaz a, b; nzd = 1; br=2; 23

sve dok je br <= a i br <= b radi { ako je

sve dok je br <= a i br <= b radi { ako je a%br==0 i b%br==0 onda je nzd=br; br=br+1; } izlaz nzd; kraj 24

 Algoritam NZD 2 ulaz: prirodni brojevi a, b izlaz: nzd(a, b) početak ulaz

Algoritam NZD 2 ulaz: prirodni brojevi a, b izlaz: nzd(a, b) početak ulaz a, b; nzd = 1; ako je a < b onda je nzd=a; inace je nzd=b; indikator=1; 25

sve dok je indikator=1 radi { ako je a%nzd==0 i b%nzd==0 onda je indikator=0;

sve dok je indikator=1 radi { ako je a%nzd==0 i b%nzd==0 onda je indikator=0; inace je nzd=nzd-1; } izlaz nzd; kraj 26

 Algoritam Euklid 1 ulaz: prirodni brojevi a, b izlaz: nzd(a, b) početak ulaz

Algoritam Euklid 1 ulaz: prirodni brojevi a, b izlaz: nzd(a, b) početak ulaz a, b; sve dok je a!=b radi { ako je a>b onda je a=a-b; inace je b=b-a; } 27

izlaz a; kraj 28

izlaz a; kraj 28