No tienes acceso a esta clase

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

¿Do... While?

10/25
Recursos

Aportes 44

Preguntas 5

Ordenar por:

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

¿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

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.

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);

Do … While se puede utilizar para evitar que se repita información en la base de datos

Algunos casos en los que se puede utilizar:
.

  1. Validación de entrada: Si se está solicitando una entrada del usuario y se necesita validarla antes de continuar, el ciclo do…while puede utilizarse para solicitar la entrada del usuario al menos una vez y luego validarla. Si la entrada es inválida, el ciclo se repetirá hasta que se proporcione una entrada válida.
    .
  2. Procesamiento de archivos: Si se está procesando un archivo y se necesita leer al menos una línea antes de decidir si continuar o no, el ciclo do…while puede utilizarse para leer la primera línea y luego evaluar si continuar o no.
    .
  3. Menús interactivos: Si se está construyendo un menú interactivo que requiere una selección del usuario, el ciclo do…while puede utilizarse para mostrar el menú al menos una vez y luego continuar procesando la selección del usuario.
    .
  4. Lógica de juego: Si se está construyendo un juego que requiere una acción del usuario antes de continuar, el ciclo do…while puede utilizarse para mostrar el juego al menos una vez y luego evaluar la acción del usuario para continuar o no.

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";
    }
}

> 
![](https://static.platzi.com/media/user_upload/image-9afaca6d-83fe-443d-a2d3-32018cbd6162.jpg)

perfect

```js
hola compañeros, con el siguiente código```js

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";

Me ha quedado así. Espero le sirva a alguien…

<?php

$usernames = ["lucio", "paco", "manuel", "lisa"];
echo "Introduce un nombre de usuario: ";
$username = readline();

while (in_array($username, $usernames)) {
    echo "El nombre que ha introducido ya existe, introduzca uno nuevo: \n";
    $username = readline();
}
if(!in_array($username, $usernames)) {
    array_push($usernames, $username);
    echo "Su nombre de usuario se ha registrado con éxito. \nAhora sois: ";
    print_r($usernames);

}

in_array( ): esta FUNCIÓN nos sirve para ver si dentro del array se encuentra un dato solicitado. Por ejemplo: En la clase se ve como se utiliza para encontrar un "username" en el arreglo "usernames".

Aquí esta mi ejemplo con el mismo ejercicio de hace unas clases, combinado con el if/else:

<?php

/**Esta clase evita que el usuario ingrese una contraseña antigua */

$historico_de_contraseñas = array(
“123456789”, “123”, “541”
);

do{
$nueva_contraseña = readline(“ingrese su nueva contraseña:”);
echo “esta contraseña ya existe, ingrese otra\n”;
}while( in_array($nueva_contraseña, $historico_de_contraseñas));

echo “\n”;

este seria un ambito real, pero siento que se puede mejorar bastante

importante para validar sin repetir datos en una database

<code> 
//programa que valide si en un array existe un nombre de usuario.
<?php
$usuarios = array("pablo","jose","salomon");

$user_new = readline("Ingrese su nombre de Usuarios ");

$mensaje = "Su usuario ya existe, por favor intente con otro \n";

while (in_array($user_new, $usuarios)){
   echo "Usuario ya existente por favor ingrese otro";
   break;
   $user_new;
}

Que kilombo que se hace con username usernames!! (los nombres de variables), recopmiendo que usen nombres de variable un triz mas especificos (No esta mal explicado en el video, es una sugerencia y buena practica).

$usernames debería pasar a llamarse algo similar a $username_list, es un poco mas especifico y da claridad de que es.

$username deberia llamarse $username_readed es especifico en cuanto a su procedencia.

Esto para que no haya confusi\on al leer el código, o al escribirlo

Entendi la referencia de github en RetaxMain

El resultado de reto: do-while con while 💚

<?php

$usernames = ["Pepito123", "MrMichi", "RetaxMaster"];
$username = readline("Dame el nombre de usuario 😁:");
$usernameExists = false;
$i = 0;
while (!$usernameExists && $i < count($usernames)) {
    if ($username == $usernames[$i]) {
        $usernameExists = true;
    }
    $i++;
}
if (!$usernameExists) {
    echo "Este nombre no esta en mi lista 😕\n";
} else {
    echo "El nombre de usuario esta en mi lista 😉\n";
}

?>
$i=0;
$x=2; 
do{
    $i+=1; 
    $resultado=$i*$x; 
    echo $resultado. "\n"; 

}while($resultado<20);

en este código se hizo la tabla del 2 con un ciclo do…while como ejemplo

Aquí la versión utilizando solo “while” en lugar de “do while”

  $usernames = ["Pepito123", "Mr.Michi", "RetaxMain"];
  $username = readline("Introduce el nombre de tu usuario: ");
 echo "\n";
  while (in_array($username, $usernames)) {
     $username = readline("Ese nombre de usuario ya está en uso. Por favor, elige otro: ");
     echo "\n";
 }
 echo "\n";

<?php
$usernames = [“goku”,“vegeta”,“gohan”,“trunks”];
do{
$guerero = readline(“Ingresa el nombre de un guerrero z:”);
}while(in_array($guerero,$usernames));

<?php

$usernames = [“goku”,“vegeta”,“gohan”,“trunks”];
$condition = true;
while($condition == true){
$guerero = readline(“Ingresa el nombre de un guerrero z:”);
$condition = in_array($guerero,$usernames);
}

Se puede usar do while para un menú de opciones

<?php

$usernames = ["Pepito", "Juana", "Maria"];

$login = readline("Ingrese su nombre de usuario: ");

if ( in_array($login, $usernames)) {
    while ( in_array($login, $usernames)){
        $login = readline("Ese nombre ya existe. Ingrese otro: ");
    }
    echo "Gracias";
}
else {
    echo "Gracias";
}

echo "\n";

Ahí está el reto. Mas o menos.

Una ligera variación del ciclo while es el do… while loop, se utiliza cuando quieras un bloque de código que se ejecutará al menos una vez y se hará condicional solamente después.

Yo lo hice con una variable que me sirva como indicador de que se cumplió la condición, en este caso me avisa que el nombre está en el array de nombres

$bandera = true;

while($bandera){
    $username = readline("Ingresa tu nuevo nombre de usuario: ");
    if(in_array($username, $usernames)){
        echo "El nombre de usuario ya existe";
        echo "\n";
    }else{
        echo "Nombre registrado, ten un buen dia";
        $bandera = false;
    }
    echo "\n";
}

Ejemplo con el ciclo “while”:

<?php

$usernames = [
    "Pepito123",
    "Mr.Michi",
    "RetaxMain"
];

$username = null;

while( in_array($username, $usernames) || $username === null ) {
    $username = readline("Por favor, ingresa tu nuevo nombre de usuario: ");
    echo "\n";
}
<?php
$server_usr_names = ["Juan15", "Manuel15" , "Maria15"];
$new_usr_name = readline("Ingresa tu nuevo nombre de usuario: ");

while (in_array($new_usr_name, $server_usr_names)){
    echo "ese nombre de usuario ya existe, por favor,ingresa otro. \n";
    $new_usr_name = readline("Ingresa tu nuevo nombre de usuario: ");
}
echo "\n";

Intente hacerlo un poco mas completo.

<?php

$usernames=[“juan”,“pedro”,“manuel”,“mr.micho”];
do{
$username =readline("porfavor ingrese su nombre de usuario: ");
if(in_array($username,$usernames))
echo “lo Sentimos, este nombre ya esta registrado, ingrese otro nombre\n”;
else {
echo “su nombre ha sido registrado exitosamente”;
array_push($usernames,$username);
break;
}

}while(in_array($username,$usernames));// esto verifica que esta variable no este registrada en le array

echo"graicas por su registrado";

Intento con solo while


$usuarios = ["nicolas","pedro","lorena"];

$usuario_nuevo = readline("Ingresa tu nuevo usuario: ");

if(in_array($usuario_nuevo,$usuarios)){
    $contador = 1;
    while (in_array($usuario_nuevo,$usuarios)){
        echo "Ese nombre ya esta registrado, por favor, ";
        $usuario_nuevo = readline("Ingresa tu nuevo usuario: ");
    }
    echo "te has registrado";
}else {
    echo "te has registrado";
    echo "\n";
}

echo "\n";

Tremendo cameo del profe JuanDC. 😯

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: ");
}

