Tipuri de funcții definite de utilizator în programarea C.

În acest tutorial, veți afla despre diferite abordări pe care le puteți lua pentru a rezolva aceeași problemă folosind funcțiile.

Aceste 4 programe de mai jos verifică dacă numărul întreg introdus de utilizator este sau nu un număr prim.

Rezultatul tuturor acestor programe de mai jos este același și am creat o funcție definită de utilizator în fiecare exemplu. Cu toate acestea, abordarea pe care am adoptat-o ​​în fiecare exemplu este diferită.

Exemplul 1: nu s-au trecut argumente și nu există valoare de returnare

 #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()Funcția ia de intrare de la utilizator, verifică dacă acesta este un număr prim sau nu și o afișează pe ecran.

Parantezele goale din checkPrimeNumber();instrucțiunea din interiorul main()funcției indică faptul că niciun argument nu este transmis funcției.

Tipul returnat al funcției este void. Prin urmare, nu se returnează nicio valoare din funcție.

Exemplul 2: nu s-au trecut argumente, ci o valoare returnată

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

Parantezele goale din n = getInteger();declarație indică faptul că niciun argument nu este transmis funcției. Și, valoarea returnată din funcție este atribuită lui n.

Aici, getInteger()funcția preia intrarea de la utilizator și o returnează. Codul pentru a verifica dacă un număr este sau nu prim se află în interiorul main()funcției.

Exemplul 3: argumentul a trecut, dar nu există valoare de returnare

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

Valoarea întreagă introdusă de utilizator este transmisă checkPrimeAndDisplay()funcției.

Aici, checkPrimeAndDisplay()funcția verifică dacă argumentul trecut este sau nu un număr prim și afișează mesajul corespunzător.

Exemplul 4: argumentul a fost transmis și o valoare returnată

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

Intrarea de la utilizator este transmisă checkPrimeNumber()funcției.

Cele mai checkPrimeNumber()verifică dacă funcția argumentul trecut este prim sau nu.

Dacă argumentul trecut este un număr prim, funcția returnează 0. Dacă argumentul trecut este un număr non-prim, funcția returnează 1. Valoarea returnată este atribuită variabilei flag.

În funcție de steagul 0 sau 1, din funcție este tipărit un mesaj adecvat main().

Care abordare este mai bună?

Ei bine, depinde de problema pe care încercați să o rezolvați. În acest caz, este mai bine să treci argumentul și să returnezi o valoare din funcție (exemplul 4).

O funcție ar trebui să îndeplinească o sarcină specifică. checkPrimeNumber()Funcția nu ia de intrare de la utilizator și nici nu se afișează mesajul corespunzător. Se verifică doar dacă un număr este sau nu prim.

Articole interesante...