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.
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.
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.
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:
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");
}
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.
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
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
Así es como podemos llamar y crear funciones a nuestro gusto en C.
Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…
En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…
En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…
Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…
En este artículo te voy a enseñar cómo usar un "top level await" esperando a…
Ayer estaba editando unos archivos que son servidos con el servidor Apache y al visitarlos…
Esta web usa cookies.
Ver comentarios