Introducción

Las funciones, procedimientos o métodos permiten ahorrar código, pues hacen que acciones comunes sean agrupadas dentro de un mismo fragmento de código.

Una función es algo que existe dentro de un programa, recibe parámetros, los procesa y (a veces) devuelve un resultado.

Veamos una introducción a las funciones en C.

Funciones predefinidas

C ya tiene funciones o métodos predefinidos. Por ejemplo, sqrt y pow son funciones matemáticas que ya vienen por defecto al incluir la librería.

También lo son printf y scanf; funciones que se encargan de leer y escribir datos.

Función main

Para que un programa del lenguaje C sea ejecutado, se necesita una función main.

Esta función es la función principal, es el punto de entrada del programa.

Cuando el programa se ejecuta, esta función es llamada y se le pasan los argumentos con los que el programa fue llamado en caso de que existan.

Definición de una función

Para definir una función en nuestros programas debemos saber la sintaxis para declararlas. Dicha sintaxis es la siguiente:

tipoDeDatoQueRegresa nombreDeLaFuncion(tipoDeDatoDelPrimerArgumento nombreDelPrimerArgumento){}

Sé que se ve muy complicado, pero no lo es. Por ejemplo, la función para sacar la raíz cuadrada (sqrt) es esta:

double sqrt(double numero){
/*Magia oscura aquí*/return raiz;
}

Con esa función podemos sacar los siguientes datos:

  • Tipo de dato que regresa: double
  • Nombre: sqrt
  • Tipo de dato del primer argumento: double
  • Nombre del primer argumento: numero

Veamos ahora la función pow:

double pow(double x, double y){
  /*Magia aquí*/  return el_resultado;
}

Es casi como sqrt pero esta tiene dos parámetros, ambos de tipo double pero uno es x y otro es y.

Las funciones también pueden devolver nada. Y ese tipo de dato es llamado void. Una función que no regresa nada podría quedar así:

void noRegresarNada(int numero){
  /*Cuerpo aquí*/}

Igualmente una función puede no recibir parámetros o argumentos:

void nada(){
  printf("Yo no recibo ni devuelvo nada");
}

 

Llamada a una función

Para llamar a una función ponemos su nombre y le pasamos los argumentos entre paréntesis. Si la función no recibe argumentos, dejamos los paréntesis vacíos.

Si la función devuelve algo podemos usar ese resultado y alojarlo en una variable o usarlo para llamar a otra función. Aunque devuelva algo, no es obligatorio asignarle a algo su resultado.

Por ejemplo, la función printf devuelve un entero indicando cuántos caracteres imprimió, pero la mayoría de veces eso no importa; simplemente llamamos a la función e ignoramos su resultado.

Para llamar a una función sin argumentos hacemos esto:

nada();

Suponiendo que la función “nada” existe, sería llamada como se ve arriba.

Ejemplo de una función hecha por nosotros

Con lo explicado arriba podemos crear nuestras propias funciones.

Por ejemplo, la función saludo que recibe un arreglo de caracteres (un string) indicando el nombre, e imprime “Hola” seguido del nombre.

Quedaría así:

void saludo(char *nombre){
 printf("Hola %s\n", nombre);
}

En un programa completo en donde lo llamamos se ve de la siguiente manera:

#include<stdio.h>

// Es una buena práctica definir el prototipo de las funciones aquí arriba
// ojo: sólo el prototipo, no el cuerpo
void saludo(char *nombre);

int main(int argc, char const *argv[])
{
 saludo("Luis");
}

// Ahora sí definimos la función con todo y cuerpo
void saludo(char *nombre){
 printf("Hola %s\n", nombre);
}

Es importante ver que definimos hasta arriba la firma de nuestra función (sin llaves ni cuerpo), y más abajo definimos el cuerpo.

De esta forma nosotros llamamos a la función y le pasamos una cadena.

La salida será: Hola Luis

Función hecha por nosotros con argumentos

Ahora hagamos una función que sume dos números y devuelva el resultado. La definición es la siguiente:

int sumar(int primerNumero, int segundoNumero){
 return primerNumero + segundoNumero;
}

En este caso la función sí devuelve algo y es un entero. Además, recibe dos argumentos (ambos enteros). Devuelve la suma de los mismos.

En este caso estamos devolviendo el resultado y ya, pero podría ser más expresivo:

int sumar(int primerNumero, int segundoNumero){
 int suma = primerNumero + segundoNumero;
 return suma;
}

Para implementarla en un código completo podemos hacer esto:

#include<stdio.h>

// Es una buena práctica definir el prototipo de las funciones aquí arriba
// ojo: sólo el prototipo, no el cuerpo
int sumar(int primerNumero, int segundoNumero);

int main(int argc, char const *argv[])
{
 int resultado = sumar(50, 10);
 printf("El resultado de la suma es %d\n", resultado);
}

// Ahora sí definimos la función con todo y cuerpo
int sumar(int primerNumero, int segundoNumero){
 int suma = primerNumero + segundoNumero;
 return suma;
}

La salida es: El resultado de la suma es 60

Funciones con valores de retorno: suma

Así es como podemos llamar y crear funciones a nuestro gusto en C.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Ver comentarios

Entradas recientes

Desplegar PWA creada con Vue 3, Vite y SQLite3 en Apache

Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…

3 días hace

Arquitectura para wasm con Go, Vue 3, Pinia y Vite

En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…

3 días hace

Vue 3 y Vite: crear PWA (Progressive Web App)

En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…

3 días hace

Errores de Comlink y algunas soluciones

Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…

3 días hace

Esperar promesa para inicializar Store de Pinia con Vue 3

En este artículo te voy a enseñar cómo usar un "top level await" esperando a…

3 días hace

Solución: Apache – Server unable to read htaccess file

Ayer estaba editando unos archivos que son servidos con el servidor Apache y al visitarlos…

4 días hace

Esta web usa cookies.