Дефинисање функције¶
У уводу смо навели да функције представљају начин да се сложени програми разбију на простије потпрограме. Врло често се дешава да се у програму и одређене наредбе позивају више пута. Зато је рационалније те наредбе издвојити у неку целину, потпрограм. Затим се те функције позивају по потреби у главном програму. Такве потпрограме је лакше дефинисати и контролисати.
Навели смо да је једна од карактеристика функција и њихова предност могућност да се једном написана функција користи у више различитих програма једноставним позивањем.
Функција, дакле, представља потпрограм који на основу извесног броја аргумената даје један резултат који се назива вредност функције. Функције осим вредности функције могу дати и друге резултате који се називају бочни ефекти функције.
Функције се најчешће позивају у главном програму, али се могу позивати и у другим функцијама.
Вредност функције се може сместити у изразе позивањем функције.
main()
је такође функција и то, како јој име говори, главна. У њој се
извршава програм и позивају остале функције у програму.
Функција се састоји од заглавља и тела функције.
Општи облик функције изгледа овако:

Вредност функције¶
Тип вредности може бити било који стандардни прости тип (int, double…).
Ако се не наведе тип, подразумева се тип int. На пример, main()
или int main()
је идентична декларација главне функције. Тип вредности не може бити низ.
За функцију која не враћа вредност као тип резултата се наводи реч void.
Име функције пише се по правилима за идентификаторе. То значи да име функције мора почињати словом или знаком_, никако бројем или неким другим знаком. Име функције не сме садржати размак.
Вредност функције може бити само један податак. Зато тип вредности функције не може бити низ.
Параметри функције¶
Листа параметара представља низ аргумената помоћу којих се врши уношење почетних података у функцију. Вредност функције се рачуна помоћу ових параметара. Ако функција нема параметара, унутар заграда се не пише ништа или може да стоји реч void.
Параметри функције нису стварни подаци, већ служе да се помоћу њихових вредности израчуна вредност функције. Зато се називају формални параметри. Подаци који се прослеђују функцији приликом њеног позива се називају стварни параметри.
Тело функције¶
Тело функције је заправо блок података, односно низ података између заграда {}. У њему се дефинишу подаци који се користе у функцији. Ови подаци се стварају при сваком позиву функције, а уништавају по њеном завршетку.
Променљиве дефинисане у телу функције локалне су за ту функцију и не могу се користити у другим функцијама. Отуда се имена параметара и локалних променљивих могу понављати у различитим функцијама.
Приликом позива функције у њу се заправо копирају вредности наведене при позиву.
Зато се каже да се аргументи у функцију преносе помоћу вредности. Видећемо да ово није једини начин преноса аргумената у функцију.
Повратак из функције на место одакле је позвана врши се помоћу наредбе return.
У случају да функција враћа вредност, ова наредба мора имати вредност, односно њен облик је return вредност. У функцијама које не враћају вредност, типа void, наредба return не сме да има вредност.
Пример:
Анализирајмо једноставну функцију за сабирање два броја:
int zbir(int x, int y)
{
int z;
z = x + y;
return z;
}
int zbir(int x, int y)
представља заглавље функције.
Функција коју смо назвали zbir
је типа int
јер ће у главни програм као резултат
вратити целобројну вредност.
x
и y
су параметри функције.
Део кода између заграда {} је тело функције.
У њему је декларисана локална променљива c унутар функције zbir и додељена јој је вредност.
return c
је наредба којом се резултат враћа у позивајућу функцију. Тип вредности која се
враћа и тип функције морају бити исти.
Да би користио функције, мораш као програмер да познајеш својства функције, а то су:
Име функције коју желиш да користиш
Колико аргумената има функција
Тип податка сваког аргумента
Тип функције, односно тип вредности резултата функције
Шта заправо ради та функција, односно њен кôд.