/* Las funciones son entre otras muchas cosas una manera de encapsular un código que luego podemos reutilizar en cualquier parte */ let tirada = tiradaMoneda(); console.log(tirada); for (let i = 0; i < 10; i++) { console.log(tiradaMoneda()) } /* Sintaxis de las funciones (clásica) function nombreDeLaFuncion([parámetros opcionales]){ // Código a ejecutar // opcionalmente return valor; } */ // Esta función no tiene parámetros y nos devuelve un valor (1 o 2) function tiradaMoneda() { return Math.trunc(Math.random() * 2) + 1; } // Esta función tiene un parámetro y no devuelve nada function saludo(nombre) { console.log("Hola " + nombre); console.log("Bienvenido a la página de las funciones") } // Esta función tiene un parámetro y nos devuelve un valor function doble(numero) { return numero * 2; } // Para usar una función simplemente ponemos su nombre, paréntesis y los parámetros saludo("Ana"); saludo("Pepe"); saludo("Antonio Federico de todos los santos") // Si la función devuelve algo tendremos que hacer con algo con ese valor. Guardarlo, imprimirlo, compararlo let numero = doble(5); // let numero=10 console.log(numero); console.log(doble(8)); //console.log(16) if (doble(7) > 10) { // if (14>10) console.log("El doble de 7 es mayor de 0"); } // Voy a hacer una función que me diga si un número es primo o no // ¿Necesita algún parámetro? Claro, el número // Devuelve algún valor? Sí, un booleano function esPrimo(numero) { for (let i = 2; i < numero; i++) { if (numero % i == 0) { return false; } } return true; } console.log(esPrimo(80)); console.log(esPrimo(101)); // Dime los números primos entre 2 y 20 for(let i=2;i<=20;i++){ if (esPrimo(i)){ console.log(i); } }
Categoría: JavaScript
Solución ejercicios for
/*Tenemos una variable 'nombre' con el valor 'Pep' y otra 'cantidad' con el valor 5. Escribid un código que nos muestre por la consola ese nombre la cantidad de veces que valga cantidad. Probad a poner otros valores. */ let nombre="pep"; let cantidad=5; for(let i=0;i<cantidad;i++){ console.log(nombre); } /* Tenemos una variable 'limite' que vale 50. Haced un código que calcule la suma de todos los números hasta ese límite.*/ let limite=50; let suma=0; for(let i=0;i<=limite;i++){ suma+=i; // suma=suma+i } console.log(suma); /* Como informáticos nos viene muy bien conocer las potencias de 2 (2,4,8,16,32,64,128,256,...) Cread un código que nos muestre las potencias de 2 desde 0 hasta 10. (2**i) */ for(let i=0;i<=10;i++){ console.log(2**i); } for(let i=1;i<=2**10;i*=2){ console.log(i); } /*Cread un programa que nos imprima por consola una cuenta atrás desde 5 (5...4...3...2...1...¡Ya!)*/ for(let i=5;i>0;i--){ console.log(i+"...."); } console.log("¡Ya!"); /* Cread un programa que nos cuente los múltiplos de 7 que hay entre 0 y 100*/ let multiplos7=0; for(let i=0;i<=100;i++){ if (i%7==0){ multiplos7++; } } console.log(multiplos7); multiplos7=0; for(let i=0;i<=100;i+=7){ multiplos7++; } console.log(multiplos7); /* Cread un programa que nos haga la media de los números entre 0 y 100 */ suma=0; let contador=0; for(let i=0;i<=100;i++){ suma+=i; // suma=suma+i contador++; } console.log(suma/contador); /* Cread un programa que lance 20 veces una moneda y nos diga al final cuantas caras y cuantas cruces han salido, */ let caras=0,cruces=0; for(let i=0;i<20;i++){ let tiradaMoneda = Math.trunc(Math.random() * 2) + 1; if (tiradaMoneda==1){ caras++; } else{ cruces++; } } console.log("Caras",caras,"Cruces",cruces);
Ejemplos tiradas dados
// Lo siguiente nos devuelve un número entre 1 y 6, como la tirada de un dado // tiradaDado = Math.trunc(Math.random() * 6) + 1; // Vamos a hacer un programa que tire el dado hasta que salga un 5 // for if y break // while o do while tiradaDado=0; for(let i=0;tiradaDado!=5;i++){ tiradaDado = Math.trunc(Math.random() * 6) + 1; console.log("Tirada "+i+" ha salido "+tiradaDado); } console.log("-".repeat(10)); tiradaDado=0; while(tiradaDado!=5){ tiradaDado = Math.trunc(Math.random() * 6) + 1; console.log("Tirada ha salido "+tiradaDado); } console.log("-".repeat(10)); do{ tiradaDado = Math.trunc(Math.random() * 6) + 1; console.log("Tirada ha salido "+tiradaDado); }while(tiradaDado!=5);
Ejemplos funciones matemáticas
let caramelos = 1000; let nens = 70; console.log(caramelos / nens); // Math.round nos redondea según las normas del redondeo: hasta 0.5 para abajo, de 0.5 para arriba let carameloxnen = Math.round(caramelos / nens); console.log(carameloxnen); // Con el random podemos tener valores aleatorios let aleatorio = Math.random(); console.log(aleatorio); // Trunc nos quita los decimales // Por lo tanto si multiplico el random por un valor, le quito los decimales y le sumo 1 // Obtengo un número al azar entre 1 y ese valor // En este caso simulo la tirada de un dado, que es un valor enter 1 y 6 let tiradaDado = Math.trunc(Math.random() * 6) + 1; console.log(tiradaDado); console.log(Math.sqrt(16)); // Obtengo valores entre 1 y 2 let tiradaMoneda = Math.trunc(Math.random() * 2) + 1; console.log(tiradaMoneda) // Lo hago 10 veces, como si tirara una moneda en 10 ocasiones for (let i = 0; i < 10; i++) { tiradaMoneda = Math.trunc(Math.random() * 2) + 1; // Si es 1 es cara y si es 2 es cruz if (tiradaMoneda==1){ console.log("Ha salido cara"); }else{ console.log("Ha salido cruz"); } }
Ejemplos bucle for
for (let i = 0; i < 5; i++) { console.log(i); } let cadena = ""; for (let i = 0; i < 5; i++) { cadena += "*"; } console.log(cadena) let cuadrado = 8; for (let i = 0; i < cuadrado; i++) { let linea = ""; for (let k = 0; k < cuadrado; k++) { linea += "*"; } console.log(linea); } // Tengo en una variable un número y quiero saber sus divisores // 12 -> 2, 3, 4, 6, 12 // 11 -> 11 // 8 -> 2, 4, 8 // ¿Yo puedo de alguna manera en JS saber si un número es divisor de otro? // Si el resto de la división es 0 numero % divisor==0 if (numero % divisor == 0) let numero = 101; for (let i = 2; i <= numero; i++) { if (numero % i == 0) { console.log(i + " es divisor de " + numero); } } // Quiero saber si un número es primo. Un número es primo si solo es divisible entre el mismo y la unidad let esPrimo=true; for (let i = 2; i < numero; i++) { if (numero % i == 0) { console.log(i + " es divisor de " + numero); // Entro aquí cuando 'i' es divisor del número esPrimo=false; } } if(esPrimo){ console.log(`${numero} es primo`) }else{ console.log(`${numero} NO es primo`) } let divisores=0; for (let i = 2; i <= numero; i++) { if (numero % i == 0) { console.log(i + " es divisor de " + numero); divisores++; } } console.log("El número "+numero+" tiene "+divisores+" divisores"); if(divisores==1){ console.log(`${numero} es primo`) } // dibujar un arbolito let cadena=""; let tamanyo=6; for(let i=0;i<tamanyo;i++){ cadena+="*"; console.log(cadena); } // Escribir los números del 1 al 10 y sus cuadrados for(let i=1;i<=10;i++){ console.log(i,i*i); }
Bucle for con ejemplos
// Sintaxis del for es la siguiente: // for( inicializar variables ; condicion ; modificación ) // Forma 'canónica' for (let i = 0; i < 10; i++) { console.log(i); // 0 1 2 ... 9 } for (let i = 1; i <= 10; i++) { console.log(i); // 1 2 3 ... 10 } // Sumar todos los numeros del 1 al 100 let suma = 0; for (let i = 1; i <= 100; i++) { suma += i; } console.log(suma); // Incremento de dos en dos for (let i = 1; i < 1000; i += 2) { console.log(i); } // Restando 1 a la variable for (let i = 10; i > 0; i--) { console.log(i); } // A partir de aquí esto son experimentos. Se muestran para que veáis que se puede hacer // PERO NO PARA HACERLO // for sin inicialización let j = 0; for (; j < 10; j++) { console.log(j) } // for sin modificación for (let i = 0; i < 10;) { console.log(i); i++; } // for sin condicion for (let i = 0; ; i++) { console.log(i); if (i > 10) { break; // Esto sirve para salir del bucle } } // for pelado j = 0; for (; ;) { console.log(j); j++; if (j > 10) { break; } } // combinaciones de todas las cosas for (let i = 0; i < 20; i++) { if (i % 3 == 0) { console.log(i + " es múltiplo de 3"); } } // Bucles anidados for (let i = 0; i < 5; i++) { for (let k = 0; k < 5; k++) { console.log(i, k); } } for (let i = 0; i < 5; i++) { for (let k = 0; k < 5; k++) { if (i < k) { console.log(i, k); } } } // Un ejemplo // Tabla de multiplicar for (let i = 1; i <= 10; i++) { console.log(i + " x 5 = " + (i * 5)); } for (let i = 1; i <= 10; i++) { console.log(`${i} x 5 = ${(i * 5)}`); } // Todas las tablas de multiplicar con un bucle anidado for (let k = 1; k <= 10; k++) { for (let i = 1; i <= 10; i++) { console.log(`${i} x ${k} = ${(i * k)}`); } }
Soluciones ejercicios if while
//Crear una variable caramelos que valga 1000 y una variable nens que valga 70 y //crear una variable donde almacenar cuantos caramelos les tocaría a cada niño. let caramelos=1000; let nens=70; let carameloxnen=1000/70; console.log(Math.round(carameloxnen)); //Crear una variable cartas que tenga un valor numérico y crear un programa que //nos diga 'correcto' si el número de cartas es 7 o 'incorrecto' si el número de cartas //no es 7 let cartas=0; if (cartas==7) { console.log("Correcto"); } else { console.log("Incorrecto"); } //Crear una variable precio que valga 50 y una variable cantidad que valga 10 y //calcular el total en otra variable. Cread una variable descuento que valga 0 y //si el total es mayor de 1000 que descuento valga 0.1 let precio=50; let cantidad=10; let total=precio*cantidad; let descuento=0; if (total>1000) { descuento=0.1; } console.log(descuento); //Dependiendo del dinero que se haya gastado un cliente en nuestra empresa le //vamos a dar un regalo según la siguiente tabla: //hasta 1000€, un bolígrafo, de 1000 a 5000 un libro y más de 5000 un reloj. Haced el código que nos lo muestre let dineroGastado=900; // Manera 1 if(dineroGastado<1000){ console.log("Un bolígrafo"); } if (dineroGastado>=1000 && dineroGastado<5000){ console.log("Un libro"); } if (dineroGastado>=5000){ console.log("Un reloj"); } // Manera 2 if(dineroGastado<1000){ console.log("Un bolígrafo"); } else if (dineroGastado<5000){ console.log("Un libro"); }else{ console.log("Un reloj"); } //Tenemos una variable elemento y otra tipo. //Si elemento vale 'aire' o 'fuego' y tipo es 'extrovertido' escribimos 'compatible'. //Si elemento vale 'agua' o 'tierra' y tipo es introvertido escribimos 'incompatible' y //si no es ninguna de las dos escribimos 'No se puede determinar' let elemento="agua"; let tipo="introvertido"; // Manera 1 if((elemento=="aire" || elemento=="fuego") && tipo=="extrovertido"){ console.log("Compatible"); } else if(tipo=="introvertido" && (elemento=="agua"||elemento=="tierra")){ console.log("Incompatible") } else{ console.log("No se puede determinar"); } // Manera 2 let mensaje="No se puede determinar"; if((elemento=="aire" || elemento=="fuego") && tipo=="extrovertido"){ mensaje="Compatible"; } if(tipo=="introvertido" && (elemento=="agua"||elemento=="tierra")){ mensaje="Incompatible"; } console.log(mensaje); //Haced un bucle que nos muestre los números del 10 al 1 por consola let i=10; while(i>0){ console.log(i); i--; // i=i-1 i-=1 } //Haced un bucle que pida nombres al usuario hasta que ponga 'fin' let nombre; do{ nombre=prompt("Dame un nombre","fin"); }while(nombre!="fin");
Condiciones complejas
/* Las condiciones del if pueden combinar varias condiciones Se pueden combinar con los conectores lógicos: AND, OR, NOT AND: Las dos condiciones tienen que ser ciertas Ejemplo: Si tengo dinero y soy mayor de edad entro a la disco OR: Alguna de las dos condiciones tiene que ser cierta Ejemplo: Si llueve o no tengo el coche no voy a la playa NOT: Es cierta cuando la condición es falsa y viceversa Si tengo zapatillas no entro en la discoteca */ /* Si el departamento es marketing y el empleado tiene una antigüedad de 10 años o más tiene un bono de 100 euros Si es otro departamento y el empleado tiene una antiguedad de 15 años o más tiene un bono de 75 € */ let departamento = "contabilidad"; let antiguedad = 15; let bono = 0; if (departamento == "marketing" && antiguedad >= 10) { bono = 100; } if (departamento != "marketing" && antiguedad >= 15) { bono = 75; } /* En una atracción del tibidabo se puede subir si la altura es mayor o igual de 130 cm o la edad es mayor o igual a 12 años */ let altura = 120; let edad = 13; if (altura >= 130 || edad >= 12) { console.log("Puedes subir a la atracción"); } // En la disco no se entra con zapatillas let zapatillas = true; if (!zapatillas) { console.log("Puedes entrar"); } /* Si la ciudad es Barcelona o Tarragona y el importe es mayor de 5000 o si es otra ciudad y el importe es mayor de 10000 Gastos de envío gratis */ let ciudad = "Logroño"; let importe = 9000; if (importe > 10000 || ((ciudad == "Barcelona" || ciudad == "Tarragona") && importe > 5000)) { console.log("Gastos de envío gratis"); } /* En nuestra empresa los gastos de envío dependen del importe del producto de acuerdo a la siguiente tabla: 0-1000: 20 1000-2000: 15 2000-4000: 10 4000-6000:5 >6000: 0 */ let gastos = 0; if (importe < 1000) { gastos = 20; } else if (importe < 2000) { gastos = 15; } else if (importe < 4000) { gastos = 10; } else if (importe < 6000) { gastos = 5; } else { gastos = 0; }
Bucle while JS
/* Bucle se ejecuta MIENTRAS se cumpla la condición */ let i=0; while(i<10){ i++; console.log(i); // 1 2 3 4 5 6 7 8 9 10 } i=100; while(i>0){ console.log(i); // 100 90 80 70 60 50 40 30 20 10 i-=10; // Restar 10 a i } i=1; let suma=0; while(i<=10){ suma+=i; i++; } console.log(suma); // 55 (la suma de los 10 primeros números) // Suma los números que nos da el usuario hasta que introduce 0 let numero=0; suma=0; do{ numero=Number(prompt("Introduce un número (0 para salir)",0)); suma+=numero; } while(numero!=0); console.log(suma) /* Ejercicio ejemplo: sumar los números pares desde 0 hasta 100 */ // Apunnto los pares y después los sumo let n=2; suma=0; while(n<=100){ suma=suma+n; n=n+2; } console.log(suma);
Ifs Anidados
let ciudad="Barcelona"; let importe=5000; /* Si la ciudad es Barcelona y el importe es <3000 los gastos de envío son 10 Si es mayor o igual de 3000 son 5 En cualquier otra ciudad si el importe es menor de 4000 los gastos son 20 Y si es mayor o igual de 4000 son 10 */ let gastosEnvio=0; if (ciudad=="Barcelona"){ if (importe<3000){ gastosEnvio=10; }else{ gastosEnvio=5; } }else{ if (importe<4000){ gastosEnvio=20; }else{ gastosEnvio=10; } } /* Si el departamento es marketing y el empleado tiene una antigüedad de 10 años o más tiene un bono de 100 euros Si es otro departamento y el empleado tiene una antiguedad de 15 años o más tiene un bono de 75 € */ let departamento="marketing"; let antiguedad=15; let bono=0; if (departamento=="marketing"){ if(antiguedad>=10){ bono=100; } }else{ if(antiguedad>=15){ bono=75; } }