|
Las funciones son una estructura que es muy útil si queremos ejecutar una determinada secuencia de acciones muchas veces. Dicho de manera intuitiva, una función es un agrupamiento de una serie de acciones para realizar un trabajo. En vez de escribir la misma serie de acciones cada vez que se necesitan, las agrupamos como una función, y cada vez que la necesitamos, llamamos la función para que realize sus acciones.
Supongamos que creamos una aplicacion multimedia que en varios momentos tiene que hacer sonar a diferentes sonidos. Imaginemos que la manera de reproducir un sonido es la secuencia de estas acciones:
parar cualquier sonido anterior
asignar la nueva canción
asignar el volumen al 100%
mostrar la interfaz gráfica de control de reproducción
empezar la reproducciónAhora bien, cada vez que tenemos que tocar un sonido tenemos que dar al ordenador la misma secuencia de pasos. No sería conveniente agrupar estas acciones? La solución es crear una función, que agrupe a las acciones. Cada vez que necesitamos reproducir un sonido, en vez de esribir todas estas acciones de nuevo, llamamos a la función que creamos.
Hay varios beneficios cuando usas funciones. Primero, el código es mas fácil de escribir y leer, sin duplicaciones inecesárias. Además, si en un momento quieres hacer cambios, solo hace falta cambiar en un sitio! Si en un futuro decidimos empezar a tocar los sonidos al 80% del volumen, podriamos cambiarlo en la definición de la función, en vez de tener que ir y reemplazar la línea relevante del código en varios sitios del programa.
Las funciones se declaran con esta sintaxis:
function nombreDeFuncion(){ // acciones // al final, opcionalmente: return unValor; }function nombreDeFuncion(parametro1, parametro2, ...){ // acciones // al final, opcionalmente: return unValor; }Para usar una función, se llama por su nombre. Si tiene parametros, se incluyen entre parentesis. Si no tiene parametros, se abre y cierra un parentesis.
nombreDeFuncion() nombreDeFuncion(parametro1, parametro2, ...)Si la función devuelve un valor (con la acción return), podemos usarla para asignar valores a variables:
unaVariable = nombreDeFuncion(parametros)
Sin parametros
En el primer caso, declaramos una función sin parametros. Cada vez que le llamamos por su nombre, ejecutará todas las acciones que lleva entre los corchetes ( "{ }" ). Un ejemplo sería:
function granHolaMundo(){ trace ("Hola Mundo!"); trace ("Este es un mensaje de bienvenida!"); trace ("Y de regalo, unas estrellas:"); for (i=0;i<10;i++){ trace ("* * *"); } trace ("Adios de momento"); }Esta función imprime unas lineas de texto y unas estrellas. Podemos llamarla por su nombre, y ejecutará esta funcionalidad:
granHolaMundo()Probamos a llamarla varias veces, y miramos que cada vez que la llamamos ejecuta todas sus acciones
granHolaMundo() granHolaMundo() granHolaMundo()
Con Parametros
Está bien agrupar acciones, pero el poder de las funciones es que pueden variar ligeramente su ejecución dependiendo de parametros que podemos especificar. Los parametros no son nada mas que variables, que se pasan a la función para que las use.
Por ejemplo, esta es una función que imprime el mayor de dos números:
function imprimeElMayor(numero1, numero2){ if (numero1>numero2){ trace (numero1) } else { trace (numero2) } }Los dos parametros son simplemente una manera de decir, "esta función necesita dos variables para funcionar correctamente. A la primera variable que me pasan, la voy a llamar numero1 y la segunda numero2. Cada vez que necesito operar con alguno de los dos numeros estos, voy a usar los nombres numero1 y numero2".
Miramos diferentes formas de llamar a una función:
imprimeElMayor(2,3); imprimeElMayor(-20,-5);Aqui llamamos a la función con valores numericos directos. En cada caso, el primer valor que le insertamos, la función lo llamará internamente "numero1" y al segundo "numero2", y así realizará sus operaciones.
miEdad=16 tuEdad=19
imprimeElMayor(miEdad, tuEdad);En este caso pasamos valores de variables a la función. Con la misma manera, el primer valor entre los parentesis se denominará dentro de la función "numero1". Asimismo, el valor después del coma será para la función el "numero2".
Otros ejemplos de funciones con parametros:
function imprimeEntreEstrellas(unTexto){ trace(" *** " + unTexto + " *** "); } function cuentaDesdeHasta(desdeUnNumero, hastaUnNumero){ for (i=desdeUnNumero;i<hastaUnNumero;i++){ trace (i); } }
La acción return
Una función puede calcular un valor segun los parametros que le pasamos, y nos lo puede devlover usando la acción return. En el caso este, podemos usar la llamada a la función para dar un valor a una variable.
Por ejemplo, imaginamos que necesitamos una función que nos calcule la superficie de un rectángulo:
function superficie(largo, ancho){ return (largo*ancho); } cocinaLargo = 200 cocinaAlto = 505 cocinaSuperficie = superficie (cocinaLargo, cocinaAlto) trace (cocinaSuperficie)Cuando se llega a un return, termina la ejecución de la función. En el caso que devolvemos un valor en una función, es importante recordarnos de almacenarlo en una variable (como en el ejemplo arriba).
También la acción return se puede usar para terminar la ejecución de una función antes de su final, si nos conviene:
function abrePuerta (palabraClave){ if (palabraClave != "abracadabra"){ return; } trace ("Las puertas se abren") }
Ejercicios:
1. Escribir la función saludaUsuario (nombre). La función imprime un mensaje de bienvenida, usando el nombre especificado. Extensión: Si el nombre es exactamente vuestro nombre, imprimir el extra mensaje "hola mi creador!". Probar la función con diferentes valores.
2. Escribir la funcion repiteTexto (texto, veces). Esta función imprime el texto especificado en el primer parametro las veces que se dan en el segundo parametro.
3. Escribir la función mayorDe (num1, num2, num3) que devuelve el mayor de tres numeros. Usar el valor que devuelve para imprimirlo con un trace().
4. Escribir la función describeArray(unArray). El parametro es un array cualquiera, y la función tiene que imprimir el numero total de elementos, y luego imprimir uno por uno todos los elementos del array.
5. Escribir la función elementoEnPosicion (unArray, indice) que devuelve el elemento en el indice especificado dentro del array unArray. Si el indice es superior al numero total de elementos, o es inferior a 0, la función debe imprimir el mensaje ("Error! No existe este elemento") y terminar.