Опис функције

Општи облик дефиниције функције:

тип_вредности име_функције (низ_параметара) тело функције

тип_вредности – тип резултат функције. Може бити било који стандардни тип, али и кориснички дефинисан тип (наредбом typedef).

За функције које не стварају вредност функције, већ само бочне ефекте, као тип_вредности користи се службена реч void.

Ако се тип_вредности изостави подразумева се int.

Претпоставимо да треба дефинисати функцију која израчунава суму квадрата целих бројева од m до n. Решење гласи:

int sumaKv (int m, int n)		/* zaglavlje funkcije */
{
int s,i;					/* definisanje lokalnih promenljivih */
s=0;						
for(i=m;i<=n;i++) s=s+i*i;
return s;					/* naredba povratka u glavni program */
}

sumaKv – име функције. Ова функција у главни програм враћа целобројну вредност, односно тип резултата вредности функције која се враћа у главни програм је int. Ова функција има два целобројна параметра m и n (почетна и крајња вредност), који су дефинисани у загради након назива функције. За сваки параметар мора се навести његов тип.

Променљиве дефинисане на почетку функције су локалне променљиве за ту функцију, што значи да су недоступне у главном програму и нестају после извршавања функције.

Резултат израчунавања, односно додељивање вредности функције обавља се наредбом return, којом се, у ствари, враћамо у главни програм.

Пример употребе функције sumaKv:

#include<stdio.h>
int sumaKv (int m, int n)
{
int s,i;
s=0;
for(i=m;i<=n;i++) s=s+i*i;
return s;
}
main()
{
int m,n,k,l,p;
p=sumaKv(2,4);
printf("p=%d,suma kvadrata od -1 do 3 je:%d\n",p,sumaKv(-1,3));
printf("unesi m,n,k,l:\n");
scanf("%d%d%d%d",&m,&n,&k,&l);
p=sumaKv(m,n)+sumaKv(k,l);
printf("p=%d,suma kvadrata od %d+%d do %d+%d je:%d",p,m,k,n,l,sumaKv(m+k,n+l));
}

Наредбе функције се извршавају када у главном програму дође до позива функције. Позив функције се реализује записом имена функције иза кога следи у загради списак параметара раздвојених зарезима:

p=sumaKv(2,4);

десни део ове наредбе представља позив функције, са параметрима m=2, n=4

Параметри наведени при позиву функције називају се стварни, а параметри наведени у опису функције називају се формални. У нашем примеру m и n су формални параметри, док се стварни наводе при сваком позиву функције sumaKv. Пре извршавања функције, формалним параметрима се додељују вредности стварних параметара, тако да се и стварни и формални параметри морају поклапати и по броју и по типу. Треба имати у виду да стварни параметри могу бити не само константе и променљиве, већ и изрази. Параметри функције којима се при позиву функције додељују вредности стварних параметара називају се вредносни параметри.

Када се у програму појави наредба

p=sumaKv(2,4);

реализују се следеће акције:

  1. резервише се меморијски простор за променљиве дефинисане у функцији sumaKv

  2. формалним параметрима се додељују вредности стварних параметара: m=2, n=4

  3. извршавају се наредбе функције, тј. израчунава се сума квадрата бројева од 2 до 4

  4. резултат израчунавања у функцији поставља се на место позива функције, тј. додељује се променљивој p и прелази се на извршавање следећих наредби главног програма.

Важно је напоменути да је за променљиве функције предвиђена област меморије која је независна од области додељене главном програму. На пример, променљиве m и n из функције имају посебне меморијске локације иако се у главном програму појављују променљиве са истим именом.

Извршавањем наредбе

p=sumaKv(2,4);

у меморијске локације m и n које припадају функцији копирају се константе 2 и 4.

Након тога се унутар for циклуса израчунава вредност променљиве s и уписује у одговарајућу меморијску локацију. Када се дође до наредбе return s; вредност са локације s се копира на локацију p у делу меморије која припада главном програму. Део меморије намењен функцији се ослобађа и тиме је извршавање функције завршено.

Опис функције је посебан део програма који има своје променљиве за које се резервише меморијски простор независан од главног програма. 

2 thoughts on “Опис функције

  1. Повратни пинг: Потпрограми | Рачунари и програмирање

  2. Повратни пинг: Потпрограми – Рачунари и програмирање

Оставите одговор

Попуните детаље испод или притисните на иконицу да бисте се пријавили:

WordPress.com лого

Коментаришет користећи свој WordPress.com налог. Одјавите се /  Промени )

Google photo

Коментаришет користећи свој Google налог. Одјавите се /  Промени )

Слика на Твитеру

Коментаришет користећи свој Twitter налог. Одјавите се /  Промени )

Фејсбукова фотографија

Коментаришет користећи свој Facebook налог. Одјавите се /  Промени )

Повезивање са %s