Para el ciclo while no conocemos la cantidad de veces que la estructura repetirá una o varias instrucciones. Aunque también se puede acoplar para que realice un determinado número de repeticiones.
Por ejemplo, si queremos que un usuario ingrese un valor mayor a 0, no sabremos cuántas veces se equivocará. También, si queremos que un programa se ejecute hasta que el usuario ingrese una opción para salir.
Cómo utilizar el ciclo while
La estructura del ciclo while es la siguiente:
while(condición){// Bloque de código// Cambiar la condición para salir del bucle}
En este caso la condición es una expresión lógica a evaluar, si es verdadero repite el bloque de código, si es falso el ciclo termina. Debido a esto, necesitas cambiar la variable de la condición, para que no existe un bucle infinito.
Generación de números con el bucle while
Por ejemplo, generemos los números del 1 al 10, ahora con el bucle while.
La estructura es la siguiente:
var numero =1while( numero <=10){console.log(numero) numero++}
Esto se leería como: "Mientras (while) la variable numero sea menor o igual que 10 (numero <= 10) ejecuta una o varias instrucciones (console.log); finalmente, aumenta la variable en uno (numero++) para que no exista un bucle infinito".
Control de variables con el bucle while
Otro ejemplo, tenemos un programa únicamente para estudiantes, queremos controlar que un usuario ingrese una edad menor de 18 (y mayor que 0 porque no existe edades negativas). Entonces utilizamos while debido a que no conocemos cuántas veces se equivocará el usuario.
Ejecuta el siguiente código en la terminal de tu navegador, e intenta ingresar un valor incorrecto y observa lo que sucede. Se utiliza la condición contraria a lo que queremos, porque es lo que controlaremos, al cambiar la variable edad evitamos el ciclo infinito.
var edad =Number(prompt("Ingrese un valor: "))while(edad >18|| edad <=0){ edad =Number(prompt("Ingrese un valor correcto: "))}console.log("Gracias por ingresar al programa")
Contribución creada por Andrés Guano (Platzi Contributor).
Ambos ciclos se ocupan el for y el while. Con for podemos definir un fin de intentos y con el while mientras se cumpla que lo siga haciendo. Es como decir en while sería, seguir cocinando el pollo mientras siga crudo, realmente no sabemos cuando estará cocinado. Si usáramos for podría quedarnos crudo o muy quemado, a menos que fueras un super experto.
Muy buena metáfora
Muy creativo, excelente!
CUANDO EL PROFESOR UTILIZA LAS COMILLAS INVERTIDAS LUEGO EL SIGNO $ Y { } LLAVES.... ESO SE LLAMA INTERPOLAR VARIABLES!!! QUE RARO QUE SE LE HAYA PASADO AL PROFESOR
Gracias por el dato, en el teclado en espanol, que comando se utiliza para hacer uso de las comillas invertidas?
@Rovilchis Usa ALTGR + la tecla donde tienes el }. Así debería salirte :)
aqui el código de la clase con ejemplo tambien del do-while
var estudiantes =["Maria","Sergio","Rosa","Daniel"];functionsaludarEstudiante(estudiante){console.log(`Hola ${estudiante}`);}var i =0;//do-whiledo{saludarEstudiante(estudiantes[i]); i++;}while(i < estudiantes.length)//whilewhile(estudiantes.length>0){var estudiante = estudiantes.shift();saludarEstudiante(estudiante);}
📌Hola, en contre esta definicion de while que me ayudo a entender mejor
📌La traducción de while en español es mientras. Por lo tanto, la sentencia while se puede entender como "mientras se cumpla la condición, ejecuta el siguiente bloque de código entre llaves.
Gracias
Súperr!
El bucle while recorre un bloque de código siempre que una condición especificada sea verdadera.
Sintaxis
while(condition){// code block to be executed}
Utilice el While para continuar para llamar el juego de piedra, papel o tijera hasta que el usuario indique lo contrario.
var opciones =['Piedra','Papel','Tijera'];var maquina = opciones[parseInt(Math.random()*3)];var usuario =""var jugar =1;functionValidar(usuario){switch(usuario){case opciones[0]:returnJuego(usuario, maquina)break;case opciones[1]:returnJuego(usuario, maquina)break;case opciones[2]:returnJuego(usuario, maquina)break;default:console.log('El valor escrito no es valido.')console.log('Intentalo otra vez.')break;}}functionJuego(opcion1, opcion2){if(opcion1 === opcion2){return'Es un empate'}elseif(opcion1 ==='Piedra'&& opcion2 ==='Tijera'){return`Ganasate: ${opcion1} le gana a ${opcion2}`}elseif(opcion1 ==='Papel'&& opcion2 ==='Piedra'){return`Ganasate: ${opcion1} le gana a ${opcion2}`}elseif(opcion1 ==='Tijera'&& opcion2 ==='Papel'){return`Ganasate: ${opcion1} le gana a ${opcion2}`}else{return`Perdiste: ${opcion2} le gana a ${opcion1}`}}while(jugar ===1){ usuario =prompt('Para jugar ingresa: Piedra, Papel o Tijera: ')console.log(`La maquina escogio ${maquina}`)console.log(`Tu escogiste ${usuario}`)console.log(Validar(usuario)) jugar =parseInt(prompt('Para jugar otra vez escribe 1 de lo contrario preciona 0: '))}
buena implementacion :D
Buen aporte.
Tengo entendido que el loop "while" sirve mejor para ciclos en los cuales yo no controlo cuantas veces itera. Por ejemplo, el boton de reiniciar algun juego cuando se me acaban las vidas. Las veces que va a iterar el ciclo depende del usuario y en ese tipo de casos funciona mejor "while" que "for".
Es así, de hecho, si lo pensas al reves, en el caso de juego, no podriamos hacerlo con el for porque no tenemos el numero exacto de veces que hay que repetirlo. Por lo tanto, no es que "sirve mejor" sino que esta pensado para esos casos donde no podes cuantificar la cantidad de iteraciones que necesitas hacer en el ciclo.
Saludos.
A menos que sea un juego que tenga un numero finito de vidas, como por ejemplo el super mario bros de la vieja escuela. Se te acaban las vidas y a empezar desde el principio :D
Bien
cool
Amigos, aquí comparto mis anotaciones de la clase:
.
.
Espero que sea de utilidad.
(⌐■_■)
que joya, muchas gracias
Explicación del ejercicio:
Gracias, se entiende mucho mejor que la clase del profesor en si
En donde hiciste tu apunte?
Simple pero bueno :'v
var i =0;
while(i<=10){
document.write( i+ "<br>");
i++;
}
toda practica suma!
Muy bien, si no quieres usar el <br> que está obsoleto puedes encerrar la variable i en la etiqueta <p> para que logres dar el salto de línea.
document.write(`<p> ${ i } </p>`);
No olvides que es entre comillas francesas. ALT + 96
Que hace "shift" para hacer que la variable "estudiante" muestre solo 1 estudiante a la vez y no todos los elementos del array?
El método shift() sirve para sacar el primer elemento de un array y eso mismo te retorna. Es decir si tenemos:
var personas =['Ana','Juan','Pedro']var persona = personas.shift()/*
persona ahora vale 'Ana'
personas ya no tendrá a 'Ana' ahora sólo será ['Juan', 'Pedro']
*/
¡Hola jose-ponceleon !.
El método shift() elimina el elemento en el índice cero y desplaza los valores consecutivos hacia abajo, devolviendo el valor eliminado
¡Nunca pares de aprender! 🦄
También existe otro ciclo llamado do while que hace lo mismo que el while solo que la primera vez entra al ciclo sin evaluar la condición, es decir al menos ejecuta el bloque una vez, se escribe asi:
do{//bloque de codigo }while(i <10)
Esto es útil en los casos que sabemos que la primera vez si ocurra el bloque.
Espero que les sirva :)
Recomiendo la extensión Quokka.js para ver el resultado ahí mismo en el editor de código.
Otra opción para ver el resultado mientras se va escribiendo el código es la aplicación RunJS se puede descargar en windows, mac y linux.
No había escuchado de esta extensión, la probaré 👌
gracias me re sirve para practicar
ForEach esta pensado para el ejercicio que hemos estado haciendo
El método forEach() ejecuta la función indicada una vez por cada elemento del array, aquí el ejemplo:
El do while: actúa y luego piensa
El while: piensa y luego actúa
Muy buena analogia
Se debe tener especial cuidado con el ciclo while(): si la condición siempre es verdadera, se genera un ciclo infinito, produciendo algunas veces (según las acciones dentro del while) que el navegador se bloquee (por saturación de memoria) , obligando a cerrar la pestaña/navegador a la fuerza.
Menos mal que estamos trabajando con el navegador. Cuando me pasaba eso con lenguajes como Pascal. Uffff
Hay algo que no logro entender aún y lo he consultado en diferentes sitios para poder digerir bien la información. En una función ¿qué son los parámetros y en que momento se usan?
los parametros son los valores que recibe la funcion cuando es llamada. La funcion trabaja con estos valores.
Al declarar la funcion se indican los parametros de la misma:
//La funcion suma, recibe 2 parametros//num1 y num2//la funcion devuelve la suma de los valores num1 y num2functionsuma(num1, num2){return num1 + num2
}
Al llamar la funcion, se le indican los parametros a usar.
//llamamos a la funcion suma con 2 y 3 como parametros//nos devulve 5 como resultadosuma(2,3)
En palabras muy sencillas. Serían aquellos elementos que necesita la función para que pueda hacer su tarea.
🤔 La condición en un ciclo while define el limite del mismo.
Yes!
Este ciclo consiste que mientras sea verdad se ejecutara el loop en este caso va a validar si estudiantes es mayor a cero y como en este ejemplo tenemos 4 elementos y eso se lo hacemos saber con .lenght que me dice su longitud, aqui lo que va a hacer es que en la validacion va a restarle al array el primer valor del index con el metodo .shift entonces en cada ciclo va a restarle 1 entonces hasta que sea igual a 0 dejara de cumplirse y terminara mi loop.