algoritmi

Upload: majagegigaljak

Post on 09-Jan-2016

218 views

Category:

Documents


0 download

DESCRIPTION

programiranje

TRANSCRIPT

UVOD

ALGORITMI

(pojam, strukture, kodiranje i programske strukture)

www.maturski.orgSADRAJ

SADRAJ...1 UVOD... 2

ALGORITAM.....3-4

OBLIKOVANJE ALGORITMA.....5-6PROGRAMSKE STRUKTURE.7-8

ALGORITAMSKE STRUKTURE........9SLOENE ALGORITAMSKE STRUKTURE...10-11

KANONSKE I NEKANONSKE ALGORITAMSKE STRUKTURE..12TESTIRANJE ALGORITMA.......13

KODIRANJE.............14

ALGORITAM ZA KODIRANJE..............15ZAKLJUAK................16

LITERATURA......17

UVOD

Algoritam predstavlja skup akcija sa definiranim redoslijedom njihovog obavljanja, koji primijenjen na polazni skup podataka, dovodi do traenih rezultata.

U procesu programiranja, skup akcija definiran je mogunostima raunala, odnosno naredbama programskog jezika koji se koristi, dok se redoslijed izvravanja akcija zadaje pomou algoritamskih (programskih) struktura.

ALGORITAM

Algoritam je skup pravila ili pravilo sa svojstvom preciznou, jednoznanosti te obuhvaa konaan broj koraka, a svaki korak je opisan instrukcijom. Instrukcije moraju biti izvedive i jednoznane.Algoritam opisuje rjeavanje nekoga problema. SLIDE1

Postupak obavljanja algoritma je algoritamski proces. Algoritam ima definirane poetne objekte nad kojima se obavljaju operacije, a ishod toga je skup rezultata tj. zavrnih objekata i on je djelotvoran.

Da bi algoritam bio uinkovit rezultat se mora dobiti u prihvatljivom ili razumnom vremenu. Insturkcije se mogu izvriti nekoliko puta te instrukcije morajuu pokazivati na ponavljanje, ali za bilo koju vrijednost ulaznih podataka algoritam zavrava nakon konanog broja ponavljanja. SLIDE 1

Kod zapisivanja algoritama upotrebljava se programski jezik C, rije je o nedovrenom kodu gdje su neki nizovi naredbi zamijenjeni tekstom. Analiza algoritma podrazumijeva procjenu vremena za izvravanje toga algoritma, a vrijeme se poistivjeuje sa brojem operacija koje odgovarajui program treba obaviti i on se izraava kao funkcija.

Algoritam se zapisuje u :

Obliku pseudo jezika ( govornog jezika koji oponaa programski jezik)

Grafikom obliku tzv. Blok dijagram ili dijagram tijeka programa

Slika: BLOK DIJAGRAM OBLIKOVANJE ALGORITMA

Oblikovanje algoritama se dijeli na tehnike: podijeli pa vladaj, dinamiko programiranje, pohlepni pristup i backtracking. Svaka od ovih metoda ne garantira tono rjeenje problema i zbog toga se uvijek treba napraviti provjera.

PODIJELI PA VLADAJ

Metoda podijeli pa vladaj se dijeli na tri primjera: sortiranje saimanjem, traenjem elemenata u listi i mnoenje dugakih cijelih brojeva. Algoritam merge za sortiranjem liste se moe tumaiti da to je lista dulja to ju je tee sortirati, velika sortirana lista se dobiva relativno jednostavnim postupkom saimanja malih sortiranih lista.

Primjer 1.

Sortiranje saimanjem(5, 3, 7, 1, 4, 3)

Divide

(5, 3, 7) (1, 4, 3)

Sort Sort

(3, 5, 7) (1, 3, 4)

Merge

(1, 3, 3, 4, 5, 7)PROGRAMSKE STRUKTURE

Postoje tri programske strukture a to su:

1. Linijska(slijed)

2. Razgranata(selekcija)

3. Ciklika(iteracija)

1. Linijska (slijed) programska struktura:

