V tomto výučbe sa dozviete o rôznych prístupoch, ktoré môžete podniknúť pri riešení jedného problému pomocou funkcií.
Pre lepšie pochopenie argumentov a návratnosť funkcií je možné funkcie definované používateľom kategorizovať ako:
- Funkcia bez argumentov a bez návratovej hodnoty
- Funkcia bez argumentu, iba s návratovou hodnotou
- Funkcia s argumentom, ale bez návratovej hodnoty
- Funkcia s argumentom a návratovou hodnotou
Zvážte situáciu, v ktorej musíte skontrolovať prvočíslo. Tento problém je vyriešený nižšie vytvorením používateľom definovanej funkcie 4 rôznymi spôsobmi, ako je uvedené vyššie.
Príklad 1: Neprešli žiadne argumenty a žiadna návratová hodnota
# 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."; ) )
Vo vyššie uvedenom programe prime()
sa volá z main () bez argumentov.
prime()
zoberie kladné číslo od používateľa a skontroluje, či je to prvočíslo alebo nie.
Pretože návratový typ prime()
is void
, z funkcie sa nevráti žiadna hodnota.
Príklad 2: Neprešli žiadne argumenty, ale návratová hodnota
#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; )
Vo vyššie uvedenom programe sa prime()
funkcia volá z main()
adresy bez argumentov.
prime()
berie od používateľa kladné celé číslo. Pretože návratový typ funkcie je int
, vráti zadané číslo od používateľa späť do volajúcej main()
funkcie.
Potom sa skontroluje, či je číslo prvočíslo alebo nie, v hlavnej časti () a vytlačí sa na obrazovku.
Príklad 3: Argumenty prešli, ale žiadna návratová hodnota
#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."; ) )
Vo vyššie uvedenom programe je kladné číslo najskôr vyžiadané od používateľa, ktorý je uložený v premennej num.
Potom sa num odovzdá prime()
funkcii, kde sa skontroluje a vytlačí, či je číslo prvočíslo alebo nie.
Pretože návratový typ prime()
je a void
, z funkcie sa nevráti žiadna hodnota.
Príklad 4: Argumenty prešli a návratová hodnota.
#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; )
Vo vyššie uvedenom programe je od používateľa požadované kladné celé číslo a je uložené v premennej num
.
Potom num
sa odovzdá funkcii, prime()
kde sa skontroluje, či je číslo prvočíslo alebo nie.
Pretože návratový typ prime()
je int
, je 1 alebo 0 vrátená main()
volajúcej funkcii. Ak je číslo prvočíslo, vráti sa 1. Ak nie, vráti sa 0.
Späť vo main()
funkcii sa vrátená 1 alebo 0 uloží do príznaku premennej a zodpovedajúci text sa vytlačí na obrazovku.
Ktorá metóda je lepšia?
Všetky štyri vyššie uvedené programy poskytujú rovnaký výstup a všetky sú technicky správny program.
Neexistuje tvrdé a rýchle pravidlo, ktorá metóda by sa mala zvoliť.
Konkrétna metóda sa vyberá v závislosti od situácie a spôsobu riešenia problému.