Skip to content

Instantly share code, notes, and snippets.

@Joan-mh
Last active June 11, 2025 11:18
Show Gist options
  • Save Joan-mh/63e7e63218d8bcb21a59b15b270a93c2 to your computer and use it in GitHub Desktop.
Save Joan-mh/63e7e63218d8bcb21a59b15b270a93c2 to your computer and use it in GitHub Desktop.
JavaScript bàsic

0. HTML bàsic

<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Demostración de "if" en JS</title>
</head>
<body>
    <div>
        <input type="text" id="input1" placeholder="Escribe algo">
        <button onclick="checkInput('input1')">Check</button>
        <p id="result1"></p>
    </div>

    <div>
        <input type="text" id="input2" placeholder="Escribe algo">
        <button onclick="refreshPage('input2')">Refresh</button>
        <p id="result2"></p>
    </div>

<script>
   
   

1. Generar nombres aleatoris

function getRandomNumber() {
    return Math.floor(Math.random() * 3) + 1;
}
console.log(getRandomNumber());

 //   Math.random() genera un número entre 0 y 1 (sin incluir 1).
 //   Multiplicamos por 3 para obtener un número entre 0 y 2.9999....
 //   Math.floor() redondea hacia abajo, resultando en un número entero entre 0 y 2.
 //   Sumamos 1 para desplazar el rango, obteniendo valores entre 1 y 3.
function getRandomNumber(min, max) {
    return Math.floor(Math.random() * (max - min + 1)) + min;
}

console.log(getRandomNumber(1, 3)); 

2. Llenar un array de números aleatorios

function omplirArray(mida, max){
        
        var array= [];

        for (var x=0; x<mida; x++){
            array.push(Math.floor(Math.random()*max)+ 1);
        }
        
        return array;
    }

3. Comparar dos arrays

 function comprovarJugada(a, b) {
        a.sort();
        b.sort();

        for (var i = 0; i < a.length; i++) {
            if (a[i] !== b[i]) {
                return false; // Si algún elemento es diferente, los arrays no son iguales
            }
        }
        return true; // Si pasó todas las comparaciones, los arrays son iguales
    }

4. Bucle while

El bucle for va bien para recorrer arrays o hacer cosas que tengan un determinado número de vueltas, por ejemplo sumar los números pares del 1 al 100

5. Bucle infinit

Una de las cosas con que nos encontramos al usar el bucle While es que, a diferencia del for, podemos hacer un bucle infinito por error con cierta facilidad:

 sortir = false;
 while(!sortir){
     console.log("portes: " + encerts++);
 }
        if (encerts>10000) sortir = true;

6. Mirem de sortir del bucle

 sortir = false; //1.-Inicialitzo la condició (pot haver-hi més d'una) de sortida
 encerts = 0;    //2.-Inicialitzo les variables que faran càlculs dins el bucle
 while(!sortir){
    console.log("portes: " + encerts++);
    if (encerts>10000) sortir = true;    //3.-Un "if" en el que haurà d'entrar almenys una vegada
 }
        

7. Usos más comunes

El bucle While se ha de utilizar cuando no sabemos, de entrada, el número de repeticiones que hemos de hacer. Por ejemplo para el bucle principal de un juego siempre usaremos While. Para cualquier cosa que dependa de una acción de usuario, del azar u otras cosas que van a pasar a medida que doy vueltas por el bucle.

Vamos a ver un caso un poco indefinido : buscar un elemento en un array. Por supuesto dejaremos de buscar una vez hayamos encontrado el elemento.

Ejemplo con for :

function findNumber(arr, num) {
    for (let i = 0; i < arr.length; i++) {
        if (arr[i] === num) return i; // Salimos en cuanto encontramos el número
    }
    return -1; // Si no lo encontramos, devolvemos -1
}

Ejemplo con While

function findIndex(arr, value) {
    let i = 0;
    while (i < arr.length) {
        if (arr[i] === value) return i;
        i++;
    }
    return -1;
}

Comparando los elementos del bucle podemos ver que es lo mismo

Ejercicios

1. Adivinar un número

let numeroSecreto = Math.floor(Math.random() * 10) + 1;
let intento;

while (intento !== numeroSecreto) {
    intento = parseInt(prompt("Adivina el número (entre 1 y 10):"), 10);
    if (intento < numeroSecreto) {
        console.log("Demasiado bajo. Intenta de nuevo.");
    } else if (intento > numeroSecreto) {
        console.log("Demasiado alto. Intenta de nuevo.");
    }
}

