2.4 Estructuras de control de tipo condicional.
Las sentencias de un programa son ejecutadas por el ordenador segn su flujo natural,
es decir, de arriba hacia abajo y de forma consecutiva a no ser que, de alguna manera, se
altere este orden. Los comandos que realizan esta funcin se denominan comandos de control
de flujo y las sentencias a las que pertenecen sentencias de control de flujo.
Las sentencias condicionales permiten realizar ciertas instrucciones del programa slo
si se cumple la condicin asociada a ellas.
Sentencia if simple
La forma bsica de una sentencia condicional if es la siguiente:
if expresin_lgica
sentencias
end
o bien
if expresin_lgica , sentencias , end
Las sentencias se ejecutan slo si la expresin lgica se evala como cierta, en el caso de que la
expresin sea evaluada como falsa, el programa contina por la instruccin siguiente a end sin
realizar las sentencias asociadas al condicional.
Bloque if unicondicional
Se trata de otro tipo de sentencia ms compleja pero en la que sigue apareciendo una
nica expresin lgica. La sintaxis se indica a continuacin.
if expresin_lgica
bloque 1 sentencias
else
bloque 2 sentencias
end
Si la expresin lgica se evala como cierta se ejecuta el bloque 1 de sentencias, si se evala
como falsa se ejecuta el bloque 2. Nunca se ejecutan los dos bloques de sentencias a la vez, ni
ninguno de los dos. Se utiliza para elegir uno de dos 'caminos' en el programa.
Bloque if multicondicional
A continuacin mostramos la sintaxis de otra expresin condicional en la que se pueden
evaluar dos o ms condiciones.
if expresin_lgica_1
bloque 1 sentencias
elseif expresin_lgica_2
bloque 2 sentencias
............
elseif expresin_lgica_n
bloque n sentencias
else
bloque n+1 sentencias
end
Su funcionamiento es simple, la primera expresin lgica que se evale como cierta provoca la
ejecucin de sus sentencias asociadas y el posterior abandono de la estructura completa. Se
utiliza para elegir uno de varios 'caminos' en el programa.
La ltima rama (else) es opcional. Si se escribe, slo se ejecuta el bloque perteneciente a ella
si todas las expresiones lgicas anteriores han resultado falsas.
Veamos unos ejemplos de estas estructuras.
En el siguiente programa se estudia si un nmero n es mltiplo de 2 y/o de 3.
n=input (Introduce un entero);
if rem(n,2)== 0
disp('Es mltiplo de 2')
end
if rem(n,3)== 0
disp('Es mltiplo de 3')
end
Obsrvese que las dos condiciones a estudiar son independientes: el cumplimiento o no de la
primera no induce a que la segunda se cumpla o no. Cuando ocurra esto se deben estudiar los
casos de forma independiente usando if simples.
En el siguiente programa, se elige entre una de dos alternativas posibles (par o impar). Un
nmero es par o es impar, no puede ser las dos opciones a la vez ni ninguna de ellas. Cuando
ocurran estos casos se debe utilizar la estructura if /else .
n=input ('Introduce un entero positivo');
if rem(n,2)== 0
disp('n es par')
else
disp('n es impar')
end
A continuacin se incorpora al programa anterior una tercera opcin, nmero negativo, que
aumenta a tres las posibilidades de eleccin. Cuando tengamos ms de dos posibilidades
excluyentes se debe usar la estructura if /elseif/else .
n=input (Introduce un entero);
if n<0
disp(n es negativo)
elseif rem(n,2)== 0
disp(n es par)
else
disp(n es impar)
end