Bienvenidos sean a este post, hoy hablaremos sobre for y como dice el titulo el for de tipo numerico porque de esta funcion vamos a tener dos tipos: numerico y generico, pero hoy nos centraremos en el primero y en el proximo post hablaremos sobre el segundo.

Anuncios

En el caso de los for numericos usaremos la siguiente sintaxis:

for variable=valor1, valor2 <, valor3 > do
     … instrucciones …
end

for variable=valor1, valor2 <, valor3 > do instruccion end

En este caso tendremos una variable que tendra un valor inicial, en este caso es valor1, se incrementara hasta alcanzar el valor informado en valor2, el valor informado en valor3 sera como se incrementara por cada vuelta que damos en el bucle for, el valor3 es opcional porque si no es informado Lua considera que se debe incremetar de a 1, veamos el siguiente ejemplo:

for00.lua

max=0
for i = 0, 10 do
        local x
        x = i * 2
        print("i: " .. i, "x: " .. x)
        max = i
end
print(max, i, x)
Anuncios

En este caso primero tendremos una variable global llamada max con valor inicial de cero, luego usaremos un bucle for, donde usaremos la variable i con un valor inicial de 0, el siguiente valor sera el limite y para este caso usamos 10, comenzamos el bloque por medio del do, primero crearemos una variable local llamada x, luego a esa variable le asignaremos el valor de i multiplicado por 2, luego mostraremos los valores de i y x, despues a max le asignaremos el valor de i, una vez terminado el bucle mostraremos en pantalla el valor de max, i y x, probemos el programa para ver su salida:

tinchicus@dbn001dsk:~/lenguaje/lua$ lua5.3 for00.lua
i: 0    x: 0
i: 1    x: 2
i: 2    x: 4
i: 3    x: 6
i: 4    x: 8
i: 5    x: 10
i: 6    x: 12
i: 7    x: 14
i: 8    x: 16
i: 9    x: 18
i: 10   x: 20
10      nil     nil
tinchicus@dbn001dsk:~/lenguaje/lua$

Observen como se incrementan los valores de i y x pero cuando mostramos los valores de max, i y x obtenemos el valor de max (porque es global) pero de i y x no porque son locales del bloque, para ello le asignamos el valor de i a max, por ejemplo del caso anterior agreguemos el tercer valor es decir modifiquemos la linea del for de la siguiente forma:

for i = 0, 10, 2 do

Si volvemos a probar nuestro programa obtendremos la siguiente salida:

tinchicus@dbn001dsk:~/lenguaje/lua$ lua5.3 for00.lua
i: 0    x: 0
i: 2    x: 4
i: 4    x: 8
i: 6    x: 12
i: 8    x: 16
i: 10   x: 20
10      nil     nil
tinchicus@dbn001dsk:~/lenguaje/lua$

En este caso vemos como en lugar de hacer el paso sumando 1 lo hizo sumando 2, es decir si pusieramos 3 o 4 en lugar de sumar de a 2 lo sumara de 3 o 4, es decir por el numero que informemos pero esto hay que hacerlo con cuidado porque bajo ciertas circunstancias podemos obtener errores involuntarios, tambien podemos usar estos bucles para otras funciones, veamos el siguiente ejemplo:

for01.lua

a = {}
for i = 0, 10 do
        local x
        x = i * 2
        a[i] = x
end
for i = 0, 10 do
        print("a[" .. i .. "]: " .. a[i])
end
Anuncios

Primero crearemos una tabla vacia, luego haremos un bucle for donde creara una variable i y la incrementara desde 0 hasta 10, en el bloque crearemos una variable local llamada x, a la cual lo incrementaremos, por ultimo la agregaremos a la tabla donde i sera usado para la posicion del mismo y luego usaremos a x como valor a almacenar en esa posicion, por ultimo crearemos un bucle donde mostraremos el contenido de la tabla a, probemos nuestro programa para ver su salida:

tinchicus@dbn001dsk:~/lenguaje/lua$ lua5.3 for01.lua
a[0]: 0
a[1]: 2
a[2]: 4
a[3]: 6
a[4]: 8
a[5]: 10
a[6]: 12
a[7]: 14
a[8]: 16
a[9]: 18
a[10]: 20
tinchicus@dbn001dsk:~/lenguaje/lua$

En este caso vemos como cada posicion de esta tabla nos devolvio el valor de x almacenado en la tabla.

Anuncios

En resumen, hoy hemos visto como trabaja el for numerico, como es su sintaxis, como trabaja de forma simple, como podemos usarlo para incrementar una variable, una tabla, como obtener los datos de una tabla, espero les haya sido util sigueme en Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Tambien podes donar

Es para mantenimiento del sitio, gracias!

$1.00