Приликом решавања сложенијих задатака често се дешава да се одређени низови наредби понављају на више места. Да се не би трошило време на стално копирање и измене у случају грешке, такви низови наредби се групишу у самосталне програмске јединице које зовемо функцијама. Оне морају имати јединствено име и могу се позивати више пута ради извршавања одређених акција.
Пример из живота: Машина за веш има више програма: за прање белог веша, за прање шареног веша, за прање вуне, итд. Сваки од тих програма у себи има центрифугу. Дакле, центрифуга је функција коју сваки од програма унутар веш машине користи.
Функцијe морају имати повратну вредност. Ту вредност враћају приликом позива и она може користити у изразима. Уколико функција не враћа вредност, њен повратни тип је void. Свака функција мора бити унутар неке класе. Функције су заправо методи које ћемо креирати на већ постојећим класама које смо и раније помињали. |
Ми ћемо у постојеће програме убацивати нове функције које ће наш код учинити разумљивијим и читљивијим. Функције пишемо у следећој форми:
povratni_tip ime_funkcije(definicija_parametara)
{
lokalne_promenljive
naredbe
}
Дефиниција функције обухвата повратну вредност, име функције, аргументе које функција користи (променљиве), тело методе функције унутар које се налазе наредбе и локалне променљиве. Заглавље функције чине повратна вредност, име функције и аргументи које функција користи.
//Primer deklaracije funkcije
int funkcija (int x, int y, int z);
Пример 1. Написати функцију која израчунава суму првих n природних бројева.
int suma(int n)
{
//Dajemo početnu vrednost sumi
int zbir = 0;
//Prolazimo kroz for petlju da bismo obuhvatili sve prirodne brojeve od 1 do n
for (int i = 1; i <= n; i++)
//Na postojeći zbir dodajemo vrednost narednog broja
zbir = zbir + i;
//Naredba return vraća vrednost funkcije
return zbir;
}
Повратна вредност наведене функције је int, односно, цео број. Повратна вредност се пише испред имена функције. Затим следи име функције, које је у овом случају suma. Аргументи које функција узима пишу се у заградама иза имена функције. Те променљиве зову се класне променљиве. У претходном примеру, то је int n. При томе, n је променљива, док је int тип те променљиве. Потом се унутар витичастих заграда пише код функције. Све променљиве које се нађу унутар витичастих заграда зовемо локалним променљивим.
Код функције која ће се касније позивати у програму пишемо било где унутар класе Form1, али независно од других функција које се налазе у Form1. Form1 је класа која дефинише нашу форму и на којој описујемо акције везане за форму. На овај начин везујемо функцију за већ постојећу класу. На следећој слици је приказано где пишемо код наше функције.
Пример 2. Написати функцију која израчунава суму квадрата природних бројева између бројева m и n.
int suma_kvadrata(int m, int n)
{
//Dajemo početnu vrednost sumi
int s = 0;
//Prolazimo kroz for petlju da bismo obuhvatili sve brojeve između m i n
for (int i = m; i <= n; i++)
//Postojećoj sumi dodajemo kvadrat narednog broja
s = s + i * i;
//Naredba return vraća vrednost funkcije
return s;
}
Повратна вредност наведене функције је int, односно, цео број. Повратна вредност се пише испред имена функције. Затим следи име функције, које је у овом случају suma_kvadrata. Аргументи које функција узима пишу се у заградама иза имена функције. Те променљиве зову се класне променљиве. У претходном примеру, то су int m, int n. Потом се унутар витичастих заграда пише код функције. Све променљиве које се нађу унутар витичастих заграда зовемо локалним променљивим.
Пример 3. Написати функцију која исписује поруку.
Функција која ће исписивати поруку неће имати повратну вредност, дакле, повратни тип биће void.
void ispisi(int x)
{
//Funkcija prikazuje prozor sa porukom
MessageBox.Show("Uneli ste broj " + x);
}