Traductor

Bucles meiante condición NO Numérica

Anteriormente vimos el bucle for(), que responde a una lógica numérica, a continuación veremos otro tipo de bucles que responde a condiciones No numéricas.
Por ejemplo, podemos necesitar crear un bucle que recorra una matriz buscando un determinado contenido y se detenga si lo encuentra.
Este tipo de iteraciones se basa en la estructura while().
Esta estructura permite que un bucle itere mientras se cumpla una cierta condición.
El formato genérico para esta estructura es el siguiente:
while(condición){
        cuerpo del bucle;
}
Para ver el funcionamiento de esta estructura, corra el siguiente script y vea su funcionamiento:
<?php
          $ciudades=array("Madrid", "Barcelona", "Londres", "New York", "Los Angeles", "Chicago");
          $ciudad="";
          $indice=0;
          while ($ciudad!="Londres") {
                      $ciudad=$ciudades[$indice];
                      echo ($ciudad."<br />");
                      $indice++;
          }
          echo ("Final de la ejecución.");
?>

Paso a Paso

  • Tenemos una matriz con el nombre de ciudades del mundo, un variable que actuará como índice de dicha matriz y una variable adicional donde se almacenará cada elemento, sustituyendo al anterior valor en cada iteración del bucle.
  • En el bucle:
    • Vemos que el en la condición se establece que el bucle se ejecutará mientras que la variable $ciudad no tenga el contenido "Londres".
Bien, ejecutemos el script y veamos que sucede:
Bien que ha sucedido, ¿No se supone que la  que el bucle se ejecutaría mientras no se cumpla la condición de $ciudad sea Londres?, Pues en el momento en el que se encuentra este valor, el bucle debería interrumpirse, no mostrar también esta ciudad. ¿No es así?
Pues NO exactamente:
Analicemos detalladamente el comportamiento del script
  • En primer lugar el valor de $indice es 0 y el de ciudad es una cadena vacía.
  • Llegamos a la estructura while y vemos que la condición establece que se ejecutará mientras $ciudad no contenga "Londres".
  • Se evalúa la condición
    • Como resulta ser cierta, la ejecución entra dentro del bucle
    • Se busca en la matriz el elemento que corresponda a $indice=0
  • El primer elemento, es decir "Madrid", se almacena dentro de la variable $ciudad
    • A continuación esta variable se muestra en la página
  • La siguiente linea de código es la de incremento para la variable $indice, con lo que pasa a valer 1.
  • Se termina el cuerpo del bucle y pasa a la segunda iteración
  • De nuevo se evalúa la condición
    • Al resultar ser cierta se entra de nuevo al cuerpo del bucle , en la variable $ciudad se almacena el elemento correspondiente, en la siguiente linea se imprime este valor en la página, se incrementa el índice y se entra de nuevo al cuerpo del bucle
  • Con todas las veces que la valuación sea cierta, se procederá cono en el inciso anterior.
Pero que sucede con Londres ¿Por qué aparece?.
  • Cuando $indice tiene un valor de dos, el que corresponde a "Londres", para cuando esto sucede, nosotros ya estamos en el cuerpo del bucle, ya se ha evaluad la condición que resulta ser cierta, así que esta ciudad también se muestra.
  • En la siguiente iteración, con $indice=3, a condición se evalúa como falsa, por lo tanto ya no se muestra en pantalla.
    • Con esto se da por terminado la estructura de bucle.
Una de las características mas llamativas de este tipo de bucles es que se puede dar el caso de que no llegue a ejecutarse ni una sola iteración.
Suponga el siguiente script:
<?php
                $ciudades=array("Madrid", "Barcelona", "Londres", "New York", "Los Angeles", "Chicago");
                $indice=0;
                $ciudad=$ciudades[$indice];
                while ($ciudad!="Madrid") {
                               $ciudad=$ciudades[$indice];
                               echo ($ciudad."<br>");
                               $indice++;
                }
                echo ("Final de la ejecución.");
?>
Como ve es muy parecido al anterior, solo que la condición resulta ser falsa en la primera evaluación, con lo que no se entra al cuerpo del bucle.
Si usted quiere asegurarse de que su bucle ejecute almenos una iteración, deberá evaluar la condición después; para esto PHP nos propone la estructura do...while, cuyo formato genérico es el siguiente.
do{
      cuerpo del bucle;
}

while(condición);
Como ve es parecido al anterior pero cambia el punto donde se evalúa la condición.
Recuerden Comentar Compartir y Darle 

Hasta la Próxima

Si te hemos ayudado : )
Te agradeceríamos que apoyaras este proyecto

0 comentarios:

Publicar un comentario