Definición de Función
Para definir una función en el entorno informático, nos vamos a referir sobre todo a su significado en el contexto de la programación y los lenguajes de programación. De todos es sabido que cuando se usa algo con algún fin, entonces ese algo tiene una función determinada. Hay objetos multifunción, otros que solo tienen una utilidad concreta… etc.
Sin embargo, en informática cuando nos referimos a una función, estamos hablando de una pequeña parte de un programa o software que realiza una tarea particular, bien independientemente, o bien en el contexto de un programa mayor, devolviendo un resultado. Quizás esta definición sea algo liosa para los neófitos, asi que imaginemos por un momento que estamos en el campo de la gramática, y que lo que nosotros llamamos función sería una palabra. A veces una palabra puede ser una frase con sentido, pero lo más común es que varias palabras formen esa frase. Cada palabra nos añade un significado o información, y juntas nos permiten transmitir la información deseada. Bueno, salvando las distancias, y dejando a un lado el simil (antes de que algún lingüista me lanze una justificada critica), las funciones dentro de un lenguaje de programación operan de un modo similar. Cada una de ellas hace una labor, y el uso de varias de ellas sobre una serie de datos nos permite obtener el resultado o las modificaciones deseadas sobre la información.
Una función debe ser llamada (en general mediante una palabra clave y algunos parámetros, que le dicen sobre qué debe actuar y como), y entonces se ejecuta. En su ejecución realiza la tarea para la que ha sido diseñada, devuelve un resultado y luego se desactiva, dejando paso para que el programa continue ejecutando más funciones. Imaginemos que quiero sumar 2 y 2, mediante una hoja de cálculo. Esa hoja de cálculo tiene una función llamada SUMA(), con lo cual solo deberíamos introducir los parámetros a sumar y obtendríamos el resultado (p.ej: SUMA(2,2)=4). Evidentemente este es un ejemplo muy simple, pero en realidad todo el software que conocemos basa su código en operaciones simples, que enlazadas entre si nos permiten realizar otras mucho más complejas. Cada lenguaje de programación tiene en su código interno un cierto número de funciones programadas ‘de fábrica’, ya insertadas y listas para ser utilizadas. Además, un programador puede crear funciones propias a partir de esas funciones más simples, que le faciliten el trabajo.
Trabajes en Pascal, C, Java, PhP, Asp… el sistema es siempre el mismo. Mediante las funciones se le dice al ordenador que debe hacer en cada paso para llegar al resultado final. Y lo mismo en hojas de cálculo, bases de datos… etc… usando una palabra clave que llama a la funcion, más unos datos de entrada y unos parámetros que configuran como debe ejecutarse, se llama y se ejecuta, devolviendo luego el resultado de su ejecución.
Una función puede, pues, ser muy compleja o extremadamente simple. Ya vimos el ejemplo de la suma, pero imaginemos que quisiera crear una función para saber la fecha de nacimiento a raíz del día en que se nació. A partir de funciones sencillas podría crear esa función compuesta rápidamente. Solo debemos entender que a un ordenador hay que decirle paso a paso todo lo que debe hacer. Así, sabiendo el día actual, y el día en que nació una persona, sería cuestion de restar los días de diferencia entre ambas fechas, pasarlos a meses, a años, pedirle que redondee y que muestre el resultado. Fijaos que hacer esto nos daría más trabajo que realizarlo mentalmente nosotros mismos, pero si tuviésemos que hacerlo 10000 veces, y tenemos ya la función programada, esta podría ejecutarse automáticamente cada vez que alguien le pusiese la fecha de nacimiento, y entonces nuestro trabajo sería cero. En esto se basa en gran medida el éxito de la informática y la programación. Trabajos reiterativos y cansados se pueden hacer de modo automático e independiente sin gastar tiempo ni energía.
Otros sinónimos de función serían en este contexto el de rutina, subrutina, algoritmo, subprograma…
Por Sistemas, el 11/02/2005.