Глобални идентификатори

Идентификатори података, типова, симболичких константи који су дефинисани на почетку тела функције (главног програма или потпрограма) имају блоковски досег и као такви локални су за ту функцију. То значи да они могу да се користе само унутар те функције. Другим функцијама они нису приступачни и, као такви, не могу да се користе за измену података међу функцијама. Наставите са читањем

Модуларно програмирање

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

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

  • групе функција или појединачне функције за остваривање дела сложеног програмског система, а које су намењене за употребу само у том систему

Наставите са читањем

Рекурзивне функције – решени задаци

1. Написати рекурзивну функцију која одређује faktorijel . У главном програму применити дату функцију.

#include<stdio.h>
int fakt(int n)
{
	int i,f=1;
	if(n>1)f=n*fakt(n-1);
	return f;
}
int main()
{
	int n,k;
	printf("unesi n");scanf("%d",&n);
	k=fakt(n);
	printf("faktorijel=%d",k);
	return 0;
}

2. У математици биномни коефицијент природног броја n и целог броја k дефинисан је као природан број: bk1 и bk2 ако је k<0 или k>n. Биномни коефицијенти су коефицијенти у развоју бинома Created with GIMP (одатле и назив): Created with GIMP

нпр. за n=2 имамо Created with GIMP => коефицијенти су: 1 2 1

за n=3 imamo Created with GIMP => коефицијенти су: 1 3 3 1

Паскалов троугао приказује биномне коефицијенте за биноме степена од 0 до n.

Написати рекурзивну функцију за израчунавање датог биномног коефицијента (bk7 ) . У главном програму, користећи дату функцију исписати Паскалов троугао (Паскалов троугао садржи све биномне коефицијенте за свако n од 0 до nmax, где је nmax димензија троугла). За nmax=10 Паскалов троугао изгледа као на слици:

paskalovtrougao

#include<stdio.h>
int BK(int n, int k)
{
    	if(n<0 || k<0 || k>n) return -1;
    	else
	{
        if(n==0 || k==0 || k==n) return 1;
        else return BK(n-1,k)+BK(n-1,k-1);
    	}
}
int main()
{
	int i,j,n;
	printf("unesi n");scanf("%d", &n);
	printf("paskalov trougao\n");
	for(i=0;i<n;i++)
	{
        for(j=0;j<n-i;j++)printf("   ");
	    for(j=0;j<=i;j++)
			if(BK(i,j)==-1)printf("greska");
           	else printf("  %d   ", BK(i,j));
        printf("\n");
    }
    return 0;
}

3. Дефинисати рекурзивну функцију која израчунава вредност квадратног корена према рекурзивној формули: koren Као параметре функције користити x и n, при чему n представља број корака рекурзије који ће се користити. Написану функцију тестирати у главном програму тако што ће се приказати вредност добијена овом функцијом и вредност добијена применом математичке функције sqrt.

#include<stdio.h>
#include<math.h>
double koren(double x, int n)
{
	double a=1;
	if(n==1)a=(a+x/a)/2;
	else a=(koren(x,n-1)+x/koren(x,n-1))/2;
	return a;
}
int main()
{
	double x,k1,k2;
	int n;
	printf("unesi broj x");scanf("%lf",&x);
	printf("unesi broj koraka konverzije");scanf("%d",&n);
	k1=sqrt(x);
	k2=koren(x,n);
	printf("koren prema funkciji sqrt=%f,\nkoren prema rekurzivnoj formuli=%f",k1,k2);
	return 0;
}

Рекурзивне функције

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

Бочни ефекти функција – решени задаци

1. Дефинисати функцију која одређује мањи од 2 цела броја и већи од два цела броја. Применом те функције одредити најмањи од 4 броја и највећи од 4 броја. Наставите са читањем