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
// 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;
}
Declaración de función (sumar
):
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.sumar
):main()
, definimos la función sumar
, donde implementamos la lógica para sumar dos números enteros.sumar
):main()
, llamamos a la función sumar
con dos números y mostramos el resultado utilizando printf()
.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
// 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);
}
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
.
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
// 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;
}
Variables locales:
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:
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.
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
// 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;
}
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.