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)}`);
    }
}

Ámbito (scope) de las variables

//Esto está mal
let importe=1000;
if(importe>500){
    let descuento=.1;
    console.log(descuento);
}
console.log(importe*descuento);

// Esto está bien

let importe=1000;
let descuento=0;
if(importe>500){
    descuento=.1;
}
console.log(importe*descuento);

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;
    }
}


Soluciones ejercicios

Crear una variable para almacenar el nombre de un producto y asignarle el valor ‘Tuerca’, otra para la referencia y asignar el valor ‘RF445’ y mostrad los valores por la consola.
Crear una variable para almacenar la cantidad de tuercas que tenemos y asignarle el valor 125. Crear otra variable para almacenar el precio que es 0.1. Calculad el total e imprimidlo.
Cread dos variables a y b, poned los valores que queráis y con un if imprimir cual es el valor mayor.
Modificad lo anterior para pedir los valores al usuario
Pedid el nombre y la edad al usuario y si es mayor de edad escribid ‘Bienvenido ‘+nombre y si es menor escribid Nombre+’ No puedes pasar’

console.log("Ejercicios JS");

let nombreProducto="Tuerca";
let referencia="RF445";

console.log(nombreProducto,referencia);

let cantidad=125;
let precio=0.1;
let total=cantidad*precio;
console.log("Total: "+total);

let a=15;
let b=88;

if (a>b){
    console.log("A es mayor que B. A: "+a+" y b: "+b);
}
if (b>a){
    console.log("B es mayor que A. A: "+a+" y b: "+b);
}

a=Number(prompt("Introduce un número",0));
b=Number(prompt("Introduce otro número",0));

if (a>b){
    console.log("A es mayor que B. A: "+a+" y b: "+b);
}
if (b>a){
    console.log("B es mayor que A. A: "+a+" y b: "+b);
}

let nombre=prompt("Dime tu nombre","Anónimo");
let edad=Number(prompt("Dime tu edad",18));

if (edad>=18){
    console.log("Bienvenido: "+nombre);
}else{
    console.log(nombre+" no puedes entrar");
}

Interaccionar con el usuario

// Lanzar un mensaje al usuario
alert("Hola");

// Pedir una confirmación al usuario

let hasZapatillas=confirm("¿LLevas zapatillas");
console.log(hasZapatillas);
if (hasZapatillas){
    alert("No puedes entrar con zapatillas");
}

// Pedir un valor al usuario

let nombre=prompt("¿Cómo te llamas?");
console.log(nombre);

// Valor por defecto
nombre=prompt("¿Cómo te llamas?","Anonimo");
console.log(nombre);

// Si pedimos números hay que convertir
let precio=Number(prompt("Precio por unidad",20));
console.log(precio);
console.log(precio+100);