Estructuras de control de flujo
Las estructuras de control son unas construcciones del lenguaje que permiten el control del flujo de la aplicación. Para ello se aplican una serie de condiciones que irán dirigiendo el flujo de ejecución. Las estructuras de control se dividen en bloques, que definen una o varias condiciones que serán evaluadas. Si el resultado de la evaluación es verdadero (true) se ejecuta el código definido en el bloque, si no, se continúa con la evaluación del resto de los bloques si los hubiera. Si ninguna condición es verdadera, se ejecutaría el código del bloque por defecto, solamente si este ha sido definido.
Una estructura de control se define usando los bloques if
, elseif
y else
.
Bloque if
Las estructuras de control deben definir al menos una condición que se construye siempre con la palabra clave if
:
if (expresion) then
print("Verdadero")
end
La expresión a evaluar se define dentro de los paréntesis:
a = 5
if (a > 1) then
print("a es mayor que 1")
end
Si ejecutas el código anterior te devolverá:
$ lua TestEstructuras.lua
a es mayor que 1
Bloque else
En ocasiones se necesita un bloque adicional que extienda a un bloque if
y que permita dar una opción alternativa si la condición no se cumple. Este bloque, que es opcional, se define con la palabra else
. Un bloque else
se ejecutará si la condición del bloque if
no se cumple:
a = 5
if (a > 5) then
print("a es mayor que 5")
else
print("a es menor o igual que 5")
end
Al ejecutar el ejemplo anterior verás que el bloque que se ejecuta es el bloque else
, ya que, a = 5
y no cumple con la condición a > 5
, con lo que obtenemos:
$ lua TestEstructuras.lua
a es menor o igual que 5
Bloque elseif
El bloque elseif
permite extender al bloque if
con condiciones adicionales. Su uso es opcional y pueden encadenarse tantos bloques como condiciones se necesiten. El bloque if
siempre debe ir primero y a continuación se irán añadiendo todos los bloques elseif
. Si es necesario, podemos añadir también un bloque else
, pero este tendrá que posicionarse obligatoriamente al final, siendo el último bloque.
a = 3
if (a <= 1) then
print("a es igual o menor que 1")
elseif (a == 2) then
print("a es igual a 2")
elseif (a == 3) then
print("a es igual a 3")
else
print("a es mayor o igual que 5")
end
Al ejecutar el ejemplo anterior se tiene:
$ lua TestEstructuras.lua
a es igual a 3
Prueba el mismo ejemplo dándole a la variable a
distintos valores para que puedas comprender mejor como funciona.