Revista Informática

PHP desde Cero: Estructuras de Control

Publicado el 13 agosto 2013 por Codehero @codeheroblog

Bienvenidos a un nuevo capítulo de la serie PHP desde Cero, en los anteriores capítulos vimos cuales eran los tipos de variables, constantes y los operadores de asignación en PHP. En esta oportunidad estudiaremos cuales son las estructuras de control y aprenderemos como utilizarlas con lo que hemos aprendido anteriormente.

Para que un script sea útil debe poder tomar decisiones y repetir tareas dependiendo de los datos que tenga, esto se logra con las estructuras de control. Por ejemplo, cuando hacemos inicio de sesión queremos que solo sea efectivo si el usuario ingreso correctamente la clave.

En términos de programación esto se llama control de flujo y bucles. Esto son estructuras que nos brinda PHP y nos permite que el código tome decisiones basadas en ciertos criterios. Estas estructuras se pueden descomponer en dos categorías.

Sentencias Condicionales:

  • Sentencia if
  • Sentencia if … else
  • Sentencia switch case

Sentencias de Bucles:

  • Bucle for
  • Bucle while
  • Bucle do .. while

Sentencias Condicionales

Las sentencias condicionales son el núcleo para la toma de decisiones en los scripts de PHP. Estas sentencias básicamente controlan si parte de un código es ejecutado o no dependiendo del valor (True o False) que devuelve de una expresión que es evaluada. Visto de otra manera, estas sentencias dicen que camino se debe tomar a la hora de ejecutar el código. Las sentencias condicionales que provee PHP ( y casi todos los lenguajes de programación ) son if, if … else, if .. elseif y switch case.

Sentencia If

El bloque mas básico de un código condicional es el if. La primera línea de esta sentencia consiste en la palabra if seguida por la expresión que será evaluada entre paréntesis.

$variable = 1;
if ($variable < 2)

En el ejemplo anterior si el valor de $variable es menor que 2 la expresión será evaluada como True, si no entonces será False.

El segundo paso para construir la sentencia if es especificar el código que será ejecutado si la expresión es evaluada como True. Esto se logra colocando el código que se desee ejecutar entre llaves {}. Si la condición no se cumple entonces el interprete PHP ignora el código rodeado por las llaves {}.

<?php
$variable = 1;
if ($variable < 2)
{
     // instrucciones que seran ejecutadas si la condición se cumple
     echo 'El valor de mi variable es menor que 2';
     $variable++;
}
?>

Sentencia If .. Else

La sentencia if anterior nos permite especificar que hacer si la expresión que se evalúa es verdadera. Sin embargo, no nos permite especificar que hacer cuando la expresión es evaluada como falsa. Aquí es donde aparece la sentencia if… else.

La sintaxis para if .. else es la misma que para el if, pero se le agrega la sentencia else para especificar la acción alternativa cuando la expresión sea falsa.

<?php
$usuario = "juan";
if ($usuario == "admin")
{   
      // Se ejecuta cuando la expresión es True
      echo 'Hola Admin, tiene todos los permisos';
} 
else 
{
      // Se ejecuta cuando la expresión es False
      echo 'Hola ' . $usuario ;
}
?>

Como se puede ver en el anterior ejemplo el código que sigue la sentencia if se ejecuta si la expresión que se evaluó es True, en cambio si la expresión fue False entonces se ejecuta el código que esta después de la sentencia else.

La sentencias if .. else pueden ser creadas con un nivel mas de control. Esta seria la sentencia if .. elseif, con la cual se pueden anidar varios if.

<?php
$usuario = "supervisor";
if ($usuario == "admin")
{
      echo 'Hola Admin, tiene todos los permisos';
} 
else if ($usuario == "supervisor")
{
      echo 'Hola Supervisor';
}
else 
{
      echo 'Hola ' . $usuario ;
}
?>

Sentencia Switch Case

La sentencia if .. else funciona bien si queremos evaluar pocas opciones, pero cuando la cantidad de posibilidades se incrementa no es muy practico utilizar esta vía. En estos casos es cuando aparece la sentencia switch case, la cual se define de la siguiente manera.

switch ($variable)
{
     case "constante1" :
      Codigo PHP
     break;

     case "constante1" :
      Codigo PHP
     break;

     case "constante1" :
       Codigo PHP
     break;

     default :
      Codigo PHP
     break;
}

