Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Lenguaje C

Funciones en Programación C con Ejemplos:Recursiva e Inline

¿Qué es una función en C?

Función en programación C es un bloque de código reutilizable que hace que un programa sea más fácil de entender, probar y puede modificarse fácilmente sin cambiar el programa que lo llama. Las funciones dividen el código y modularizan el programa para obtener mejores y más efectivos resultados. En resumen, un programa más grande se divide en varios subprogramas que se denominan funciones

Cuando divide un programa grande en varias funciones, se vuelve fácil administrar cada función individualmente. Cada vez que ocurre un error en el programa, puede investigar fácilmente las funciones defectuosas y corregir solo esos errores. Puede llamar y usar funciones fácilmente cuando sea necesario, lo que automáticamente ahorra tiempo y espacio.

En este tutorial, aprenderá-

Biblioteca vs. Funciones definidas por el usuario

Cada programa 'C' tiene al menos una función que es la función principal, pero un programa puede tener cualquier número de funciones. La función principal () en C es un punto de partida de un programa.

En la programación 'C', las funciones se dividen en dos tipos:

  1. Funciones de biblioteca
  2. Funciones definidas por el usuario

La diferencia entre la biblioteca y las funciones definidas por el usuario en C es que no necesitamos escribir un código para una función de biblioteca. Ya está presente dentro del archivo de encabezado que siempre incluimos al comienzo de un programa. Solo tiene que escribir el nombre de una función y usarla junto con la sintaxis adecuada. Printf, scanf son los ejemplos de una función de biblioteca.

Mientras que una función definida por el usuario es un tipo de función en la que tenemos que escribir el cuerpo de una función y llamar a la función siempre que la necesitemos para realizar alguna operación en nuestro programa.

Una función definida por el usuario en C siempre la escribe el usuario, pero luego puede ser parte de la biblioteca 'C'. Es una gran ventaja de la programación 'C'.

Las funciones de programación en C se dividen en tres actividades tales como,

  1. Declaración de función
  2. Definición de función
  3. Llamada de función

Declaración de función

La declaración de función significa escribir un nombre de un programa. Es una parte obligatoria para usar funciones en el código. En una declaración de función, solo especificamos el nombre de una función que vamos a usar en nuestro programa como una declaración de variable. No podemos usar una función a menos que esté declarada en un programa. Una declaración de función también se llama "Función prototipo .”

Las declaraciones de funciones (llamadas prototipo) generalmente se realizan sobre la función principal () y toman la forma general:

return_data_type function_name (data_type arguments);

Consideramos el siguiente programa que muestra cómo declarar una función de cubo para calcular el valor de cubo de una variable entera

