Tipos de funções definidas pelo usuário em C ++

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

Para melhor compreensão dos argumentos e retorno nas funções, as funções definidas pelo usuário podem ser categorizadas como:

  • Função sem argumento e sem valor de retorno
  • Função sem argumento, mas valor de retorno
  • Função com argumento, mas sem valor de retorno
  • Função com argumento e valor de retorno

Considere uma situação em que você deve verificar o número primo. Este problema é resolvido a seguir, tornando a função definida pelo usuário de 4 maneiras diferentes, conforme mencionado acima.

Exemplo 1: nenhum argumento passado e nenhum valor de retorno

 # include using namespace std; void prime(); int main() ( // No argument is passed to prime() prime(); return 0; ) // Return type of function is void because value is not returned. void prime() ( int num, i, flag = 0; cout <> num; for(i = 2; i <= num/2; ++i) ( if(num % i == 0) ( flag = 1; break; ) ) if (flag == 1) ( cout << num << " is not a prime number."; ) else ( cout << num << " is a prime number."; ) ) 

No programa acima, prime()é chamado de main () sem argumentos.

prime() pega o número positivo do usuário e verifica se o número é um número primo ou não.

Como o tipo de retorno prime()é void, nenhum valor é retornado da função.

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

 #include using namespace std; int prime(); int main() ( int num, i, flag = 0; // No argument is passed to prime() num = prime(); for (i = 2; i <= num/2; ++i) ( if (num%i == 0) ( flag = 1; break; ) ) if (flag == 1) ( cout<  n; return n; ) 

No programa acima, a prime()função é chamada a partir do main()sem argumentos.

prime()pega um número inteiro positivo do usuário. Como o tipo de retorno da função é um int, ele retorna o número inserido do usuário de volta à main()função de chamada .

Então, se o número é primo ou não, é verificado no próprio main () e impresso na tela.

Exemplo 3: Argumentos aprovados, mas nenhum valor de retorno

 #include using namespace std; void prime(int n); int main() ( int num; cout <> num; // Argument num is passed to the function prime() prime(num); return 0; ) // There is no return value to calling function. Hence, return type of function is void. */ void prime(int n) ( int i, flag = 0; for (i = 2; i <= n/2; ++i) ( if (n%i == 0) ( flag = 1; break; ) ) if (flag == 1) ( cout << n << " is not a prime number."; ) else ( cout << n << " is a prime number."; ) )

No programa acima, um número positivo é primeiro solicitado ao usuário, o qual é armazenado na variável num.

Então, num é passado para a prime()função onde, se o número é primo ou não, é verificado e impresso.

Como o tipo de retorno de prime()é a void, nenhum valor é retornado da função.

Exemplo 4: Argumentos passados ​​e um valor de retorno.

 #include using namespace std; int prime(int n); int main() ( int num, flag = 0; cout <> num; // Argument num is passed to check() function flag = prime(num); if(flag == 1) cout << num << " is not a prime number."; else cout<< num << " is a prime number."; return 0; ) /* This function returns integer value. */ int prime(int n) ( int i; for(i = 2; i <= n/2; ++i) ( if(n % i == 0) return 1; ) return 0; ) 

No programa acima, um número inteiro positivo é solicitado ao usuário e armazenado na variável num.

Em seguida, numé passado para a função prime()onde, se o número é primo ou não, é verificado.

Como o tipo de retorno de prime()é um int, 1 ou 0 é retornado para a main()função de chamada. Se o número for um número primo, 1 será retornado. Caso contrário, 0 é retornado.

De volta à main()função, o 1 ou 0 retornado é armazenado no sinalizador da variável e o texto correspondente é impresso na tela.

Qual método é melhor?

Todos os quatro programas acima fornecem a mesma saída e todos são programas tecnicamente corretos.

Não existe uma regra rígida e rápida sobre qual método deve ser escolhido.

O método específico é escolhido dependendo da situação e de como você deseja resolver um problema.

Artigos interessantes...