Reto sin usar do-while

$usernames = array ("Pepito123", "Mr.Michi", "Retax");
$username = readline("Por favor, ingresa tu nuevo nombre de usuario: ");

while(in_array($username, $usernames)){
    $contador=0;
    echo "Este nombre ya existe\n";
    $username = readline("Por favor, ingresa tu nuevo nombre de usuario: ");
    $contador++;
}
if($contador==1){
    echo "Tu nombre ha sido agregado\n";
}

Hola! realmente con while únicamente se complica mas el código, aqui le dejo mi humilde aporte:
$usernames = [“pepito123”, “Mr. michi”, “juan123” ];
$contador = 0;
while ($contador <= 0)
{
$username = readline (“Ingresa un usuario diferente a: pepito123, Mr. michi, juan123: \n”);
if (in_array($username,$usernames))
{
echo “usuario ya existe”;
}

else
    {
        echo "usuario creado exitosamente"; 
        $contador += 1;
    }

}

Le avisamos al usuario si ya existe el nombre que intentan ingresar:

<?php

//Ejecuta el código por lo menos una vez

$usernames = ["Francisco", "Javier", "Luis"];
$exit = false;

do {
    $username = readline("Ingresa tu nombre de usuario: ");

    echo (in_array($username,$usernames)) ? "Este usuario ya existe \n" : "Usuario agregado \n";

    
} while (in_array($username,$usernames));

El ciclo while y do while me quedaron relativamente similares, sólo tengo una línea de código adicional en el while respecto al do while.

Este es el código que capturé del while:

<?php
echo `clear`;
$usernames = ['Carlos', 'Jose', 'Juan', 'Felipe', 'Esteban'];
$username  = readline('Por favor, ingresa tu nuevo nombre de usuario: ');

while (in_array($username, $usernames)) {
    if (in_array($username, $usernames)) {
        echo "Ese nombre ya existe. Capture uno diferente.\n";
        $username = readline('Por favor, ingresa tu nuevo nombre de usuario: ');
    }
};

En el caso del do while, este fue el que hicimos:

<?php
echo `clear`;
$usernames = ['Carlos', 'Jose', 'Juan', 'Felipe', 'Esteban'];

do {
    $username = readline('Por favor, ingresa tu nuevo nombre de usuario: ');
    if (in_array($username, $usernames)) {
        echo "Ese nombre ya existe. Capture uno diferente.\n";
    }
} while (in_array($username, $usernames));

Probablemente el tema esté en que el programador se ahorra la primera petición de datos con el do while, pero fuera de ello funcionan de manera similar.

![](https://static.platzi.com/media/user_upload/image-ead2f2b8-21b2-4abd-89e0-959f1703c34b.jpg)![](https://static.platzi.com/media/user_upload/image-6c9b1bbf-2f00-4f15-8f37-cce01b246902.jpg)