#include <stdio.h>
/*Function declaration*/
int add(int a,b);
/*End of Function declaration*/
int main() {

Tenga en cuenta que una función no necesariamente devuelve un valor. En este caso, se utiliza la palabra clave void.

Por ejemplo, la declaración de la función mensaje_salida indica que la función no devuelve un valor:void mensaje_salida();

Definición de función

La definición de función significa simplemente escribir el cuerpo de una función. El cuerpo de una función consiste en declaraciones que van a realizar una tarea específica. El cuerpo de una función consiste en una sola declaración o en un bloque de declaraciones. También es una parte obligatoria de una función.

int add(int a,int b)	//function body	
{
	int c;
	c=a+b;
	return c;
}

Llamada de función

Una llamada de función significa llamar a una función cada vez que se requiere en un programa. Cada vez que llamamos a una función, esta realiza una operación para la que fue diseñada. Una llamada de función es una parte opcional de un programa.

  result = add(4,5);

Aquí está el código completo:

#include <stdio.h>
int add(int a, int b);	//function declaration
int main()
{
	int a=10,b=20;
	int c=add(10,20); 	//function call
	printf("Addition:%d\n",c);
	getch();
}
int add(int a,int b)	//function body
{
	int c;
	c=a+b;
	return c;
}

Salida:

Addition:30

Argumentos de función

Los argumentos de una función se utilizan para recibir los valores necesarios mediante la llamada a la función. Se emparejan por posición; el primer argumento se pasa al primer parámetro, el segundo al segundo parámetro y así sucesivamente.

De forma predeterminada, los argumentos se pasan por valor en el que se entrega una copia de los datos a la función llamada. La variable realmente pasada no cambiará.

Consideramos el siguiente programa que demuestra los parámetros pasados ​​por valor:

int add (int x, int y); 
int main() {
  int a, b, result;
  a = 5;
  b = 10;
  result = add(a, b);
  printf("%d + %d\ = %d\n", a, b, result);
return 0;}
int add (int x, int y) { 
x += y;
  return(x);}

El resultado del programa es:

5 + 10 = 15

Tenga en cuenta que los valores de a y b que se pasaron para agregar la función no se cambiaron porque solo su valor se pasó al parámetro x.

Alcance variable

Ámbito de variable significa la visibilidad de las variables dentro de un código del programa.

En C, las variables que se declaran dentro de una función son locales para ese bloque de código y no se puede hacer referencia a ellas fuera de la función. Sin embargo, las variables que se declaran fuera de todas las funciones son globales y accesibles desde todo el programa. Constantes declaradas con #define en la parte superior de un programa son accesibles desde todo el programa. Consideramos el siguiente programa que imprime el valor de la variable global desde la función principal y definida por el usuario:

#include <stdio.h>
int global = 1348;
void test();
int main() {
  printf("from the main function : global =%d \n", global);
  test () ;
return 0;}

void test (){
printf("from user defined function : global =%d \n", global);}

Resultado:

from the main function : global =1348
from user defined function : global =1348

Discutimos los detalles del programa:

  1. Declaramos una variable global entera con 1348 como valor inicial.
  2. Declaramos y definimos una función test() que no toma argumentos ni devuelve un valor. Esta función solo imprime el valor de la variable global para demostrar que se puede acceder a las variables globales en cualquier parte del programa.
  3. Imprimimos la variable global dentro de la función principal.
  4. Llamamos a la función de prueba para imprimir el valor de la variable global.

En C, cuando los argumentos se pasan a los parámetros de la función, los parámetros actúan como variables locales que se destruirán al salir de la función.

Cuando utilice variables globales, utilícelas con precaución porque pueden provocar errores y pueden cambiar en cualquier parte de un programa. Deben inicializarse antes de usar.

Variables estáticas

Las variables estáticas tienen un alcance local. Sin embargo, no se destruyen al salir de la función. Por lo tanto, una variable estática conserva su valor para siempre y se puede acceder a ella cuando se vuelve a ingresar la función. Una variable estática se inicializa cuando se declara y necesita el prefijo static.

El siguiente programa usa una variable estática:

#include <stdio.h>
void say_hi();
int main() {    
  int i;
  for (i = 0; i < 5; i++) { say_hi();}
   return 0;}
void say_hi() {
  static int calls_number = 1;
  printf("Hi number %d\n", calls_number);
  calls_number ++; }

El programa muestra:

Hi number 1
Hi number 2
Hi number 3
Hi number 4
Hi number 5

Funciones recursivas

¡Considere el factorial de un número que se calcula de la siguiente manera 6! =6* 5 * 4 * 3 * 2 * 1.

Este cálculo se realiza calculando repetidamente hecho * (hecho -1) hasta que hecho es igual a 1.

Una función recursiva es una función que se llama a sí misma e incluye una condición de salida para finalizar las llamadas recursivas. En el caso del cálculo del número factorial, la condición de salida es igual a 1. La recursividad funciona "apilando" llamadas hasta que la condición de salida sea verdadera.

Por ejemplo:

#include <stdio.h>
int factorial(int number);
int main() {    
  int x = 6;
  printf("The factorial of %d is %d\n", x, factorial(x)); 
  return 0;}
int factorial(int number) {
 if (number == 1)    return (1); /* exiting condition */
  else
    return (number * factorial(number - 1));
}

El programa muestra:

 The factorial of 6 is 720

Aquí, discutimos los detalles del programa:

  1. Declaramos nuestra función factorial recursiva que toma un parámetro entero y devuelve el factorial de este parámetro. Esta función se llamará a sí misma y disminuirá el número hasta que se alcance la salida o la condición base. Cuando la condición es verdadera, los valores generados previamente se multiplicarán entre sí y se devolverá el valor factorial final.
  2. Declaramos e inicializamos una variable entera con valor "6" y luego imprimimos su valor factorial llamando a nuestra función factorial.

Considere el siguiente cuadro para comprender mejor el mecanismo recursivo que consiste en llamar a la función hasta que se alcanza el caso base o la condición de parada, y luego recopilamos los valores anteriores:

Funciones en línea

La función en la programación C se utiliza para almacenar las instrucciones más utilizadas. Se utiliza para modularizar el programa.

Cada vez que se llama a una función, el puntero de la instrucción salta a la definición de la función. Después de ejecutar una función, el puntero de la instrucción vuelve a la declaración desde donde saltó a la definición de la función.

Cada vez que usamos funciones, necesitamos una cabeza de puntero adicional para saltar a la definición de la función y volver a la declaración. Para eliminar la necesidad de tales punteros, usamos funciones en línea.

En una función en línea, una llamada de función se reemplaza directamente por un código de programa real. No salta a ningún bloque porque todas las operaciones se realizan dentro de la función en línea.

Las funciones en línea se utilizan principalmente para pequeños cálculos. No son adecuados cuando se trata de grandes sistemas informáticos.

Una función en línea es similar a la función normal excepto que la palabra clave en línea se coloca antes del nombre de la función. Las funciones en línea se crean con la siguiente sintaxis:

inline function_name ()
{
    //function definition
}

Escribamos un programa para implementar una función en línea.

inline int add(int a, int b)		//inline function declaration
{
	return(a+b);
}
int main()
{
	int c=add(10,20);
	printf("Addition:%d\n",c);
	getch();
}

Salida:

Addition: 30

El programa anterior demuestra el uso de una función en línea para la suma de dos números. Como podemos ver, hemos devuelto la suma de dos números dentro de la función en línea solo sin escribir líneas adicionales. Durante la llamada a la función acabamos de pasar valores en los que tenemos que realizar sumas.

Resumen


Lenguaje C

  1. Pasar matriz a una función en programación C++
  2. Tipos de funciones definidas por el usuario en programación C
  3. C++ do...while bucle con ejemplos
  4. Sobrecarga de operadores de C++ con ejemplos
  5. Funciones de C++ con ejemplos de programas
  6. Función calloc() en la biblioteca C con programa EJEMPLO
  7. Funciones Python Lambda con EJEMPLOS
  8. Función Python round() con EJEMPLOS
  9. Función Python map() con EJEMPLOS
  10. Funciones de Verilog
  11. C - Funciones