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

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

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

тип_вредности – тип резултат функције. Може бити било који стандардни тип, али и кориснички дефинисан тип (наредбом 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 у делу меморије која припада главном програму. Део меморије намењен функцији се ослобађа и тиме је извршавање функције завршено.

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

Advertisements

One thought on “Опис функције

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

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

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

WordPress.com лого

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

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

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

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

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

Google+ photo

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

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