Contenido del curso
Arreglos
Condicionales
Bucles
Funciones
Proyecto: juego del ahorcado con PHP
Bonus: HTML con esteroides
Próximos pasos
¿Do... While?
Contenido del curso
¿Do... While?
Carlos Eduardo Gomez García
ProfesorGuadalupe Monge Barale
EstudianteFrancisco Javier Saavedra Alcala
EstudianteLeonardo Rios Pineda
EstudianteMaria del Carmen Valero Carreño
Estudianteisaac cruz herrera
EstudianteJohn David Gómez Constante
EstudianteJoel Dominguez Merino
EstudianteKevin Leonardo Saavedra Carmona
EstudianteEduardo Peraza Vindas
EstudianteJoan Manuel Olvera Lona
EstudianteVicki Esther Avola
EstudianteJuan David Rueda Quiroga
EstudianteNatalia Gutierrez
EstudianteNatalia Gutierrez
EstudianteYahday Awad Lara
EstudianteFabian Silva
EstudianteNicolas Neira
EstudianteEvander Nassem Ramírez Hernández
EstudianteEvander Nassem Ramírez Hernández
EstudianteJANIO JESUS JIMENEZ CAMPO
EstudianteNelson Andres Vera Bernal
EstudianteJeyson David Vargas Crespo
EstudianteJeyson David Vargas Crespo
EstudianteJAVIER ALEJANDRO TORRES GUISAO
Estudianteeamedranoc1
Estudiante¿Realmente tiene algún uso el ciclo do... while? 🤔
.
Este ciclo es muy similar al while, con la particularidad de que no importa si tu conidición es verdadera o es falsa, tu ciclo se va a ejecutar por lo menos una vez, al menos una, ya si se vuelve a ejecutar o no dependerá de si la condición es verdadera o falsa, pero al menos una vez sí que se va a ejecutar 😄.
.
¿Pero de qué nos sirve este ciclo? Justamente en aquellos casos en donde queramos ejecutar nuestra lógica por lo menos una vez, este ciclo nos ahorra el uso de un if innecesario en ciertas ocasiones, por ejemplo, cuando queremos guardar el nombre de un usuario.
.
Cuando queremos hacer esto, debemos verificar si el nombre de usuario escrito no existe, y si sí existe entonces debemos pedir otro nombre de usuario, esto lo podemos hacer fácilmente con un ciclo do... while tal como vemos en la clase 😉
.
¿Qué otros casos de uso se te ocurren para este ciclo? 👀
Like si entendiste que el chiste "Master / main" como una referencia a GitHub. ja ja ja
😲
!xD
Me encanta como explica este profesor, estoy entendiendo muchísimo, cuando empecé con Javascript me estaba deprimiendo pero gracias a este profe ya muchas cosas entiendo aunque no sea el mismo lenguaje, gracias profe.
Creeme no eres la unica que se siente identificada con esto.
Aquí mi humilde aporte
<?php $username = readline("Por favor, ingresa tu nuevo nombre: "); $existe = in_array($username, $usernames); if ($existe) { echo "Existe \n"; while ($existe = in_array($username, $usernames)) { $username = readline("Por favor, ingresa tu nuevo nombre: "); if ($existe = in_array($username, $usernames)) echo "Existe \n"; else echo "Registro exitoso \n"; } } else { echo "Registro exitoso"; }
Esa caja de herramientas de PHP esta quedando super amplia 😎 Gracias por todo lo que nos estas compartiendo Carlos! Les comparto el código que ejemplifique del uso de do-while donde va agregando a un arreglo, los diferentes nombres ingresados por el usuario siempre y cuando el nombre no exista en el mismo. Si el nombre ya existe, no lo agrega y muestra como quedo el arreglo al final.
Código: .
<?php /* Ciclo 'do-while' en php Este ciclo es muy similar al ciclo while, con la diferencia que aunque la condición al inicio no se cumpla, él bloque de código se ejecutará al menos una vez al principio. Fuera de eso, se trabaja igual que en el ciclo while, requiere una condición y que su variable contadora vaya incrementándose o decrementándose para no llegar a un ciclo infinito. Estructura del ciclo 'do-while' do{ Bloque de código a ejecutar } while(condicion); */ // declarando variables $listaDeNombres = []; $estaEnElArreglo = false; // Declarando ciclo 'do-while' do{ $nombre = readline("Hola, ingresa un nombre por favor "); $estaEnElArreglo = in_array($nombre, $listaDeNombres); if(!$estaEnElArreglo){ array_push($listaDeNombres, $nombre); } }while( !$estaEnElArreglo ); echo("El arreglo final es:\n"); var_dump($listaDeNombres); /* */ echo(PHP_EOL);
. Ejecución
<?php $usernames = ["Pepito123", "Mr.Michi", "RetaxMain", "kevin"]; $username = readline("Ingrese un nuevo nombre de usuario: "); if (in_array($username, $usernames)) { while (in_array($username, $usernames)) { echo "Este nombre ya existe\n"; $username = readline("Ingrese un nuevo nombre de usuario: \n"); } array_push($usernames, $username); echo"Nombre de usuario valido, ha sido almacenado"; } else { array_push($usernames, $username); echo "Nombre de usuario valido"; } var_dump($usernames);
Respecto al reto de hacerlo sin do, solamente con while
Literalmente hice lo mismo pero poner el readline en el do, solo hice el while y me funciona similar, en este caso..
¿cual seria la diferencia o en que afectaria meter o dejar el readline afuera del do?
dejo de ejemplo mi codigo:
SIN DO:
<?php //reto do while $lista_usuarios = ["Kisho", "Mirangod"]; $usuario_nuevo = readline("Ingrese un usuario nuevo para registrarlo: \n"); while(in_array($usuario_nuevo, $lista_usuarios)){ //pedira la informacion hasta que el usuario nuevo sea diferente a los que ya estan registrados $usuario_nuevo = readline("Usuario ya registrado, porfavor ingrese otro nombre: \n"); } array_push($lista_usuarios, $usuario_nuevo); //esto seria para agregar el usuario nuevo al arreglo var_dump($lista_usuarios); //para verificar si se agrego
CON DO:
<?php $usernames = ["Pepito123", "Mr.Michi", "RetaxMain"]; do{ $username = readline ("Porfavor , ingresa tu nuevo nombre de usuario: \n"); //de esta forma no podre poner dos textos diferentes } while ( in_array($username, $usernames)); //verifica si existe o no existe en el arreglo echo "\n"; array_push($usernames, $username); var_dump($usernames);
Probablemente, el hecho de que capturas menos código con el do while. Fuera de ello, la lógica es bastante similar.
Do ... While se puede utilizar para evitar que se repita información en la base de datos
creo que daría igual poner el do o hacerlo sin el do, básicamente no le veo utilidad, algún ejemplo que se le vea la utilidad?
While, y Do ... While, existen porque se usan para diferentes casos.
La utilidad se le encuentra cuando se te presenta el caso.
Uno tipico es cuando trabajas con archivos, ya sea para manipularlos dentro de un directorio o manipular su mismo contenido y necesitas que la condicion se ejecute al menos una sola vez:
Ejemplo: leer el dontenido de un archivo.txt mientras no sea fin de linea.
Otro mas complejito (que no quiero extenderme mas en la respuesta), es por ejemplo para hacer validacion de un registro de usuarios contra una base de datos, alli tambien se puede aplicar ese caso.
Se me ocurrio otro que podria servir, si estas programando un juego y neceistas ejecutar algo mientras aun tengas puntos de vida :0 !!
Reto sin usar do-while
$user_names = ["User1", "User2", "User3"]; $new_user = readline("Nombre de usuario: "); while (in_array($new_user, $user_names)) { $new_user = readline("Ese nombre ya existe, ingrese uno nuevo: "); }
Aquí dejo mi aporte, en donde hice una pequeña modificación estableciendo un condicional.
<?php $user_names = ['pepito', 'mr.michi', 'fbn']; do { $user_name = readline ('por favor indica tu nombre de usuario: '); echo "\n"; if ( in_array ($user_name , $user_names)) { echo "ya te encuentras registrado \n"; }else { echo "bienvenio \n"; } }while (in_array($user_name, $user_names)); //in_array nos ayuda a validar la informacion de un array, por ejemplo un nombre, contraseña, etc. echo "\n";
Algunos casos en los que se puede utilizar: .
Tremanda explicación, cuando empecé a aprender python este tema me daba doleres de cabeza pero con sus explicaciones todo es más sencillo
Mi código, ejemplo de saludo con do...while:
<?php $usernames = ["salem", "atzin"]; do { $username = readline("Ingresa tú nombre de usuario: "); } while (in_array($username, $usernames)); echo "Hola $username"; ?>
Mi aporte con el Reto!
<code <?php $usernames = ['Janez', 'Camila', 'Leonor', 'Martin']; $nombre = true; while($nombre){ $username = readline("Ingrese su nuevo nombre: "); if(!in_array($username, $usernames)){ echo "Registro exitoso!"; $nombre = false; }else{ echo "Error, el nombre ya exite!!!\n"; echo "Vuelva a intentarlo.\n\n"; } } >
$usernames = ["Pepito123", "MrMichi", "RetaxMain"];
echo "\n";
$username = readline("Por favor ingresa tu nuevo nombre de usuario: ");
while ($username <> $usernames) { echo "Registro exitoso"; };
Hola, me ayudan por favor revisando mi código, quiero hacerlo solo con while, porque el resultado en cualquier caso me da infinito.
$usernames = ["Pepito123", "MrMichi", "RetaxMain"];
echo "\n";
$username = readline("Por favor ingresa tu nuevo nombre de usuario: ");
while ($username <> $usernames) { echo "Registro exitoso"; };
Les agradezco mucho su ayuda...
Esta bien si yo comparo dos lenguajes porque simpre cuando veo los viode pienso en Javascript, por ejemplo alla es prompt() y php readline()?