00 Algoritmi Prosti Linijski Algoritmi Osnovni Pojmovi Primjeri Rjesenja i Zadaci 79 Sl

Preview:

DESCRIPTION

Algoritmi Prosti Linijski Algoritmi Osnovni Pojmovi Primjeri Rjesenja i Zadaci

Citation preview

Osnove algoritama

Prof. dr Lazo Roljid

Algoritam Pojam algoritam možemo opisati na nekoliko načina:

(1) Metoda opisana korak po korak koja rješava neki

problem ili obavlja neki zadatak.

(2) Niz logičkih koraka za rješavanje nekog problema.

(3) Skup pravila u cilju rješavanja određenog tipa zadataka,

takođe se zove algoritam. Pri tome, svako pojedinačno

pravilo zove se algoritamski korak.

Obavljanje algoritma se naziva algoritamskim procesom.

Opisivanje algoritama • Općenito, algoritmi se mogu opisati npr. prirodnim

govornim jezikom-riječima (govorom), tekstom (pismom), pri čemu izvršilac algoritma mora poznavati taj jezik.

• Algoritmi se mogu opisati i pseudo jezikom

• Isto tako, algoritmi se mogu opisati u grafičkoj formi u obliku dijagrama toka ili u nekom umjetnom jeziku kojeg obično nazivamo programskim jezikom. Algoritmi zapisani u nekom programskom jeziku se nazivaju programi.

• U matematici formulama i jednačinama takođe su opisane jedne vrste algoritama. U matematici se često različite spoznaje zapisuju u obliku teorema koji koji su zapravo izvor mnogih algoritama. Ovakve algoritme nazivamo teorijskim algoritmima.

Algoritamska šema, blok dijagram, dijagram toka ili organigram

• Da bi zapis algoritma bio pregledan, pogodno je koristiti njegov grafički prikaz.

• To se zove algoritamska šema, blok dijagram, dijagram toka ili organigram.

Elementi od kojih se grade dijagrami toka

Jednostavne algoritamske šeme

- Linijske - Proste - razgranate

- Ciklične - Konstantne - promjenljive

je zaštitni znak objekata sa sajta www.znanje.org

Linijska algoritamska šema • Niz algoritamskih koraka, u kojem se svaki

algoritamski korak može izvršiti najviše jedanput, u toku jednog izvršavanja algoritma, čini linijsku algoritamsku šemu.

• Elementi linijske strukture: Početak, Kraj (isti simbol), Ulaz, Izlaz (isti simbol) i obrada.

Prosta linijska šema se sastoji isključivo od algoritamskih koraka ulaza, obrade i izlaza.

Šablon za prostu linijsku šemu

Na primjer: izračunati obim kruga O=2rPi (Računarski ispis O = 2 * r * Pi)

Primjer 1. Ispisati poruku "ZDRAVO" na ekranu.

• Opis rješenja: Svi programski jezici imaju mogudnosti direktnog ispisa teksta naredbom za ispis.

Primjer 3. Napisati program za izračunavanje aritmetičkog izraza: 9 + 2 (7 - 4).

• Opis rješenja: Svi programski jezici imaju mogudnosti direktnog izračunavanja aritmetičkih izraza u naredbi za ispis.

Zadatak: Nacrtati algoritam za izračunavanje izraza:

3/2 - 3

i

3/(2-3)

Riješeni primjeri

Linijske algoritamske šeme

Primjer 1. Vrijedost varijable X je 3. Ispisati na ekran vrijednost varijable x i uvedanu vrijednost x za 2.

Opis rješenja:

Primjer 2. Napisati program za izračunavanje kvadrata učitanog broja.

Opis rješenja: Prvo se izvodi učitavanje broja (x). Slijedi obrada to je množenje broja x sami sa sobom. Na kraju je ispis učitane i izračunate vrijednosti.

Primjer 3. Za učitani poluprečnik izračunati površinu kruga.

Opis rješenja: Učitati poluprečnik. Mnogi programski jezici imaju vrijednosti broja Pi ved u sebi, ali se ta vrijednost mora na pravi način koristiti. Poslije izračunavanja površine p := Pi * r * r se izvodi ispis.

Primjeri prostih linijskih algoritama

Aritmetička sredina je suma članova podijeljena sa 2. Zato se koriste zagrade: y=(x+z)/2

