function Empleado(nombre, sueldo) { this.nombre = nombre; this.sueldo = sueldo; this.empresa = "Netmind"; this.departamento = ""; this.sueldoNeto = function () { return this.sueldo * (1-this.irpf()); }; this.irpf = function () { if (this.sueldo < 1500) { return .2; } if (this.sueldo >= 1500 && this.sueldo < 3000) { return .3; } return .4; }; this.neto=function(){ var sueldo=this.sueldo; var irpf=this.irpf(); var neto=sueldo-sueldo*irpf; return neto; }; } function Empresa(nombre) { this.nombre = nombre; this.jefe = new Empleado("Jefe", 3000); this.empleados = []; for (var i = 0; i < 10; i++) { this.empleados.push(new Empleado("Empleado" + i, 1400 + i * 100)); } this.comerciales = []; for (var i = 0; i < 3; i++) { var e = new Empleado("Comercial" + i, 1400 + i * 100); e.departamento = "Comercial"; this.comerciales.push(e); } } function Holding(emp1, emp2) { this.empresas = [emp1, emp2]; } var netmind = new Empresa("Netmind"); var activity = new Empresa("Activity"); var conglomerado = new Holding(netmind, activity); var ana = new Empleado("Ana Pérez", 1500); var juan = new Empleado("Juan Pi", 1400); var empleados = []; for (var i = 0; i < 10; i++) { empleados.push(new Empleado("Empleado" + i, 1400 + i * 100)); } String.prototype.oracion = function () { return this.valueOf().charAt(0).toUpperCase() + this.valueOf().slice(1).toLowerCase(); } function Producto(nombre,precio){ this.nombre=nombre; this.precio=precio; this.iva=.21; this.referencia=("0000" + Math.floor(Math.random()*10000)).slice(-4); this.pvp=function(){ return this.precio*(1+this.iva); } this.pvpConDescuento=function(descuento){ return this.pvp()*(1-descuento/100); } } var tornillo = new Producto("tornillo",100);
Mes: enero 2018
Ejemplos objetos
var pepe = { firstName:"John", lastName:"Doe", age:50, eyeColor:"blue", completo:function(){ return this.firstName+" "+this.lastName; }, mayorEdad:function(){ return this.age>=18; } }; function Person(first, last, age, eye) { this.firstName = first; this.lastName = last; this.age = age; this.eyeColor = eye; } var ana=new Person("Ana","Pi",40,"azul") var juan=new Person("Juan","Perez",50,"marrón") for (var p in pepe){ if (typeof pepe[p]!=="function"){ console.log(p+" - "+pepe[p]); } else{ console.log(p+" - "+pepe[p]()); } } function normal(){ return "Hola"; } var noNormal=function(){ return "adios"; } noNormal=function(){ return "funcion nueva"; }
Ejemplos funciones
function tipoOracion(cadena) { var primera = cadena.charAt(0); var resto = cadena.slice(1); return primera.toUpperCase() + resto.toLowerCase(); } function tipoTitulo(cadena) { var palabras = cadena.split(" "); for (var i = 0; i < palabras.length; i++) { palabras[i] = tipoOracion(palabras[i]); } return palabras.join(" "); } function tipoTitulo2(cadena) { var palabras = cadena.split(" "); var res = ""; for (var i = 0; i < palabras.length; i++) { res += tipoOracion(palabras[i]) + " "; } return res.trim(); } function tipoTitulo3(cadena) { var res = cadena.charAt(0).toUpperCase(); for (var i = 1; i < cadena.length; i++) { if (cadena.charAt(i - 1) === " ") { res += cadena.charAt(i).toUpperCase(); } else { res += cadena.charAt(i).toLowerCase(); } } return res; } function tipoHipster(cadena) { var res = ""; for (var i = 0; i < cadena.length; i++) { var letra = cadena.charAt(i); if (esVocal(letra)) { res += letra.toUpperCase(); } else { res += letra.toLowerCase(); } } return res; } function tipoHipster2(cadena) { var letras = cadena.split(""); for (var i = 0; i < letras.length; i++) { if (esVocal(letras[i])) { letras[i] = letras[i].toUpperCase(); } else { letras[i] = letras[i].toLowerCase(); } } return letras.join(''); } function esVocal(letra) { var vocales = "aeiouáéíóúàèìòùü"; return vocales.indexOf(letra.toLowerCase()) !== -1; } function eliminarVocales(cadena) { var res = ""; for (var i = 0; i < cadena.length; i++) { var letra = cadena.charAt(i); if (!esVocal(letra)) { res += letra; } } return res; } function eliminarVocalesReg(cadena) { return cadena.replace(/[aeiouáéíóúàèìòùü]/gi, ""); } function palabraMasLarga(cadena) { var palabras = cadena.split(" "); var larga = ""; for (var i = 0; i < palabras.length; i++) { if (palabras[i].length > larga.length) { larga = palabras[i]; } } return larga; } function palabraMasLargaSort(cadena) { var palabras = cadena.split(" "); palabras.sort(function (a, b) { return b.length - a.length; }); return palabras[0]; } function trimTotal(cadena) { cadena = cadena.trim(); var res = cadena.charAt(0); for (var i = 1; i < cadena.length; i++) { if (!(cadena.charAt(i) === " " && cadena.charAt(i - 1) === " ")) { res += cadena.charAt(i); } } return res; } function trimTotalArr(cadena) { var palabras = cadena.split(" "); for (var i = palabras.length - 1; i >= 0; i--) { if (palabras[i] === "") { palabras.splice(i, 1); } } return palabras.join(" "); } function trimTotalReplace(cadena) { while (cadena.indexOf(" ") !== -1) { cadena = cadena.replace(/ /g, " "); } return cadena.trim(); } function trimTotalReg(cadena) { cadena = cadena.replace(/[ ]+/g, " "); return cadena.trim(); }
Ejercicios javascript
Ejemplos funciones cadenas
function tipoOracion(cadena) { var primera = cadena.charAt(0); var resto = cadena.slice(1); return primera.toUpperCase() + resto.toLowerCase(); } function tipoTitulo(cadena) { var palabras = cadena.split(" "); for (var i = 0; i < palabras.length; i++) { palabras[i] = tipoOracion(palabras[i]); } return palabras.join(" "); } function tipoTitulo2(cadena) { var palabras = cadena.split(" "); var res = ""; for (var i = 0; i < palabras.length; i++) { res += tipoOracion(palabras[i]) + " "; } return res.trim(); } function tipoTitulo3(cadena) { var res = cadena.charAt(0).toUpperCase(); for (var i = 1; i < cadena.length; i++) { if (cadena.charAt(i - 1) === " ") { res += cadena.charAt(i).toUpperCase(); } else { res += cadena.charAt(i).toLowerCase(); } } return res; } function tipoHipster(cadena){ var res=""; for(var i=0;i<cadena.length;i++){ var letra=cadena.charAt(i); if (esVocal(letra)){ res+=letra.toUpperCase(); } else{ res+=letra.toLowerCase(); } } return res; } function tipoHipster2(cadena){ var letras=cadena.split(""); for(var i=0;i<letras.length;i++){ if (esVocal(letras[i])){ letras[i]=letras[i].toUpperCase(); } else{ letras[i]=letras[i].toLowerCase(); } } return letras.join(''); } function esVocal(letra){ var vocales="aeiouáéíóúàèìòùü"; return vocales.indexOf(letra.toLowerCase())!==-1; }
Resolución de problemas
Pensar
¿Qué es lo que me piden? ¿Cómo lo resolvería? ¿Qué estrategias tengo para acercarme al problema? ¿Qué camino puedo recorrer para llegar a la meta?
Algoritmo
Una vez tengo una estrategia debo especificarla en un algoritmo. Son los pasos mecánicos, bien definidos, que me llevarán a la resolución de problemas.
Implementación
Traducir el algoritmo abstracto al lenguaje que estoy utilizando. Dependiendo de las características de éste y de nuestros conocimientos el programa puede ser más sencillo o más complicado.
Divide y vencerás
Todo problema puede dividirse en problemas más pequeños. Siempre es una buena estrategia definir las partes del problema mayor y enfrentarse a retos más sencillos.
Primero lo más sencillo
Hagamos en primer lugar los requisitos más sencillos y que no nos causen problemas, nos irán haciendo una estructura que nos facilitará la resolución global.
Soluciones parciales
Una buena estrategia es ir probando diferentes soluciones que resuelven parcialmente el problema y nos van acercando a la solución final.
Internet
Siempre se puede usar como fuente de inspiración, pero ¡cuidado! sabiendo qué buscamos y cómo utilizarlo.
Cesta compra 2.0
<input type="text" id="producto" > <input type="button" id="compra" value="Comprar"> <input type="button" id="ordenar" value="Ordenar"> <input type="button" id="ordenar2" value="Ordenar desc"> <div id="cesta"></div>
var cesta = []; document.getElementById("compra").addEventListener("click", comprar); document.getElementById("ordenar").addEventListener("click", function () { ordenar(1); }); document.getElementById("ordenar2").addEventListener("click", function () { ordenar(2); }); document.getElementById("producto").addEventListener("keypress", tecla); function comprar() { var producto = document.getElementById('producto').value; if (producto.trim() !== "" && cesta.indexOf(producto) === -1) { cesta.push(producto); document.getElementById('producto').value = ""; mostrar(); } else { alert("Producto incorrecto o repetido"); } } function tecla(event) { if (event.keyCode === 13 || event.key === "+") { comprar(); event.preventDefault(); } if (event.key >= "0" && event.key <= "9") { event.preventDefault(); } } function ordenar(tipo) { cesta.sort(); if (tipo === 2) { cesta.reverse(); } mostrar(); } function mostrar() { var resultado = document.getElementById('cesta'); resultado.innerHTML = ""; for (var i = 0; i < cesta.length; i++) { var parrafo = document.createElement("p"); parrafo.innerHTML = i + ".- " + cesta[i]; var boton = document.createElement("button"); boton.innerHTML = "X"; boton.id=i; boton.addEventListener("click", function () { borrar(this.id); }) parrafo.appendChild(boton); resultado.appendChild(parrafo); } } function borrar(i) { cesta.splice(i, 1); mostrar(); }
Ejercicios fechas
Mes:<input type="text" id="mes"> Año:<input type="text" id="anyo"> Festivos:<input type="text" id="festivos"> <input type="button" onclick="calcular()" value="Calcular"> <input type="button" onclick="total()" value="Total">
function calcular() { //Obtener los valores de las cajas de texto var mes = document.getElementById('mes').value; var anyo = document.getElementById('anyo').value; //Poner el resultado en el input festivos document.getElementById('festivos').value = festivos(mes, anyo); } //Nos devuelve los años con más festivos function maximoAnual(anyoDesde, anyoHasta) { var anyo = []; var maximo = 0; for (var i = anyoDesde; i <= anyoHasta; i++) { var t = total(i); if (t === maximo) { anyo.push(i); } if (t > maximo) { anyo = [i]; maximo = t; } } return [anyo, maximo]; } //nos devuelve los meses con más festivos de un año function mesesFestivos(anyo) { var mes = []; var maximo = 0; for (var i = 1; i <= 12; i++) { var t = festivos(i,anyo); if (t === maximo) { mes.push(i); } if (t > maximo) { mes = [i]; maximo = t; } } return [mes, maximo]; } function total(anyo) { var total = 0; for (var i = 1; i <= 12; i++) { total += festivos(i, anyo); } //Poner el resultado en el input festivos return total; } function festivos(mes, anyo) { var cont = 0; var diasMes = daysInMonth(mes, anyo); //Recorro el mes para buscar sábados y domingos for (var i = 1; i <= diasMes; i++) { var fecha = new Date(anyo, mes - 1, i); //Si es sábado o domingo sumar uno al contador if (fecha.getDay() === 6 || fecha.getDay() === 0) { cont++; } } return cont; } function daysInMonth(month, year) { return new Date(year, month, 0).getDate(); }
Cesta de la compra
<input type="text" id="producto" onkeyup="tecla(event)"> <input type="button" onclick="comprar()" id="compra" value="Comprar"> <input type="button" onclick="ordenar()" id="ordenar" value="Ordenar"> <div id="cesta"></div>
var cesta = []; function comprar() { var producto = document.getElementById('producto').value; if (producto.trim() !== "" && cesta.indexOf(producto) === -1) { cesta.push(producto); mostrar(); } else { alert("Producto incorrecto o repetido"); } } function tecla(event){ if (event.keyCode===13){ comprar(); document.getElementById('producto').value=""; } } function ordenar() { cesta.sort(); mostrar(); } function mostrar() { var resultado = document.getElementById('cesta'); resultado.innerHTML = ""; for (var i = 0; i < cesta.length; i++) { resultado.innerHTML += "<p>" + i + ".- " + cesta[i] + " <input type='button' value='X' onclick='borrar(" + i + ")'>" + "</p>"; } } function borrar(i) { cesta.splice(i, 1); mostrar(); }