5 - Estructura condicional (if)
Las estructuras condicionales comparan una variable contra otro(s) valor(es), para que en base al resultado de esta comparación, se siga un curso de acción dentro del programa u 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:
<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.