Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Entonces la función while, siempre requieren un contador ?

[Lógica de programación: Conceptos primordiales]

1 respuesta

Hola Maria, es una buena pregunta, y te felicito por cuestionarte lo que nos enseñan. En cuanto a tu pregunta, no siempre es necesario tener un contador en nuestro ciclo while, recordemos la la función y sintaxis del ciclo while:

Según MDN el ciclo while: Crea un bucle que ejecuta una sentencia especificada mientras cierta condición se evalúe como verdadera. Dicha condición es evaluada antes de ejecutar la sentencia (https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Statements/while) Sintaxis:

while (condicion) {
    sentencia
}

Entonces seguirá el bucle y todas las instrucciones que contenga, mientras que la condición no haya sido cumplicado (siga evaluandose como true o verdadera). Entonces, nosotros podemos tener varias condiciones para usar nuestro ciclo, pero ojo, recuerda tener cuidado con las condiciones que no se pueden lograr, hay que tomar en cuenta que la condición pueda ser cumplida, por ejemplo, nosotros no podemos tener una condición como que una variable que reciba numeros, empiece a recibir letras (char) o cadenas (string), entonces debemos tener cuidado en esa parte, porque nos puede llevar a un bucle infinito y nos va a romper el programa o cerrar directamente.

Ya aclarado esto, te pongo un ejemplo en código donde el usuario debe de adivinar el numero secreto:

var numero = parseInt(prompt("Ingresa un numero del 1-10 e intenta adivinar: ")); //Aqui tenemos una variable numero
        var numeroSecreto = 10; //En este caso nuestro variable numeroSecreto va a ser 10, el cual es el que deben de adivinar

        while (numero != numeroSecreto){ 
        /*En nuestro ciclo while, ponemos la condición de que mientras que el numero ingresado sea diferente 
        al numero secreto, debe de seguir haciendo la misma instrucción hasta que numero sea igual a numeroSecreto */
            numero = parseInt(prompt("Te equivocaste, vuelve a intentar: "));
             //aquí hacemos que el usuario ingrese otro valor para la variable numero
        }
        imprimir("Adivinaste el número"); //Una instruccion de que acertó el numero secreto

Como viste, no utilizamos en ningún momento un contador, por lo que podemos poner cualquier condición en nuestros ciclos while, recordando de no hacer condiciones inalcanzables.

Un ejemplo práctico, imaginemos que queremos ingresar a nuestro correo, la computadora no sabe que eres tú, entonces te pide tu usuario y contraseña, pero oooppss... te equivocaste, el programa no va a llamar a la policia o se cerrará, sino que te va a avisar de que el usuario o la contraseña, están mal, y te va a pedir que ingreses nuevamente. Y ahí vas, lo intentas una, y otra... y otra vez, hasta que recuerdas que tu contraseña no era 1234, sino 4321. Todas las veces que fallaste, no se cerró el programa o dejó de hacer las cosas, sino que tiene un bucle while, con 4 variables, 2 que son los que vas a ingresar (usuario y contrasena) y 2 que tiene en la base de datos o guardadas (usuarioCorrecto y contraseñaCorrecta), y su condición es que sean iguales las 4 para darte paso libre a tu correo. Ahora puedes ver que tan complejo puede ser el uso de un bucle, no necesariamente tenemos que tener un contador, sino que debemos adaptarnos a la situación en la que estamos.

Aquí te dejo el código para que lo pruebes tú:

var usuario = prompt("Ingresa tu nombre de usuario:");
        var contrasena = prompt("Ingresa tu contraseña:");

        var nombreDeUsuarioCorrecto = "Juanito";
        var contrasenaCorrecta = 4321;

        while ((usuario != nombreDeUsuarioCorrecto) || (contrasena !=contrasenaCorrecta)) {
            usuario= prompt("Ingresa tu nombre de usuario nuevamente:");
            contrasena = prompt("Ingresa tu contraseña nuevamente:");
        }
        alert("Bienvenido, " + usuario + "! Has iniciado sesión correctamente.");

PD: el simbolo ||, significa "OR" que es "o", por ejemplo, o es correcto el usuario, o es correcto la contraseña, no podemos poner el simbolo &&, que significa "AND" "y", porque ya no sería una u otra, sino ambas, entonces omitiriamos y crearía problemas.

Suerte y espero hayas entendido mejor como usar el bucle while :)