Definición función

Las funciones involucran una o un conjunto de instrucciones que se pueden activar sólo en ciertas ocasiones. Tienen la virtud de que se pueden agrupar ciertas instrucciones que se repiten muchas veces a lo largo de un programa en un solo bloque de código. Es probablemente el núcleo sobre el cual gira la programación en general, por lo que se le dará un énfasis particular en esta documentación. En la siguiente figura se muestran los elementos de este tipo de definición.



identificador de la función: es un campo de texto en el que se introduce el nombre por el cual se ha de llamar la función. Las funciones pueden o no llevar argumentos cuando son llamadas. Estos argumentos se incluyen entre paréntesis al final del nombre de la función, y si se trata de más de uno, éstos se separan por comas. En caso que la función no involucre argumentos, el paréntesis sigue siendo necesario, aún cuando se deje vacío.

valor o expresión de retorno de la función: es un campo de texto que incluye un valor o expresión que la función ha de devolver cuando es llamada. Se encuentra a la derecha del símbolo = a la derecha del identificador de la función. Cuando se llama una función, muchas veces se asigna ésta a alguna variable. El valor de la expresión de retorno es precisamente el que se asignará a la variable asociada. Si no se desea que la función devuelva un valor a la variable, sino que simplemente se ejecute alguna acción, este campo puede dejarse en blanco.

dominio: es un campo de texto donde se introduce una condición. La función sólo se evaluará en los puntos donde la condición es verdadera.

algoritmo: es un checkbox que cuando está marcado permite que la función no se calcule sólo mediante una única instrucción, sino como un grupo de instrucciones. De estar marcado, habilita los campos Local, inicio, hacer y mientras de la función, cuya funcionalidad es igual a la de los algoritmos INICIO y CALCULOS.

local: es un campo donde se introducen los nombres de las variables que se han de considerar locales. Una variable local aquí definida puede cambiar su valor sólo dentro de la función. Por ejemplo, si hay una variable i dentro de la función en cuestión, y otra variable i en alguna otra parte del programa, aunque se llamen igual, si está declarada como local, aunque se le cambie su valor en la función no se afectará el valor de la otra variable que está en la otra parte del programa. Así, colocar variables en local protege al código de dañar otras variables que pudieran llamarse igual.
Cabe mencionar que cuando la función involucra argumentos, éstos son tratados como variables locales.

inicio, hacer y mientras: son campos de texto que se habilitan si el checkbox algoritmo está marcado. Su funcionalidad es igual a la del algoritmo INICIO, por lo que se puede consultar en el apartado INICIO

Es válido preguntarse por qué las instrucciones dentro de la función no se ponen directamente en el algoritmo CALCULOS. Esto puede servir igual. Sin embargo, con el propósito de tener un orden un poco más claro en el código, se prefiere muchas veces hacer un código modular, donde es más fácil llamar a la función, que es el módulo que contiene las instrucciones específicas para realizar algo.

Hagamos un ejercicio con funciones que involucren el cálculo del Máximo Común Divisor de dos enteros distintos de cero usando el algoritmo de Euclides. El interactivo de este ejercicio, es el siguiente:

La función definida en el Selector Definiciones es:



La cual se invoca desde el algoritmo INICIO y desde los controles, cada vez que cambiemos un valor:



En este ejercicio podemos ver cómo funciona una función iterativa o recursiva. Es decir, una función que tiene un algoritmo que ha de repetirse hasta que se alcanza una condición. El conocer el Máximo Común Divisor se puede usar, por ejemplo, para reducir una fracción a su expresión más simple dividiendo el numerador y el denominador de la misma por el MCD encontrado.

Para este ejercicio se utilizó una condición booleana en el campo mientras de la función.