0% encontró este documento útil (0 votos)
9 vistas21 páginas

Tema 2.2. Funciones de Js

Descargar como pdf o txt
Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1/ 21

Tema 2.

2
Funciones

1. Funciones definidas por el usuario


2. Tipos de funciones
3. Recursividad
4. Más funcionalidad para las estructuras
de datos
5. Ejercicios
Tema 2.2
Funciones
Funciones definidas por el usuario

Definir funciones: notación declarativa:


•Se le puede pasar datos a través de variables para que realice cálculos con ellos
function nombre(parametros ) {
Instrucciones de la función
}
•Dentro de las instrucciones puede haber una función retur, pero no es
obligatorio
Invocar funciones
•Para llamar a la función vale con escribir su nombre seguido de los paréntesis
xxxx(parámetros)

•Ejemplo de paso de parámetros


Function raizCuadrada(numero){
return (Math.sqrt(numero));
}
console.log(raizCuadrada(4));// muestra 2
Tema 2.2
Funciones
Funciones definidas por el usuario
Ámbito de variables
var mensaje=“Fuera de la función”;//variable global
function mostrar(){
var mensaje=“Dentro de la función”;//variable local
console.log(mensaje);
}
mostrar();
console.log(mensaje);

var mensaje=“Fuera de la función”;//variable global


function mostrar(){
console.log(mensaje);
}
mostrar();
console.log(mensaje);

function mostrar(){
var mensaje=“Dentro de la función”;//variable local
console.log(mensaje);
}
mostrar();
console.log(mensaje);
Tema 2.2
Funciones
Funciones definidas por el usuario

Parámetros por defecto


Function dividir(numerador,denominador=1){
return (numerador/denominador);
}
console.log(dividir(4));// muestra 4
console.log(dividir(4,2));// muestra 2
console.log(dividir());// muestra NaN

OJO!! La asignación de valores a parámetros se hace de izquierda a derecha:


Function dividir(numerador=1,denominador){
return (numerador/denominador);
}
console.log(dividir(4));// muestra NaN
Tema 2.2
Funciones
Funciones definidas por el usuario
Parámetros variables: con el objeto arguments
function sumaTodo(){
let sum=0;
for(let i=0; i<arguments.length;i++)
sum+=arguments[i];
return sum;
}
X=sumaTodo(10,20,30);
console.log(X);

Con el operador spread(…):


function sumaTodo(…parametros){
let sum=0;
for(let i=0; i<parametros.length;i++)
sum+=parametros[i];
return sum;
}
X=sumaTodo(10,20,30);
console.log(X);
Tema 2.2
Funciones
Tipos de Funciones
Funciones por declaración
Son las vistas hasta ahora

Funciones por expresión


Consiste en almacenar una función en una variable, de forma que al utilizar la
variable se llama a la función
var bienvenido=function sesionIniciada(){
console.log(“bienvenido”);
}
bienvenido(); //llama a la función
sesionIniciada(); //el nombre de la función no se puede usar directamente.
//Produce error

Funciones como objetos Poco usadas

var bienvenido= new Function(“console.log(“bienvenido”);”);


bienvenido();
Tema 2.2
Funciones
Tipos de Funciones

Funciones anónimas
O funciones lamda. En las funciones por expresión el identificador no tiene sentido:
var bienvenido=function(){
console.log(“bienvenido”);
};
bienvenido(); //llama a la función
Tema 2.2
Funciones
Tipos de Funciones
Callbacks
Es una función anónima que puede pasarse como parámetro a otra función
var bienvenido= function(){
return “bienvenido”;
};
var usuario=function (callback){
console.log(callback()+”Javier”);
};
Usuario(bienvenido); //muestra Bienvenido Javier
En ocasiones, se pueden incluir en la invocación a la función los parámetros para
definir la función anónima. Pero esta notación puede ser engorrosa:
var usuario=function (callback){
console.log(callback()+”Javier”);
};
Usuario(
function(){
return “bienvenido”;
}
);
Tema 2.2
Funciones
Tipos de Funciones
Funciones autoejecutables
Son funciones que se ejecutarán tan pronto como el intérprete pase por encima
(function(){
console.log(“Bienvenido”);
})(); //OJO a cómo termina

