Funciones y métodos en C

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:

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:

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í:

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

 

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í:

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

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:

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:

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

La salida es: El resultado de la suma es 60

Funciones con valores de retorno: suma

Funciones con valores de retorno: suma

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

4 pensamientos sobre “Funciones y métodos en C”

  1. Pingback: C - Separar parte entera y decimal de un número con modf - Parzibyte's blog

  2. Pingback: Booleanos en C - Parzibyte's blog

  3. Pingback: Función div en C: dividir y obtener residuo y cociente - Parzibyte's blog

  4. Pingback: Funciones por referencia y por valor en C - Parzibyte's blog

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *