Tenemos de ejemplo esto:
Voy a usar mi pc con Internet,primero debo ver si tengo electricidad,si tengo la prendo,si no la conecto o no la prendo,luego si la prendo necesito Internet,si hay lo uso,si no hay me conecto a wifi,etc.
Vamos a ver un ejemplo y después lo explico:
#!/usr/bin/env lua
-- Vemos si tiene energia la pc
t = {"Si","No"}
math.randomseed(os.time())
num = math.random(1,2)
-- ^ Funciones para elegir un numero al azar y asociarlo a una respuesta
res = t[num] -- Asociamos respuesta
function enciende()
repeat
io.write("Encender? (S/N):")
response = io.read()
until response == "S" or response == "N"
if response == "S" then
print("Encendida :D")
while true do
io.write("Ejemplo terminado\nEscribe exit para salir: ")
local response = io.read()
if response == "exit" then
break
end
end
os.exit(0)
else
print ("No encendida")
print ("Hasta luego")
os.exit(0)
end
end
while true do
if res == "Si" then
print ("Tienes energia")
enciende()
else
print("No tienes energia")
repeat
io.write("Conectar a la luz? (S/N):")
response = io.read()
until response == "S" or response == "N"
if response == "S" then
res = t[1]
end
if response == "N" then
print ("No conectada,hasta luego.")
os.exit(0)
end
end
end
Ahora lo ejecutan y podrán ver lo practicas que son las selecciones:
En este caso vimos las palabras especiales:
if,else,while,repeat,until,end
Primero que nada debemos saber que una estructura selectiva siempre decide basado en una condición verdadera,aunque esta sea falsa a simple vista:
Me explico,cuando un lenguaje de programación elige una acción se basa en una decisión verdadera,lógica booleana,verdadero o falso,en este caso en lua solo admite,false o true:
Vamos a ver unos ejemplos:
1 es igual a 1 -- Es verdadero
2 es igual a 1 -- Es falso
1 no es igual a 2 -- Es falso
1 es menor a 10 -- Verdadero
1 es mayor a 10 -- Falso
Para usar esto en lua se usan los simbolos de asociacion:
== -- Igual a
=~ -- No igual a
< -- Menor a
> -- Mayor a
<= -- Menor o igual a
>= -- Mayor o igual a
Ahora vemos los ejemplos de arriba con simbolos
1 == 1 -- Es verdadero
2 == 1 -- Es falso
1 ~= 2 -- Es verdadero
1 < 10 -- Verdadero
1 > 10 -- Falso
Bien sabiendo eso podemos usar las elecciones de control:
Las cuales son:
Si..
Si no..
No
La sintaxis es:
if condicion then -- Condición principal
elseif condicion then -- Segunda condición(opcional)
else -- Error en condicionales anteriores(opcional,es para manejo de errores)
end
Vamos a ver un ejemplo:
uno = 1
if 1 == 1 then
print ("Es verdadero")
elseif 2 == 1 then
print("Es falso")
elseif 1 ~= 2 then
print ("Es verdadero")
elseif 1 < 10 then
print ("Verdadero")
elseif 1 > 10 then
print("Falso")
else
print("Otro valor")
end
Si ejecutamos ese codigo obiamente no veremos la palabra es falso,ya que al ser falso no entra en la condicion,de hecho no pasa a las siguientes estructuras si encuentra una verdadera primero.
Si queremos probar todas las posibles concidencias verdaderas tendriamos que usar solo if's:
if 1 == 1 then
print ("1 == 1 : Es verdadero")
end
if 2 == 1 then
print("2 == 1 : Es falso")
end
if 1 ~= 2 then
print ("1 ~= 2 : Es verdadero")
end
if 1 < 10 then
print ("1 < 10: Verdadero")
end
if 1 > 10 then
print("1 > 10 : Falso")
end
Algo muy importante de lua es que no necesita identacion ni punto y coma,como es el caso de python en identacion(sangria) y perl(punto y coma),lua usa el estilo shell scripting o el de ruby,usa llaves de terminación,en el caso de if,else,elseif usa:
then -> endo mas adelante veremos:
do -> end
Por ejemplo podemos hacer una if en una linea:
if 1 ~= 2 then print ("1 ~= 2 : Es verdadero") end
Pero como siempre hay reglas de una buena programación y es bueno identar,comentar,usar varias lineas,usar varios espacios de linea,etc.
Esas son las estructuras de elección,básica ahora vamos a ver las estructuras de repetición,también de elección ya que deciden igual basado en una respuesta booleana.
El primero es while,el cual repite el código hasta que su condición inicial termine,la sintaxis es:
while condicion do
-- codigo a ejecutar
end
Con while podemos crear repeticiones infinitas (bucles infinitos),solo basta con crear una condicion infinita,una condición que no cambiara,por ejemplo:
while true do print("Bucle infinito") end
Si no tenemos una variable bandera o una terminación no esperada no terminara,a menos que cerremos el proceso del sistema.
Terminación inesperada con break:
while true do
print ("Bucle no infinito)
break
end
Terminación con variable bandera:
uno = 1
while uno == 1 do
print ("Cambiamos el valor de uno,la variable que controla while")
uno = 2
end
Bucle de repetición for,el bucle for se usa basado en una variable o variables banderas que hasta que terminen de recorrer su valor no se detendrá,la sintaxis es:
for var = inicio,final,argumento do
-- codigo a ejecutar
end
Veamos un ejemplo de una cuenta hasta diez desde uno:
for var = 1,10 do
print(var)
end
Una cuenta de 10 a uno:
for var = 10,1,-1 do
print(var)
end
Una cuenta de 0 a 100 de 5 en 5:
for var = 0,100,5 do
print(var)
end
Con un bluce while eso se puede escribir así:
var = 0
while var < 105 do
print(var)
var = var + 5
end
Normalmente lo que se puede hacer con un bucle se puede hacer con otro,otro ejemplo es el bucle repeat/until,solo que este es inverso al bucle while,el bucle while se rompe cuando la condición sea falsa y este se rompe cuando la condición sea verdadera:
var = 5
repeat
print(var)
var = var + 5
until var == 105
Pues eso es lo mas importante de las estructuras selectivas en lua,existen mas cosas como la iteracion,pero lo veremos cuando hable de funciones y tablas mas a fondo.
No hay comentarios.:
Publicar un comentario
Los comentarios serán revisados antes de ser publicados.