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; }
Autor: Juan Pablo Fuentes
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(); }
Al-Juarismi
Cesta de la compra
<input type="text" id="producto"> <input type="button" onclick="comprar()" id="compra" value="Comprar"> <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(cesta); } else { alert("Producto incorrecto o repetido"); } } function mostrar(cesta) { var resultado = document.getElementById('cesta'); resultado.innerHTML = ""; for (var i = 0; i < cesta.length; i++) { resultado.innerHTML += "<p>" + i + ".- " + cesta[i] + "</p>"; } }
JavaScript fechas y otros
function sumar() { var num1 = document.getElementById('num1').value; var num2 = document.getElementById('num2').value; var num3 = document.getElementById('num3'); num3.value = Number(num1) + Number(num2); num3.value = suma(num1, num2); } var fecha = new Date(); var resultado = document.getElementById('resultado'); if (fecha.getDay() === 5) { resultado.innerHTML = "¡por fin es viernes!!!!"; } else { resultado.innerHTML = "Hoy NO es viernes :("; } var notas = [5, 4, 8, 9, 10]; //¿Cómo obtengo la suma? var suma=0; for (var i = 0; i < notas.length; i++) { suma+=notas[i]; } console.log(suma/notas.length); function suma(num1, num2) { return Number(num1) + Number(num2); }