Page 1 of 2

Definir vector, array o tabla

PostPosted: Wed Oct 15, 2008 8:35 pm
by necro_vampire
kiero definir un vector sin especificar a cantidad de elemntos que contendra...

algo asi:

Code: Select all
Program tirarDado;

global
dadotirado[];
BEGIN
...
END


kreo q no se puede en div2, se podria agregar a gemix

Re: Definir vector, array o tabla

PostPosted: Wed Oct 15, 2008 9:09 pm
by CicTec
Hola

se puede, si inicializas los elementos, por ejemplo:

Code: Select all
global
  dadotirado[] = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9;


eso crea una tabla (vector) de 10 elementos

De todas formas lo que buscas creo que es un array dinamico, no ? si es lo que buscas, mejor que usas malloc/free para create una tabla dinamica.

Re: Definir vector, array o tabla

PostPosted: Fri Oct 17, 2008 1:06 pm
by necro_vampire
La verdad me resulta un poco engorroso manejar memoria apra un dato primitivo...

kero decir no seria mejor solo manejar memoria para estructuras o casas asi...???

weno me pongo a revisar la docuemtnacion de div 2...

graxis

Re: Definir vector, array o tabla

PostPosted: Fri Oct 17, 2008 1:29 pm
by CicTec
mmmmm si, pero de la forma que quieres tu, o usas memoria estatica (ej: int array[elementos]) o memoria dinamica atraves punteros y malloc/free, lo de usar la forma:
Code: Select all
global
   dadotirado[];
no es comun y personalmente no se donde la puedes haber visto, ademas, de momento el compilador asi no tiene info para saber en que cantidad alocar el array, hay que especificar necesariamente el tamano, sino hay que construirte un sistema dinamico atraves malloc/free.

Si nos explicas mejor el sistema que tienes pensado puede ser que se pueda implementar en Gemix en las proximas versiones :)

Re: Definir vector, array o tabla

PostPosted: Fri Oct 17, 2008 7:36 pm
by necro_vampire
por ejemplo
que el vector indefinido
tenga por ejemplo 20 posiciones...

y cuando se llenen por ejemplo 15...
se redimenciones por si mismo a por ejemplo 25 posiciones...

y cuando se llenen 18 se redimencione a 30...

la redimencion es dimanica pero se trabaja como un array statico...

kreo es lo q usa java con sus arrayList...

pero yo lo planteo para array de datos primitivos, ya q en java los arrayList son objetos...
kreo q en C o n C++ tambien se hace...(??)
no rekeurdo...
ace años q no toco nada de C...

kreo q todo lo debe hacer el compilador...

aunq todo es mi opinion...
ya q dejaria el uso de memoria para cosas mas complejas...
como una pila,cola u una estrcuctura, manejar datos de archivos...

hablando de archivos...
no se podira conectar gemix con una base de datos...???

ya si lo piensas, gemix sta orientado al desarrollo de video jeugos...
pero se puede hacer varias cosas ams...
como por ejemplo usarlo para la distribucion de por ejemplo una histerieta...
no seria mas q el manejo de imagenes...

Re: Definir vector, array o tabla

PostPosted: Fri Oct 17, 2008 7:43 pm
by GINO
Jeje el array list de java me imagino q usara listas enlazadas o algo asi, las cuales usan memoria dinamica y punteros al fin y al cabo. Yo creo q mas adelante podras tener lo que quieres, en cuanto el lenguaje avance un poco mas.

Re: Definir vector, array o tabla

PostPosted: Fri Oct 17, 2008 7:47 pm
by CicTec
ni C ni C++ hacen nada de eso, usan la forma clasica, o sea hay que poner el tamano entre [ ] en la definicion del dato o usar punteros con malloc/free.

En C++ se puede implementar algo asi si, definendo una clase que lo haga, pero eso obviamente no es un dato primitivo, o sea en C/C++ los datos primitivos no se comportan asi, java lo hara porque ha sido implementado nativamente de esa forma y porque es un array de objetos en realidad.

Anoto tu sugerencia, a ver si se puede hacer algo en las proximas versiones, de momento hay que usar la forma clasica especificando el tamano entre [ ].

Re: Definir vector, array o tabla

PostPosted: Mon Jan 05, 2009 11:12 pm
by Dluk
CicTec wrote:
Code: Select all
global
   dadotirado[];
no es comun y personalmente no se donde la puedes haber visto


Esa opción al definir arrays estaba en el primer DIV (DIV2 no se si la seguía teniendo). De todas formas, era medio arriesgado usarla en una PC limitada, porque podía pasar que, usando demasiadas posiciones de ese tipo de array, el compilador tirará un error de máximos procesos posibles en ejecución. Personalmente, creo que es mejor usar arrays definidos o usar la función malloc. De la otra forma me parecía un poco riesgoso...

Re: Definir vector, array o tabla

PostPosted: Mon Jan 05, 2009 11:16 pm
by CicTec
Dluk wrote:
CicTec wrote:
Code: Select all
global
   dadotirado[];



Esa forma en DIV2 da error de compilacion, tienes que especificar con inicializadores el numero de elementos que dentra el array, por ejemplo:

Code: Select all
global
   dadotirado[] = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10;

En ese caso se definira un array de 10 elementos, no creo que DIV 1 soporte de definir eso sin inicializar, en todo caso si se quiere un array dinamico la solucion al momento es MALLOC

Re: Definir vector, array o tabla

PostPosted: Mon Jan 05, 2009 11:31 pm
by Dluk
Aunque suene a mentira depiadada (XD) DIV 1 soporta definir un vector sin inicializar, pero consume muchisímos recursos, limitando demasiado la cantidad de procesos posibles durante la ejecución. Debe ser por eso que esa posibilidad desapareció en DIV 2.

La única "ventaja" de definir un vector sin inicializar en DIV 1 es que se comportaba como si tuviera "infinitas" posiciones. Pero bueno, para hacer eso también tenemos la función malloc... ¿No? No creo que valga la pena que aparezce esta carácteristica en Gemix.

Por cierto, según tengo entendido, había algunas carácteristicas de DIV 1 que desaparecieron o fueron modificadas para DIV 2. Pero como nunca usé el DIV 2 no sabría decir cuales cambiaron o se fueron. Si tengo tiempo voy a conseguirlo y ver que logro descubrir.

Saludos ^^