Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Langue C

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

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 <stdio.h>

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

Le checkPrimeNumber() La 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 checkPrimeNumber(); déclaration à l'intérieur du main() fonction indique 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 <stdio.h>
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 le n = getInteger(); indique qu'aucun argument n'est passé à la fonction. Et, la valeur renvoyée par la fonction est affectée à n .

Ici, le getInteger() La 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 du main() fonction.

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

#include <stdio.h>
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 passée au checkPrimeAndDisplay() fonction.

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

Exemple 4 :Argument passé et une valeur de retour

#include <stdio.h>
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 au checkPrimeNumber() fonction.

Le checkPrimeNumber() la 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 passé est un nombre non premier, la fonction renvoie 1. La valeur de retour est affectée au flag variables.

Selon si flag est 0 ou 1, un message approprié est imprimé à partir du main() fonction.

Quelle est la meilleure approche ?

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 de la fonction (exemple 4).

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


Langue C

  1. Espaces de noms dans la programmation C#
  2. Types de données C
  3. Opérateurs de programmation C
  4. C Fonctions de la bibliothèque standard
  5. Variables et types C++ :int, double, char, string, bool
  6. Pointeurs en C :Qu'est-ce qu'un pointeur en programmation C ? Les types
  7. C Tutoriel
  8. C - Types de données
  9. C-Fonctions