A felhasználó által definiált funkciók típusai a C programozásban

Ebben az oktatóanyagban megismerheti a különböző megközelítéseket, amelyek segítségével ugyanaz a probléma megoldható függvények segítségével.

Ez az alábbi 4 program ellenőrzi, hogy a felhasználó által megadott egész szám prímszám-e vagy sem.

Az alábbiakban felsorolt ​​programok kimenete megegyezik, és mindegyik példában létrehoztunk egy felhasználó által definiált függvényt. Azonban az egyes példákban alkalmazott megközelítés eltérő.

1. példa: Nincs argumentum és nincs visszatérési érték

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

A checkPrimeNumber()funkció beveszi a felhasználót, ellenőrzi, hogy ez prímszám-e vagy sem, és megjeleníti a képernyőn.

A függvényen checkPrimeNumber();belüli utasításban lévő üres zárójel main()azt jelzi, hogy a függvénynek nem adunk át argumentumot.

A visszatérési típus a funkció void. Ezért a függvény nem ad vissza értéket.

2. példa: Nincs argumentum, de visszatérési érték

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

Az n = getInteger();utasításban lévő üres zárójel azt jelzi, hogy egyetlen argumentum sem kerül átadásra a függvénynek. És a függvényből kapott értéket n-hez rendeljük.

Itt a getInteger()függvény beviszi a felhasználót és visszaadja. A main()függvényen belül van az a kód, amely ellenőrzi, hogy egy szám prím-e vagy sem .

3. példa: Argumentum átadva, de nincs visszatérési érték

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

A felhasználó által megadott egész értéket átadjuk a checkPrimeAndDisplay()függvénynek.

Itt a checkPrimeAndDisplay()függvény ellenőrzi, hogy az átadott argumentum prím-e vagy sem, és megjeleníti a megfelelő üzenetet.

4. példa: Átadott argumentum és visszatérési érték

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

A felhasználótól származó bevitel átkerül a checkPrimeNumber()függvényhez.

A checkPrimeNumber()függvény ellenőrzi, hogy az átadott argumentum elsődleges-e vagy sem.

Ha az átadott argumentum prímszám, akkor a függvény 0. értéket ad vissza. Ha az átadott argumentum nem prímszám, akkor a függvény 1. értéket ad vissza. A visszatérési értéket a flag változóhoz rendeljük.

Attól függően, hogy a jelző értéke 0 vagy 1, megfelelő üzenetet nyomtat a main()funkció.

Melyik megközelítés a jobb?

Nos, ez attól a problémától függ, amelyet megpróbál megoldani. Ebben az esetben jobb az argumentum átadása és az érték visszaadása a függvényből (4. példa).

A függvénynek egy meghatározott feladatot kell végrehajtania. A checkPrimeNumber()funkció nem veszi be a felhasználótól a felhasználót, és nem jeleníti meg a megfelelő üzenetet. Csak azt ellenőrzi, hogy egy szám prím-e vagy sem.

érdekes cikkek...