Diferencia STRUCT y TYPE

Started by JMP, June 28, 2010, 02:47:02 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

JMP

¿Hay alguna diferencia entre usar struct o type?, porque a mi parecer son lo mismo. ???


Salu2

SplinterGU

con type definis un tipo de dato, como si fuera un int, float, etc

struct es una variable
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

JMP

No te he entendido bien, yo cuando los uso lo puedo hacer asi y con ambos consigo lo mismo, lo unico que el type lo tengo que declarar


TYPE algo
      int algo;
      string algo2;
end
STRUCT algo
      int algo;
      string algo2;
end

SplinterGU

type no es una variable creada que la podes usar directamente asignandole valor, es un tipo que te sirve para declarar variables de ese tipo

struct es una variable ya declarada, le podes asignar valores, y usarlos.

type:


type lala
  int a;
  string b;
end

begin
   lala.a = 10; // <<< error
end



type lala
  int a;
  string b;
end

private
lala c;
begin
   c.a = 10;  // <<< ok
end


struct:


struct lala
  int a;
  string b;
end

begin
   lala.a = 10; // <<< ok
end

Download Lastest BennuGD Release: http://www.bennugd.org/node/2

JMP

Entoces el type se puede declarar las veces que quiera mientras la struct es unica, creo que lo he entendido


Gracias por la ayuda

SplinterGU

no, no, type se declara una sola vez, variables del tipo TYPE (o sea, con el formato definido en type) se pueden declarar las veces que uno quiera.

si te referias a eso, si.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

JMP

me referia a que puedes tener varios type privados pero una struct para todos

Drumpi

¿Sabes lo que es el tipo INT, BYTE, WORD? pues con type creas uno de estos nuevos, y puedes crear variables de este tipo en cualquier parte del programa.

Type sólo se pone una vez, pero puedes declaras variables de ese tipo de cualquier clase: GOLBAL, LOCAL, PRIVATE, PUBLIC... y en cualquier sitio.

Lo que pasa es que a la hora de usar una variable del tipo que definas o una struct no hay diferencia, creo.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

JMP

pues eso e dicho, que pones-


type bla
  int a;
end

process o()
private
  bla aa;
end
begin
end

process e()
private
  bla aa;
end
begin
end

SplinterGU

si, asi si, puede tambier ser

blah bb en algunos procesos u otro nombre.

tambien puedes tener alguna variable de "TIPO" blah en locales, globales o publicas.

el problema es que cuando dices "varios types" esta mal, porque TYPE es uno solo, lo que son multiples son variables del tipo definido en TYPE.

TYPE es como armar una definicion de una structura, pero no asignarla a ninguna variable, es solo una "definicion de tipo", no es una variable (como lo es el caso del struct).

no me queda claro si se entendio o siguen existiendo dudas, lo digo por cuando dices "varios types".
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

JMP

Sí que lo entiendo, no hay varios types sino varias variables de ese tipo.

No se si me he expresado bien pero lo que es el concepto lo tengo. :)

SplinterGU

perfecto! es eso mismo! te has expresado perfectamente. :)
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

grisendo

Ya que estamos, esto es normal?

[code language="bennu"]
int arbolBinario;
arbolBinario arbol;
[/code]

Es decir, yo declaro en la primera línea un entero de nombre "arbolBinario"... y en la segunda declaro un arbolBinario de nombre "arbol"!!!! Y funciona!!! Es como si hubiese hecho un typedef...

No tengo ningún problema con esto, simplemente me acabo de acordar leyendo este post...

SplinterGU

el compilador piensa que es un proceso que vas a crear.

proba con otro tipo de datos.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Windgate

Quote from: grisendo on June 29, 2010, 08:08:29 PM
Ya que estamos, esto es normal?

[code language="bennu"]
int arbolBinario;
arbolBinario arbol;
[/code]

Eso es más o menos como cuando intentas declarar una variable de tipo bool, el tipo realmente no existe, y creas una variable de tipo int junto con otra variable más de tipo int que se llama bool, ¿Era así verdad? ;D
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es