You are on page 1of 16

SVEUILITE/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


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.FUNKCIJE

Funkcije 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.
2

1.1.2.Funkcijski potprogram
Funkcijski 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
3

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)


Tijelo procedure

END SUB

Poziv ovako definisane procedure se ostvaruje primjenom instrukcije CALL prema sintaksi:
CALL NazivProcedure VrijednostiParametra
Gdje 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.
4

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, . . .)


end

Lista 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 :
o procedure-potprogrami iji poziv je zasebna naredba unutar neke programsje
cjeline
o 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,
10

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 i
End
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=20
10 end sub

(Liberty Basic)
11

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)

12

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.

13

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.pdf

14

SADRAJ

1.POTPROGRAMI...................................................................................................... 1
1.1.FUNKCIJE........................................................................................................ 2
1.1.1.Funkcijska naredba......................................................................................... 3
1.1.2.Funkcijski potprogram..................................................................................... 3
Program P01.................................................................................................... 3
1.2.PROCEDURE (opi potprogram)............................................................................. 4
1.2.1.Program P02........................................................................................... 5
1.3.Odnos i definicija glavnog programa i potprograma.....................................6
1.4.Prijenos argumenta potprograma..................................................................7
2.IMPLEMENTACIJA POTPROGRAMA.........................................................................9
2.1.Koritenje potprograma.................................................................................9
Program P03...................................................................................................... 11
Program P04...................................................................................................... 12
ZAKLJUAK.......................................................................................................... 13
LITERATURA:......................................................................................................... 14
SADRAJ............................................................................................................... 15

15

You might also like