Pueden haber toda la cantidad de sentencias case que sean necesarias para comparar todas las opciones que se necesiten. Cuando una coincidencia es encontrada el código que encuentra justo después del case es ejecutado hasta donde se encuentre el break. La sentencia break; es muy importante ya que sin esta todos los cases siguientes se ejecutarían también. La sentencia default especifica la acción a ejecutar en caso que de que ninguno de los case se hayan ejecutado.

<?php
$carro = "Edge";
// La comparación en el switch verifica que la variable se igual a alguno de los datos de los case
switch ($carro) 
{
     case "Caravan" :
     print "Construido por Dodge";
     break;

     case "Supra" :
     print "Construido por Toyota";
     break;

     case "Edge" :
     // En este caso se ejecutara este código
     print "Construido por Ford";
     break;

     case "540i" :
     print "Construido por BMW";
     break;

     case "Prelude" :
     print "Construido por Honda";
     break;

     default  :
     print "Modelo desconocido ";
     break;
}
?>

Sentencias de Bucles

Los bucles son la principal manera de indicarle al interprete de PHP que ejecute una tarea varias veces hasta que una condición se cumpla. Las sentencias para ejecutar bucles son while, do .. while y for.

Bucles For

Supongamos que deseamos sumar un numero a si mismo 10 veces. Una manera de hacerlo seria la siguiente:

<?php
$variable = 10;

$variable += $variable;
$variable += $variable;
$variable += $variable;
$variable += $variable;
$variable += $variable;
$variable += $variable;
$variable += $variable;
$variable += $variable;
$variable += $variable;
$variable += $variable;
?>

Esto solucionaría el problema que tenemos, pero que pasa si tenemos que hacerlo 100 veces o 1000 veces. Para estos casos tenemos el bucle for, el cual se declara de la siguiente manera.

for ( inicializador ; expresion condicional ; expresion bucle )
{
      // Código PHP que se va a repetir
}

El inicializador es una variable numérica que es puesta con el valor en donde se desea comenzar, normalmente se utiliza $i = 0. La expresión condicional especifica la condición que se debe aprobar para que el ciclo continúe, por ejemplo $i < 1000. Mientras $i sea menor que 1000 entonces el ciclo continuara repitiendose. Por ultimo viene la expresión bucle, la cual especifica la acción a realizar con la variable $i. Por ejemplo, incrementar en 1 $i++.

Cuando juntamos todo esto podemos crear un bucle for

<?php
$j = 10;
for ($i=0; $i<10; $i++)
{
      $j += $j;
}
?>

Bucles While

El bucle for que vimos anteriormente funciona muy bien cuando sabemos la cantidad de veces que necesitamos repetir el código con anterioridad. En muchas ocaciones será necesario repetir un código pero sin saber cuando la condición de parada será cumplida, para estos casos esta el bucle while.

Basicamente, el bucle while repite el código hasta que una cierta condición se cumpla. La sintaxis de este bucle es la siguiente

<?php
while (condicion)
{
      // PHP Código que se repite 
}
?>

En el siguiente código la condición es una expresión que puede devolver True o False y podemos ver que el código que se repetirá será $variable = $variable + $j;.

<?php
$variable = 0;
$j = 10;

while ($variable < 100 )
{
      $variable = $variable + $j;
}
?>

Aquí la expresión del bucle evalúa si $variable es menor a 100. Si $variable es mayor a 100, entonces el interprete de PHP omitirá todo el código que este dentro de las llaves {}. Pero si $variable es menor a 100, entonces el código dentro de las llaves es ejecutado y la condición de vuelve a evaluar. Este proceso se repite hasta que $variable sea mayor a 100.

Bucles Do .. While

Podemos pensar en este bucle como un while invertido. El bucle while primero evalúa la expresión y luego ejecuta el código dependiendo del resultado. Si la expresión que se evaluó retorna False la primera vez entonces el código nunca se ejecuta. En cambio el do .. while primero ejecuta el código y luego evalúa la expresión, en caso de que sea True entonces se vuelve a ejecutar y asi hasta que la expresión sea False.

<?php
do
{
    // Código PHP que se repite 
} while (condicion)
?>

En el siguiente ejemplo el bucle va a continuar hasta que $i sea igual a 0, pero el do .. while asegura que minimo se ejecute una vez.

<?php 
$i = 10;
do
{
 $i--;
} while ($i > 0)
?>

Conclusión

En este capítulo hemos aprendido las estructuras de control de PHP, las cuales son muy importantes para darle lógica a nuestros scripts. Por esto es bueno que tengamos claro cuando se debe usar cada una y esto solo se logra a través de la practica. Cualquier duda estaré atento para responderla en la sección de comentarios.


Volver a la Portada de Logo Paperblog