2015-02-16 13_55-seminarski SPiA

21
SVEUČILIŠTE/UNIVERZITET „VITEZ“ U TRAVNIKU FAKULTET POSLOVNE INFORMATIKE SMJER: INFORMACIJSKE TEHNOLOGIJE POTPROGRAMI i njihova implementacija u Libery Basic-u - SEMINARSKI RAD - Predmet: Strukture podataka i algoritmi

description

seminarski

Transcript of 2015-02-16 13_55-seminarski SPiA

SVEUILITE/UNIVERZITET VITEZ U TRAVNIKUFAKULTET POSLOVNE INFORMATIKESMJER: INFORMACIJSKE TEHNOLOGIJE

POTPROGRAMI

i njihova implementacija u Libery Basic-u - SEMINARSKI RAD -Predmet: Strukture podataka i algoritmi

Student: Belma Kasumovi

Profesor: Prof .dr Lazo Rolji

Asistent: mr.sc.Dragan Mlaki

1.POTPROGRAMI Realni problemi,koji se rjeavaju uz podrku raunara,zahtijevaju u veliko veini sluajeva kompleksne obrade podataka.ovo,s druge strane implicira kreiranje kompleksnih programa,koji obino implementiraju viestruke funkcionalnosti i u jednom prolazu vre vie razliitih obrada nad ulaznim podacima.Odravanje i pregled ovakvih programa je zahtjevan zadatak,s obzirom da takvi programi mogu sadravati hiljade linija koda,koje se,ak i s dobrim komentarisanjem,teko mogu pratiti i mijenjati.esto se u ovakvim programima dijelovi koda ponavljaju u razliitim segmentima programa,to dodatno komplicira praenje toka programa pri otklanjanju greaka,ili pri unapreivanju postojeih funkcionalnosti.Sve ovo navedeno predstavlja razlog zbog kojeg se u struktuirano programiranje uvodi podjela programa na funkcionalne cjeline koje se nazivaju potprogramima.

Potprogrami su zapravo programi unutar programa.U Liberty Basic-u (u daljem tekstu LBu) potprogrami su podrani kroz: funkcije (functions) i

procedure (subroutines). Podjelom programa na funkcionalne cjeline ostvaruje se reupotrebljivost koda i izdvajanje funkcionalnosti u zasebne cjeline,ime se dobija jednostavniji glavni program,odnosno olakano praenje toka programa i odravanje njegovog koda. Funkcije i procedure se u LBu definiu nakon zavretka glavnog programa.

Za svaki potprogram se karakteristina sljecea etiri elementa:

ime potprograma,

lista imena argumenata,

tijelo potprograma i

okruenje u kome je potprogram definisan. 1.1.FUNKCIJEFunkcije su jedan od tipova potprograma podranih u LB. Iako se,u opem sluaju potrpogrami mogu pisati i kao skupovi instrukcija koritenih pri reupotrebi programskog koda,veina potprograma se ipak kreira tako da na ulazu prihvataju parametre, vre neku funkcionalnost na osnovu njih i na izlazu daju rezultate.

S tim u vidu,funkcije bi bile potprogrami koji na svom izlazu daju samo jedan parametar. Parametar na izlazu je sam naziv funkcije koji sadri izlaznu vrijednost.Kod nekih kompleksnijih programskih jezika,ovaj parametar moe biti kompleksnog tipa i sadravati vie jednostavnih podataka u sebi.Funkcije se kao potprogram obino koriste kako bi predstavile neku operaciju koja se inae moe predstaviti s nekoliko linija programskog koda.Ovakve operacije su na primjer operacije matematikog sumiranja,ili spajanja stringova i slino.Sintaksa instrukcija kojima se definiu funkcije je sljedea:

FUNCTION ImeFunkcije (nazivi parametara odvojeni zarezima)

Instrukcije u tijelu funkcije

END FUNCTION

U kodu programa,funkcije se pozivaju tako da se varijabli dodijeli vrijednost naziv funkcije s parametrima. Sintaksa poziva je:

ImeVarijable = ImeFunkcije (vrijednosti parametra)

Sa stanovita funkcija moe se govoriti o :

Funkcijskim naredbama i

Funkcijskim potprogramima.

1.1.1.Funkcijska naredba je najjednostavniji oblik potprograma.Ona omoguava izdvajanje jednog izraza kao potprograma.Sintaksa se definie i poziva kao i svi funkcijski potprogrami.

