Funciones: declaración y definición
Introducción
¡¡Bienvenida y bienvenido!!
Las funciones en Lenguaje C son una parte fundamental de su filosofía desde su diseño. Lenguaje C incluye varias funciones predefinidas en su haber. En esta sesión podrás aprender a definir una función a nivel usuario.
En esta sesión aprenderás a crear, declarar y definir una función.
Dentro de la declaración de una función aprenderás a declarar variables locales, aprenderás a regresar valores desde una función a un programa y a como pasar argumentos a una función.
Mantén una mente abierta y receptiva para comprender la conceptualización, y para analizar los ejemplos planteados.
¡Empecemos!
Desarrollo del tema
¿Qué es una función?
Una función son un conjunto de sentencias que realiza una tarea específica, y que de manera opcional puede devolver un valor al programa que la llama. En principio todas las funciones devuelven por defecto un valor entero.
Una función tiene las siguientes características:
- Nombre. Debe tener un nombre único, con ese nombre se manda llamar en cualquier parte del código del programa y se ejecuta la tarea para qué es creada. El nombre de una función sigue las reglas para crear los nombres de variables en C.
- Independiente. Ejecuta sus sentencias de código sin interferir con código de otras partes del programa.
- Regresar un valor al código que hace su llamada. Al hacer la llamada, la función ejecuta sus sentencias y si el programador lo necesita regresa el valor.
Las funciones admiten parámetros (argumentos), los argumentos son datos que se pasan a la función.
La sintaxis de la definición de una función:
tipo_de_dato nombre_funcion (tipo_de_argumento argumento1, tipo_de_argumento argumento2, . . . , tipo_de_argumento argumento_n)
{
definición de variables locales;
sentencias;
return;
}
donde:
- tipo_de_dato. Tipo de dato devuelto por la función.
- nombre_funcion. El nombre con que se identifica la función para mandarla llamar.
- tipo_de_argumento. Listado de variables, que conforman los datos que se pasaran a la función.
- sentencias. Estructura de código que ejecutara una tarea especifica.
El tipo de dato de retorno puede ser omitido, por default devuelve un entero. Un ejemplo de función es main(), en principio main(), no tiene argumentos. Ejemplo de función: Imprime en pantalla el la suma de dos números.
#include <stdio.h>
void suma(int x, int y)
{
int suma;
suma = x + y;
printf(«%i», suma);
}
void main()
{
int num1 = 7, num2 = 8;
suma(num1, num2);
printf(«\nResultado de mi primer funcion.»);
}
Resultado:
Declaración de una función
Al definirse la función al igual que con el uso de variables, la función debe declararse antes del lugar de donde se define. Declarar una función consiste en especificar el tipo de dato que va a regresar a la función. En la declaración se debe especificar el tipo y el número de argumentos, ejemplo:
tipo_de_dato nombre_funcion (tipo_de_dato argumentos);
La declaración avisa al compilador que la función existe y que se definirá después.
Ejemplo:
char funcion_delcaracion (int numero, char caracter);
Esta expresión declara una función que devuelve un carácter y contiene dos argumentos.
Recordar:
- No se debe regresar un valor que tiene un tipo de dato diferente a la función
- Se deben usar variables locales, en la manera de lo posible
- Las funciones no se deben hacer demasiado largas, si esto está sucediendo, modularizar la función.
Ejemplo de declaración:
#include <stdio.h>
char letrero(int num, char caracter);
main()
{
char argumentos;
argumentos = letrero( 87, ‘x’);
return;
}
char letrero(int num, char caracter)
{
printf(«%d, %c\n», num, caracter);
return caracter;
}
Resultado:
Retorno de valor
Al finalizar las sentencias dentro de la función, devuelve un valor. Para devolver un valor determinado se utiliza la expresión return; y enseguida se escribe el valor de retorno.
funcion()
{
return 1;
}
En Lenguaje C se puede devolver valores del tipo escalares. Los datos escalares, se les llama escalares a los tipos de datos int, char, longl float o double No se pueden devolver arrays o estructuras. Se puede definir una función que no regrese un valor usando el tipo de retorno void.
Ejemplo de función sin argumentos y sin devolución
Función que permite generar la potencia.
#include <stdio.h>
#include <conio.h>
#include <math.h>
void potencia();
main()
{
potencia(); /* Llamada de función */
}
void potencia()
{
int base, exponente, resultado; /* variables locales*/
base = 2;
exponente = 3;
resultado = pow (base,exponente);
printf( «La potencia es: %d \n», resultado);
return; /* No se devuelve ningún valor, esta expresión también podría omitirse en este caso */
}
En la imagen podemos ver el resultado del código.
Ejemplo de función con argumentos sin devolución de valor
#include <stdio.h>
#include <conio.h>
#include <math.h>
void potencia ( int, int);
main()
{
int base, exponente;
printf( «Calcula la potencia. \n El usuario debe introducir la base y el exponente \n» );
printf( «Introduzca la base: \n» );
scanf( «%i», &base );
printf( «Introduzca el exponente: \n» );
scanf( «%i», &exponente );
potencia ( base, exponente ); /* Llamada a la función y dos argumentos */
}
void potencia ( int x, int y ) /* Se pasan los argumentos x & y a la función */
{
int resultado; /* variable local*/
resultado = pow ( x , y );
printf( «\n El resultado de la potencia es: %i», resultado );
return; /* No se devuelve ningún valor, esta expresión también podría omitirse en este caso */
}
En la imagen podemos ver el resultado del código.
Ejemplo de función con argumentos con retorno de valor
#include <stdio.h>
#include <conio.h>
#include <math.h>
main()
{
int base, exponente, resultado;
printf( «Calcula la potencia. \n El usuario debe introducir la base y el exponente \n» );
printf( «Introduzca la base: \n» );
scanf( «%i», &base );
printf( «Introduzca el exponente: \n» );
scanf( «%i», &exponente );
resultado = potencia ( base, exponente ); /* Llamada a la función y dos argumentos, almacena el valor que devuelve la función */
printf( «\n El resultado de la potencia es: %i», resultado );
}
int potencia( int x, int y ) /* Se pasan los argumentos x & y a la función */
{
int restpow; /* variable local y expresión de uso de variable para su propia función*/
restpow = pow ( x , y );
return restpow; /* Retorno de valor */
}
En la imagen podemos ver el resultado del código.
Conclusión
Cerramos esta sesión con el conocimiento de que es una función, cual es el prototipo de definición y declaración de una función.
Te agregamos código en esta sesión para que puedas analizarlo y ejecutarlo en tu compilador.
Felicidades, ahora sabes modularizar código en Lenguaje C.
Fuentes de información
- Gottfried, B. S. (2005). Programación en C. McGraw-Hill Interamericana. Schildt H (1991), Programación en TURBO C. McGraw-Hill. https://repository.unad.edu.co/bitstream/handle/10596/11970/Chave?sequence=3
- C Programming Language, Brian W. Kernighan Dennis M. Ritchie. Prentice Hall; 2 ed. Sitios web con programación estructurada en C y trabajos académicos específicos.