Funciones en
el Lenguaje C
Ing. Giankaris G. Moreno R., M.Sc.
❖ Manejar los formatos de la declaración de funciones en el lenguaje C
❖ Identificar la diferencia entre paso de parámetros por valor y paso de
parámetro por referencia, en el lenguaje C.
❖ Resolver problemas que manejen los conceptos de funciones en el
lenguaje C.
2
Funciones
1. Definición de una función
2. Prototipo de una función
3. Llamado a una función y paso de parámetros
3
1.
Definiciónde
una Función
4
Las funciones son bloques de código utilizados para dividir un programa en
partes más pequeñas, cada una de las cuáles tendrá una tarea determinada.
“Es importante tener en cuenta que una función realiza una tarea específica.”
El lenguaje C como cualquier otro lenguaje de programación puede manejar:
❖ Funciones estándares al lenguaje
❖ Funciones creadas por el usuario
5
Las funciones estándares al lenguaje, son aquellas que realizan una tarea específica y
cuyo código se encuentra en la biblioteca estándar del compilador.
Existen funciones estándares para operaciones matemáticas, manipulación de
cadenas, manipulación de archivos, etc.
Para utilizar cada librería, será necesario importar el fichero de cabecera
correspondiente, por ejemplo:
math.h • Para las funciones matemáticas
string.h y stdlib.h • Para funciones de cadenas
ctype • Para funciones de caracter
6
ALGUNAS FUNCIONES DE LA LIBRERÍA MATEMÁTICA math.h
sin (x) seno de x
cos (x) coseno de x
tan (x) tangente de x
exp (x) función exponencial ex
log (x) logaritmo natural ln(x), x>0
pow (x, y) potencia xy
sqrt (x) raíz cuadrada de x
fabs (x) valor absoluto |x|
7
El uso de funciones definidas por el
usuario (desarrollador) permiten dividir
un programa grande en un cierto número
de pequeños módulos que realizan tareas
específicas, es decir que tienen un
propósito único.
Función creada por el usuario llamada suma
8
Las funciones pueden devolver un valor.
a) Si no devuelve nada se declara de tipo void.
b) Si devuelve un valor, la función se declara del tipo de dato que coincide con el
tipo del valor que se devuelve.
Es importante tener presente, que sin importar la cantidad de funciones que
desarrolle el usuario, nuestros códigos fuentes siempre deben tener una y sólo una
función main( ), que se encarga de empezar la ejecución de cualquier programa
escrito en el lenguaje C.
9
2.
Prototipo de
una función
10
Formato de declaración de una función:
Las funciones en C pueden ser declaradas por encima del main o por debajo de
del mismo, sin embargo, la ubicación por debajo del main () trae consigo lo
siguiente: debe ubicar por encima del main() el prototipo o encabezado de la
función.
Luego de esto, las funciones pueden ser llamadas desde cualquier parte del
programa y una vez que su ejecución finaliza el control retorna al punto desde donde
fue llamada dicha función.
Las funciones tienen tres componentes principales:
❖ Prototipo o Encabezado
❖ Declaraciones Locales de la función.
❖ Cuerpo de la función
11
Declaración de una Función
Prototipo/Encabezado
float suma ( float num1, float num2) {
float resp; Declaración Local de la Función
resp = num1 + num2 ; Cuerpo de la
return resp; Función
Valor
devuelto
12
❖ Mejoran la claridad, estructura y legibilidad del programa.
❖ Se pueden ejecutar más de una vez en un programa, o en diferentes
programas, ahorrando tiempo de programación.
❖ Facilita la división de las tareas entre un equipo de programadores.
❖ Se pueden comprobar individualmente.
13
3.
Llamado a una
función y Paso
de Parámetros
14
.
Las funciones para ser ejecutadas han de ser llamadas o invocadas.
Cualquier expresión puede contener una llamada a una función.
Normalmente la llamada a una función se realizará desde el main, aunque
también se puede hacer desde otra función.
Formato de llamada a una función:
❖ Nombre de identificador = nom_función (lista de parámetros actuales);
❖ Nombre de identificador = nombre de la función ( );
❖ printf (“%tipo”, nombre de la función (Lista de parámetros actuales));
❖ Nombre de la función ();
❖ Nombre de la función (lista de parámetros actuales)
15
.
Es el proceso mediante el cual se envían valores a las funciones al momento de ser
llamadas para que ejecuten el proceso con los datos proporcionados.
La importancia del paso de parámetros es que permiten la reutilización de las
funciones con distintos valores en distintos puntos de un programa sin la necesidad
de reescribir el código.
Tipos de paso de parámetros en C:
Paso de parámetros por Valor
Paso de parámetros por Referencia
16
.
Es el proceso mediante el cual se envía/pasa una copia del valor del parámetro
actual a la función.
Los cambios realizados en el parámetro formal dentro de la función no afectan al
valor original.
Ventajas:
❖ Seguridad: La función no puede alterar el valor original.
❖ Simplicidad: Más fácil de entender para parámetros simples.
17
Ejemplo: #include<stdio.h>
int incrementar10(int x) {
Paso de int res;
res= x + 10;
parámetros return res;
por Valor }
void main( ){
int valor, resp;
printf(“Introduzca un valor entero: “);
scanf(“%i”, &valor);
resp= incrementar10(valor);
printf(“El resultado de incrementar 10 a %i es: %i”, valor, resp);
}
18
.
Es el proceso mediante el cual se envía/pasa la dirección de memoria del parámetro
actual a la función. La función puede modificar el valor original en la memoria.
Ventajas:
❖ Eficiencia: No se realiza una copia del dato, solo se pasa la dirección.
❖ Flexibilidad: Permite modificar los datos originales, esto es muy útil para
estructuras grandes o cuando se requiere modificar múltiples valores.
19
Ejemplo: #include<stdio.h>
void incrementar10(int *x) {
Paso de *x= *x + 10;
}
parámetros
por Referencia void main( ){
int valor;
printf(“Introduzca un valor entero: “);
scanf(“%i”, &valor);
incrementar10(&valor); //se envía la dirección de memoria
printf(“El resultado de incrementar 10 al valor es: %i ”, valor);
}
20
Característica Paso por Valor Paso por Referencia
Por valor Tipo de copia Copia el valor Dirección de memoria
vs
Modificación del
Noscreenshot here
Place your Si
original
por referencia
Uso de memoria Menor Mayor
Mas lento dependiendo
Rendimiento Más rápido
del tamaño de los datos
21
Preguntas?
22