Contenido del curso
Arreglos
Condicionales
Bucles
Funciones
Proyecto: juego del ahorcado con PHP
Bonus: HTML con esteroides
Próximos pasos
Ciclo while
Contenido del curso
Ciclo while
Carlos Eduardo Gomez García
ProfesorFernando Yutiz
EstudianteEduardo Peraza Vindas
EstudianteGuadalupe Monge Barale
EstudianteRafael Junior Ortiz Sánchez
EstudianteJosé Alberto Ramírez Quiroz
EstudianteJosé Alberto Ramírez Quiroz
EstudianteAna Marina Perez Aguilera
EstudianteNicolas Neira
EstudianteSantiago Rodríguez Osorio
EstudianteHallking Quesada Medina
Estudiantekarla.oviedo
EstudianteJhoan Camacho
EstudianteMatias Martel
EstudianteAby Leyva
EstudianteJoserra Parada Fontaiña
EstudianteJean Carlos Hallak
EstudianteJuan David Díaz Bustos
EstudianteCristian Ruiz
EstudianteJesus Cuadro
EstudianteNicolas Tarazona
Estudiantejaime sandoval
Estudianterafael malanco velazquez
EstudianteEl ciclo while es uno de los ciclos más famosos en programación, es conocido como un "ciclo indefinido" porque no sabemos cuando va a terminar. .
¿Pero cómo que no sabemos, si yo se que si hago un ciclo del 1 al 10 va a terminar cuando llegue a 10?
.
Sí, pero ahora imaginas que haces un ciclo que termina cuando tu usuario escriba "0", en ese caso tú no sabes cuándo tu usuario escribirá 0. Puede ser en la primera iteración o puede ser en la iteración 27462 👀.
.
Adicional a ello, recuerda siempre verificar que tu ciclo tenga fin, NUNCA PONGA while(true) y si lo haces, que sea por la ciencia 😄.
.
¿En qué caso de uso se te ocurre que podemos usar este ciclo? 👀
En nuestros ejemplos anteriores donde usamos readline (Ej. el de donaciones). Envolveria todo en un ciclo While hasta que se de cierta condicion en la entrada (ej: "fin") Asi no se cierra el programa con un solo intento.
Con tu pregunta se me ocurrio un caso para usar ese ciclo.
Yo hice un cajero automatico, donde el usuario decide si quiere hacer una transaccion o quiere salir, el ciclo permanecera abierto mientras sesion = true, pero si el usuario digita 0 despues de una transaccion se cambiara sesion = false y se cerrara el programa
Dejo mi codigo de ejemplo:
<?php $saldo = 0; //se inicializa el valor de saldo $sesion = true; //bandera para el while //esto es una funcion, para no repetir el codigo function realizar_otra_transaccion(){ (int)$validar = readline("Presione 1 si desea realizar otra transaccion de lo contrario digite 0: \n"); if($validar == 1){ $sesion = true; // si session sigue siendo true, se repetira el programa } else{ $sesion = false; //si el usuario no quiere hacer otra transaccion la sesion se cambia a false y se acaba el ciclo while } return $sesion; } echo "Bienvenido al cajero automatico Michi Money \n"; while($sesion == true){ //se ejecutara el programa de cajero, hasta que el usuario lo decida echo "Transacciones: \n"; echo "1) Retiro \n"; echo "2) Deposito \n"; echo "3) Consulta \n"; $menu = readline("Seleccione una opcion de acuerdo a lo que desea hacer: "); switch($menu){ case 1: $cantidad_retiro = readline("Cuanto dinero desea retirar: "); if ($saldo >= $cantidad_retiro){ echo "Ha retirado $$cantidad_retiro \n"; $saldo = $saldo - $cantidad_retiro; echo "Balance: $$saldo \n"; } else{ echo "Saldo insuficiente. \n"; echo "Balance: $$saldo \n"; } $sesion = realizar_otra_transaccion(); //se invoca la funcion break; case 2: $cantidad_deposito = readline("Cuanto dinero desea depositar: "); $saldo = $saldo + $cantidad_deposito; echo "Ha depositado a su cuenta $$cantidad_deposito \n"; echo "Balance: $$saldo \n"; $sesion = realizar_otra_transaccion(); //se invoca la funcion break; case 3: echo "Su saldo es de $$saldo\n"; $sesion = realizar_otra_transaccion(); //se invoca la funcion break; } echo "\n \n"; } echo "Gracias por usar el servicio \n"; exit(); //cierra el programa despues de salir del ciclo
Un ejercicio fácil
$numero_secreto = 7; $numero_usuario = 0; while($numero_usuario != $numero_secreto) { $numero_usuario = readline("Descubre el número secreto entre 1 y 10 "); echo "\n"; }
En While lo primero que definimos es un contador, para identificar desde que punto iniciamos $contador = 0, luego agregamos una condicion para señalizar en que punto terminamos de iterar $contador < 10 , por ultimo definimos que queremos que haga nuestro codigo en cada comprobacion, podemos decrementar o incrementar $contador++ o $contador–
Querida comunidad :) les quedo duda sobre que es un while ?
...
Otro sinomo de ciclar es infite loop y se escucha igual mucho en la comunidad
jajaja, si llega a pasar eso, me senti identificada cuando aprendi a programar :)
Algunos casos que se puede utilizar .
Este es mi ejemplo de while con el ejercicio pasado combinando if/else. 😅
puedo usar $contador - - ?
Claro que si
Comparto una versión de mi código:
Enumerará cada una de las lineas que genere y aumentara la cantidad de lineas en 1 hasta llegar a 10.
<?php $contador = 0; while ($contador++ < 10) { echo $contador . ". Este curso está increíble" . PHP_EOL; } ?>
Les dejo este pequeño aporte por si alguien quiere que haya una pequeña pausa como lo que podemos lograr con setInterval en JS.
$contador = 10; while ($contador > 0) { echo "$contador \n"; $contador--; sleep(1); //Aqui le indican cuantos segundos quieren esperar entre iteracion e iteracion }
Un bloque de código para mostrar la iteraciones del ciclo while, el contador se incrementa cuando cumple una condición.
<?php // statement While loop $counter = 1; $iteration = 1; $rndNumber=3; echo "Starting the while loop:\n"; echo "the counterr ends at 10\n"; while ($counter <= 10) { echo "Iteration: $iteration \n"; if (random_int(1,3) == $rndNumber) { echo "Counter is: $counter \n"; $counter++; } $iteration++; } echo "The while loop ended after $iteration iterations.\n"; echo "The final value of the counter is: $counter\n"; echo "Ending the while loop.\n"; echo "----------------------------------------\n"; ?> <?php // statement While loop $counter = 1; $iteration = 1; $rndNumber=3; echo "Starting the while loop:\n"; echo "the counterr ends at 10\n"; while ($counter <= 10) { echo "Iteration: $iteration \n"; if (random_int(1,3) == $rndNumber) { echo "Counter is: $counter \n"; $counter++; } $iteration++; } echo "The while loop ended after $iteration iterations.\n"; echo "The final value of the counter is: $counter\n"; echo "Ending the while loop.\n"; echo "----------------------------------------\n"; ?> ```**El resultado:**  
<?php $contador = 0; while ($contador++ < 10 ){ echo $contador . " - Es la iteración \n";}
<?php //ciclos while $zapatosPares = 22; while ($zapatosPares) { $compra = readline("cuantos pares de zapatos quiere comprar"); $zapatosPares -= $compra; echo "quedan $zapatosPares Pares de zapatos disponibles \n"; } ```les comparto un ejemplo funcional de un cliclo while donde el ciclo corre mientras existan zapatos disponibles.
Comprar un ejercicio que realicé, el conteo descendente de 100 hasta 1
<?php $conta=0; $a=100; while($a>=1){ echo "a es igual a ".$a."\n"; $a--; $conta--; }
se me ocurrió hacer otra cosa, hice esto:
while ($contador < 10) { echo $contador + 1; echo " Este curso esta increíble \n"; $contador++;}
de esta manera empieza a contar desde el 1 de esta manera:
1 Este curso esta increible
2 Este curso esta increible
3 Este curso esta increible
4 Este curso esta increible
5 Este curso esta increible
6 Este curso esta increible
7 Este curso esta increible
8 Este curso esta increible
9 Este curso esta increible
10 Este curso esta increible
En este ejemplo hice una tabla de multiplicar que lo que hace es multiplicar el numero de el usuario las veces que el usuario quiera, con el ciclo While lo cual me permitió entender mucho mas el tema en cuestión:
<?php /* ----- TABLAS DE MULTIPLICAR ----- */ $cantidad_veces_multiplica_numero= 80; $numero=19; echo "<h2>***** TABLA DEL ". $numero . " **** <br><br></h2>"; $i = 1; while ($i <= $cantidad_veces_multiplica_numero) { echo "<h3>" . $numero . " X " . $i ." = ". $numero * $i++ . "</h3><br>"; } ?>
Se veria de la siguiente manera.
<?php /*PROGRAMA PARA MOSTRAR LOS NÚMEROS PARES HASTA DETERMINADO NÚMERO QUE QUIERAS POR EJEMPLO = 10 = 2, 4, 6, 8, 10. */ //DIGITA EN $entrada HASTA QUE NÚMERO QUIERES QUE SE MUESTREN LOS NÚMEROS PARES $entrada = 12; $numero_par = 0; $entrada = $entrada / 2; while ( $entrada >= 0){ echo $numero_par . "</br> </br>"; $numero_par += 2; $entrada--; } ?>
while ($contador <= 10000000000) { echo $contador . "<br>"; $contador ++; }
hice la prueba jijijij y al final dejo de responder el chrome
//contador del 1 al 10 $contador = 1; while ($contador <= 10) { echo $contador; echo "\n"; $contador++; } //ciclo do while //contador del 1 al 10 $contador = 1; do { echo $contador; echo "\n"; $contador++; } while ($contador <= 10); //ciclo for //contador del 1 al 10 for ($contador = 1; $contador <= 10; $contador++) { echo $contador; echo "\n"; } //ciclo foreach //contador del 1 al 10 $contador = 1; foreach (range(1, 10) as $contador) { echo $contador; echo "\n"; }