Estructuras Repetitivas


 

                    Son estructuras basadas en reiterar una o un grupo de instrucciones "n" veces y dependen de una variable de control del ciclo.

PHP propone varios tipos de estructuras repetitivas o ciclos, cada uno con características especificas distintas:

Estructura while

Esta instrucción ejecuta un bloque de programa mientras se cumpla una cierta condición.
Si la condición es verdadera, ingresa en el ciclo del while, y ejecuta la porción de programa incluida.
Cuando deja de cumplirse la condición, sale del ciclo y continúa ejecutándose el resto del programa.
Si por el contrario, la condición no se cumple de entrada, las líneas en el interior del while no se ejecutarán ni una vez.

 El formato es el siguiente:

while (Condición)
  {
     Instrucción_1;
     Instrucción_2;
           :
     Instrucción_N;
  }
 
Ejemplo Práctico: Mostrar en una página los distintos tipos de tamaño de letras que existen e html.

<Html>
<Title>  Letras.php  </Title>
<Body>
 <?PHP
 $size=1;
 while ($size<=7)
  {
   echo "<font size=$size> Tamaño $size </font> <br>";
   $size++;
  }
 ?>
</Body>
</Html>

Comentario del programa: En primer lugar se asigna a la variable $size el valor inicial de uno, (es muy común olvidarse de colocar este valor inicial), que corresponde a la letra más pequeña.
La siguiente línea, while ($size<=7), muestra la creación del ciclo, que significa: mientras el valor de la variable $size sea menor o igual a 7 ingresar al ciclo. Dentro de este ciclo o estructura, se encuentra la línea encargada de modificar el font de cada texto mostrado. La primera vez, con la variable $size en el valor 1, la línea quedaría como:
echo "<font size=1> Tamaño 1 </font> <br>";
Posteriormente se  incrementa el valor de la variable $size en una unidad y nuevamente se retorna a la condición. El tamaño del mensaje varía a medida que aumenta el valor de la variable $size. Se continua el ciclo hasta que el valor de la variable $size sea de 8, con este valor la condición será falsa y sale del ciclo. Lo que se obtiene es una página como la siguiente:

Letras

Se observa que en este ciclo while, si la condición es falsa de entrada, las líneas en el interior del ciclo no se procesan, por lo tanto, esta estructura ejecuta las instrucciones en su interior de cero a n veces.

Ejemplo Práctico: Imprimir los múltiplos de cuatro comenzando en el valor 100 y terminando en el valor 400.

Múltiplo

El programa quedaría de la siguiente manera:

<Html>
<Title> Multiplos de 4   </Title>
<Body>
 <H2>
 Múltiplos de 4 de 100 a 400
 <Hr>
 <?PHP
 $m=100;    // Valor Inicial
 while ($m<=800)
  {
   echo "$m - ";
   $m = $m+4;
  }
 ?>
</Body>
</Html>

 

Ejemplo Práctico: Ingresar dos valores por medio de un formulario y mostrar posteriormente todos los números pares comprendidos entre ellos.

Vista Preliminar:

Pares1

 

El programa sería el siguiente:

<Html>
<Title> Numeros Pares </Title>
<Body>
<?PHP
if ($_REQUEST['boton'] != "")
{
  $a = $_REQUEST['a'];
  $b = $_REQUEST['b'];
  echo "<H4>";
  echo "Numeros pares comprendido entre $a y $b";
  echo "<Hr>";
  if ($a%2==0)
     $a=$a+2;
     else
     $a=$a+1;
  while ($a<$b)
   {
    echo "$a - ";
    $a = $a+2;
   }
 }
 else
 { 
 ?>
 <FORM ACTION="Pares.php" METHOD="POST">
 <H4>
 Ingrese el intervalo para los números pares
 <Hr>
 Valor 1: &nbsp<INPUT TYPE="TEXT" NAME="a" SIZE="10">
 <Br>
 Valor 2: &nbsp<INPUT TYPE="TEXT" NAME="b" SIZE="10">
 <Br><Br>
 <INPUT TYPE="SUBMIT" NAME="boton" VALUE="Ingresar Datos">
 <?PHP
 }
?>
</Body>
</Html>

Comentario del programa: Se comienza el programa con la pregunta:
if ($_REQUEST['boton'] != "") verificando si se ha pulsado el botón del formulario. La primera vez que se ejecuta la página, la condición resulta falsa, por lo tanto el programa continúa con la instrucción else, mostrando el formulario.


Con la línea:
        <FORM ACTION="Pares.php" METHOD="POST">  
se crea el formulario con la posibilidad de llamar a la misma página, esto se logra con : ACTION="Pares.php".
Con la marca <H4> se consigue modificar el tamaño de la letra, posteriormente se escribe la leyenda:
Ingrese el intervalo para los números pares
 y con <Hr> se realiza una línea horizontal.
