Se puede hacer una tabla infinita de tal modo que quede algo asi?:
Tabla = {}
Tabla[1] = ( mi camisa :verde )
y que sigan apareciendo arrays para no tener que escribir todo
Saludos
¡Iníciate en Linux fácilmente! Sólo entra aquí y comprueba que distribución se adapta mejor a tí.
Mi review: iPod Touch 4G
gracias
gracias
Ya se que este comentario ya
Ya se que este comentario ya lo puse en otro post pero no entiendo los bucles for
Saludso
Como bien
Como bien su nombre lo indica For es un bucle, o sea que se va a repetir un número N de veces.
Se forma de la siguiente forma:
for "Valor_inicial", "límite_de_valor" do
"acción"
end
Ejemplo:
for i = 0, 5 do
screen:print(i,i,"Mira como cambia la posición",blanco)
end
Lo que hace for es a partir del valor inicial, sumar uno hasta llegar al limite del valor.
También es el número de veces que se va a repetir la acción.
Lo mejor que puedes hacer es ponerte a experimentar y jugar con los bucles, para ver como es que funcionan.
Bueno, for no siempre suma uno
Ampliando la información... for sirve para hacer una misma cosa un número determinado de veces, empezando en un punto A y terminando en un punto B, y empleando un paso C.
Este paso es un entero, pero puede ser cualquiera distinto a 0 (si fuera 0, el bucle no se movería).
O sea, si empezamos desde el puesto 10, podemos hacer un bucle descendente de cinco repeticiones (iteraciones), haríamos un paso de -2. Tipo:
for i=10,1,-2 do
...
end
Es decir, en este caso, de los 10 elementos que tuviéramos, tomaríamos uno de cada dos empezando desde el final de la lista de elementos.
Strength is irrelevant. Resistance is future. We wish to improve ourselves.
La fuerza es irrelevante. La resistencia es futuro. Queremos mejorarnos.
Buenas
Ups, duplicaste un post xD. Que algun mod se encargue.
Si lo sé, de hecho la estructura que das es de C, Lua omite este paso, y siempre suma 1, o por lo menos es lo que yo sé, si alguién me puede confirmar ;-)
for(i=0;i<10;i++){};
en dicha operacion,
i=0 es donde unavariable llamada i, la iniciamos a cero
i<10, es mientras que i sea menor a 10, el bucle se repite
i++, inclementa el valor de una variable llamada i, en 1
ahora, i++ incrementa y compara
e ++i compara y luego inclrementa , en su pocicion, ya que i++ funciona como una funcion
es decir, si i=1
print i++, daria 2
print i++, daria 3
pero si i=1
print ++i, daria 1
print i++, daria 3, porque ya se aunmento 1 a i, pero no fue visualizado.
es decir i++ es = a
funcion mas(i)
i=i+1
return i
end
print mas(i) , yel toro metodo, tendria un comodin, diciendo pendiente para sumar a la proxima que me la pidas. creo, jamas se supo entender el maestro.
espor eso que se puede escribir asi
i=o
while i<10
i=i+1
loop
que es lo mismo, capish...
por lo que si no pusieramos i++, i nunca cambiaraia, y la comparacion i<10 nunca se haria
pero no tiene nada que ver, pues como en el while, lo puedes poner donde tu quieras.... creo...ya no uso c. desde hace ya varios años.
GuinXell aprender mas...
En C sería un pelín más complejo... ;)
Y es que en C, hasta donde sé (por lo menos el ActionScript lo hace, y es el mismo "estilo ECMA"), puedes elegir además que la operación se haga antes o después del bucle/iteración. O sea, que no es lo mismo:
for(i=0;i<10;i++){};
que
for(i=0;i<10;++i){};
i-- o --i para descendentes. Esto con pasos de 1... no lo he probado, pero creo que hasta puedes hacer que el paso sea, por ejemplo, el resultado de una función (y en cualquier caso, hacerlo internamente dentro del bucle). O sea, que en la primera iteración sumes 1, en la segunda 7, en la 3ª 516 y lo que te parezca... lo que lo convierte en una estructura mucho más dinámica (como un loop/do while/until en el que alteraras el valor de cambio o la condición cada vez).
En Lua técnicamente parece que tb pudieras hacerlo, pero eso ya no lo sé...
Pero vaya, que lo del STEP ya estaba incluso en el MSX-Basic (de Microsoft) del 1983 :D... y si entonces ya estaba, en todos los lenguajes posteriores estará: la cuestión es descubrir dónde, que las referencias y documentaciones no siempre son claras :D (por costumbre es el tercer parámetro).
PS.: Gracias al que borró el post duplicado. Se siente, hoy ha llovido otra vez, mi conexión anda tonta y me hace estas cosas raras.
Strength is irrelevant. Resistance is future. We wish to improve ourselves.
La fuerza es irrelevante. La resistencia es futuro. Queremos mejorarnos.
es correcto
en la programacio de la linea basic, se le llama step, a lo que referimos en incrementode de.
si quiero con tontar del 1 al 10 de 2 en 2
usariamos: for contador=1,10,2 do
si lo quisieramos hacer al reves,de 10 a 1 de 2 en 2
usariamos: for contador=10,1,-2 do
cuando usar dichos ejemplo:
habra veces que necesitaras checar una tabla de abajo hacia arriba, por ejemplo para ordenar, o poner el mas alto score de un juego de entre 10.
ejemplo:
sabiendo que...
topscore={}
topscore[1] =100
topscore[2] =95
.
.
.
topscore[10]}=35
topscore[11] =0 <----comodin
---------tu escore actual es 99 ---
... en algun punto del programa
for pocicion=10,1,1 do
if topscore[pocicion]<escoreactual then <---si tuescore es mejor queel escore en la pocicion que se revisa en ese momneto
topscore[pocicion+1]=topscore[pocicion] <---cuando pocicion es 10, se usa el comodin, quedando asi ese score fuera de la lista, y cuando es menor que diez, se esta bajando un nivel al escore comparado.
else
break
end
end
topscore[pocicion-1]=escoreactual <-- aqui agregamos tuescore caundo ya no aya uno mas alto que el tuyo, en este caso segun los datos quedaria en la pocicion 2, quedando el del 95 en la 7, y el de 35 en la 11, la cual no se presenta, pues es comodin para ir desechando escores...
GuinXell aprender mas...
Eso me resuelve una duda
Sabía que en C se podía hacer eso, de hecho fue por C que supe aplicar el for en Lua, la cosa es que yo trataba de poner el tercer argumento con "1+1" o "1-1" o "1++" pero me devolvía error. Esto me llevó a pensar que Lua siempre sumaba 1, pero ya veo que no, me será útil :)
Un saludo
Bueno, for no siempre suma uno
Ampliando la información... for sirve para hacer una misma cosa un número determinado de veces, empezando en un punto A y terminando en un punto B, y empleando un paso C.
Este paso es un entero, pero puede ser cualquiera distinto a 0 (si fuera 0, el bucle no se movería).
O sea, si empezamos desde el puesto 10, podemos hacer un bucle descendente de cinco repeticiones (iteraciones), haríamos un paso de -2. Tipo:
for i=10,1,-2 do
...
end
Es decir, en este caso, de los 10 elementos que tuviéramos, tomaríamos uno de cada dos empezando desde el final de la lista de elementos.
Strength is irrelevant. Resistance is future. We wish to improve ourselves.
La fuerza es irrelevante. La resistencia es futuro. Queremos mejorarnos.
Gracias pero sigo con una
Gracias pero sigo con una duda :
Que es una matrix? Te he visto usarlo varis veces en tus comentarios
Saludos
EDITO:Se me acaba de ocurrir una idea:
Camisa = {}
Camisa[1] = { camisa = math:rando(1,4) }
--y luego
if camisa == 1 then
camisa = larga
end
if camisa == 2 then
camisa = corta
end
if camisa == 3 then
camisa = jersey
end
if camisa == 4 then
camisa = tirantes
end
No acaba de solucionar mi pregunta pero bueno
Aunque el ejemplo no es del todo correcto ya que un jersey no tiene que ver con la longitud de las mangasXD
Saludos,P22
¡Iníciate en Linux fácilmente! Sólo entra aquí y comprueba que distribución se adapta mejor a tí.
Mi review: iPod Touch 4G
soy malo
disculpa, es que soy malo para escribir, y este teclado es muy lento...
matriz, un array a eso me refiero, o una tabla, que para mi es lo mismo. digo para mi. yo no soy muy estructurado ni nada. como caiga es como le hago.
ahora el codigo que acabas de escribir.
Camisa[1] = { camisa = math:rando(1,4) }
no lo entiendo, asi como muchas otras cosas...
y digo no entiendo , porque usas una misma variable, y segun comprendo eresultado es el siguiente
camisa[1].camisa = numero al azar. , pero nose si puedas usar camisa x segunda vez, jamas lo he echo...
ahora siquieres dar valores al azar a camisa
haz el bucle
for x=1, 10 do
azar=numeroalazar_funcion...
usa la fucnion selectcase de WinShell... que es como usar if, pero solo para un valor determinado, o el script de SelectCase, para funciones internas.
__
aqui metes los datos previos a select
__
camisa[x]=SelectCase(azar)
end --del for
entonces camisa[de x] sera = a la palabra escrita o numero en la configuracion de SelectCase()
si no conoces o no te puedes hacer una funcion SelectCase por tu cuenta, usa los IF.
asi entonces tendras un valor al azar para tu variable, segun el codigo que escribiste arriba.
porque no puedes jugar con dos valores muy cambiantes para una misma variable, te vaz a confundir.
GuinXell aprender mas...
Una aclaración para P22
Mi bucle for está mal hecho xD. El de trom_us es perfecto.
Lo que pasa es que se cruzaron los cables con C y Lua. Se debe poner en el segundo argumento el valor límite, y nunca una comparación, de ser así devolverá un error bastante raro.
Saludos
parese k lua y C
los confunde demasiado a ustedes gracia dios k deje el C xD estaba aprendiendo rapido C perolo de las biblioteca ni idea por eso deje esa programacion por k si no me aprendo el for k seria eso k no lo entendi ni pio.
no te entendi
pero funcina asi...
te recuerdo que no es lo mismo...
dim C(10 to 15)
donde se crea una matrix, que va de C(10) a C(15), y nunca existira C(16), ni C(9), porque te marcaria error..
entonces algo parecido seria...
C={} eso es todo
y tendrias desde C[0], hasta c[un millon] , sin tener que declararlo
como en el ejemplo que te pusieron, pero todas estarian a NIL, que significa no "vacio", sino que no existe, aun.
entonces, o haces una comparacion NIL, o haces un for como el antes mencionado, dando C[i]=valor_no_nil osea C[i]="" o a C[i]=0 para numeros.
mas aun, puedes usar una funcion dim, de WinShell, que haria eso porti.
obteniendo asi una tabla.
--añado codigo-- silo usas dame creditos, sino, mandame por un tubo.
C = dim(10,0) = C(1 to 10) bucle = 0
C = dim(10,"") = C(1 to 10) bucle = ""
o una matrix
C = dim(10,10,valor) = a una tabla de 10x10 conel valor numero o cadena
nota: la funcion actual, te permite poner rango como de 10 a 15, para que no tome memoria de mas. pero no es la que te dejo aqui.
--funcion de WinShell by Erick--
function dim(dd1,dd2,dd3)
local temp=nil
temp={}
local d1=dd1
local d2=dd2
local d3=dd3
local x
local y
if d2~=nil then
for x=1,d1 do
for y=1,d2 do
temp[x]={}
if d3~=nil then
temp[x][y]=d3
else
temp[x][y]=""
end
end
end
else
for x=1,d1 do
if d3~=nil then
temp[x]=d3
else
temp[x]=""
end
end
end
return temp
end
saludos.
GuinXell aprender mas...
No acabo de entender tu
No acabo de entender tu comentario pero no te preocupes ya lo mirare mas tarde que ahora llevo prisa.
Gracias y saludos , P22
Mmmmm
Interesante, a ver si se me ocurre algo en lo que escribo este post xD.
Vamos a ver:
for i = 0, i < 5 do
Tabla[i] = {mi_camisa = Xvariable + i}
end
No sé si funcione realmente, pero tal vez se aproxime.
Lo que hacemos es, partiendo de 0, que se le sume 1 a i hasta llegar al 5. Después en lugar del número de la tabla, ponermos a i, que variará del 0 al 5 y la variable mi_camisa será igual a Xvariable + i.