Ciclo while
Clase 9 de 25 • Curso de PHP: Arreglos, Funciones y Estructuras de Control
Contenido del curso
Clase 9 de 25 • Curso de PHP: Arreglos, Funciones y Estructuras de Control
Contenido del curso
Carlos Eduardo Gomez García
Fernando Yutiz
Eduardo Peraza Vindas
Guadalupe Monge Barale
Rafael Junior Ortiz Sánchez
José Alberto Ramírez Quiroz
José Alberto Ramírez Quiroz
Ana Marina Perez Aguilera
Nicolas Neira
Santiago Rodríguez Osorio
Hallking Quesada Medina
karla.oviedo
Jhoan Camacho
Matias Martel
Aby Leyva
Joserra Parada Fontaiña
Jean Carlos Hallak
Juan David Díaz Bustos
Cristian Ruiz
Jesus Cuadro
Nicolas Tarazona
jaime sandoval
rafael malanco velazquez
El 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"; }