1.1.2.Funkcijski potprogramFunkcijski potprogram prua vee mogunosti od funkcijske naredbe.On moe sadravati itav niz instrukcija koje ulazne parametre transformiu u izlazni parametar.U praksi se mnogo ee koriste od funkcijskih naredbi,jer pruaju vie mogunosti za manipulaciju ulaznim podacima.

Sljedei primjer ( Program P01) pomoi funkcijskog potprograma Suma sabira sve brojeve X tabele od 20 elementa,zatim prvih 10 brojeva Y tabele od 20 brojeva i na kraju zadnjih 10 brojeva Y tabele.

Unoenje elementa niza X i Y.

Formiranje novih nizova

Izraunavanje sume pomou funkcijskog potprograma

Program P01.1.2.PROCEDURE (opi potprogram)Za razliku od funkcija koje imaju tano jednu izlaznu veliinu,koja se dodjeljuje imenu funkcije,procedura (koja se moe nazvati i opim potprogramom) moe imati jednu ili vie izlaznih veliina.Ova injenica daje procedurama veliku fleksibilnost,kada su u pitanju funkcionalnosti koje se mogu implementirati kroz procedure.One praktino predstavljaju prave male programe koji na svom ulazu imaju niz podataka,a na izlazu daju drugi niz podataka nastao nekom transformacijom ulaznih.

U LBu procedure se nazivaju subroutines i predstavljaju esto koriten oblik potprograma u sluajevima koritenja istog programskog koda na vie razliitih mjesta u glavnom programu,odnosno za kompleksne proraune u viestrukim izlazima.

Openito da bi se ostvarila upotreba potprograma,koristi se odreena forma naredbe poziva.u trenutku izvoenja naredbe poziva potprograma ,kontrola izvoenja naredbi predaje se pozvanoj cjelini,odnosno prelazi se na izvravanje naredbi potprograma.Nakon to se izvedu sve naredbe pozvanog potprograma,kontrola se vraa pozivau i izvravaju se njegove dalje naredbe.Potprogrami mogu biti pozvani iz glavnog programa,ali i sami potprogrami mogu pozvati druge potprograme.

Osnovna sintaksa za kreiranje procedura u LBu je sljedea: SUB NazivProcedure Parametri (odvojeni zarezima)

END SUB

Poziv ovako definisane procedure se ostvaruje primjenom instrukcije CALL prema sintaksi:

CALL NazivProcedure VrijednostiParametraGdje VrijednostiParametra mogu biti specificirane upisom imena varijabli (ije vrijednosti su ranije definisane u programu),ili upisom konkretnih vrijednosti varijabli.Pri tome e neki od parametara biti varijable bez vrijednosti,koje e po zavretku procedure posluiti za smjetanje rezultata procedure.Takve varijable se u daljem toku glavnog programa mogu koristiti kao varijable s definisanim vrijednostima.

1.2.1.Program P02.

Sljedei program uitava matricu A reda mxn,pronalazi maksimalni element svih stupaca matrice i od istih formira jednodimenzionalni niz Y,a zatim izvrava mnoenje matrice A i dobivenog niza.Maksimalne elemente odreiva pomou funkcijskog potprograma a mnoenje matrice i niza odreiva pomou procedure unutar glavnog programa.

Program P02.1.3.Odnos i definicija glavnog programa i potprograma

Sam potprogram je zapravo obini fortranski program,pa zato uvodimo nazive glavni program za ono to smo do sad radili te potprogram za novu izdvojenu programsku cjelinu.

Potprogram je podreen glavnom programu.Glavni program je taj koji vodi igru i koji kad za to doe trenutak poziva potprogram da obavi posao za njega.Pri tome glavni program mora potprogramu predati nekakve podatke s kojima e potprogam raditi.Takoer glavni program oekuje od potprograma nekakav rezultat.Stoga,glavni program mora potprogramu dati na znanje kako e potprogram taj rezultat vratiti glavnom programu.Potprogrami za razliku od glavnih programa pored imena imaju tzv.listu argumenata.Ta lista predstavlja popis varijabli koje glavni program daje potprogramu na koritenje u koje potprogram treba spremiti rezultat svog rada,kako bi glavni program mogao te rezultate vidjeti.U glavnom programu se pozivanje potprograma obavlja naredbom call iza koje slijedi ime potprograma i lista stvarnih argumenata u zagradama. subroutine ime_potprograma 1 (ime_form_var, ime_form_var, . . .)