Zadatak 4. Napisati program koji izračunava slijedede izraze:

c = x * y

d = x - y

e = c - x + y

Opis rješenja: Zadatak rješavamo upisom vrijednosti x i y. Vrijednost c se izračunava i koristi pri izračunavanju vrijednosti varijable e. Na kraju je ispis.

Primjer 5. Napisati program za izračunavanje kvadrata učitanog broja.

Opis rješenja: Prvo se izvodi učitavanje broja (x). Slijedi obrada to je množenje broja x sami sa sobom. Na kraju je ispis učitane i izračunate vrijednosti.

Zadatak 1: Napisati u obliku funkcije algoritam prikazan na slici dole.

Proste linijske šeme - Zadaci za vježbu

Izračunavanja:

• Učitati dva broja i naći sumu. Nacrtati algoritam.

• Jedan radnik uradi posao za M dana a drugi za N dana. Za koliko dana bi uradili posao ako rade zajedno. Nacrtati algoritam.

• Ako vozilo pređe sa x litara s km. Koliko potroši litara na 100 km.. Nacrtati algoritam.

• U banci imate određenu sumu novca. Godišnja kamata je 17%. Pod predpostavkom da ništa ne podižete u banci, koliko ćete novaca imati nakon tri godine. Nacrtati algoritam.

• Napisati program za izračunavanje pređenog puta (s) pri jednolikom ubrzanom kretanju ( s=v0t + at2/2 ). Nacrtati algoritam.

• Nacrtati algoritam za računanje godina starosti. Nacrtati algoritam.

• Koliko treba dodati primjese u tečnost zapremine V da se sa 2% poveća na 5%. Nacrtati algoritam.

• Geometrija i trigonometrija

• Za poznati r naći O i P kruga. Nacrtati algoritam.

• Izračunati sumu kubova 3 učitana broja. Nacrtati algoritam.

• Učitati stranice trougla i naći obim i površinu. Nacrtati algoritam.

• Učitati katete pravouglog trougla. Izračunati površinu i hipotenuzu. Nacrtati algoritam.

• Izračunati O, P i V kvadra (za poznate stranice a, b, c). Nacrtati algoritam.

• Učitati koordinate dvije tačke M1(x1,y1) i M2(x2,y2) i izračunati udaljenost. Nacrtati algoritam.

• Pretvaranja

• Učitati časove, minute i sekunde. Ispisati koliko je to sekundi. Nacrtati algoritam.

• Nacrtati algoritam za pretvaranje dolara u evre. Nacrtati algoritam.

• Nacrtati algoritam za pretvaranje galona u litre. (1 galon = 4.54 litre). Nacrtati algoritam.

• Nacrtati algoritam za pretvaranje km/h u m/s. Nacrtati algoritam.

• Nacrtati algoritam kojim se prevodi temperatura iz skale Celzija u skalu Farenhajta. Nacrtati algoritam.

• Aritmetička sredina

• Naći aritmetičku sredinu tri broja. Nacrtati algoritam.

• Poznata je površina pravougaonika i stranica a. Izračunati obim i dijagonalu. Nacrtati algoritam.

• Učitati 2 broja. Izračunati korijen aritmetičke sredine njihovih apsoltnih vrijednosti. Nacrtati algoritam.

• Učitati 4 broja. Izračunati korijen aritmetičke sredine njihovih apsoltnih vrijednosti. Nacrtati algoritam.

Slični algoritmi

• Opis rješenja: Naredni primjer prikazuje sličnost izgleda algoritama koji izračunavaju aritmetičke operacije. Ulaz je isti (učitati dva broja), Izlaz je ispisati učitane brojeve i izračunati.

• Razlika algoritama je samo u operatoru u obradi ( +, -, *).

Nacrtati algoritam za aritmetičke operacije:

a) sabiranje;

b) oduzimanje;

c) množenje;

N a p o m e n a: Bitan dio zadataka je označen sa

Jednostavni algoritmi

Razgranata algoritamska šema Cjelobrojna djeljivost

Djeljivost – cjelobrojno dijeljenje

Kad se dijele dva broja pojavljuje se ostatak (različit od nule) ako broj nije djeljiv.

Ovo ima veliku primjenu u računarskoj tehnici tako da se koriste naredbe za cjelobrojno dijeljenje (DIV) i ostatak cjelobrojnog dijeljnja (MOD).

