Tipi di funzioni definite dall'utente nella programmazione C.

In questo tutorial imparerai a conoscere i diversi approcci che puoi adottare per risolvere lo stesso problema usando le funzioni.

Questi 4 programmi sottostanti controllano se il numero intero inserito dall'utente è un numero primo o meno.

L'output di tutti questi programmi di seguito è lo stesso e abbiamo creato una funzione definita dall'utente in ogni esempio. Tuttavia, l'approccio che abbiamo adottato in ogni esempio è diverso.

Esempio 1: nessun argomento passato e nessun valore restituito

 #include void checkPrimeNumber(); int main() ( checkPrimeNumber(); // argument is not passed return 0; ) // return type is void meaning doesn't return any value void checkPrimeNumber() ( int n, i, flag = 0; printf("Enter a positive integer: "); scanf("%d",&n); for(i=2; i <= n/2; ++i) ( if(n%i == 0) ( flag = 1; ) ) if (flag == 1) printf("%d is not a prime number.", n); else printf("%d is a prime number.", n); ) 

La checkPrimeNumber()funzione riceve input dall'utente, controlla se si tratta di un numero primo o meno e lo visualizza sullo schermo.

Le parentesi vuote nell'istruzione checkPrimeNumber();all'interno della main()funzione indicano che nessun argomento viene passato alla funzione.

Il tipo restituito dalla funzione è void. Quindi, nessun valore viene restituito dalla funzione.

Esempio 2: nessun argomento passato ma un valore restituito

 #include int getInteger(); int main() ( int n, i, flag = 0; // no argument is passed n = getInteger(); for(i=2; i<=n/2; ++i) ( if(n%i==0)( flag = 1; break; ) ) if (flag == 1) printf("%d is not a prime number.", n); else printf("%d is a prime number.", n); return 0; ) // returns integer entered by the user int getInteger() ( int n; printf("Enter a positive integer: "); scanf("%d",&n); return n; ) 

Le parentesi vuote nell'istruzione n = getInteger();indicano che nessun argomento viene passato alla funzione. E il valore restituito dalla funzione è assegnato a n.

Qui, la getInteger()funzione prende l'input dall'utente e lo restituisce. Il codice per verificare se un numero è primo o meno è all'interno della main()funzione.

Esempio 3: argomento passato ma nessun valore restituito

 #include void checkPrimeAndDisplay(int n); int main() ( int n; printf("Enter a positive integer: "); scanf("%d",&n); // n is passed to the function checkPrimeAndDisplay(n); return 0; ) // return type is void meaning doesn't return any value void checkPrimeAndDisplay(int n) ( int i, flag = 0; for(i=2; i <= n/2; ++i) ( if(n%i == 0)( flag = 1; break; ) ) if(flag == 1) printf("%d is not a prime number.",n); else printf("%d is a prime number.", n); ) 

Il valore intero immesso dall'utente viene passato alla checkPrimeAndDisplay()funzione.

Qui, la checkPrimeAndDisplay()funzione controlla se l'argomento passato è un numero primo o meno e visualizza il messaggio appropriato.

Esempio 4: argomento passato e valore restituito

 #include int checkPrimeNumber(int n); int main() ( int n, flag; printf("Enter a positive integer: "); scanf("%d",&n); // n is passed to the checkPrimeNumber() function // the returned value is assigned to the flag variable flag = checkPrimeNumber(n); if(flag == 1) printf("%d is not a prime number",n); else printf("%d is a prime number",n); return 0; ) // int is returned from the function int checkPrimeNumber(int n) ( int i; for(i=2; i <= n/2; ++i) ( if(n%i == 0) return 1; ) return 0; ) 

L'input dell'utente viene passato alla checkPrimeNumber()funzione.

La checkPrimeNumber()funzione controlla se l'argomento passato è primo o meno.

Se l'argomento passato è un numero primo, la funzione restituisce 0. Se l'argomento passato è un numero non primo, la funzione restituisce 1. Il valore restituito viene assegnato alla variabile flag.

A seconda che il flag sia 0 o 1, viene stampato un messaggio appropriato dalla main()funzione.

Quale approccio è migliore?

Bene, dipende dal problema che stai cercando di risolvere. In questo caso, è meglio passare un argomento e restituire un valore dalla funzione (esempio 4).

Una funzione dovrebbe eseguire un'attività specifica. La checkPrimeNumber()funzione non riceve input dall'utente né visualizza il messaggio appropriato. Controlla solo se un numero è primo o meno.

Articoli interessanti...