Typy užívateľom definovaných funkcií v programovaní C.

V tejto príručke sa dozviete o rôznych prístupoch, ktoré môžete podniknúť pri riešení rovnakého problému pomocou funkcií.

Tieto 4 programy nižšie kontrolujú, či je celé číslo zadané používateľom prvočíslo alebo nie.

Výstup všetkých týchto nižšie uvedených programov je rovnaký a v každom príklade sme vytvorili užívateľsky definovanú funkciu. Prístup, ktorý sme zvolili v každom príklade, je však iný.

Príklad 1: Neprešli žiadne argumenty a žiadna návratová hodnota

 #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()Funkcia má vstup od užívateľa, skontroluje, či je to prvočíslo alebo nie, a zobrazí na obrazovke.

Prázdne zátvorky vo checkPrimeNumber();vyhlásení vo vnútri main()funkcie naznačujú, že funkcii nie je odovzdaný žiadny argument.

Návratový typ funkcie je void. Z funkcie teda nie je vrátená žiadna hodnota.

Príklad 2: Neprešli žiadne argumenty, ale návratová hodnota

 #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; ) 

Prázdne zátvorky vo n = getInteger();vyhlásení naznačujú, že funkcii nie je odovzdaný žiadny argument. A hodnota vrátená z funkcie je priradená k n.

Tu getInteger()funkcia prevezme vstup od používateľa a vráti ho. Kód na kontrolu, či je číslo prvočíslo alebo nie, je vo vnútri main()funkcie.

Príklad 3: Argument prešiel, ale žiadna návratová hodnota

 #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); ) 

Celočíselná hodnota zadaná používateľom sa odovzdá checkPrimeAndDisplay()funkcii.

Tu checkPrimeAndDisplay()funkcia skontroluje, či je zadaný argument prvočíslo alebo nie, a zobrazí príslušnú správu.

Príklad 4: Argument prešiel a návratová hodnota

 #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; ) 

Vstup od používateľa sa odovzdá checkPrimeNumber()funkcii.

Tieto checkPrimeNumber()funkcie kontroluje, či je odovzdaný argument je prvočíslo alebo nie.

Ak je zadaným argumentom prvočíslo, funkcia vráti 0. Ak je zadaný argument iné ako prvočíslo, funkcia vráti 1. Návratová hodnota je priradená k premennej príznaku.

Podľa toho, či je príznak 0 alebo 1, sa z main()funkcie vytlačí príslušná správa .

Ktorý prístup je lepší?

Závisí to od problému, ktorý sa snažíte vyriešiť. V takom prípade je lepšie odovzdať argument a vrátiť hodnotu z funkcie (príklad 4).

Funkcia by mala vykonávať konkrétnu úlohu. checkPrimeNumber()Funkcia neberie vstup od užívateľa, ani sa zobrazí príslušná správa. Kontroluje sa iba to, či je číslo prvočíslo alebo nie.

Zaujímavé články...