Podría recibir parámetros


(function(usuario){
console.log(“Bienvenido”+usuario);
})(“Javier”); //OJO a cómo termina

Si se asigna una función autoejecutable a una variable, la función se ejecuta


automáticamente, se utilice o no la variable
var variable=(function(usuario){
return(“Bienvenido”+usuario);
})(“Javier”);
Console.log(variable);
Tema 2.2
Funciones
Tipos de Funciones
Clausuras
MÁS ADELANTE
Tema 2.2
Funciones
Tipos de Funciones
Función Arrow
Se sustituye la palabra function por =>
//ES5 //ES6
function(){ () => {
... ...
} }

Si la función sólo cuenta con una línea de código, no es necesario poner las llaves
//ES5 //ES6
var miFuncion = function(){ let miFuncion() => {
return ‘Hola’ return ‘Hola’
} }
Console.log(miFuncion()) Console.log(miFuncion())

Beneficios de Arrow:
• Solo una línea de código
• sin palabra clave function //ES6
• sin palabra clave return let miFuncion() => ‘Hola’;
• sin llaves {}
Console.log(miFuncion())
Tema 2.2
Funciones
Tipos de Funciones
Función Arrow
Cuando las funciones no tienen ningún parámetro, es obligatorio poner los paréntesis
let miFuncion = () => `Hola`;
console.log(miFuncion());

Pero, cuando tienen parámetros:

• Cuando se tiene sólo un parámetro, no es obligatorio poner los paréntesis


let miFuncion = nombre => `Hola ${nombre}`;
console.log(miFuncion('Rosa'));

• Cuando se tienen más de un parámetro (o ninguno), si es obligatorio poner los


paréntesis
let miFuncion = (nombre,apellido) => `Hola ${nombre} ${apellido}`;
console.log(miFuncion('Rosa','Ropero'));
Tema 2.2
Funciones
Recursividad
Capacidad que tienen las funciones de llamarse a sí mismos.
Los algoritmos que usan este recurso, reducen el la resolución del algoritmo a : caso
base+caso recursivo
function fibo(numero){
if (numero<2)
return 1;
else
return fibo(numero-1)+fibo(numero-2);
}
let elementos=10;
for (let i=0;i<elementos;i++)
console.log(fibo(i));
Tema 2.2
Funciones
Más funcionalidad para las estructuras de datos
Ordenación avanzada de arrays
El método sort, puede recibir una función callback como parámetro, para establecer un
criterio de ordenación.
Se ejecuta esa función con todos los elementos del array, un número indeterminado de
veces, con combinaciones entre ellos, de modo que pueda ponderar el orden, hasta que
queden ordenados completamente sus elementos.
Esa función callback que se ejecuta es invocada con dos parámetros, que toman los
valores de los elementos que se están comparando en cada ocasión. La función devuelve:
• <0: se sitúa el primer elemento en un índice menor que el segundo, es decir, aparece
antes
• =0: no se realizan cambios entre ellos
• >0: se sitúa el segundo en un índice menor que el primero, es decir, aparece antes.
miarray.sort( function(a, b) {
// Hacer lo que se necesite para comparar "a" y "b" y devolver el
resultado de la comparación
});
Tema 2.2
Funciones
Más funcionalidad para las estructuras de datos
Ordenación avanzada de arrays
let mayores1000= [700, 6000, 44, 1031, 55, 60, 8200, 1001, 57, 6];
mayores1000.sort((a, b) => {
if (a <= 1000) {
return 1;
} return -1;
});
//COLOCA AL INICIO LOS ELEMENTOS DEL ARRAY IGUALES O MAYORES A 1000
console.log(mayores1000);

let numbers = [7, 6, 44, 101, 55, 60, 82, 1, 57, 6];
numbers.sort((a, b) => {
if(a == b) {
return 0;
}
if(a < b) {
return -1;
}
return 1;
});
Tema 2.2
Funciones
Más funcionalidad para las estructuras de datos
Ordenación avanzada de arrays
Otro ejemplo:
let vector= [“Casado”,”casa”,”prueba”,”zancos”,”ñanm”];
vector.sort((primera, segunda) => primera.length-segunda.length);

