Hola, ahora que ya hemos visto lo que son las operaciones lógicas, veremos porque son de gran utilidad.
Las estructuras de control son ciertas sentencias que usan palabras reservadas para realizar distintas acciones, como repetir un fragmento de código mientras se cumpla una condición, o realizar cierto código si se cumple una condición, y si no se cumple, realizar otro código.
Pues bien, en Lua disponemos de las siguientes estructuras de control:
if...then...else: Esta estructura condicional, permite ejecutar un código si una condición se cumple, su uso es el siguiente:
if CONDICIÓN then BLOQUE end
De tal manera que si condición es true (ya sea por medio de una operación lógica o de una variable booleana), reliza el bloque de código que hemos puesto. Esta estructura tiene algunas variantes que veremos a continuación:
if CONDICIÓN then BLOQUE1 else BLOQUE2 end
Si condición es true, se realizará lo que esté en bloque1, sino se cumple, se realizará bloque2.
Otra variante que tenemos es con el uso de elseif:
if CONDICIÓN1 then BLOQUE1 elseif CONDICIÓN2 then BLOQUE2 elseif CONDICIÓN3 then BLOQUE3 . . . elseif CONDICIÓN# then BLOQUE# end
Como podemos ver, se puede colocar la cantidad de elseifs que se requiera, esta forma de if es como si tuviéramos varios ifs en uno solo, de tal manera que si se cumple una de las condiciones (verificando desde la primera hasta la última), realizará el bloque que esté dentro.
Y la última variante, es igual que la de arriba pero añadiendo un else después de todos los elseifs:
if CONDICIÓN1 then BLOQUE1 elseif CONDICIÓN2 then BLOQUE2 else BLOQUE3 end
De forma que si no se cumple ninguna de las condiciones que pongamos, se realizará lo que esté dentro del else.
Ahora veremos lo que son los bucles. Los bucles o lazos repetitivos se encargan de repetir un fragmento de código mientras se cumpla cierta condición. En Lua disponemos de estos bucles:
while CONDICIÓN do BLOQUE end
Este bucle primero verifica si condición es true (verdadera), si lo es y mientras lo sea, relizará el bloque de código, y se detendrá cuando condición sea false (falsa).
Otro bucle que tenemos es el repeat - until, y su uso es este:
repeat BLOQUE until CONDICIÓN
Este bucle realiza el bloque de código primero, de tal manera que se ejecutará al menos una vez a diferencia del while, luego realiza la comprobación de si condición es true (verdadero) o si es false (falso), si es true, volverá al principio del bloque, lo realizará otra vez, y hará la comprobación de nuevo, una vez que la condición sea falsa saldrá del bucle.
El último bucle que veremos, es el for:
for variable=inicio,fin[,step] do BLOQUE end
A diferencia de los otros, este bucle usa una variable como índice, la cual tendrá un valor inicial (inicio) que aumentará progresivamente una cantidad (step es el incremento o decremento, sino se lo coloca, por default step será 1).
Al igual que los otros, relizará una comprobación, si la variable no ha alcanzado un valor final (fin) continuará con la ejecución del bloque de código, cuando la variable haya alcanzado o sobrepasado el valor final, este bucle se detendrá.
Y una variación algo especial del for, es esta:
for key,value in funcion(array) do BLOQUE end
Este bucle usará una función que recorra los elementos de un array, devolviendo el índice (key), siendo este number o string dependiendo de la función, y devuelve también el valor o dato (value) del elemento almacenado en dicho índice, este bucle se detendrá cuando se termine de recorrer el array. La función a usar puede ser next, pairs o ipairs.
En los bucles, tenemos dos palabras reservadas con funciones muy útiles:
break: Esto se lo usa cuando se quiere salir de un bucle, por ejemplo:
while true do BLOQUE1 break BLOQUE2 end BLOQUE3
eso haría que sólo se ejecute el bloque1 una vez, pasando por alto el bloque2 y continuaría hacia bloque3, esto se lo puede usar en un condicinal también, de este modo:
while true do BLOQUE1 if CONDICIÓN then break end BLOQUE2 end BLOQUE3
de tal forma que cuando la condición sea true (verdadera), saldrá del bucle y seguirá con el resto del programa (bloque3)
continue (sólo en LuaDEV): Como la de arriba, sirve para "saltarse" partes de código, pero sin salir del bucle, es decir, sólo continúa hacia la siguiente iteración:
while true do BLOQUE1 if CONDICIÓN then continue end BLOQUE2 end BLOQUE3
Cuando condición sea true, se saltará el bloque2 y continuará desde bloque1
Ahora un ejemplo usando tanto break como continue:
for i=0, 5 do print("Iniciando iteracion... [i="..i.."]") if i < 3 then continue end if i == 4 then break end print( i ) end print("FIN")
Ese trozo de código daría este resultado:
Iniciando iteracion... -- i=0 Iniciando iteracion... -- i=1 Iniciando iteracion... -- i=2 Iniciando iteracion... -- i=3 3 Iniciando iteracion... -- i=4 FIN
Nota: todo lo que va despúes de dos guiones "--" es un comentario, es decir, no afecta en nada al código
Eso es todo en cuanto a estructuras de control, si algo no ha quedado claro o tienen dudas, comenten que con gusto les explicaré =)
Tutoriales realizados con la ayuda y asesoramiento de DeViaNTe
Saludos!
PSP FAT [5.00 M33-6] [6.60 ME] [Hard Moded] / Nintendo Wii [4.1U] [cIOS Hermes] [D2X cIOS] / iPhone 3G [4.2.1] [BB 05.13.04] [redsn0w] / iPod Touch 4 [6.1] [evasi0n]
07/05/10: Tuve el placer de llamarle con todo derecho "N00B" a molotovi xDDD
Recuerda: Sé el intérprete -_-
buen tutorial pero
tu como aprendiste a hacer eso
Hola chimecho
La verdad es de que no me quedo muy claro pero necesesito, un tutorial para empezar a programar en lua.
mmm...
Ya leiste las 4 entregas anteriores?
Buen tutorial, pero el
Buen tutorial, pero el continue no me quedo muy claro.
remarcar k el continue; solo
remarcar k el continue; solo estará disponible en luadev.
Sería como el next de C. Pasa a la siguiente iteración del bucle, sin la necesidad de llegar al final del bloque de código que se esté ejecutando.
Actualmente desarrollando nuestra web y UXCode : http://www.gcrew.es
^^
Es fácil, mira:
En ese código, pasará por punto 1, luego comprobará si condición es verdadera, si lo es, va a la siguiente vuelta automáticamente, pasando por alto el punto 2, de tal manera que sigue pero en el punto 1; En cambio, si es falsa, hará todo el código dentro del while sin saltarse nada.
Si aun no queda claro, hazmelo saber
Un saludo
PSP FAT [5.00 M33-6] [6.60 ME] [Hard Moded] / Nintendo Wii [4.1U] [cIOS Hermes] [D2X cIOS] / iPhone 3G [4.2.1] [BB 05.13.04] [redsn0w] / iPod Touch 4 [6.1] [evasi0n]
07/05/10: Tuve el placer de llamarle con todo derecho "N00B" a molotovi xDDD
Recuerda: Sé el intérprete -_-
Me vas a matar
pero no comprendi xD
Buen tuto, espero aprender xD.
xDD
Dime que no has comprendido, que te explico...