Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Marco teórico
a.1. Introducción
Una función es un bloque de código de programa autocontenido, diseñado para realizar una
tarea determinada. La razón principal para usar funciones es para evitar tediosas repeticiones
de programación. Escribiendo una sola vez la función apropiada, se la puede emplear cualquier
número de veces en un determinado programa, en diferentes situaciones, únicamente
llamándola por su nombre.
las funciones permiten automatizar tareas repetitivas, encapsular el código que utilizamos, e
incluso mejorar la seguridad, confiabilidad y estabilidad de nuestros programas. Dominar el uso
de funciones es de gran importancia, permiten modularizar nuestro código, separarlo según las
tareas que requerimos
puede definir opcionalmente parámetros de entrada que permiten a los llamadores pasar
argumentos a la función. Una función también puede devolver un valor como salida
FUNCIONES PURAS
Las funciones "puras" son diseñadas específicamente para realizar operaciones con sus
argumentos y devolver un valor en su nombre, basándose en esas operaciones.
FUNCIONES
Ese valor indica simplemente el éxito o el fallo de la manipulación, es decir, estas funciones
producen acciones y suministran datos.
Funciones que no tienen un valor de vuelta explícito, es decir, realizan una acción concreta y no
devuelven un valor en su nombre. Todas las funciones que no devuelven valores deben ser
declaradas de tipo void, por lo tanto se evita que se use esta función en una expresión.
a.3.1. Argumentos
Son los valores que se envían a la función en el momento en que se realiza su llamada, estos
valores pueden ser de una constante, variable o expresión.
Los parámetros formales son los datos que recibe la función para operar con ellos. Una función
puede recibir cero o más parámetros. Se debe especificar para cada parámetro su tipo.
Una función puede devolver un dato a quien la ha llamado. Esto se realiza mediante la
instrucción return.
El tipo del dato devuelto debe coincidir con el tipo_devuelto que se ha indicado antes del
nombre de la función.
Cuando se realiza una llamada a la función, los "valores" pasados se denominan argumentos.
A veces se utilizan también las expresiones argumentos formales, para los parámetros y
argumentos actuales para los valores pasados.
se copia la dirección del argumento en el parámetro formal, por lo que los parámetros deben
ser variables punteros y los argumentos deben ser direcciones de memoria a variables o
punteros.
dentro de la función se usa la dirección real de las variables usadas en la llamada, entonces, los
cambios hechos a los parámetros correspondientes afectan a dichas variables.
Para retornar punteros por la función se utiliza la sentencia return, porque los punteros no son
ni enteros ni enteros sin signo; son las direcciones de memoria de un cierto tipo de datos
expresado en entero hexadecimal.
Para indicar que una función retorna un puntero como valor, se debe colocar un asterisco (*)
antes del nombre de la función, igual a lo que sucede en la declaración de una variable puntero.
Una función no es una variable, pero tiene una posición física en memoria cuya dirección puede
ser asignada a un puntero si un puntero contiene la dirección del punto de entrada a la función,
puede utilizarse dicho puntero para llamarla.
a.10.1. Definición
funcionan de forma similar a las iteraciones, pero debe encargarse de planificar el momento en
que dejan de llamarse a sí mismas o tendrá una función recursiva infinita.
"Una no recursiva", a pesar de parecer más sencilla y más frecuente, no puede dar solución a
todos los problemas.
"Una recursiva", da un programa más sencillo y más elegante. Además, hay muchos problemas
cuya respuesta se plantea solamente de forma recursiva.
1) Debe haber una salida no recursiva de la función, es decir, algún caso trivial o "base"en
donde terminen las llamadas recursivas
2) Cada llamada a la función debe referirse a un caso más pequeño del problema, de tal manera
que se llegue al caso base. Este sería el caso recursivo llamado "general", definido en términos
de un caso cada vez más pequeño del mismo problema
1) Donde una rutina iterativa usa sentencias while, for o do-while, para controlar la repetición,
una rutina recursiva usa if-else o switch.
2) Las funciones recursivas tienen frecuentemente más parámetros y menos variables locales
que las funciones iterativas equivalentes. Porque los parámetros sirven para determinar el
tamaño del problema, para realizar la recursividad y para llegar al caso base.
En C la invocación de funciones implica que el paso de parámetros es, con carácter general y
predefinido, por valor. De acuerdo con lo que indicamos cuando hablamos de pseudocódigo,
esto impide que la variable transferida sea manipulada dentro de una función, ya que la función
únicamente recibe un valor (no manipulable) copia del contenido de la variable.
El procedimiento general para crear una función que pueda tomar un número variable de
argumentos es el siguiente:
3. Antes de que cualquiera de los parámetros de longitud variable pueda ser utilizados, el
puntero punt_arg debe estar inicializado por medio de una llamada a la macro va_start(), que
es la dirección del primer parámetro variable que se encuentra después del último parámetro
conocido ult_param.
Forma clásica:
1) Una lista de parámetros, que van entre paréntesis y siguen al nombre de la función.
2) La declaración real de los parámetros va entre el paréntesis cerrado y la llave de
apertura de la función. Se puede poner más de un parámetro después del tipo, igual que
la declaración de cualquier variable.
A una función se puede ponerla en el mismo archivo que la función main(). En este caso, la
compilación se realizará de la misma forma que la compilación de una sola función.
También se puede ponerla en un archivo aparte con otras funciones compiladas por separado
que se hayan escrito, para luego realizar un encadenamiento.
Para ponerla en una biblioteca. En este caso, se utiliza la sentencia de preprocesador #include,
para incluirla en el programa en donde se vaya usar una biblioteca de funciones difiere de un
archivo de funciones compiladas por separado, porque:
Las rutinas de una biblioteca se unen al resto del programa, cargando y enlazando solo las
funciones que el programa utiliza realmente.
En el caso de la biblioteca estándar de lenguaje C nunca se deberá tener todas las funciones
enlazadas en el programa, ya que el código objeto sería gigantesco.
b. Implementación de programas en Lenguaje C y Python relacionados con tipos de
parámetros, funciones que devuelven un puntero, punteros a función y funciones
recursivas.
Tipos de parametros
#include <iostream>
int main()
{ int num;
int resultado;
resultado = invertir(num);
cout << "Numero con las cifras invertidas: " << resultado << endl;
while (num != 0)
return inverso;
función recibe como paramétro un puntero a función, el cual invoca cuando ha terminado su
ejecución. También muestra las direcciones de memoria que ocupan las funciones, que se
imprime con la opción %p de la función printf.
#include <stdio.h>
void imprimiendo_hola(int x)
if(ptr_func!=NULL)
}
}
void func_call_back()
int main()
void (*ptr_func_1)(int)=NULL;
//Usamos el primero
ptr_func_1 = imprimiendo_hola;
ptr_func_1(3);
//Usamos el segundo
ptr_func_2 = imprimiendo_adios;
ptr_func_2(3,func_call_back);
return 0;
e. Conclusiones y recomendaciones
f. Referencias