Listado completo de tutoriales

Temario del Tutorial7 - Estructura condicional (if)


Cuando se pretende que el programa, una vez llegado a un cierto punto, tome un camino concreto en determinados casos y otro diferente si las condiciones de ejecución difieren, se utiliza el conjunto de instrucciones:
if, else y elseif. La estructura base de este tipo de instrucciones es la siguiente:

if (Condición) 
{
  Instrucción a1;
  Instrucción a2;
}
else
{
  Instrucción b1;
  Instrucción b2;
}

Cuando la ejecución llega al punto donde se encuentra la instrucción if, el programa verificará el cumplimiento o no de la condición. Si la condición es verdadera se ejecutarán las instrucciones a1 y a2, de lo contrario, se ejecutarán las instrucciones b1 y b2.

En los casos en que las condiciones sean varias, se pueden utilizar los if de un modo denominado anidado o anillado, como se indica de la manera siguiente:

if (Condicion 1) 
{
  Instrucción a1;
  Instrucción a2;
}
else
{
  if (Condicion 2)
  {               
    Instrucción b1;
    Instrucción b2;
  }
  else
  {
    Instrucción c1;
    Instrucción c2;
  }
}

De este modo se pueden introducir tantas condiciones como se quiera dentro de la condición principal. Una variante de este sistema es utilizando la sentencia elseif, que permite en una sola línea introducir una condición adicional:

if (Condicion 1) 
{
  Instrucción a1;
  Instrucción a2;
}
elseif (Condicion 2)
{
  Instrucción b1;
  Instrucción b2;
}
else
{
  Instrucción c1;
  Instrucción c2; 
}

Para las condiciones tener en cuenta que disponemos de los siguientes operadores:

== para ver si una variable es igual a otra.
!= distinto.
>= mayor o igual.
> mayor.
<= menor o igual 
< menor 

La mejor forma de entender esta estructura condicional es por medio de ejemplos. El primero que nos plantearemos es generar un valor aleatorio (es decir lo elige la máquina al azar, como extraer una bolilla de un bolillero de lotería) comprendido entre 1 y 10. Luego mostraremos un mensaje si es menor o igual a 5 o si es mayor a 5.

El programa completo es:

pagina1.php

<html>

<head>
  <title>Problema</title>
</head>

<body>
  <?php
  $valor = rand(1, 10);
  echo "El valor sorteado es $valor<br>";
  if ($valor <= 5) {
    echo "Es menor o igual a 5";
  } else {
    echo "Es mayor a 5";
  }
  ?>
</body>

</html>

Es importante recordar que siempre la condición del if debe ir entre paréntesis. Si la condición del if se verifica verdadera (es decir el número sorteado es menor o igual a 5) ejecuta el primer bloque que se encuentra entre llaves. En caso de verificarse falsa la condición del if se ejecuta el bloque entre llaves que se encuentra después del else.

El valor aleatorio lo generamos llamando a la función rand pasándole el valor mínimo y máximo:

$valor=rand(1,10);

Imprimimos el valor generado a los efectos de controlar el resultado:

echo "El valor sorteado es $valor<br>";

En el primer problema tenemos solo dos caminos posibles, el valor es menor o igual a cinco o es mayor.En un segundo ejemplo mostraremos como disponer una estructura condicional if anidada.

El problema es el siguiente: Generar un valor aleatorio entre 1 y 100. Luego mostrar si tiene 1,2 o 3 dígitos.

Como podemos observar estamos en presencia de un problema que tiene tres caminos posibles. El valor puede tener 1 dígito, 2 dígitos o 3 dígitos. Si pensamos un poco podremos identificar que para que tenga un dígito debe generarse un valor entre 1 y 9, para que tenga dos dígitos deberá estar comprendido entre 10 y 99, y finalmente para tener 3 dígitos deberá ser el valor 100.

La página con el programa respectivo es:

<html>

<head>
  <title>Problema</title>
</head>

<body>
  <?php
  $valor = rand(1, 100);
  echo "El valor sorteado es $valor<br>";
  if ($valor <= 9) {
    echo "Tiene un dígito";
  } else {
    if ($valor < 100) {
      echo "Tiene 2 dígitos";
    } else {
      echo "Tiene 3 dígitos";
    }
  }
  ?>
</body>

</html>

Es importante notar como la segunda estructura if se encuentra contenida entre las llaves del else del primer if. Es decir que si el valor aleatorio es menor o igual a 9 se ejecuta el bloque del verdadero del primer if y no se ejecuta por lo tanto el if anidado en el else. Por el contrario si la condición del primer if se verifica falsa se ejecuta el bloque del else del primer if, la misma contiene una estructura if con sus bloques del verdadero y falso.

A modo ilustrativo el mismo ejemplo resuelto con la estructura if/elseif será:

<html>

<head>
  <title>Problema</title>
</head>

<body>
  <?php
  $valor = rand(1, 100);
  echo "El valor sorteado es $valor<br>";
  if ($valor <= 9) {
    echo "Tiene un dígito";
  } elseif ($valor < 100) {
    echo "Tiene 2 dígitos";
  } else {
    echo "Tiene 3 dígitos";
  }
  ?>
</body>

</html>

Si uno tiene mucha práctica con otros lenguajes de programación esta estructura de if anidados le será mas adecuada, en caso que haya empezado a programar hace poco será conveniente que elija y practique la primera forma.



Problema resuelto.

Copiar el contenido de este cuadro de texto al VS Code y almacenarlo en la carpeta c:\xampp\htdocs con un nombre con extensión php.
luego abrir el navegador (Chrome, FireFox, IExplorer etc.) y en la barra de direcciones tipear:
http://localhost/pagina1.php (o el nombre del archivo que le dió)

pagina1.php

Ejecutar ejemplo

Problema propuesto.

Generar un valor aleatorio entre 1 y 3. Luego imprimir en castellano el número (Ej. si se genera el 3 luego mostrar en la página el string "tres").

Para ver si una variable es igual a cierto valor debemos plantear una condición similar a:

if ($valor==3)
{
  //algoritmo
}
Solución
pagina1.php

Ejecutar ejemplo

Retornar