Tipi di funzioni definite dall'utente in C ++

In questo tutorial imparerai a conoscere i diversi approcci che puoi adottare per risolvere un singolo problema utilizzando le funzioni.

Per una migliore comprensione degli argomenti e il ritorno nelle funzioni, le funzioni definite dall'utente possono essere classificate come:

  • Funzione senza argomenti e senza valore di ritorno
  • Funzione senza argomenti ma valore di ritorno
  • Funzione con argomento ma nessun valore di ritorno
  • Funzione con argomento e valore di ritorno

Considera una situazione in cui devi controllare il numero primo. Questo problema viene risolto di seguito rendendo la funzione definita dall'utente in 4 modi diversi come menzionato sopra.

Esempio 1: nessun argomento passato e nessun valore restituito

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

Nel programma precedente, prime()viene chiamato da main () senza argomenti.

prime() prende il numero positivo dall'utente e controlla se il numero è un numero primo o meno.

Poiché, il tipo restituito di prime()è void, non viene restituito alcun valore dalla funzione.

Esempio 2: nessun argomento passato ma un valore restituito

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

Nel programma precedente, la prime()funzione viene chiamata da main()senza argomenti.

prime()prende un numero intero positivo dall'utente. Poiché il tipo di ritorno della funzione è an int, restituisce il numero immesso dall'utente alla main()funzione chiamante .

Quindi, se il numero è primo o meno viene controllato nella stessa main () e stampato sullo schermo.

Esempio 3: argomenti passati ma nessun valore restituito

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

Nel programma di cui sopra, viene prima chiesto all'utente un numero positivo che viene memorizzato nella variabile num.

Quindi, num viene passato alla prime()funzione in cui, se il numero è primo o meno, viene controllato e stampato.

Poiché il tipo restituito di prime()è a void, non viene restituito alcun valore dalla funzione.

Esempio 4: argomenti passati e un valore restituito.

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

Nel programma sopra, viene richiesto all'utente un numero intero positivo e memorizzato nella variabile num.

Quindi, numviene passato alla funzione in prime()cui viene verificato se il numero è primo o meno.

Poiché il tipo restituito di prime()è un int, 1 o 0 viene restituito alla main()funzione chiamante. Se il numero è un numero primo, viene restituito 1. In caso contrario, viene restituito 0.

Di nuovo nella main()funzione, l'1 o lo 0 restituito viene memorizzato nel flag della variabile e il testo corrispondente viene stampato sullo schermo.

Quale metodo è migliore?

Tutti e quattro i programmi sopra danno lo stesso risultato e tutti sono programmi tecnicamente corretti.

Non esiste una regola rigida e veloce su quale metodo scegliere.

Il metodo particolare viene scelto in base alla situazione e al modo in cui si desidera risolvere un problema.

Articoli interessanti...