deklaracije varijabli

naredbe

return end -----------kraj prvog potprograma----------------poziv prvog potprograma------call ime_potprograma 1 (vrijednost, . . .)

endLista formalnih argumenata u definiciji potprograma popisuje imena varijabli kojima se koriste u potprogramu.U toj listi moraju biti sve varijable koje donose vrijednosti u potprogram,te sve varijable koje iz potprograma moraju iznijeti vrijednosti i predati ih glavnom programu. 1.4.Prijenos argumenta potprograma U prethodnom poglavlju razraeni su primjeri definisanja i pozivanja procedura i funkcija. Prilikom definisanja potprograma deklarisane su posebne promjenljive koje treba da prihvate ulaz potprograma, a koje smo nazvali argumentima.Te promjenljive se jo nazivaju formalni parametri potprograma.

S druge strane,prilikom pozivanja potprograma potrebno je obezbijediti konkretne vrijednosti za argumente.Te vrijednosti se jo nazivaju stvarni parametri potprograma.Stvarnih parametara mora biti koliko i formalnih,moraju biti navedeni u odgovarajuem redoslijedu,a odgovarajui formalni i stvarni parametri moraju biti istog tipa.Postoje dva naina za prenos argumenata u LB:

po adresi ili referenci i

po vrijednosti.

Da bi se zadao odgovarajui prijenos argumenta,prilikom deklaracije formalnog parametra navodi se ByRef(za prenos po adresi/referenci) ili ByValue(za prenos po vrijednosti). Ukoliko se ekplicitno ne navede ni ByRef ni ByValue,efekat je isti kao da je navedeno ByRef(tj. prijenos po adresi je podrazumijevani nain za prijenos argumenta potprograma).

Prijenos po vrijednosti koristi se za prijenos ulazno-izlaznih parametara.Vrijednosti stvarnih argumenata se kopiraju u memorijske lokacije formalnih parametara.Sve izmjene nad argumentima pamte se u lokalnim memorijskim lokacijama potprograma.Prije vraanja kontrole glavnom programu vri se kopiranje u lokacije stvarnih argumenata.

Kod prijenosa po referenci nema kopiranja vrijednosti iz glavnog programa u potprogram i obrnuto.Prenosi se samo referenca memorijske lokacije u kojoj je vrijednost stvarnog argumenta.Sve promjene nad argumentima u potprogramu vidljive su i u glavnom programu.Kod prijenosa po referenci ne vri se kopiranje tj.nema dupliranja memorijskog prostora to je velika prednost kod ovog prijenosa.2.IMPLEMENTACIJA POTPROGRAMA 2.1.Koritenje potprograma

Prilikom rjeavanja manjih problema koritenjem raunara,svi zadaci se mogu izvriti u okviru glavnog programa,ba kao to jedan radnik moe obaviti sve zadatke u zanatskoj radionici.Meutim,sa poveanjem sloenosti kompjuterskih programa,neophodno je uvesti organizacione koncepte sline onima koji se koriste u velikim preduzeima.Iz tog razloga,potrebno je program podijeliti na odgovarajue logike i funkcionalne cjeline tj. potprograme.Potprogrami omoguavaju organizovanje odreenog broja instrukcija u cjeline koje obavljaju odreeni zadatak i na koje se moemo pozvati vie puta u toku izvravanja zadatka.

Implementacijom potprograma postie se:

planiranje memorijskog prostora pri prevoenju, rezervie se memorijski prostor za smjetaj koda programa i podataka koji se obrauju u njemu,

za svaki potprogram generie se aktivacioni slog u koji se smjetaju podaci koji se preuzimaju od glavnog programa,lokalni podaci potprograma i privremene promjenljive.

Koritenje potprograma donosi niz prednosti od kojih moemo izdvojiti sljedee:

omoguava koncentrisanje na izvravanje samoodreenog zadatka,

razliiti lanovi razvojnog tima mogu razvijati razliite potprograme koji se kasnije sklapaju u jednu cjelinu,

omoguava izvravanje istog zadatka na vie mjesta u programu jednostavnim pozivanjem odgovarajueg potprograma.

