No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

驴Do... While?

10/25
Recursos

Aportes 40

Preguntas 5

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

驴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 鈥淢aster / 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鈥hile 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鈥hile 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鈥hile 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鈥hile 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鈥hile:

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

> 

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(鈥渋ngrese su nueva contrase帽a:鈥);
echo 鈥渆sta 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鈥hile como ejemplo

Aqu铆 la versi贸n utilizando solo 鈥渨hile鈥 en lugar de 鈥渄o 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 = [鈥済oku鈥,鈥渧egeta鈥,鈥済ohan鈥,鈥渢runks鈥漖;
do{
$guerero = readline(鈥淚ngresa el nombre de un guerrero z:鈥);
}while(in_array($guerero,$usernames));

<?php

$usernames = [鈥済oku鈥,鈥渧egeta鈥,鈥済ohan鈥,鈥渢runks鈥漖;
$condition = true;
while($condition == true){
$guerero = readline(鈥淚ngresa 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";
}

Hola, les comparto mi intento 馃槂

$usernames = ["Batman", "Superman", "Spiderman"];
$is_the_same = TRUE;

while ($is_the_same) {
    $new_username = readline("Type the new username: ");
    
    if (!in_array($new_username, $usernames)) {
        $is_the_same = FALSE;
        array_push($usernames, $new_username);
        print_r($usernames);
        echo "The username '$new_username' has been added succesfully!";
    }
}

echo "\n";

Ejemplo con el ciclo 鈥渨hile鈥:

<?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=[鈥渏uan鈥,鈥減edro鈥,鈥渕anuel鈥,鈥渕r.micho鈥漖;
do{
$username =readline("porfavor ingrese su nombre de usuario: ");
if(in_array($username,$usernames))
echo 鈥渓o Sentimos, este nombre ya esta registrado, ingrese otro nombre\n鈥;
else {
echo 鈥渟u 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 = [鈥減epito123鈥, 鈥淢r. michi鈥, 鈥渏uan123鈥 ];
$contador = 0;
while ($contador <= 0)
{
$username = readline (鈥淚ngresa un usuario diferente a: pepito123, Mr. michi, juan123: \n鈥);
if (in_array($username,$usernames))
{
echo 鈥渦suario 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.