Funciones

Definición y declaración de funciones

En C, las funciones son bloques de código que realizan una tarea específica. Para poder usar una función en C, primero necesitamos declararla para que el compilador conozca su existencia, y luego definirla, que es donde se implementa la funcionalidad de la función.

				
					#include <stdio.h>

// Declaración de la función sumar
int sumar(int a, int b);

int main() {
    int num1 = 5, num2 = 3;
    
    // Llamada a la función sumar y muestra el resultado
    printf("La suma de %d y %d es: %d\n", num1, num2, sumar(num1, num2));

    return 0;
}

// Definición de la función sumar
int sumar(int a, int b) {
    return a + b;
}

				
			

Explicación:

Declaración de función (sumar):

    • Antes de usar la función sumar en nuestro programa, necesitamos informar al compilador sobre su existencia. Esto se hace mediante la declaración de la función al principio del código. La declaración de la función se conoce como prototipo de función. Aquí estamos declarando que la función sumar tomará dos enteros como argumentos y devolverá un entero.
  • Definición de función (sumar):
    • Después de la función main(), definimos la función sumar, donde implementamos la lógica para sumar dos números enteros.
  • Llamada a la función (sumar):
    • En la función main(), llamamos a la función sumar con dos números y mostramos el resultado utilizando printf().

Parámetros y argumentos

En C, los parámetros son variables utilizadas por una función para recibir datos desde fuera de la función. Cuando definimos una función, podemos especificar parámetros que actúan como variables locales dentro de esa función. Los argumentos son los valores reales que pasamos a la función cuando la llamamos.

				
					#include <stdio.h>

// Declaración de la función saludar
void saludar(char nombre[]);

int main() {
    char nombre[] = "Juan";
    
    // Llamada a la función saludar con el argumento "nombre"
    saludar(nombre);

    return 0;
}

// Definición de la función saludar con un parámetro
void saludar(char nombre[]) {
    printf("¡Hola, %s!\n", nombre);
}

				
			

Explicación:

  • Parámetros y Argumentos:

    • Parámetros: En la declaración y definición de la función saludar, hemos especificado un parámetro nombre[]. Este parámetro actúa como una variable local dentro de la función y permite que la función reciba un nombre como entrada.

    • Argumentos: En la función main(), declaramos un arreglo de caracteres llamado nombre y le asignamos el valor "Juan". Luego, al llamar a la función saludar(nombre), pasamos el arreglo nombre como argumento. Aquí, "Juan" es el argumento que se pasa a la función saludar.

Alcance de variables: locales y globales

En C, el alcance de una variable se refiere a la parte del programa donde esa variable es visible y puede ser utilizada. Hay dos tipos principales de alcance de variables: locales y globales.

  • Variables locales: Son variables declaradas dentro de una función y solo son visibles dentro de esa función.

  • Variables globales: Son variables declaradas fuera de todas las funciones y son visibles y accesibles desde cualquier parte del programa.

				
					#include <stdio.h>

// Variable global
int global = 10;

// Declaración de función
void miFuncion() {
    // Variable local
    int local = 5;
    
    printf("Variable local: %d\n", local);
    printf("Variable global: %d\n", global);
}

int main() {
    // Variable local
    int local_main = 20;
    
    printf("Variable local main: %d\n", local_main);
    printf("Variable global: %d\n", global);
    
    // Llamada a la función miFuncion
    miFuncion();

    return 0;
}

				
			

Explicación:

  • Variables locales:

    • La variable local se declara dentro de la función miFuncion(), por lo que solo es visible dentro de esa función. No se puede acceder a ella desde main() ni desde ningún otro lugar fuera de miFuncion().
  • Variables globales:

    • La variable global se declara fuera de todas las funciones, por lo que es global y puede ser accedida desde cualquier parte del programa, incluyendo main() y miFuncion().

Cuando ejecutamos este código, veremos cómo las variables locales son específicas de la función donde se declaran, mientras que las variables globales pueden ser accedidas desde cualquier parte del programa.

Recursión

La recursión es un concepto en el que una función se llama a sí misma para resolver un problema más grande. En C, una función puede llamarse a sí misma de manera recursiva.

				
					#include <stdio.h>

// Función recursiva para calcular el factorial
int factorial(int n) {
    // Caso base: factorial de 0 es 1
    if (n == 0 || n == 1) {
        return 1;
    } else {
        // Llamada recursiva
        return n * factorial(n - 1);
    }
}

int main() {
    int num = 5;
    
    // Llamada a la función factorial
    printf("El factorial de %d es: %d\n", num, factorial(num));

    return 0;
}

				
			

Explicación:

  • La función factorial() se llama a sí misma para calcular el factorial de un número.

  • Caso Base: La recursión debe tener un caso base para evitar que se llame infinitamente. En este caso, cuando n es 0 o 1, el factorial es 1.

  • Llamada Recursiva: En la función factorial(), se llama a sí misma con n - 1 para calcular el factorial.

La recursión es útil para resolver problemas que pueden dividirse en casos más pequeños y similares. Es importante tener un caso base claro para evitar bucles infinitos.