Na primjer, kad se broj 7 dijeli sa 2, rezultat je 3 i ostatak 1.

Ovaj oblik dijeljenja se prikazuje sa 7 : 2 = 3 (1).

DIV-naredba za cjelobrojno dijeljenje

Rezultat cjelobrojnog dijeljenja je količnik bez ostatka tj. uzima se samo cio dio količnika.

Primjer 1. Izvesti cjelobrojno dijeljenje 7 sa 2.

Kad se broj 7 dijeli sa 2, rezultat cjelobrojnog dijeljenja je 3 a ostatak se ne uzima u obzir.

Računarski ispis:

7 DIV 2

Rezultat je 3.

DIV-naredba za cjelobrojno dijeljenje

Primjer 2. Prikazati cjelobrojno dijeljenje brojeva 10, 20, ... , 100 sa 10.

• Cjelobrojno dijeljenja sa 10 znači odbacivanje cifre sa najmanjom težinom tj. cifre jedinica (prvu cifru sa desne strane). Tako da bi 10 DIV 10 i 19 DIV 10 dali isti rezultat 1 (tj. odbacili bi desnu cifru).

• Na narednoj slici prikazano je cjelobrojno dijeljenje brojeva 10, 20, ..., 100 sa 10. Rezultat je odbacivanje desne cifre djeljenika.

Primjer 3. Prikazati cjelobrojno dijeljenje brojeva 123, 223, 323, ... , 1023 sa 100.

• Cjelobrojno dijeljenja sa 100 znači odbacivanje dvije cifre sa najmanjom težinom tj. cifre desetica i jedinica (dvije cifre sa desne strane). Tako da bi 323 DIV 100 i 394 DIV 100 dali isti rezultat 3 (tj. odbacili bi dvije desne cifre).

• Na slijededoj slici prikazano je cjelobrojno dijeljenje brojeva 123, 223, 323, ..., 1023 sa 100. Rezultat je odbacivanje dvije desne cifre. Ostaje cifra stotica.

Dijeljenje sa 100 intervala 123 do 1023

MOD - Ostatak cjelobrojnog dijeljenja

Rezultat naredbe MOD je ostatak cjelobrojnog dijeljenja. N a p o m e n a: Prije provjere djeljivosti (ostatka) treba provjeriti da li je broj pozitivan. Primjer 4. Izračunati ostatak cjelobrojnog dijeljenja 7 sa 2. Kad se broj 7 dijeli sa 2, rezultat je 3 i ostatak 1. Ovaj oblik dijeljenja se prikazuje sa 7 : 2 = 3 (1). Računarski ispis: 7 MOD 2 Rezultat je 1.

Primjer 5 . Ispisati ostatak cjelobrojnog dijeljenja brojeva od 1 do 9 sa brojem 2.

Ostatak dijeljenja sa 2 je provjera parnosti. Ako je broj paran rezultat naredbe n MOD 2 je 0 (npr., 2 MOD 2, 4 MOD 2, ... rezultat je 0).

Rezultat naredbe ostatka dijeljenja neparnih bojeva je 1 (npr. 1 MOD 2, 3 MOD 2, 5 MOD 2,... rezultat je 1).

Na narednoj slici prikazan je ispis ostataka dijeljenje brojeva od 1 do 9 sa 2.

Primjer 6 . Ispisati ostatak cjelobrojnog dijeljenja brojeva od 1 do 9 sa brojem 10.

Dijeljenje sa 10 je izdvajanje zadnje cifre.

Rezultat naredbe 1 MOD 10 je 1, 2 MOD 10 je 2, ..., 9 MOD 10 je 9 i 10 MOD 10 je 1.

Razgranata algoritamska šema IF THEN

• Razgranata linijska šema je ona kod koje se svaki algoritamski korak izvršava najviše jedanput. To znači da postoje algoritamski koraci koji se ne izvrše. Ovdje mora postojati bar jedan uslovni korak koji omogudava grananje algoritma.

• Na slijededoj slici su elementi razgranate strukture:

Razgranata algoritamska šema IF THEN

Šablon za razgranatu šemu IF THEN:

Ako je uslov ispunjen (korak 2) izvršide se naredba ili blok naredbi tj. algoritmskih koraka (korak 3).

Ako uslov nije ispunjen naredba (blok narebi) se ignoriše i nede se izvršiti.

