Professional Documents
Culture Documents
Funkcije
Vrlo esto pri pisanju programa moemo doi u
situaciju kada vie puta treba da izvrimo isti set naredbi U ovim situacijama je poeljno koristiti funkcije (podrutine)
Sub..EndSub
Funkcija je segment koda unutar veeg programa koji
je specifian po tome to radi, i moe biti pozvan iz bilo kojeg dijela programa. Funkcije prepoznajemo po kljunoj rijei Sub pakon ega slijedi njeno ime i odgovarajue naredbe, dok kraj funkcije prepoznajemo po kljunoj rijei EndSub
Primjer
Segment koda koji slijedi predstavlja funkciju
Upotreba u programu
Slijedi program koji sadri navedu funkciju i poziva je
Rezultat
Funkciju izvravate tako to pozivate ime_funkcije()
Zagrade su obavezne da bi rekli programu da izvri
funkciju
Prednosti funkcija
Kao to smo ve vidjeli, funkcije nam pomau da smanjimo
koliinu koda koju treba da otkucamo Kada jednom kreirate funkcijuPrintTime, moete je pozivati iz bilo kojeg mjesta u programu i ona e tampati trenutno vrijeme Osim navedenog, funkcije vam mogu pomoi da kompleksan problem raslanite na jednostavnije djelove Na primjer, ako treba da rijeite kompleksnu jednainu, moete napisati vie funkcija koje rjeavaju sitnije djelove te jednaine. Nakon toga moete povezati rezultate da bi dobili rjeenje poetne jednaine
itljivost programa
Funkcije takoe mogu poveati itljivost programa Drugim rijeima, ako ste umjesto djelova programa
koji se esto izvravaju kreirali funkcije sa odgovarajuim imenima, va program postaje jednostavniji za itanje i shvatanje Ovo je veoma bitno ako elite da shvatite tui program, ili da va program uinite razumljivim za ostale Ovo nam ponekad olakava da bre shvatimo kod koji smo samo napisali, naroito ako je od tada prolo puno vremena
Napomena
Funkcije u Small Basicu moete koristiti samo unutar
Upotreba promjenljivih
Funkcije mogu koristiti sve promjenljive koje ste
kreirali u programu Kao primjer, program koji slijedi uzima dva broja i tampa vei od njih Primjetite da se promjenljiva max koristi i unutar i izvan funkcije
Primjer
TextWindow.Write("Enter first number: ") num1 = TextWindow.ReadNumber() TextWindow.Write("Enter second number: ") num2 = TextWindow.ReadNumber() FindMax() TextWindow.WriteLine("Maximum number is: " + max) Sub FindMax If (num1 > num2) Then max = num1 Else max = num2 EndIf EndSub
Izlaz iz programa
rad sa funkcijama Ovog puta emo koristiti grafiki program koji rauna koordinate razliitih taaka i smjeta ih u promjenljive xiy Nakon toga poziva funkciju DrawCircleUsingCenter koja crta krug sa centrom u taki (x,y)
Primjer
GraphicsWindow.BackgroundColor = "Black" GraphicsWindow.PenColor = "LightBlue" GraphicsWindow.Width = 480 For i = 0 To 6.4 Step 0.17 x = Math.Sin(i) * 100 + 200 y = Math.Cos(i) * 100 + 200 DrawCircleUsingCenter() EndFor Sub DrawCircleUsingCenter startX = x - 40 startY = y - 40 GraphicsWindow.DrawEllipse(startX, startY, 120, 120) EndSub
Rezultat
prilikom ega one izvravaju isti set naredbi ali sa razliitim vrijednostima u jednoj ili vie promjenljivih Uzmimo za primjer funkciju PrimeCheck koja provjerava da li je broj prost Moete napisati program koji korisniku dozvoljava da unese odreenu vrijednost, i pomou navedenu procedure odredi da li je broj prost Program koji slijedi ilustruje navedeno
PrimeCheck
TextWindow.Write("Enter a number: ") i = TextWindow.ReadNumber() isPrime = "True" PrimeCheck() If (isPrime = "True") Then TextWindow.WriteLine(i + " is a prime number") Else TextWindow.WriteLine(i + " is not a prime number") EndIf Sub PrimeCheck For j = 2 To Math.SquareRoot(i) If (Math.Remainder(i, j) = 0) Then isPrime = "False" Goto EndLoop EndIf Endfor EndLoop: EndSub
Pojanjenje
Funkcija PrimeCheck uzima vrijednost unijetog broja i
pokuava da ga podijeli sa manjim brojevima Ako je neki od tih brojeva djelilac broja i, broj i nije prost U tom trenutku funkcija setuje vrijednost promjenljive isPrime na False i izlazi Ako broj i nije djeljiv manjim brojevima, vrijednost promjenljive isPrime ostaje True
Rezultat
Lista prostih
Sada kada imamo funkciju koja provjera da li je broj
prostm moemo je iskoristiti da izlistamo sve proste broje manje od ,recimo , 100. Veoma je jednostavno izmijenjiti prethodni program tako da se PrimeCheck poziva iz petlje Ovo funkciji daje drugu vrijednost za raunanje pri svakom pokretanju petlje Slijedi kod navedenog programa
Lista prostih
For i = 3 To 100 isPrime = "True" PrimeCheck() If (isPrime = "True") Then TextWindow.WriteLine(i) EndIf EndFor
Sub PrimeCheck For j = 2 To Math.SquareRoot(i) If (Math.Remainder(i, j) = 0) Then isPrime = "False" Goto EndLoop EndIf Endfor EndLoop: EndSub
Objanjenje
U navedenom programu, vrijednost promjenljive i se
mijenja pri svakom ponavljanju petlje Unutar petlje se vri poziv funkcije PrimeCheck PrimeCheck uzima vrijednost promjenljive i i provjerava da li je i prost broj Rezultat se smjeta u promjenljivu isPrime kojoj se pristupa iz petlje van funkcije Vrijednost promjenljive i se tampa ako je i prost broj A poto program poine od broja 3 i ide do 100, dobijamo listu svih prostih brojeva koji se nalaze izmeu 3 i 100
Rezultat
Slijedi rezultat prethodnog programa