Osnovna je funkcija potprograma sakrivanje nevanih detalja programskog rjeenja. Koritenje potprograma omoguuje bolji uvid u tok programa,tako da je panju lake posvetiti problemo ta radi za razliku od kako to radi.

U principima implementacije potprograma meu programskim jezicima male su razlike u:

nainu prevoenja

nainu prijenosa argumenta, po vrsti :

procedure-potprogrami iji poziv je zasebna naredba unutar neke programsje cjeline

funkcije koje su dio izraza i njihivo referenciranje vraa vrijednost.

Osnovne karakteristike potprograma koje razmatramo:

imaju jesnu ulaznu taku,

pozivajua procedura se zaustavlja u toku izvravanja pozvanog potprograma, samo jedan potprogram se izvrava u datom vremenu,

kontrola se uvijek vraa pozivajuoj proceduri po zavretku izvravanja potprograma.

Brojne su prednosti koritenja potprograma,a samo neke od njih su:

smanjiti ponavljanja istih ili slinih sekvenci programskog koda, omoguiti ponovnu upotrebu dijelova programskog koda u razliitim programima,

dekompozicija sloenih problema u manje i jednostavnije cjeline,

poboljanje itljivosti i preglednosti programa,

repliciranje rjeenja za matematike funkcije

sakrivanje informacija i nevanih detalja unutar pojedinih dijelova programa,

smanjenje rizika od greaka,lake odravanje i nadogradnja velikog sistema.Program P03.Sljedei primjer pokazuju najjednostavniji nain implementacije potprograma pomou opteg potprograma koji tampa sve proste brojeve do datog prirodnog broja N.

Input Unesite broj N= ;N

Print Prosti brojevi do broja N= ;N; su:

For i=1 to N

Call prost i

Next iEnd

sub prost A

for i=2 to A-1

if A mod i = 0 then goto 10

next i

Print A Program P03: Ispis prostih brojeva za N=2010 end sub (Liberty Basic)Program P04.Ili program koji izraunava broj kombinacija M-te klase od N elemenata.

Takoer rauna postotak dobitka u igri LOTO za ispunjeni broj kolona.(Liberty Basic)Kod programa

(LB screenshot)

Izvrenje programa za uneene vrijednosti N=6; M=5; br.kolona=3

(LB screenshot)

ZAKLJUAK Potprogrami su iroko koriteni u programiranju proceduralnim jezicima,a princip na kojem se zasnivaju je osnov za druge pristupe u programiranju,kao to je objektno orijentisano programiranje,ili kao to su servisno orijentisane arhitekture.Ovaj princip kae da se svaki problem moe podijeliti na jednostavnije dijelove koji se mogu relativno neovisno rjeavati. Osnovna prednost potprograma je reupotreba programskog koda i pojednostavljenje u praenju toka programa,njegovom odravanju,debagiranju ili unapreivanju funkcionalnosti.

Liberty Basic poznaje dvije vrste potprograma: funkcije i procedure.Obe vrste se mogu koristiti u veini praktinih problema,iako ima i izuzetaka,zbog ogranienosti funkcija da na izlazu vrate vie od jednog parametra. Navedene prednosti potprograma najbolje su vidljive tek kod kompleksnijih programa,sa hiljadama linija koda,koji praktino onemoguavaju praenje bez upotrebe potprograma u formi procedura ili funkcija,kojima se implementiraju funkcionalnosti viestruko koritene u glavnom programu.LITERATURA:[1] Osnovi programiranja dr Boban Stojanovi[2] Programiranje i algoritmi (skripta) N.Pavkovi, D.Marjanovi, N.Bojeti

[3] Principi programiranja : Liberty Basic / Senad Bali,Nedad aranovi. Zenica: Univerzitet,2008.-VI

[4] http://ttl.masfak.ni.ac.rs/SUK/Programiranje%20i%20algoritmi%202.pdfSADRAJ11.POTPROGRAMI

21.1.FUNKCIJE

31.1.1.Funkcijska naredba

31.1.2.Funkcijski potprogram

3Program P01.

41.2.PROCEDURE (opi potprogram)

51.2.1.Program P02.

61.3.Odnos i definicija glavnog programa i potprograma

71.4.Prijenos argumenta potprograma

92.IMPLEMENTACIJA POTPROGRAMA

92.1.Koritenje potprograma

11Program P03.

12Program P04.

13ZAKLJUAK

14LITERATURA:

15SADRAJ

Tijelo procedure

15