Šablon za razgranatu šemu IF THEN

Primjer:

Ako je a < 0 tada je y: = 3.

# 1- Upiši a. Ako je a vede od nule ispiši POZITVNO.

# 2- Upisi a. Ako je manje od nule ispiši NEGATIVAN.

# 3- Upiši a. Ispiši a, ako je pozitivan.

# 4- Upiši a. Ispiši a, ako je negativan.

# 5- Upiši a. Ako je jedan 0 ispiši NULA.

# 6- Učitati y, Ako je y vede od 9 ispiši NIJE JEDNOCIFREN.

# 7- Provjeriti da li je od dva upisana broja prvi djeljiv sa drugim. Ako jeste ispisati DJELJIV.

# 8- Provjeriti da li je od dva upisana broja prvi djeljiv sa drugim. Ako nije ispisati NIJE DJELJIV.

# 9- Provjeriti da li je upisani broj a djeljiv sa 3. Ako jeste ispisati DJELJIV.

# 10- Provjeriti da li je upisani broj a djeljiv sa 3. Ako nije ispisati NIJE DJELJIV.

# 11- Provjeriti da li je upisani broj a djeljiv sa 2. Ako jeste ispisati PARAN.

# 12- Provjeriti da li je upisani broj a djeljiv sa 2. Ako nije ispisati NIJE PARAN.

# 13- Provjeriti da li je upisani broj a djeljiv sa 7. Ako nije ispisati NIJE DJELJIV.

# 14- Učitati a, Ako je a djeljiv sa 7, Ispisati DJELJIV. # 15- Učitati a, Ako je a djeljivo sa 5, Ispisati DJELJIV. # 16- Učitati a. Ako je a djeljivo sa 2 ispisati PARAN, inače ispisati NIJE PARAN. # 17- Učitati x, Ako je x vede od nule z postaje 1, inače z je 0. # 18- Učitati x, Ako je x negativno z postaje x-3, inače z je x+4. # 19- Učitati a. Ako je a djeljivo sa 2 tada b postaje 2, inače b je 1. # 20- Učitati x, Ako je x pozitivno z postaje suma a i b, inače z je razlika a i b. # 21- Učitati x, Ako je x pozitivno y postaje razlika a i b, inače y je suma c i d. # 22- Učitati x, Ako je x manje ili jednako 0, Tada je y=5+x, inače je y=x-3. # 23- Učitati x, Ako je x vede od 2 tada je y=5, inače je y=1. # 24- Učitati y, Ako je y pozitivno tada je b=c, inače je b=-c. # 25- Učitati a, Ako a nije djeljiv sa 4, ispisati Broj nije djeljiv sa 4. # 26- Učitati x, Ako je x vede od 5 tada je y=3, inače je y=6 # 27- Učitatii y, ako je y manje od 0 tada je b=c-3, inače b = 3 – c # 28- Upisati a,b, ako je a vede od b onda je c=2a-b, inače je c=a+2b # 29- Upisati x i y x vede od y onda je d=x*y, inače je d=x-y # 30- Upisati y, ako je vedi od 9 ispisati nije jednocifren.

Proste razgranate šeme - Zadaci za vježbu

Napomena 1: Dijeljenje sa nula nije mogude. Zato, kod svakog dijeljenja treba provjeriti da li je djelilac (nazivnik) različit od nula.

Napomena 2: Korijen iz negativnog broja nema smisla i nije ga mogude izračunati. Zato je u programiranju uvijek potrebno provjeriti da li je podkorijena vrijednost veda ili jednaka nuli.

Izvinjavam se na pitanju: Znate li koliki je četvrti korijen od nula? A, koliki je drugi korijen od nula?

7. Učitati stranice pravougaonika sa tastature. Izračunati obim i površinu pravougaonika. Ispisati poruku da li je upisani lik pravougaonik ili kvadrat.

8. Ispisati apsolutnu vrijednost broja (ako je broj negativan mijenja se predznak broja).

Zadaci za vježbu

14. Učitati realan broj, ako je broj pozitivan ispisati njegov korijen, a ako je negativan, njegov kvadrat.

16. Učitati dva realna broja, ako je prvi vedi ili jednak drugom, napisati njihov zbir, inače razliku.

Zadaci za vježbu

19. Od dva broja nadi vedi i ispisati poruku.

