U ovom vodiču naučit ćete o različitim pristupima kojima možete riješiti jedan problem pomoću funkcija.
Za bolje razumijevanje argumenata i povrat u funkcijama, korisnički definirane funkcije mogu se kategorizirati kao:
- Funkcija bez argumenta i bez povratne vrijednosti
- Funkcija bez argumenta, ali povratne vrijednosti
- Funkcija s argumentom, ali nema povratnu vrijednost
- Funkcija s argumentom i povratnom vrijednošću
Razmotrimo situaciju u kojoj morate provjeriti prost broj. Ovaj se problem u nastavku rješava izradom korisnički definirane funkcije na 4 različita načina kako je gore spomenuto.
Primjer 1: Nema proslijeđenih argumenata i nema povratne vrijednosti
# 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."; ) )
U gornjem programu, prime()
poziva se iz main () bez argumenata.
prime()
uzima pozitivni broj od korisnika i provjerava je li broj prost broj ili nije.
Budući da je vrsta povrata prime()
is void
, funkcija se ne vraća.
Primjer 2: Nisu proslijeđeni argumenti, već povratna vrijednost
#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; )
U gornjem programu prime()
funkcija se poziva iz main()
argumenta bez argumenata.
prime()
uzima pozitivan cijeli broj od korisnika. Budući da je povratni tip funkcije an int
, on vraća uneseni broj od korisnika natrag pozivajućoj main()
funkciji.
Zatim se provjerava je li broj prost ili nije u glavnom () i ispisuje se na zaslon.
Primjer 3: Argumenti proslijeđeni, ali nemaju povratnu vrijednost
#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."; ) )
U gore navedenom programu od korisnika se prvo traži pozitivan broj koji je pohranjen u varijablu num.
Zatim se num prenosi prime()
funkciji gdje se provjerava i ispisuje bez obzira je li broj prost ili nije.
Budući da je vrsta povrata prime()
a void
, funkcija se ne vraća.
Primjer 4: Prošli argumenti i povratna vrijednost.
#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; )
U gore navedenom programu od korisnika se traži pozitivan cijeli broj koji se pohranjuje u varijablu num
.
Zatim num
se prosljeđuje funkciji u prime()
kojoj se provjerava je li broj prost ili nije.
Budući da je vrsta povrata prime()
an int
, 1 ili 0 vraća se main()
pozivajućoj funkciji. Ako je broj prost broj, vraća se 1. Ako nije, vraća se 0.
Povratak u main()
funkciju, vraćeni 1 ili 0 pohranjuju se u zastavicu varijable, a odgovarajući tekst ispisuje se na zaslon.
Koja je metoda bolja?
Sva gore navedena četiri programa daju iste rezultate i svi su tehnički ispravni programi.
Ne postoji čvrsto i brzo pravilo o odabiru metode.
Određena metoda odabire se ovisno o situaciji i načinu na koji želite riješiti problem.