console.log("¡Felicidades! Has adivinado el número.");

2. Cajero automático

Descripción: Simula un cajero donde el usuario tiene un saldo inicial de 100€. Puede retirar dinero hasta que se quede sin saldo o decida salir.

Pista: Usa confirm() para preguntar si quiere seguir sacando dinero.

let saldo = 100;

while (saldo > 0) {
    let retiro = parseFloat(prompt(`Tu saldo es ${saldo}€. ¿Cuánto quieres retirar?`));

    if (isNaN(retiro) || retiro <= 0) {
        console.log("Cantidad no válida.");
        continue;
    }

    if (retiro > saldo) {
        console.log("Saldo insuficiente.");
    } else {
        saldo -= retiro;
        console.log(`Has retirado ${retiro}€. Saldo restante: ${saldo}€`);
    }

    if (saldo > 0 && !confirm("¿Quieres hacer otra operación?")) {
        break;
    }
}

console.log("Gracias por usar nuestro cajero. 😊");

3. Suma hasta que el usuario ponga 0

let suma = 0;
let numero;

while (true) {
    numero = parseFloat(prompt("Ingresa un número (0 para salir):"));
    if (numero === 0) break;
    if (!isNaN(numero)) {
        suma += numero;
        console.log(`Suma actual: ${suma}`);
    } else {
        console.log("Por favor, ingresa un número válido.");
    }
}

console.log(`La suma total es: ${suma}`);

5. Eco, eeeeeeco

El usuario entra palabras y las repite hasta que ponga "salir"

let palabra;

while (palabra !== "salir") {
    palabra = prompt("Dime algo y lo repetiré (escribe 'salir' para terminar):");
    if (palabra !== "salir") console.log(`${palabra}`);
}

console.log("Hasta pronto!");

6. La primitiva

Apostaremos hasta que acertemos la combinación del sorteo

function checkInput(inputId) {  
       var inputValue = document.getElementById(inputId).value;  
       var resultId = "result" + inputId[inputId.length - 1];  
  
       let sorteig;  
       let aposta;  
       let mida = 6;let minim = 1;let maxim = 49;  
  
       //Vamos a ver cuantas apuestas he de hacer para coincidir con el resultado del sorteo.  
        aposta = llenarArraySinRepeticiones(mida, minim, maxim);  
        sorteig = llenarArraySinRepeticiones(mida, minim, maxim);  
  
        let intents = 1;  
        let iguals = comparaArray(sorteig, aposta);  
        while (!iguals){  
            intents++;  
            aposta = llenarArraySinRepeticiones(mida, minim, maxim);  
            iguals = comparaArray(sorteig, aposta);  
        }  
       console.log("sorteig: " + sorteig);  
       console.log("aposta: " + aposta);  
       console.log("intents " + intents);  
  
   }  
  
   function comparaArray(sorteig, aposta){  
       let trobat = true;  
  
       sorteig.sort(); aposta.sort();  
  
       for (let i=0; i<sorteig.length; i++){  
            if (sorteig[i] !== aposta[i]){  
                trobat = false;  
            }  
        }        return trobat;  
   }  
  
   function getRandomNumbers(min, max){  
        return Math.floor(Math.random() * (max-min+1) + min);  
   }  
  
   function omplirArray(mida, min, max){  
        var array= [];  
        for (let x=0; x<mida; x++){  
            array.push(getRandomNumbers(min, max));  
        }  
        return array;  
   }  
  
   function llenarArraySinRepeticiones(mida, min, max){  
       //Devuelve un array de longitud = mida con valores no repetidos. 
       //Seguramente es mejor hacerlo con un set() 
       let array = [];  
       let num;  
       while (array.length < mida){  
           num = getRandomNumbers(min, max);  
           if (findNumber(array, num) === -1){  
               array.push(num);  
           }  
       }       return array;  
   }  
  
   function findNumber(arr, num) {  
    for (let i= 0; i < arr.length; i++){  
        if (arr[i] === num) return i;  
    }  
    return -1;  
   }  
  
</script>

Llenar un array sin repeticiones usando un set

function generarNumerosLoteria() {
    let numeros = new Set(); // Usamos un Set para evitar duplicados

    while (numeros.size < 6) {
        let num = Math.floor(Math.random() * 49) + 1;
        numeros.add(num); // El Set solo añade valores únicos
    }

    return Array.from(numeros); // Convertimos el Set en un array
}

console.log(generarNumerosLoteria());
@raimonizard
Copy link

Bon exemple de creació d'un gist!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment