Ebben az oktatóanyagban megismerheti a különböző megközelítéseket, amelyeket egyetlen probléma megoldására használhat a függvények használatával.
Az érvek jobb megértése és a függvényekben való visszatérés érdekében a felhasználó által definiált függvények a következőkre kategorizálhatók:
- Funkció argumentum és visszatérési érték nélkül
- Funkció argumentum nélkül, de visszatérési érték
- Funkció argumentummal, de nincs visszatérési érték
- Funkció argumentummal és visszatérési értékkel
Vegyünk egy helyzetet, amelyben ellenőrizni kell a prímszámot. Ezt a problémát az alábbiakban úgy oldjuk meg, hogy a felhasználó által definiált funkciót 4 különböző módon végezzük, amint azt fentebb említettük.
1. példa: Nincs argumentum és nincs visszatérési érték
# include using namespace std; void prime(); int main() ( // No argument is passed to prime() prime(); return 0; ) // Return type of function is void because value is not returned. void prime() ( int num, i, flag = 0; cout <> num; for(i = 2; i <= num/2; ++i) ( if(num % i == 0) ( flag = 1; break; ) ) if (flag == 1) ( cout << num << " is not a prime number."; ) else ( cout << num << " is a prime number."; ) )
A fenti programban prime()
a main () alól hívják meg, argumentum nélkül.
prime()
elveszi a felhasználótól a pozitív számot és ellenőrzi, hogy a szám prímszám-e vagy sem.
Mivel visszatérési típus prime()
IS void
, nem értéket ad vissza a függvény.
2. példa: Nincs argumentum, de visszatérési érték
#include using namespace std; int prime(); int main() ( int num, i, flag = 0; // No argument is passed to prime() num = prime(); for (i = 2; i <= num/2; ++i) ( if (num%i == 0) ( flag = 1; break; ) ) if (flag == 1) ( cout< n; return n; )
A fenti programban a prime()
függvényt az main()
argumentum nélküli argumentumokból hívják meg .
prime()
pozitív egész számot vesz fel a felhasználótól. Mivel a függvény visszatérési típusa egy int
, a bevitt számot a felhasználótól visszaküldi a hívó main()
funkcióhoz.
Ezután azt, hogy a szám prím-e vagy sem, a main () -ban ellenőrzi, és kinyomtatja a képernyőre.
3. példa: Érvek átadva, de nincs visszatérési érték
#include using namespace std; void prime(int n); int main() ( int num; cout <> num; // Argument num is passed to the function prime() prime(num); return 0; ) // There is no return value to calling function. Hence, return type of function is void. */ void prime(int n) ( int i, flag = 0; for (i = 2; i <= n/2; ++i) ( if (n%i == 0) ( flag = 1; break; ) ) if (flag == 1) ( cout << n << " is not a prime number."; ) else ( cout << n << " is a prime number."; ) )
A fenti programban először pozitív számot kérünk a felhasználótól, amelyet a num változó tárol.
Ezután a szám átadódik a prime()
függvénynek, ahol ellenőrizzük és kinyomtatjuk, hogy a szám elsődleges-e vagy sem.
Mivel a visszatérési típusa prime()
a void
, a függvény nem ad vissza értéket.
4. példa: Megadott argumentumok és visszatérési érték.
#include using namespace std; int prime(int n); int main() ( int num, flag = 0; cout <> num; // Argument num is passed to check() function flag = prime(num); if(flag == 1) cout << num << " is not a prime number."; else cout<< num << " is a prime number."; return 0; ) /* This function returns integer value. */ int prime(int n) ( int i; for(i = 2; i <= n/2; ++i) ( if(n % i == 0) return 1; ) return 0; )
A fenti programban pozitív egész számot kérnek a felhasználótól, és eltárolják a változóban num
.
Ezután num
átkerül a függvényhez, prime()
ahol be van jelölve, hogy a szám elsődleges-e vagy sem.
Mivel a visszatérési típusa prime()
egy int
, 1 vagy 0 tér vissza a main()
hívó függvényhez. Ha a szám prímszám, 1-et adunk vissza. Ha nem, akkor a 0 visszatér.
Visszatérve a main()
függvénybe, a visszaküldött 1 vagy 0 a változó jelzőben tárolódik, és a megfelelő szöveget kinyomtatja a képernyőre.
Melyik módszer a jobb?
Mind a fenti négy program ugyanazt a kimenetet adja, és mindegyik műszakilag helyes.
Nincs kemény és gyors szabály arra vonatkozóan, hogy melyik módszert kell választani.
Az adott módszert a helyzettől és a probléma megoldásától függően választják meg.