2. Funciones definidas por el usuario
• JavaScript contiene funciones ya construidas
(alert, prompt ).
• JavaScript permite definir funciones e
invocarlas posteriormente.
• Una función agrupa normalmente código que
se ejecuta con un fin determinado.
3. Definición de funciones
• La definición de una función comienza con la
palabra reservada function
• A continuación, un identificador y entre
paréntesis los parámetros que admite la
función.
• El cuerpo de la función estará delimitado por
llaves.
• La palabra reservada return para devolver un
valor.
4. Ejemplo: declaración de una función
function valor_absoluto (numero){
if (numero < 0){
numero = - numero;
}
return numero
}
Nombre de la función
Parámetro
Cuerpo de la función
function nombre_de_la_función (lista_de_parámetros){
lista_de_instrucciones
}
Sintaxis
5. Invocación de funciones
• Una función puede ser invocada en cualquier
lugar de un documento HTML donde se pueda
incluir código JavaScript.
• Antes de ejecutar ninguna instrucción, el
navegador espera a cargar todas las
definiciones de funciones.
• Es posible invocar una función aún cuando no
se haya producido su carga.
6. Ejemplos: invocación de funciones
function mcd ( x, y){
var resto=0;
while ( x % y != 0 ){
resto= x % y;
x = y;
y = resto;
}
return y;
}
var aux= mcd (34, 12);
// la variable aux tendrá el valor 2
var aux = mcd (15,aux);
// la variable aux tendrá el valor 1
var aux = mcd (25,45) * 4;
// la variable aux tendrá el valor 20
Declaración Invocación
7. Ámbito de las variables
• El ámbito de una variable definida en una
función es el cuerpo de la función.
• Si dentro de una función no se ha definido una
función con el mismo identificador de una
variable que se encuentra fuera de la función,
la variable externa puede utilizarse dentro de
la función.
8. Ejemplo: ámbito de una variable
var x = 0;
var z = 3;
var m = 1;
function abracadabra ( x, y){
var z = 0;
while ( x > y ){
x = x - 1;
y = y + 1;
m = m + 1;
}
return y;
}
Los identificadores se refieren a los
parámetros de la función y a la
variable definida dentro de la
función (z)
Se refiere a la variable local, pues
no se ha definido ninguna variable
local con el mismo identificador.
9. La pila de llamadas
• Cuando se invoca a una función, el control de
la ejecución se transfiere a la función.
• Se almacena el estado el programa, para
posteriormente a la finalización de la función
devolver el control a aquel (desapilando los
valores antes almacenados)
• Este comportamiento permite la recursión.
10. Argumentos
• En la declaración de una función se incluyen
los argumentos con los que se invocará.
• Si se produce la invocación con mas
argumentos de los que hay en la cabecera, los
que sobren se ingnorarán.
• Es posible que una función pueda “capturar”
los argumentos con los que fue invocada.
11. Diseño de funciones
• Las funciones permiten:
– Agrupar código que se repite una y otra vez.
– Crear una función en el sentido matemático
– Recursión
12. Ejemplo I
function mcd ( x, y){
var resto=0;
while ( x % y != 0 ){
resto= x % y;
x = y;
y = resto;
}
return y;
}
Esta función permite calcular el máximo
común divisor de dos números, utilizando el
algoritmo de Euclides
Procedimiento:
Dividimos un número entre otro, si la
división es exacta (el resto es 0), el máximo
común divisor es el divisor, en otro caso (el
resto es distinto de cero), cambiar el
dividendo por el divisor y el divisor por el
dividendo, volver hacer el proceso hasta
que el resto sea cero.
13. Ejemplo II
function factorial (numero){
var resultado = 1;
while (numero != 0){
resultado = resultado * numero;
numero = numero - 1;
}
return resultado;
}
Función iterativa
function factorial (numero){
var resultado = 1;
if (numero == 1){
return 1;
}
else{
return numero*factorial (numero - 1);
}
}
Función recursiva
Cálculo del
factorial de un
número
14. Ejemplo III
function es_primo (numero){
var cota = Math.floor(numero / 2);
var candidato = 2;
var primo = true;
while (primo && candidato <= cota){
if (numero % candidato == 0){
primo = false;
}
candidato = candidato + 1;
}
return primo;
}
Esta función devuelve
verdadero si el número es
primo, y falso en otro caso
15. Ejemplo: invocación de una función
function es_primo (numero){
var cota = Math.floor(numero / 2);
var candidato = 2;
var primo = true;
while (primo && candidato <= cota){
if (numero % candidato == 0){
primo = false;
}
candidato = candidato + 1;
}
return primo;
}
var resultado = '';
for (i=2; i <= 1000; i++){
if (es_primo(i)){
resultado = resultado + ' - ' + i;
}
}
alert(resultado);
Este código invoca a la
función es_primo para
mostrar los números primos
que se encuentran entre 2 y
1.000.