La estructura if
es una estructura de selección o estructura condicional, en la que se evalúa una expresión lógica o sentencia de decisión y en función del resultado, se ejecuta una sentencia o un bloque de éstas.
La estructura if
puede presentarse de las siguientes formas:
Estructura if
simple
if (expresión-lógica) //al ser una sola instrucción, no son necesarias las llaves
sentencia1;
if (expresión-lógica)
{
sentencia1;
sentencia2;
…;
sentenciaN;
}
Si la evaluación de la expresión-lógica ofrece un resultado verdadero, se ejecuta la sentencia1
o bien el bloque de sentencias asociado. Si el resultado de dicha evaluación es falso, no se ejecutará ninguna instrucción asociada a la estructura condicional.
Estructura if
de doble alternativa
if (expresión-lógica) //al ser una sola instrucción, no son necesarias las llaves
sentencia1;
else
sentencia2;
if (expresión-lógica)
{
sentencia1;
…;
sentenciaN;
}
else
{
sentencia1;
…;
sentenciaN;
}
Si la evaluación de la expresión-lógica ofrece un resultado verdadero, se ejecutará la primera sentencia o el primer bloque de sentencias. Si, por el contrario, la evaluación de la expresión-lógica ofrece un resultado falso, no se ejecutará la primera sentencia o el primer bloque y sí se ejecutará la segunda sentencia o el segundo bloque.
Haciendo una interpretación cercana al pseudocódigo tendríamos que si se cumple la condición (expresión lógica), se ejecutará un conjunto de instrucciones y si no se cumple, se ejecutará otro conjunto de instrucciones.
Hay que tener en cuenta que la cláusula else
de la sentencia if
no es obligatoria. En algunos casos no necesitaremos utilizarla, pero sí se recomienda cuando es necesario llevar a cabo alguna acción en el caso de que la expresión lógica no se cumpla.
En aquellos casos en los que no existe cláusula else, si la expresión lógica es falsa, simplemente se continuarán ejecutando las siguientes sentencias que aparezcan bajo la estructura condicional if
.
Los condicionales if
e if-else
pueden anidarse, de tal forma que dentro de un bloque de sentencias puede incluirse otro if
o if-else
. El nivel de anidamiento queda a criterio del programador, pero si éste es demasiado profundo podría provocar problemas de eficiencia y legibilidad en el código. En otras ocasiones, un nivel de anidamiento excesivo puede denotar la necesidad de utilización de otras estructuras de selección más adecuadas.
Cuando se utiliza anidamiento de este tipo de estructuras, es necesario poner especial atención en saber a qué if
está asociada una cláusula else. Normalmente, unelse
estará asociado con el if
inmediatamente superior o más cercano que exista dentro del mismo bloque y que no se encuentre ya asociado a otro else
.