Ir al contenido principal

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.