Tipos de funciones definidas por el usuario en la programación en C

En este tutorial, aprenderá acerca de los diferentes enfoques que puede tomar para resolver el mismo problema usando funciones.

Estos 4 programas a continuación verifican si el número entero ingresado por el usuario es un número primo o no.

La salida de todos estos programas a continuación es la misma, y ​​hemos creado una función definida por el usuario en cada ejemplo. Sin embargo, el enfoque que hemos adoptado en cada ejemplo es diferente.

Ejemplo 1: No se pasan argumentos y no se devuelve ningún valor

 #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()función toma la entrada del usuario, verifica si es un número primo o no y lo muestra en la pantalla.

Los paréntesis vacíos en la checkPrimeNumber();instrucción dentro de la main()función indican que no se pasa ningún argumento a la función.

El tipo de retorno de la función es void. Por tanto, la función no devuelve ningún valor.

Ejemplo 2: No se pasan argumentos pero se devuelve un valor

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

Los paréntesis vacíos en la n = getInteger();declaración indican que no se pasa ningún argumento a la función. Y, el valor devuelto por la función se asigna an.

Aquí, la getInteger()función toma la entrada del usuario y la devuelve. El código para verificar si un número es primo o no está dentro de la main()función.

Ejemplo 3: argumento pasado pero sin valor de retorno

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

El valor entero ingresado por el usuario se pasa a la checkPrimeAndDisplay()función.

Aquí, la checkPrimeAndDisplay()función verifica si el argumento pasado es un número primo o no y muestra el mensaje apropiado.

Ejemplo 4: argumento pasado y valor de retorno

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

La entrada del usuario se pasa a la checkPrimeNumber()función.

La checkPrimeNumber()función comprueba si el argumento pasado es primo o no.

Si el argumento pasado es un número primo, la función devuelve 0. Si el argumento pasado es un número no primo, la función devuelve 1. El valor de retorno se asigna a la variable de bandera.

Dependiendo de si el indicador es 0 o 1, se imprime un mensaje apropiado desde la main()función.

¿Qué enfoque es mejor?

Bueno, depende del problema que intentes resolver. En este caso, es mejor pasar un argumento y devolver un valor de la función (ejemplo 4).

Una función debe realizar una tarea específica. La checkPrimeNumber()función no recibe información del usuario ni muestra el mensaje apropiado. Solo comprueba si un número es primo o no.

Articulos interesantes...