-sve akcije se izvravaju tono jednom u redoslijedu u kome su navedene.

SHEMA: linijska programska struktura

2. Razgranata (selekcija) programska struktura:

omoguava da se od vie grupa akcija koje se nalaze u razliitim granama razgranate strukture, izabere ona koja e se izvriti jednom, dok se sve ostale grupe akcija nee izvriti ni jednom.

Shema: Razgranata algoritamska struktura

3.Ciklika (iteracija) programska struktura:

skup akcija moe se izvriti vie puta.

Shema: Ciklika programska struktura

Algoritamsko rjeenje bilo kojeg problema moe se uvijek zapisati koritenjem samo ove tri strukture.

ALGORITAMSKE STRUKTURE

1. Slijedna (linearne ili sekvencijalne)SLIDE 8

Poetak i kraj

Definiranje varijabli i konstanti

Ulaz

Izlaz

Aritmetike i logike operacije

2. Struktura bezuvjetnog skoka

3. Struktura grananja (sadri logike operacije)

kombinira se sa: - Slijednom strukturom

Strukturom bezuvjetnog skoka

4. Struktura iteracije (ponavljanja ili petlje)

STRUKTURA BEZUVJETNOG SKOKA (naruavanje linearnosti)

Koristi se za testiranje algoritma (preskae dio algoritma)

Izaziva greku bezuvjetnog ponavljanja( tzv. Beskonana petlja ili iteracija)

Kombinira se s strukturom grananja radi naruavanja linearnosti / uspostavljanja

ponavljanja (dijela) algoritma.

PSEUDO JEZIK BLOK DIJAGRAM

x. Idi na y

Gdje su x i y brojevi linija algoritma bez obzira na smjer

Struktura bezuvjetnog skoka

SLOENE ALGORITAMSKE STRUKTURE

Sloene algoritamske strukture nastaju kada se u elementarnim strukturama

pojedini algoritamski koraci zamjene drugim algoritamskim koracima ili

dugim elementarnim strukturama. Tako se na osnovama navedenog principa

nadgradnje mogu dati pravila za dobijanje sloenih algoritamskih struktura.

To se postie:

1) kada se u prostoj linijskoj strukturi u sastavu razgranate linijske ili cikline strukture algoritamski korak prve vrste (ne dovodi do grananja algoritma i ima

jedan ulaz i jedan izlaz) zamjeni algoritamskim korakom druge vrste

(dovodi do grananja algoritma i ima jedan ulaz i vie izlaza)

2) kada se u prostoj linijskoj strukturi u sastavu razgranate linijske ili cikline strukture algoritamski korak prve vrste zamjeni novom razgranatom linijskom ili ciklinom strukturom;

3) zamjenom algoritamskog koraka proizvoljne elementarne strukture algoritamskim korakom za poziv potprograma

4) kada se u ve formiranim algoritamskim strukturama ponavljaju zamjene iz pravila danih u tokama (1), (2) i (3).

PLS1

Primjenom navedenih pravila mogu se formirati najraznovrsnije sloene algoritamske strukture.

Jedna od moguih klasifikacija ovih struktura je:

- sloene razgranate linijske strukture

- sloene cikline strukture

- sloene razgranate i cikline strukture

- algoritamske strukture sa potprogramima

Napomena: Za sloene algoritamske strukture dobijene principom nadgradnje se moe postaviti i zahtjev da budu strukturirane (da imaju jedan ulaz i jedan izlaz) ime se zadovoljava princip strukturnosti primjenom tog zahtjeva u veini sluajeva algoritamske strukture postaju logiki preglednije i pogodnije za programsku realizaciju.

KANONSKE I NEKANONSKE ALGORITAMSKE STRUKTURE

Kombinacijom elementarnih struktura formiraju se kanonske, kvazi-kanonske i nekanonske algoritamske strukture.

Postoje 4 kanonske, 5 kvazi-kanonskih i 2 nekanonske algoritamske strukture a

to su :

1. kanonske algoritamske strukture

