Kasutaja määratud funktsioonide tüübid C-programmeerimisel

Selles õpetuses saate teada erinevatest lähenemisviisidest, mida saate funktsioonide abil sama probleemi lahendamiseks kasutada.

Need neli allpool olevat programmi kontrollivad, kas kasutaja sisestatud täisarv on algarv või mitte.

Kõigi nende allpool toodud programmide väljund on sama ja igas näites oleme loonud kasutaja määratletud funktsiooni. Kuid lähenemine, mille oleme igas näites kasutanud, on erinev.

Näide 1: ühtegi argumenti pole edastatud ja tagastusväärtust pole

 #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()Funktsioon võtab kasutajalt, kontrollib, kas see on algarv või mitte ja näitab seda ekraanil.

Funktsiooni checkPrimeNumber();sees oleva lause tühjad sulgud main()näitavad, et funktsioonile ei edastata ühtegi argumenti.

Funktsiooni tagastustüüp on void. Seega ei tagastata funktsioonilt väärtust.

Näide 2: ühtegi argumenti pole edastatud, kuid tagastusväärtus

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

Avalduse tühjad sulgud n = getInteger();näitavad, et funktsioonile ei edastata ühtegi argumenti. Ja funktsioonilt tagastatud väärtus määratakse n-le.

Siin getInteger()võtab funktsioon kasutajalt sisendi ja tagastab selle. Kood, mis kontrollib, kas number on algarv või mitte, on main()funktsiooni sees .

Näide 3: argument on edastatud, kuid tagastusväärtust pole

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

Kasutaja sisestatud täisarv väärtus edastatakse checkPrimeAndDisplay()funktsioonile.

Siin checkPrimeAndDisplay()kontrollib funktsioon, kas edastatud argument on algarv või mitte, ja kuvab sobiva teate.

Näide 4: edastatud argument ja tagastusväärtus

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

Kasutaja sisend edastatakse checkPrimeNumber()funktsioonile.

checkPrimeNumber()Funktsioon kontrollib, kas möödunud argument on prime või mitte.

Kui edastatud argument on algarv, tagastab funktsioon 0. Kui edastatud argument on mitte algarv, tagastab funktsioon 1. Tagastusväärtus määratakse lipumuutujale.

Sõltuvalt sellest, kas lipp on 0 või 1, prinditakse main()funktsioonist sobiv teade .

Milline lähenemine on parem?

Noh, see sõltub probleemist, mida proovite lahendada. Sel juhul on argumendi edastamine ja funktsiooni väärtuse tagastamine (näide 4) parem.

Funktsioon peaks täitma konkreetse ülesande. checkPrimeNumber()Funktsioon ei võta kasutajalt ega see näitab vastav teade. See kontrollib ainult seda, kas number on algarv või mitte.

Huvitavad Artiklid...