3
respuestas

Consulta!

Buenas noches a todos. En el siguiente código la variable var encontrados = false o var encontrados = true me genera confusión. Alguien podría explicarme bien su utilidad para ver si lo estoy entendiendo correctamente?

var secretos = [3,5,7,9];

    var input = document.querySelector("input"); 

    input.focus(); 

    function verificar() { 

        var encontrado = false;

        for (var posicion = 0; posicion < 4; posicion++) {

            if (parseInt (input.value) == secretos[posicion]) {

                alert("Acertaste!");
                encontrado = true;
                break;
            }
        }

        if (encontrado == false) {
            alert("Fallaste!");
        }    

        input.value = ""; 
        input.focus();
    }
3 respuestas

La variable encontrado lo que hace en el programa es poder darte la posibilidad de que una vez acertado uno de los numeros secretos o no, el programa solo emita un unico mensaje si acerto o fallo que es lo que coloca esta variable. Porque si ya acertaste el numero seguro que los demas seran fallas. EJ: si adivinaste el 5, (el 3 ya tiro falla antes del 5), con seguridad que 7 y 9 tambien tiraran falla.

Ahora bien, arranca con valor false. Si el usuario acierta, dentro del if que esta dentro del for, encontrado pasara a valer true. Entonces cuando salga de alli y continue con el if siguiente que corroborara si hubo falla, la condicion para que entre alli debera ser false, cosa que en nuestro ya ha cambiado y no emitira ningun otro alerta salvo de el acierto. Ahora que ocurre si no acerto? encontrado seguira siendo false y cuando llegue a verificar si hubo falla encontrado valdra false por lo tanto ingresara en el if y emititira un mensaje de alerta con fallaste. Encontrado siempre tendra valor false, solo salvo que el usuario haya adivinado...... en cuyo caso sera true. Siempre acerto o fallo, un solo mensaje aunque el array tenga cuatro elementos y se allan chequeado todos.

PD: el comando break es lo que te debe confundir un poco, porque fue colocado despues de la variable encontrado. Pues esta lo que hace es que una vez se adivino un numero automaticamente deje de seguir recorriendo el array. Como decia el profe, al ser solo 4 elementos no se nota el retraso pero si son un millon si no lo cortamos de alguna manera una vez que encuentra lo que le pedimos se perderia tiempo ...... en esperar a que finalice la ejecucion del ciclo for. Espero alla sido clara mi explicacion. Exitos!!! y a seguir estudiando.

Gracias por la explicación Cristian...me costaba entender un poco la función que tenia pero ahora me quedo claro. Al acertar un número cambia el valor de flase a true y eso me condiciona que NO ingrese el siguiente if que verifica de hay fallas. El break; si entendí bien su fución pero el var encontrados = false/true me tenia perdido jajaj Gracias de nuevo. Saludos!

Me alegra haber podido esclarecer tu duda.

# Si este post te ayudó, por favor, marca como solucionado ✓. Continúa programando.......