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