Типови кориснички дефинисаних функција у програмирању на језику Ц.

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

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

Излаз свих ових програма у наставку је исти, а ми смо креирали кориснички дефинисану функцију у сваком примеру. Међутим, приступ који смо заузели у сваком примеру је другачији.

Пример 1: Нема прослеђених аргумената и нема повратне вредности

 #include void checkPrimeNumber(); int main() ( checkPrimeNumber(); // argument is not passed return 0; ) // return type is void meaning doesn't return any value void checkPrimeNumber() ( int n, i, flag = 0; printf("Enter a positive integer: "); scanf("%d",&n); for(i=2; i <= n/2; ++i) ( if(n%i == 0) ( flag = 1; ) ) if (flag == 1) printf("%d is not a prime number.", n); else printf("%d is a prime number.", n); ) 

checkPrimeNumber()Функција узима улаз од корисника, провјерава да ли се ради о прост број или не и приказује га на екрану.

Празне заграде у checkPrimeNumber();изразу унутар main()функције указују на то да се функцији не прослеђује ниједан аргумент.

Повратни тип функције је void. Дакле, функција се не враћа.

Пример 2: Нису прослеђени аргументи већ враћена вредност

 #include int getInteger(); int main() ( int n, i, flag = 0; // no argument is passed n = getInteger(); for(i=2; i<=n/2; ++i) ( if(n%i==0)( flag = 1; break; ) ) if (flag == 1) printf("%d is not a prime number.", n); else printf("%d is a prime number.", n); return 0; ) // returns integer entered by the user int getInteger() ( int n; printf("Enter a positive integer: "); scanf("%d",&n); return n; ) 

Празне заграде у n = getInteger();изразу указују да се функцији не прослеђује ниједан аргумент. И, вредност враћена из функције додељена је н.

Овде getInteger()функција узима улаз од корисника и враћа га. Код за проверу да ли је број прост или не налази се унутар main()функције.

Пример 3: Аргумент је прослеђен, али нема повратну вредност

 #include void checkPrimeAndDisplay(int n); int main() ( int n; printf("Enter a positive integer: "); scanf("%d",&n); // n is passed to the function checkPrimeAndDisplay(n); return 0; ) // return type is void meaning doesn't return any value void checkPrimeAndDisplay(int n) ( int i, flag = 0; for(i=2; i <= n/2; ++i) ( if(n%i == 0)( flag = 1; break; ) ) if(flag == 1) printf("%d is not a prime number.",n); else printf("%d is a prime number.", n); ) 

Целобројна вредност коју је унео корисник преноси се у checkPrimeAndDisplay()функцију.

Овде checkPrimeAndDisplay()функција проверава да ли је прослеђени аргумент прост број или не и приказује одговарајућу поруку.

Пример 4: Аргумент прослеђен и враћена вредност

 #include int checkPrimeNumber(int n); int main() ( int n, flag; printf("Enter a positive integer: "); scanf("%d",&n); // n is passed to the checkPrimeNumber() function // the returned value is assigned to the flag variable flag = checkPrimeNumber(n); if(flag == 1) printf("%d is not a prime number",n); else printf("%d is a prime number",n); return 0; ) // int is returned from the function int checkPrimeNumber(int n) ( int i; for(i=2; i <= n/2; ++i) ( if(n%i == 0) return 1; ) return 0; ) 

Улаз од корисника преноси се у checkPrimeNumber()функцију.

На checkPrimeNumber()функција проверава да ли је прошло аргумент главни или не.

Ако је прослеђени аргумент прост број, функција враћа 0. Ако је прослеђени аргумент не-прост број, функција враћа 1. Повратна вредност додељује се променљивој заставе.

У зависности од тога да ли је заставица 0 или 1, из main()функције се исписује одговарајућа порука .

Који је приступ бољи?

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

Функција треба да изврши одређени задатак. checkPrimeNumber()Функција не узме улаз од стране корисника нити приказује одговарајућу поруку. Проверава само да ли је број прост или није.

Занимљиви Чланци...