Anuncios Google

tabla infinita

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


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de P22

gracias  

gracias

 

Imagen de P22

Ya se que este comentario ya

Ya se que este comentario ya lo puse en otro post pero no entiendo los bucles for
Saludso

Imagen de Tanos

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. 

Imagen de ZYX3D

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.

Imagen de Tanos

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 ;-) 

Imagen de trom_us

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.

 

 

Imagen de ZYX3D

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.

Imagen de trom_us

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...

 

 

 

 

Imagen de Tanos

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 

Imagen de ZYX3D

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.

Imagen de P22

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

Imagen de trom_us

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.

 

Imagen de Tanos

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 

Imagen de yoan03

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.

Imagen de trom_us

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. 

Imagen de P22

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

Imagen de Tanos

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.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.