kanonska linijska struktura

kanonska razgranata struktura

kanonska ciklika struktura

2. kvazi- kanonske algoritamske strukture

3. nekanonske algoritamske strukture

TESTIRANJE ALGORITMA

Izvodi se kao i u matematici uvrtavanjem vrijednosti u algoritam.Algoritam se testira sekvencijalno praenjem svakog reda (instrukcije) algoritma od poetka do kraja, uz zapisivanje vrijednosti koje varijable usput poprimaju, da bi se u konanici i saznala konana vrijednost izlaznih varijabli.

Pr. Zadatka:

Kolika je vrijednost varijable s nakon izvoenja algoritma, ako za x uitamo 2, a za y uitamo 5: SLIDE 14

1. X=0, Y=0, S=0

2. Uitaj X

3. Uitaj Y

4. S=S+Y

5. Ispii S S = 5

KODIRANJE

Algoritam zapoinje s praznim rjenikom, no uzmimo neki trenutak u tijeku kodiranja,kad rjenik ve sadri neke stringove. Analiziramo prefiks koji slijedi u ulaznoj struji, poevi sa praznim prefiksom. Ako njemu odgovarajui string (prefiks + sljedei znak, odnosno P+Z) postoji u rjeniku, proirujemo prefiks P znakom Z. Proirenje ponavljamo sve dok ne dobijemo string koji ne postoji u rjeniku. Tada na izlaz poaljemo kodnu rije koja odgovara P-u, a zatim i znak Z. Sljedei prefiks koji analiziramo direktno se nastavlja na obraeni.Poseban je sluaj ako u rjeniku ne postoji ni poetni string od samo jednog znaka (to se uvijek dogaa na poetku kodiranja). Tada se na izlaz alje posebna kodna rije koja oznaava prazni string. Iza nje se alje dotini znak i taj se znak dodaje u rjenik.

Izlaz iz algoritma su parovi kodna rije-znak (K,Z). Svaki put kad se taj par poalje na izlaz, string iz rjenika koji odgovara kodnoj rijei K proiri se znakom Z i taj novi string se doda u rjenik. To znai da u trenutku kad dodajemo neki string, u rjeniku ve postoje svi stringovi dobiveni oduzimanjem znakova s kraja tog stringa.

Algoritam za kodiranje1. Na poetku su rjenik i P prazni;

2. Z := sljedei znak u ulaznoj struji;

3. Postoji li string P+Z u rjeniku?

a. ako postoji, P := P+Z (P proiri Z-om);

b. ako ne postoji,

--u izlaznu struju poalji dva podatka, i to:

kodnu rije stringa jednakog P-u (ako je P prazan, alji nulu);

Z, u istom obliku kao to je uitan iz ulazne struje;

--na prvo prazno mjesto u rjeniku zapii string P+Z;

--isprazni P;

c. ima li jo znakova u ulaznoj struji?

--ako ima, vrati se na korak 2;

--ako nema:

ako P nije prazan, u izlaznu struju poalji kodnu rije stringa jednakog P-u;

KRAJ

ZAKLJUAK

Algoritamske strukture vaan dio programiranja, pomou njih se zadaje redoslijed izvravanja akcija, tj. problema. One su bitan dio algoritama, jer se algoritmi nikako ne mogli strukturirati , tj rjeavati. Algoritam je postupak kojim se u konanom broju koraka i u konanom vremenu dolazi do rjeenja problema ili spoznaje da rjeenja nema. Svaka vrsta stroja za obradu podataka ima svoj jezik i ne moe se koristiti na drugom stroju, ak ni na razliitim strojevima istog proizvoaa.

LITERATURA

http://bs.wikipedia.org/wiki/Programiranjehttp://www.pmfst.hr/~stankov/Programiranje_I_WWW/Osnove%20programiranja/APL_SW2.PDFhttp://www.pmfst.hr/~stankov/Programiranje_I_WWW/Ppt_prezentacije/strukture.pdfGrbavac, V., Informatika

www.maturski.orgPAGE 17