Luego se muestra la leyenda Valor 1:, y con la marca &nbsp  se consigue dejar un espacio en blanco.
Con la instrucción: <INPUT TYPE="TEXT" NAME="a" SIZE="10">
Se muestra un editor de campo llamado "a" con capacidad para almacenar 10 caracteres.
Con <Br> se deja un renglón en blanco y luego se repite el proceso para ingresar el valor 2.
Con la línea:
<INPUT TYPE="SUBMIT" NAME="boton" VALUE="Ingresar Datos">
se muestra un botón cuyo rótulo es precisamente:  "Ingresar Datos".

Una vez ingresados los datos y presionado el botón, la página se llama a sí misma, pero ahora la condición inicial será verdadera, por lo tanto continúa procesando las líneas siguientes.
Mediante las líneas:
              $a = $_REQUEST['a'];
              $b = $_REQUEST['b'];
se almacenan en las variables $a y $b los datos enviados del formulario. Luego se cambia el tamaño de la letra a H4 y se imprime la leyenda:
"Números pares comprendidos entre $a y $b" 
La segunda condición:  if ($a%2==0), verifica si el Resto de dividir el valor de $a con el factor 2 es igual a cero. Si esto es cierto, significa que el valor de $a es un número par, por lo tanto se lo incrementa en dos, de lo contrario se lo incrementa en uno, en ambos casos, es para comenzar con el primer número par comprendido.
Posteriormente se ingresa al ciclo while con la condición de que el valor de la variable $a sea menor que el valor de la variable $b, de ser así, se muestra el valor de $a y un guión, luego se incrementa en dos unidades y se retorna a la condición.
El ciclo continúa hasta que el valor de $a sea superior al valor de $b, con lo que la condición será falsa y finaliza la repetición, terminando también la ejecución del programa. Una vez aceptado los valores, la pantalla se vería de la siguiente manera:

Pares2

Estructura do..while

Es un ciclo repetitivo en el cual la condición se evalúa al final del mismo. Su formato es el siguiente:

do
  {
    instrucción_1;
    instrucción_2;
         :
    instrucción_n;
  }
while (condición);

En este caso se observa que las instrucciones dentro del ciclo se procesan al menos una vez, ya sea que la condición sea falsa o verdadera. Por lo tanto, en este ciclo, las instrucciones se procesarán de uno a n veces.

Ejemplo Práctico: Mostrar en pantalla todos los números divisibles por 7 entre 100 y 400.

<Html>
<Body>
<Title> Divisibles por 7   </Title>
<H3> Números divisibles por 7 entre 100 y 400
<Hr>
 <?PHP
   $n=100;
   do
     {
      if ($n % 7 == 0)
       {
        echo "$n - ";
       }
      $n++;
     }
    while ($n<400);
  ?>
</Body> 
</Html>


Estructura for

Es uno de los ciclos más práctico para determinadas situaciones. Se utiliza generalmente cuando se tiene bien especificado la cantidad de repeticiones a realizar. Se diferencia de los anteriores, en que se debe incluir en él, una variable, la cual se incrementa o decrementa en forma automática.

Su formato es el siguiente:

for ($variable=ValorInicial; Condicion; Incremento)
  {
    Intrucción_1;
         :
    Intrucción_n;
  }

Esta instrucción for consta de tres parámetros, que son:

  1. Inicialización de la variable que se utilizará en la condición.
  2. Condición que se debe cumplir para permanecer en el ciclo.
  3. Modificación de la variable puesta en juego.

Ejemplo Práctico: Desarrollar una tabla que contenga el número, su cuadrado y su cubo.

El código sería el siguiente:

<Html>
<Title> Tabla de Cuadrados y Cubos  </Title>
<Body>
 <?PHP
  echo "<Table align=Center Border=2 width=60%>";
  echo"<Tr>"; 
    echo"<th>"; echo " Número ";    echo"</Th>";
    echo"<th>"; echo " Cuadrado ";  echo"</Th>";
    echo"<th>"; echo " Cubo ";      echo"</Th>";
  echo"</Tr>"; 

  for ($i=1; $i<=15; $i++)
   {
    $cuadrado= $i * $i;
    $cubo    = $i * $i * $i;
    echo"<Tr>"; 
      echo"<td align=Center>"; echo ($i);
      echo"<td align=Center>"; echo ($cuadrado);
      echo"<td align=Center>"; echo ($cubo);
    echo"</Tr>"; 
   }
  echo "</Table>";
 ?>
</Body>
</Html>

En este caso se ejecuta el bloque de la estructura for mientras el valor de la variable $i, sea menor o igual al valor de 15. Se calculan en forma independiente el cuadrado y el cubo y luego se lo muestra en una tabla.