Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Linguagem C

Tipos de funções definidas pelo usuário na programação C

Tipos de funções definidas pelo usuário na programação C


Neste tutorial, você aprenderá sobre as diferentes abordagens que você pode adotar para resolver o mesmo problema usando funções.

Esses 4 programas abaixo verificam se o inteiro digitado pelo usuário é um número primo ou não.

A saída de todos esses programas abaixo é a mesma, e criamos uma função definida pelo usuário em cada exemplo. No entanto, a abordagem que adotamos em cada exemplo é diferente.

Exemplo 1:Nenhum argumento passado e nenhum valor de retorno

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

O checkPrimeNumber() A função recebe a entrada do usuário, verifica se é um número primo ou não e o exibe na tela.

Os parênteses vazios em checkPrimeNumber(); declaração dentro do main() função indica que nenhum argumento é passado para a função.

O tipo de retorno da função é void . Portanto, nenhum valor é retornado da função.

Exemplo 2:Nenhum argumento passado, mas um valor de retorno

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

Os parênteses vazios no n = getInteger(); indica que nenhum argumento é passado para a função. E, o valor retornado da função é atribuído a n .



Aqui, o getInteger() A função recebe a entrada do usuário e a retorna. O código para verificar se um número é primo ou não está dentro do main() função.

Exemplo 3:Argumento passado, mas sem valor de retorno

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

O valor inteiro inserido pelo usuário é passado para o checkPrimeAndDisplay() função.

Aqui, o checkPrimeAndDisplay() A função verifica se o argumento passado é um número primo ou não e exibe a mensagem apropriada.

Exemplo 4:Argumento passado e um valor de retorno

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

A entrada do usuário é passada para o checkPrimeNumber() função.

O checkPrimeNumber() A função verifica se o argumento passado é primo ou não.

Se o argumento passado for um número primo, a função retornará 0. Se o argumento passado for um número não primo, a função retornará 1. O valor de retorno é atribuído ao flag variável.

Dependendo se sinalizar for 0 ou 1, uma mensagem apropriada será impressa do main() função.

Qual ​​abordagem é melhor?


Bem, isso depende do problema que você está tentando resolver. Nesse caso, passar argumento e retornar um valor da função (exemplo 4) é melhor.

Uma função deve executar uma tarefa específica. O checkPrimeNumber() A função não recebe entrada do usuário nem exibe a mensagem apropriada. Ele apenas verifica se um número é primo ou não.

Linguagem C

  1. Namespaces na programação C#
  2. Tipos de dados C
  3. Operadores de programação C
  4. C Funções da Biblioteca Padrão
  5. Variáveis ​​e tipos C++:int, double, char, string, bool
  6. Ponteiros em C:O que é ponteiro em programação C? Tipos
  7. C Tutorial
  8. C - Tipos de dados
  9. C - Funções
  10. C - Argumentos Variáveis