20. Od tri broja nadi najvedi i ispisati poruku.

21. Od tri broja nadi recipročnu vrijednost najmanjeg i ispisati poruku.

22. Od tri broja nadi recipročnu vrijednost najvedeg i ispisati.

Djeljivost

23. Provjeriti da li je upisani broj a djeljiv sa 3. Ako jeste ispisati DJELJIV SA 3.

24. Provjeriti da li je upisani broj a djeljiv sa 2. Ako jeste ispisati PARAN.

Zadaci za vježbu

Zadaci za vježbu

Zadaci za vježbu

28. Učitati prirodan broj. Ako je neparan ispisati njegovu recipročnu vrijednost, a ako je paran ispisati recipročnu vrijednost njegovog sljedbenika.

29. Učitati cijeli broj. Ako je djeljiv i sa dva i sa tri nadi njegovu recipročnu vrijednost, inače ispisati taj broj.

Razgranata algoritamska šema Riješeni primjeri - IF THEN

Primjer 1. Učitati broj a. Ako je učitani broj a vedi od nule napisati "POZITIVAN"

Opis rješenja: Sa tastature se upisuje vrijednost varijable a. Logičkim izrazom a>0 u naredbi IF izvodi se poređenje da li je upisana vrijednost pozitivna. Ako je logički izraz istinit na ekranu se ispisuje "POZITIVAN", inače za ostale slučajeve nema ispisa. Ovo je provjera da li je broj pozitivan tj. vedi od nule.

Slika 1. Učitati broj a. Ako je učitani broj a veći od nule napisati "POZITIVAN"

Primjer 2. Provjeriti da li je od dva učitana broja prvi djeljiv sa drugim. Opis rješenja: Upisati dvije vrijednosti (a, b). Provjera da li je prvo upisani broj (a) djeljiv sa drugim se izvodi sa logičkim izrazom a MOD b =0 u naredbi IF. Ako je logički izraz istinit na ekranu se ispisuje DJELJIV, inače nema ispisa. Logički izraz za provjeru djeljivosti (a MOD b = 0) je istinit ako je a djeljivo sa b i tada se na ekranu ispisuje DJELJIV. Inače za ostale slučajeve nema ispisa. Naredbom a MOD b se izračunava ostatak dijeljenja broja a sa brojem b. Ostatak dijeljenja je! jednak! 0 ako je broj a djeljiv sa brojem b.

Slika 2. Provjeriti da li je od dva učitana broja prvi djeljiv sa drugim

Razgranata linijska šema je ona kod koje se svaki algoritamski korak izvršava najviše jedanput. To znači da postoje algoritamski koraci koji se ne izvrše. Ovdje mora postojati bar jedan uslovni korak koji omogudava grananje algoritma (Razgranata šema IF THEN). Na slijededoj slici su elementi razgranate strukture:

Razgranata algoritamska šema IF THEN ELSE

Razgranata algoritamska šema IF THEN ELSE

• Šablon za razgranatu šemu IF THEN ELSE: Ako je uslov ispunjen (korak 2) izvršide se naredba ili blok naredbi, algoritmskih koraka (korak 3). Ako uslov nije ispunjen izvršide se naredba ili blok naredbi, algoritmskih koraka (korak 4).

Šablon za razgranatu šemu IF THEN ELSE

Slika 5. Koraci za razgranatu šemu IF THEN ELSE

Šablon za razgranatu šemu IF THEN ELSE

Slika 7. Šablon za razgranatu šemu IF THEN ELSE

Primjer: Ako je x1<x2 tada je y:=x1+x2 inače y:=x1-x2.

Slika 6. Algoritam za izračunavanje: ako je x1<x2 tada je y:=x1+x2 inače y:=x1-x2

Razgranata algoritamska šema Višeblokovsko grananje

• Šablon za razgranatu šemu IF THEN ELSE: Ako je uslov ispunjen (korak 2) izvršide se naredba ili blok naredbi, algoritmskih koraka (korak 3). Ako uslov nije ispunjen izvršide se naredba ili blok naredbi, algoritmskih koraka (korak 4).

Slika 5. Koraci za razgranatu šemu Višeblokovsko grananje

Primjer: Ako je

Slika 6. Algoritam za izračunavanje

Šablon za razgranatu šemu Višeblokovsko grananje