No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Loops: While

21/30
Recursos

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 = 1

while ( 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).

Aportes 341

Preguntas 66

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

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.

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

aqui el código de la clase con ejemplo tambien del do-while

var estudiantes = ["Maria", "Sergio", "Rosa", "Daniel"];

function saludarEstudiante(estudiante) {
    console.log(`Hola ${estudiante}`);
}

var i = 0;

//do-while
do {
    saludarEstudiante(estudiantes[i]);
    i++;
} while (i < estudiantes.length)

//while
while (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.

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;

function Validar(usuario) {

    switch (usuario) {
        case opciones[0]:
            return Juego(usuario, maquina)
            break;
        case opciones[1]:
            return Juego(usuario, maquina)
            break;
        case opciones[2]:
            return Juego(usuario, maquina)
            break;
        default:
            console.log('El valor escrito no es valido.')
            console.log('Intentalo otra vez.')
            break;
    }

}

function Juego(opcion1, opcion2) {

    if (opcion1 === opcion2) {
        return 'Es un empate'
    }
    else if (opcion1 === 'Piedra' && opcion2 === 'Tijera') {
        return `Ganasate: ${opcion1} le gana a ${opcion2}`
    }
    else if (opcion1 === 'Papel' && opcion2 === 'Piedra') {
        return `Ganasate: ${opcion1} le gana a ${opcion2}`
    }
    else if (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: '))
}

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”.

Amigos, aquí comparto mis anotaciones de la clase:
.

.
Espero que sea de utilidad.
(⌐■_■)

Explicación del ejercicio:

Simple pero bueno :'v

var i =0;
while(i<=10){
document.write( i+ “<br>”);
i++;
}

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.
https://marketplace.visualstudio.com/items?itemName=WallabyJs.quokka-vscode


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.
https://runjs.app/

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:

function saludarEstudiantes(estudiante){
    console.log(`Hola, ${estudiante}`);
}
estudiantes.forEach(estudiante => saludarEstudiantes(estudiante));

El do while: actúa y luego piensa
El while: piensa y luego actúa

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.

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?

🤔 La condición en un ciclo while define el limite del mismo.

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.

el signo de $ es un como un significado de absoluto o siempre

Wow! me encanta la programación.
La programación es magia y sin esa magia el mundo actual no podría funcionar.
¡Les comparto mis apuntes, compañeros!
While: ejecuta una sentencia especificada mientras cierta condición se evalúe como verdadera. Dicha condición es evaluada antes de ejecutar la sentencia.

sintaxis: while (condición)
sentencia
llamar function

Ejemplo:

Pequeño apunte.

<h1>FOR</h1>

principalmente se utiliza cuando vamos de un numero a otro por ejemplo:

sabemos que el ciclo estara dado de por 10 repeticiones, conocemos la longitud de un Array por poner un ejemplo. Asi que codificamos

for (var n = 1 /*aqui empieza*/; n < MyArray.lentgh /*aqui termina*/; n ++ /*cada ciclo va sumando uno para pasar al siguiente valor*/

<h1>WHILE</h1>

Generalmente no sabemos cuanto tiempo se pueda repetir el cliclo, por que vamos desde un estado a otro estado, pueden ser numericos pero podrian no serlos, podrian ser boobleanos, o strings o el que tu quieras , por ejemplo:

while(numeroX <> 5) {/* Hacer los que esta aqui dentro*/}

Para los que les da pereza abrir otra pestaña para usar la consola de javascript o simplemente quieren probar el código en una terminal, simplemente instalen nodejs en su sistema (si hicieron el curso de programación básica ya lo deben tener instalado 😛)

sudo apt install nodejs
sudo dnf install nodejs

Guardan su código con extensión .js y lo ejecutan:

node while.js

Me gustó esta clase porque aparte de lo del While aclara la útilidad del shift

tal vez faltó mencionar el loop

do {

} while();

dónde la condición del while se evalúa al final de cada tarea y no al principio, es útil si uno quiere hacer un menú, y si uno quiere que al menos se evalúe la tarea una sola vez al menos.

Las comillas… Tengan cuidado con el tipo de comillas

Genial, prácticamente con el .shift() sacamos los elementos del array uno por uno y los imprimimos hasta que no quede ninguno.

😄

var estudiantes = ["Maria","Sergio","Rosa","Daniel"]

while(estudiantes.length > 0){
    var estudiante = estudiantes.shift();
    console.log("Hola " + estudiante);
}

Me hubiese gustado más que explicase bien los procedimientos. si shift lo que hace es eliminar el primer elemento de un array. Porque es que sucede esto?

var estudiantes = ["Ramón", "Karen", "Brandon", "Angel"];

function saludarEstudiantes(estudiante){
    console.log(`Hola, ${estudiante}`);
}

while (estudiantes.length > 0) {
    console.log(estudiantes);
    var estudiante = estudiantes.shift();
    saludarEstudiantes(estudiante);
}

Yo creo que depende de que estemos utilizando en su momento, porque a veces sabemos cuantas veces necesitamos ejecutar una fraccion de codigo… o a veces requerimos de cierta condicion para hacer algo no importando el numero de veces,

Java ❤️

Dejo mi opcion sin borrar elementos del array

var studentsName = ['Santiago', 'Ivan', 'Esteban', 'Daniela', 'Jose'];
var counter = 0;

function printNames(name){
    console.log(`Hello ${name}`)
}

while (studentsName[counter]){
    printNames(studentsName[counter])
    counter++;
}

Breve explicación, personalmente enfatizaría más en que la variable estudiantes al final del while queda vacía por lo tanto como se ha aplicado usando el método shift, perderíamos el contenido para usarlo posteriormente si fuese necesario.

Obviamente para explicar como funciona el loop while es correcto pero para la gente nueva quizás vale la pena hacer esa mención especial. 😃

Lo único malo es que después del while se borra todo el array

Pensé que la idea era recorrer el array sin alterar los datos… algo asi:

var estudiantes = ["Maria", "Sergio", "Rosa", "Daniela"];

function saludarEstudiantes(estudiante) {
    console.log(`Hola ${estudiante}`);
}

//En este caso solo leo los elementos del array
//pero conservando todos los datos
var i = 0;

while(i < estudiantes.length){
    saludarEstudiantes(estudiantes[i]);
    i++;
}
/*Resultado

Hola Maria
Hola Sergio
Hola Rosa
Hola Daniela

estudiantes = ["Maria", "Sergio", "Rosa", "Daniela"];
*/

//En este caso leo todos los estudiantes pero elimina el contenido del array
while(estudiantes.length > 0){
  var estudiante = estudiantes.shift();
  saludarEstudiantes(estudiante);
}
/*Resultado

Hola Maria
Hola Sergio
Hola Rosa
Hola Daniela

estudiantes = [];
*/

faltaría el ciclo do-while que ejecuta el código una vez antes de validar si la condición es verdadera o falsa

Breve explicación sobre lo que pasa con la variable estudiante y Shift(). No podía entender lo que pasaba ya que según mi lógica debería salir Sergio de primero pues estamos quitando el primero del Array fuente de inspiración aquí la colega de Platzi:
Bueno ahora sí al grano, mi función no sucede con el Array en si, más bien en la variable estudiante, nuestro While utiliza nuestro Array solo de condicional; si sucede esto pasa lo otro y si no me paro. lo que precisamente hace const estudiante = estudiantes.shift(); es quitar del Array lo que esté en la posición 0 y guardarla en estudiante. Todo lo vi más claro cuando hice un console.log() a estudiante.
adjunto el código y foto:

const estudiantes = ["Maria", "Sergio", "Rosa", "Daniel"];
        function saludarEstudianres(estudiante) {
            console.log(`Hola, ${estudiante}`);
        }
        while (estudiantes.length > 0) {
            console.log(estudiantes);
            const estudiante = estudiantes.shift();
            console.log(`Yo soy la constante con .shift ${estudiante}`);
            saludarEstudianres(estudiante);
        }

También tenemos el do…while, qeu es un ciclo que se va a ejecutar minimo una vez 😄

una forma de realizarlo como el for y mostrando del ultimo al primero

var notes =["notion", "anki", 1, 2, 3, 4 , 11];
var p=0;
while( p < notes.length )
{
    var item = notes.pop();
    console.log( item);
    p++;
}

Les recomiendo la extension Code Runner para Visual Studio Code, podran ejecutar el codigo directo en el editor.

Visto en clase:

//Ciclo While
var estudiantes = ["Maria","Sergio", "Rosa", "Daniel"];
function saludarEstudiantes(estudiante) {
    console.log('Hola, ${estudiante}');
}
while(estudiantes.length>0){
    console.log(estudiantes)
var estudiante = estudiantes.shift();
saludarEstudiantes(estudiante);
}

Un aporte, mi profesor de la universidad nos recomendó que lo viéramos de la siguiente forma el while y el do-while:
WHILE: Primero pregunta y si la condición es verdadera actúa, luego vuelve a preguntar.
DO-WHILE: Primero actúa y después pregunta, si la condición es verdadera, vuelve a actuar y después pregunta

Después de aprender Python y entender lo lógica de la programación el resto de los lenguajes son mucho más fáciles de entender y aprender.

¡No se rindan!

for - recorre un bloque de código varias veces
for/in - recorre las propiedades de un objeto
for/of - recorre los valores de un objeto iterable
while - recorre un bloque de código mientras se cumple una condición específica
do/while - también recorre un bloque de código mientras se cumple una condición específica

¿Qué haces viendo comentarios?¿Por qué no mejor miras la clase? 🤣⁣⁣
⁣⁣
⁣⁣
Hola Platzinautas 💚⁣⁣
⁣⁣
⁣⁣
🌟Cuando pase por esta clase me propuse hacer unos cuantos ejercicios para de nuevo recordar la lógica de estos loops, así que me atreví a realizar un tutorial, si quieren repasar o entender un poco mas con algunos ejercicios, aquí les dejo el link.⁣⁣
⁣⁣
⁣⁣

Nunca pares de aprender.⁣⁣

📌Ejercicios para no morir en el intento de aprender📚

¿Por qué en mi consola, a la hora de imprimir, no me salen los 4 mensajes, y me lo manda de esta manera?

Gracias por el apoyo
saludos!

Tengamos cuidado de usar shifth() y pop() ya que elimina los elementos.

Reemplace el shift por el pop y para que sirve en este ejercicio el “Pop” puede ser para ver quien llego tarde 😛

var estudiantes = ["Daniel","Laura","Sergio", "Rosa"];

function saludarEstudiantes (alumno){
    console.log (`Hola, ${alumno}`);
}

while (estudiantes.length > 0 ){
    var alumno = estudiantes.pop();
    saludarEstudiantes(alumno);
}
Justo así esta mi practica: ```js const estudiantes = [ "Juan", "Maynor", "Ricardo", "Sergio", "David", "Marco", "Lester", "Edwin", ]; function holaEstudiantes(estudiante) { console.log(`Hola, ${estudiante}`); } while (estudiantes.length > 0) { console.log(estudiantes); const estudiante = estudiantes.shift(); holaEstudiantes(estudiante); } ```Gran aventura platzinautas!

Hay que tener mucho cuidado al momento de utilizar el .shift, debido a que deja el Array vacío, y ese no es el objetivo.

Si quieres volver a Saludar a los estudiantes invocando la función, debes volver a cargar el Array.

saludarEstudiantes();
Hola, undefined
undefined

var estudiantes = ["Maria", "Sergio", "Rosa", "Daniel"];

function saludarEstudiantes(estudiante){
    console.log(`Hola, ${estudiante}`);
}

while(estudiantes.length > 0){
    console.log(estudiantes);
    var estudiante = estudiantes.shift();
    saludarEstudiantes(estudiante);
}

MUY IPORTNATE:
En el ciclo WHILE: el bloque de código se puede ejecutar 0 o más veces dependiendo de la condición.
En el ciclo DO WHILE: el bloque de código siempre se ejecutará 1 vez aunque no se cumpla la condición.
.
Fuente: https://www.w3schools.com/js/js_loop_while.asp

  • En un bucle while la variable es declarada antes del loop y es accedida al estar en el scope global.
  • Empieza el bucle con la palabra while seguida de la condición de parada o condición a evaluar. Esta será evaluada antes en cada ronda del bucle. Mientras la condición evalue true, el bloque seguirá corriendo. Una vez que evalue false el bucle se detendrá.
  • Finalmente tenemos el bloque de código del bucle.

También existe un tercer ciclo llamado “do…while”, recomiendo que lo investiguen 7u7

Mucho ojo con el tema del While puede ponerte lenta la compilacion o incluso el PC si la pechas en logicas grandes.

Con While no tenemos conocimiento del número de iteraciones a realizar, con For lo sabemos de antemano

Por si alguien no lo sabe (como yo antes de ver este video y buscar la documentacion) el metodo array.shift no solo elimina el primer elemento, tambien devuelve ese mismo elemento eliminado.

Buena manera de explicar el while, pero te cargas el array :´(

var estudiantes = ["Paco", "Pepe", "Marco", "Jose"];
function saludarEstudiante(estudiante){
    console.log(`Hola, ${estudiante}`);
}
while(estudiantes.length > 0){
  console.log(estudiantes);
  var estudiante = estudiantes.shift();
  saludarEstudiante(estudiante);
}

Aparte de la interpolación, te pueden generar problemas los ; si es que vienes de otros lenguajes…

Aqui va el resumen de la clase como lo entendi.

// con .pop() de ultimo a primero.
var estudiantes = [“Maria”, “Sergio”, “Rosa”, “Daniel”];

function saludarEstudiante(estudiante) {
console.log(Hola ${estudiante});
}

while (estudiantes.length > 0) {
var estudiante = estudiantes.pop();
saludarEstudiante(estudiante);
}
Hola Daniel
Hola Rosa
Hola Sergio
Hola Maria

El ejemplo hubiera quedado mejor si la funcion en lugar de saludarEstudiantes fuera expulsarEstudiantes

Resumen de el temario de loops.

  • For con variable i

Para esto debemos de crear una variable que comúnmente denominaremos como i con la que haremos que la condición sea correcta hasta que se detenga, también se debe recordar irla aumentando con i++ que es la abreviación de i = i+ 1.

  • Ejemplo

for(var i=0; i<10 ; i++){

//acción a realizarse

}

  • For con array en plural sacándolos en singular

En el primer ejemplo el manda a llamar la variable estudiante y no estudiantes, el cuál es el nombre simplemente del parámetro.

En el segundo ejemplo se propone a estudiante como el singular de estudiantes… pero de hecho funciona con cualquier valor que se asigne y no obedece a la lectura o forma textual de la variable.

Básicamente lo que hace es repetir la acción por cada elemento que exista en el array.

  • Ejemplo

var estudiantes[ “Mario”, “Carlos”, “Raúl” ];

for

(var estudiante of estudiantes) {

//acción a realizarse

}

  • For in

La variable se va incrementando depende de cada una de la posiciones de 0…

en resumen recorre la propiedades de un objeto


  • While

Este ciclo se suele usar para cuando no sabemos cuantas veces se debe repetir.

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.

while(condicion){

//Acciones a realizar

}

  • 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 pero no se trato en esta clase.

Para no borrar los elementos los podemos iterar con:

codigo

let paises = ['Brasil', 'Peru', 'Colombia']
let i = 0, len = paises.length
while(i < len)
    console.log(paises[i++]);

este loop junto con el do while me parece mas interesante que el for.

Otra forma

`<code>
var productos = ["Pasta", "Pizza", "Pollo", "Hamburguesas"];

function tenemosProductos(producto){
    console.log(`Tenemos ${producto}`);
}

while(productos.length > 0){
    var producto = productos.shift();
    tenemosProductos(producto);
}
var estudiantes = ["María", "Sergio", "Rosa","Daniel"];

function saludarEstudiantes(estudiante){
    console.log('¡Hola '+ estudiante + "!");
}

for (var i=0; i < estudiantes.length; i++){
    saludarEstudiantes(estudiantes[i]);
}

var estudiantes = ["María", "Sergio", "Rosa","Daniel"];

function despedirEstudiantes(estudiante){
    console.log('¡Adiós '+ estudiante + "!");
}

for (var estudiante of estudiantes){
    despedirEstudiantes(estudiante);
}```

// Array.
var estudiantes = ["Pedro", "Maria", "George", "Piero", "Sergio"];

// Función.
function saludoEstudiante(estudiante) {
    console.log(`Hola, ${estudiante}.`);
}

// For con variable i.
for (i = 0; i < estudiantes.length; i++){
    saludoEstudiante(estudiantes[i]);
}

// For-of
for( var estudiante of estudiantes){
    saludoEstudiante(estudiantes;
}

// While
while (estudiantes.length > 0) {
    var estudiante = estudiantes.shift();
    saludoEstudiante(estudiante);
}```

¿Cuál prefieres?
Bucle For, For of u While?

Código de esta clase

// Bucle While en JS

//El bucle while realiza una serie de instrucciones mientras se cumpla una condición dada.

var estudiantes = ["Julieta", "Paco", "Joel", "Astrid", "Liam"];

function mensaje(estudiante){
    console.log(`Hola ${estudiante}, bievenido al Curso Basico de Javascript`);
}

while(estudiantes.length > 0){
    var estudiante = estudiantes.shift();
    mensaje(estudiante);
}

muy bueno el recorrido del array, eliminando simultaneamente elementos. 😉

var estudiantes = ["Francisco", "Juan", "Cristian", "Liz", "Paola"];


function saludarEstudiantes(estudiante){
    console.log(`Hola, ${estudiante}`);
}

while (estudiantes.length > 0) {
    console.log(estudiantes);
    var estudiante = estudiantes.shift();
    saludarEstudiantes(estudiante);
}```

/* Es cierto que falta el do … while, aqui dejo su equivalente al ejemplo que se esta manejando, usando do while, me fuen bien
*/
var result = “”;
var i = 0;

do {
i = i + 1;
result = result + i;
} while (i < 5);

console.log(result);
/* el resultado seria la cadena: "12345"
debido al tipo de variable, ademas nos permte
darnos cta del bucle que efectua.
*/

var apostoles=[“Juan”,“Pedro”,“Daniel”,“Bartolome”, “Mateo”, “Santiago el Menor”,
“Judas Tadeo”, “Andres”,“Felipe”, “Tomas”, “Santiago el Anciano”
];

function saludarApost(apostol) {
document.write(Hola , ${apostol}+"<br />");
}

do {
console.log(apostoles);
var apostol=apostoles.shift();
saludarApost(apostol);
}while (apostoles.length > 0);
//por que se imprime el ultimo valor, pues por que esta sentencia 1ero ejecuta el codigo y luego evalua 😃

Miren qué interesante. Probé quitando el parámetro de la función y aun así funciona sin problema, alguien sabe porqué? Lo otro es que en la 4 línea del código sustituí “estudiante” por “estudiantes” y en el resultado se evidencia de igual manera como va funcionando cada uno de los ciclos individualmente.

var estudiantes = ["Maria","Sergio","Rosa","Daniel"];

    function saludarEstudiantes (){
    console.log("Hola "+ estudiantes);
    }
    while (estudiantes.length>0) {
    var estudiante = estudiantes.shift()
    saludarEstudiantes ()
    }

VM1316:4 Hola Sergio,Rosa,Daniel
VM1316:4 Hola Rosa,Daniel
VM1316:4 Hola Daniel
VM1316:4 Hola 

Creando el _while_. Sintaxis _while_(a) {b}. Mientras _a_ sea _true_ el loop seguirá ejecutando _b_, y se detendrá cuando la condicón _a_ ya no se cumpla, es decir sea falso.

While y Do While

Tarea de Piedra papel o tijera con while, Listo para copiar y pegar en la consola del navegador:

var mensaje = confirm("¿Quiere jugar a Piedra, Papel o tijera ?");
while(mensaje){
    var usuario = prompt("¿Indique su opcion numerica: 1-Piedra, 2-Papel o 3-Tijera", "");
    if(usuario > 0 && usuario < 4){
	var maquina = parseInt(Math.random() * 3);
	validar();	
    }else{
       alert("Opcion no valida");
    }
    mensaje = confirm("¿Quiere jugar a Piedra, Papel o tijera ?");
}

function validar(){
    maquina++
    alert(`usuario selecciono: ${opciones[usuario-1]}, maquina selecciono: ${opciones[maquina-1]}`);
    if(maquina == 1 && usuario == 2 || maquina == 2 && usuario == 3 || maquina == 3 && usuario == 1 ){
	alert(`GANA USUARIO`);
    }
    if( maquina == 2 && usuario == 1 || maquina == 3 && usuario == 2 || maquina == 1 && usuario == 3 ){
	alert('GANA MAQUINA');
    }
    if(maquina == usuario){
	alert('EMPATE');
    }
}

La verdad yo batallo demasiado con los loops, se me hacen muy dificiles a la hora de saber el como lo hare funcionar, se lo que hacen pero me cuesta mucho el poder pensar algo de como hacerlo funcionar.

Aun no entiendo la diferencia entre imprimir de esta forma

console.log("Hola "+estudiante);

a imprimir de esta forma

console.log(`Hola ${estudiante}`);

Lo intento de las dos formas y el resultado es exactamente el mismo.

Cuánto me habría ahorrado esto a principios de carrera XD

Excelente explicación!!!

Excelente clase.

Impecable, excelente explicación!

Cuando se use el while con una variable iteradora, hay que asegurarse de incrementar su valor con el operador ++ de lo contrario sucede un bucle infinito y el navegador crashea.

While no se conoce la longitud previamente, for si se conoce.

```js var estudiantes = ['Josue', 'Maria', 'Manuel','Rigoberto', 'Paulina'] console.log(estudiantes) function saludarEstudiantes (estudiante){ console.log('Hola '+ estudiante) } while (estudiantes.length > 0){ console.log(estudiantes) var i = estudiantes[i] var estudiante = estudiantes.shift() i ++ saludarEstudiantes(estudiante) } ```var estudiantes = \['Josue', 'Maria', 'Manuel','Rigoberto', 'Paulina']console.log(estudiantes) function saludarEstudiantes (estudiante){    console.log('Hola '+ estudiante)}   while (estudiantes.length > 0){    console.log(estudiantes)    var i = estudiantes\[i]    var estudiante = estudiantes.shift()    i ++    saludarEstudiantes(estudiante)}
```js var estudiantes = ['Josue', 'Maria', 'Manuel','Rigoberto', 'Paulina'] console.log(estudiantes) function saludarEstudiantes (estudiante){ console.log('Hola '+ estudiante) } while (estudiantes.length > 0){ console.log(estudiantes) var i = estudiantes[i] var estudiante = estudiantes.shift() i ++ saludarEstudiantes(estudiante) } ```var estudiantes = \['Josue', 'Maria', 'Manuel','Rigoberto', 'Paulina']console.log(estudiantes) function saludarEstudiantes (estudiante){    console.log('Hola '+ estudiante)}   while (estudiantes.length > 0){    console.log(estudiantes)    var i = estudiantes\[i]    var estudiante = estudiantes.shift()    i ++    saludarEstudiantes(estudiante)}
No termino de entender por que al poner el código tal cual en el ejemplo no me imprime los nombres de los alumnos. Tuve que ponerme un poco creativo y agregar un incrementó y "Presto quedo"var estudiantes = \['Josue', 'Maria', 'Manuel','Rigoberto', 'Paulina']console.log(estudiantes) function saludarEstudiantes (estudiante){    console.log('Hola '+ estudiante)}   while (estudiantes.length > 0){    console.log(estudiantes)    var i = estudiantes\[i]    var estudiante = estudiantes.shift()    i ++    saludarEstudiantes(estudiante)}```js var estudiantes = ['Josue', 'Maria', 'Manuel','Rigoberto', 'Paulina'] console.log(estudiantes) function saludarEstudiantes (estudiante){ console.log('Hola '+ estudiante) } while (estudiantes.length > 0){ console.log(estudiantes) var i = estudiantes[i] var estudiante = estudiantes.shift() i ++ saludarEstudiantes(estudiante) } ```
Otra forma de lograr el mismo resultado es la siguiente: ```js let counter = 0; while (counter < students.length) { greetStudents(students[counter]); counter++; ```Aquí lo que se hace es crear una variable que sirve como contador para poder iterar en el ciclo. Esta variable va a ir incrementando su valor y cuando ya no sea menor que la longitud del array de estudiantes, el ciclo finalizará.
Si no saben dónde están las comillas invertidas, yo tampoco sé, pero mantengan oprimida la tecla ALTGR y váyanle picando a los signos de la derecha del teclado. Así me funciono a mí.
La mejor forma de entender la funcionalidad entre while y do-while, es que while al menos una vez se ejecutará la evaluación para considerar entrar en el loop o no; en el caso de do-while al menos una vez entrará en el loop.

En JavaScript, while es una declaración de bucle que permite ejecutar un bloque de código repetidamente mientras una condición especificada se evalúa como verdadera¹²³⁴⁵.

La sintaxis del bucle while es la siguiente:

while (condicion) {
    // bloque de código a ejecutar
}

Aquí, el bucle while evalúa la condición dentro del paréntesis (). Si la condición se evalúa como verdadera, se ejecuta el código dentro del bucle while. Luego, la condición se evalúa nuevamente. Este proceso continúa hasta que la condición es falsa¹²³⁴⁵.

Por ejemplo:

let i = 0;
while (i < 10) {
    console.log(i);
    i++;
}

En este ejemplo, el bucle while continuará ejecutándose y mostrando el valor de i mientras i sea menor que 10. Cada vez que el bucle se ejecuta, i se incrementa en 1.

Es importante tener cuidado al usar bucles while, ya que si olvidas incrementar la variable utilizada en la condición, el bucle nunca terminará y puede bloquear tu navegador².

pero si usamos el metodo shift() el array queda vacio al terminar el ciclo no? . si llamo a estudiantes mas abajo aparece sin elementos
```js // loop for var estudiantes = ["Maria" , "Sergio" , "Rosa" , "Daniel"]; function saludarEstudiantes(estudiante){ console.log(`hola, ${estudiante}`); } for(var i = 0; i < estudiantes.length; i++){ console.log("Hola " + estudiantes[i]); } // loop for of console.log(" "); var estudiantas = ["Maria" , "Sergio" , "Rosa" , "Daniel"]; function saludarEstudiantas(estudianta){ console.log(`hola, ${estudianta}`); } for(var estudianta of estudiantas){ saludarEstudiantas(estudianta); } ```// loop for var estudiantes = \["Maria" , "Sergio" , "Rosa" , "Daniel"]; function saludarEstudiantes(estudiante){ console.log(`hola, ${estudiante}`); } for(var i = 0; i < estudiantes.length; i++){ console.log("Hola " + estudiantes\[i]); } // loop for of console.log(" "); var estudiantas = \["Maria" , "Sergio" , "Rosa" , "Daniel"]; function saludarEstudiantas(estudianta){ console.log(`hola, ${estudianta}`); } for(var estudianta of estudiantas){ saludarEstudiantas(estudianta); }
Este es el ejercicio que vimos en clase, planteado de otra manera. ```js var estudiantes = ['María', 'Sergio', 'Rosa', 'Daniel']; function saludarEstudiantes(estudiante) { console.log(`Hola, ${estudiante}`); } while (estudiantes.length > 0) { saludarEstudiantes(estudiantes[0]); estudiantes.shift(); } ```

Ciclos

Me parece un poco enredado que use la variable estudiante para distintas cosas, me costó un poco entender que pasaba dentro del while y por qué funcionaba bien
es porque dentro, la variable estudiante está guardando el elemento borrado con shift, y ese es el valor que se esta usando como parámetro en la funcion saludarEstudiantes(), pero como se ve igual a lo de arriba que dice “function saludarEstudiantes(estudiante)” me confundió

se que todos son muy buenos pero me paso que no sabia como dar enter sin que se “ejecutara”, Shif + enter, y si borras todo y limpias y quieres traer el código anterior , flecha hacia arriba, cosas que aprendí fastidiando mi pobre teclado ajajjjajaja