//Ordenación obtenida: [’ñam’,’casa’,’Casado’,’prueba’,’zancos’]


//para ordenar cadenas utilizando un lenguaje podemos usar localeCompare(), que
//recibe como parámetro “es”, que es lenguaje español:

vector.sort((primera,segunda)=>primera.localeCompare(segunda,“es”));

//Ordenacion obtenida: [‘casa’,’Casado’,’ñam’,’prueba’,’zancos’]


Tema 2.2
Funciones
Más funcionalidad para las estructuras de datos
Recorridos con forEach
Permite configurar un recorrido usando una función que recibe dos parámetros, el
primero almacenará automáticamente cada elemento y el segundo (opcional) su índice.
Para recorrer arrays, conjuntos y mapas.
Además, aplica a los elementos undefined el mismo tratamiento que for..in, es decir, no
los tiene en cuenta.
Arrays:
let vector=[12,323,121,56,97];
Vector.forEach(function (elemento, posicion){
console.log(`Posicion ${posicion}: ${elemento}`);
});

Conjuntos:
let conjunto=new Set();
Conjunto.add(12).add(323).add(121).add(56).add(97);
conjunto.forEach(function (elemento){
console.log(`Elemento: ${elemento}`);
});
Tema 2.2
Funciones
Más funcionalidad para las estructuras de datos
Recorridos con forEach
Mapas:
let mapa = new Map();
mapa.set(‘a’,12).set(‘b’,323).set(‘c’,121).set(‘d’,56).set(‘e’,97);
mapa.forEach(function (valor,clave){
console.log(`Clave: ${clave} - Valor: ${valor}`);
});

Recorridos avanzados de arrays


Map: función establecida mediante una callback con unparámetro, que no modifica el
contenido del array, y que devuelve una copia con los cambios aplicados por la función.
Ejemplo: se obtiene un array de precios con IVA, a partir de otro sin IVA:
let sinIVA=[12,30,45,52,68,70];
let conIVA=sinIVA.map(x=>(x*1.21).toFixed(2));//toFixed(2) para formatear el
//resultado a dos decimales
console.log(conIVA);
Tema 2.2
Funciones
Más funcionalidad para las estructuras de datos
Recorridos avanzados de arrays
Filter: función establecida mediante una callback con un parámetro que va recogiendo el
valor de cada elemento del array. En cada iteración comprueba si el elemento cumple
con una condición específica. Finalmente, devuelve un array con los elementos que
cumplen dicha condición.

let playas=[‘Hierbabuena’,’Caños’,’Zahara’,’Carmen’,’Palmar’];
let filtradas=playas.filter(elemento=>elemento.length!=6);
console.log(filtradas);
Tema 2.2
Funciones
EJERCICIOS

1. Escribe una función que, dado un array de números enteros lo ordene, pero además,
sitúe a los pares al principio del array. Ambos grupos, pares e impares, deben estar
ordenados (Ver ordenación avanzada de arrays)
2. Escribe una función que, haciendo uso de filter, genere un array a partir de los
elementos de otro array que contiene cadenas de caracteres, sin los elementos que
contengan tildes.
3. Escribe una función recursiva que indique si la palabra que le pasas como parámetro
es palíndroma (devuelve true) o no (devuelve false).
4. Juego del AHORCADO: crea un programa que, a partir de una palabra establecida por
el programador, vaya pidiendo letras al usuario. A cada pasada, debe mostrar las
letras de la palabra acertadas. Se debe usar funciones.
Tema 2.2
Funciones
EJERCICIOS

5. Juego del BINGO: crea un programa que simule el juego del Bingo. El numero de
filas
cartones que participarán serán siempre cinco. Cada cartón tendrá 8 filas y 4 columnas
columnas
con 20 números del 1 al 90 distribuidos de forma aleatoria (máximo 5 por fila). El
programa termina cuando un cartón alcanza el bingo. En ese momento se debe mostrar
en pantalla cuál de los 5 cartones es el ganador y los números que han salido para
comprobar que el bingo es correcto. Plantea el problema, analízalo con detenimiento y
diseña previamente todas las funciones que vas a necesitar para resolverlo. Luego,
implementa tu solución.

También podría gustarte