Types de fonctions définies par l'utilisateur dans la programmation C

Dans ce didacticiel, vous découvrirez différentes approches que vous pouvez adopter pour résoudre le même problème à l'aide de fonctions.

Ces 4 programmes ci-dessous vérifient si l'entier saisi par l'utilisateur est un nombre premier ou non.

La sortie de tous ces programmes ci-dessous est la même, et nous avons créé une fonction définie par l'utilisateur dans chaque exemple. Cependant, l'approche que nous avons adoptée dans chaque exemple est différente.

Exemple 1: aucun argument passé et aucune valeur de retour

 #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()fonction prend l'entrée de l'utilisateur, vérifie s'il s'agit d'un nombre premier ou non et l'affiche à l'écran.

Les parenthèses vides dans l' checkPrimeNumber();instruction à l'intérieur de la main()fonction indiquent qu'aucun argument n'est passé à la fonction.

Le type de retour de la fonction est void. Par conséquent, aucune valeur n'est renvoyée par la fonction.

Exemple 2: aucun argument passé mais une valeur de retour

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

Les parenthèses vides dans l' n = getInteger();instruction indiquent qu'aucun argument n'est passé à la fonction. Et, la valeur renvoyée par la fonction est affectée à n.

Ici, la getInteger()fonction prend l'entrée de l'utilisateur et la renvoie. Le code pour vérifier si un nombre est premier ou non est à l'intérieur de la main()fonction.

Exemple 3: Argument passé mais pas de valeur de retour

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

La valeur entière saisie par l'utilisateur est transmise à la checkPrimeAndDisplay()fonction.

Ici, la checkPrimeAndDisplay()fonction vérifie si l'argument passé est un nombre premier ou non et affiche le message approprié.

Exemple 4: Argument passé et valeur de retour

 #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'entrée de l'utilisateur est transmise à la checkPrimeNumber()fonction.

La checkPrimeNumber()fonction vérifie si l'argument passé est premier ou non.

Si l'argument passé est un nombre premier, la fonction renvoie 0. Si l'argument transmis est un nombre non premier, la fonction renvoie 1. La valeur de retour est affectée à la variable indicateur.

Selon que l'indicateur est 0 ou 1, un message approprié est imprimé à partir de la main()fonction.

Quelle approche est la meilleure?

Eh bien, cela dépend du problème que vous essayez de résoudre. Dans ce cas, il est préférable de passer un argument et de renvoyer une valeur à partir de la fonction (exemple 4).

Une fonction doit effectuer une tâche spécifique. La checkPrimeNumber()fonction ne prend pas d'entrée de l'utilisateur et n'affiche pas le message approprié. Il vérifie uniquement si un nombre est premier ou non.

Articles intéressants...