W tym samouczku poznasz różne podejścia, które możesz zastosować, aby rozwiązać pojedynczy problem za pomocą funkcji.
Aby lepiej zrozumieć argumenty i zwracać w funkcjach, funkcje zdefiniowane przez użytkownika można podzielić na następujące kategorie:
- Funkcja bez argumentu i bez wartości zwracanej
- Funkcja bez argumentu, ale zwraca wartość
- Funkcja z argumentem, ale bez wartości zwracanej
- Funkcja z argumentem i wartością zwracaną
Rozważ sytuację, w której musisz sprawdzić liczbę pierwszą. Ten problem został rozwiązany poniżej, tworząc funkcję zdefiniowaną przez użytkownika na 4 różne sposoby, jak wspomniano powyżej.
Przykład 1: nie przekazano żadnych argumentów i nie zwrócono wartości
# 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."; ) )
W powyższym programie prime()
wywoływana jest z metody main () bez argumentów.
prime()
pobiera liczbę dodatnią od użytkownika i sprawdza, czy jest to liczba pierwsza, czy nie.
Ponieważ zwracany typ prime()
to to void
, funkcja nie zwraca żadnej wartości.
Przykład 2: nie przekazano żadnych argumentów, ale wartość zwracana
#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; )
W powyższym programie prime()
funkcja jest wywoływana main()
z bez argumentów.
prime()
pobiera dodatnią liczbę całkowitą od użytkownika. Ponieważ typem zwracanym funkcji jest an int
, zwraca ona wprowadzoną liczbę od użytkownika z powrotem do main()
funkcji wywołującej .
Następnie to, czy liczba jest pierwsza, czy nie, jest sprawdzane w samej funkcji main () i drukowane na ekranie.
Przykład 3: argumenty przekazane, ale brak wartości zwracanej
#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."; ) )
W powyższym programie użytkownik najpierw pyta o liczbę dodatnią, która jest przechowywana w zmiennej num.
Następnie liczba jest przekazywana do prime()
funkcji, w której sprawdzane i drukowane jest to, czy liczba jest liczbą pierwszą, czy nie.
Ponieważ zwracanym typem prime()
jest a void
, funkcja nie zwraca żadnej wartości.
Przykład 4: Przekazane argumenty i wartość zwracana.
#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; )
W powyższym programie użytkownik żąda dodatniej liczby całkowitej i zapisuje ją w zmiennej num
.
Następnie num
jest przekazywany do funkcji, w prime()
której sprawdzane jest, czy liczba jest liczbą pierwszą, czy nie.
Ponieważ zwracanym typem prime()
jest an int
, do main()
funkcji wywołującej zwracane jest 1 lub 0 . Jeśli liczba jest liczbą pierwszą, zwracana jest 1. Jeśli nie, zwracane jest 0.
W main()
funkcji zwrócone 1 lub 0 jest przechowywane we fladze zmiennej, a odpowiedni tekst jest drukowany na ekranie.
Która metoda jest lepsza?
Wszystkie cztery programy powyżej dają te same wyniki i wszystkie są technicznie poprawnymi programami.
Nie ma sztywnej zasady, która metoda powinna zostać wybrana.
Konkretną metodę wybiera się w zależności od sytuacji i sposobu rozwiązania problemu.