Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Aikanáro Anário en 3 Junio 2010, 19:01 pm



Título: ¿Para que son las estructuras de datos? ¿Que ventaja ofrecen?
Publicado por: Aikanáro Anário en 3 Junio 2010, 19:01 pm
Soy nuevo en programacion y estoy aprendiendo C. He leido lo que es una estructura de datos, que es como una agrupacion de variables de diferente tipos de datos, pero la parte en que me pierdo es que para usar una variable de una estructura tenemos que declarar otra variable  :huh: no entiendo porque, ni para que y no entiendo si tiene alguna ventaja usar estructuras o que?

Ayudenme con eso...  :rolleyes:


Título: Re: ¿Para que son las estructuras de datos? ¿Que ventaja ofrecen?
Publicado por: @synthesize en 3 Junio 2010, 19:24 pm
Imagínate que tienes que hacer un gestor de habitaciones para un hotel. (Un ejercicio que hice hace poco, por cierto xD)

Para tener una buena organización, es tenerlo todo por estructuras, me explico:

Creas una estructura modelo para todas las habitaciones

Código
  1. typedef struct Habitacion
  2. {
  3.    int estado;
  4.    char fecha[10];
  5.    int tipo;
  6. }cuarto;
  7.  

Es un ejemplo muy pequeño, pero sirve.

Puedes crear varias habitaciones... Pero vamos a trabajar solo con 1.

Imagínate, que la variable estado, puede estar con el valor 0 (Libre) o 1 (Ocupado). Para comprobar en que estado está la habitación, hacemos:

Código
  1. if (cuarto.estado==1)
  2. ...
  3. else
  4. ...
  5.  
  6.  

También podemos cambiar el estado,...

Código
  1. cuarto.estado =1;
  2.  


Es un simple ejemplo de para qué puedes usar estructuras.. Luego cuando estudies punteros las vas a ver mucho mas, para crear varios tipos de estructuras dinámicas como listas, pilas y colas, tablas, etc.



Lo dicho, para acceder a los miembros de una estructura, usamos esto:

nombre_estructura.miembro

Mas adelante lo verás con punteros

nombre_estructura->puntero


 :P





Título: Re: ¿Para que son las estructuras de datos? ¿Que ventaja ofrecen?
Publicado por: Aikanáro Anário en 3 Junio 2010, 19:40 pm
Entonces las estructuras son para tener los datos mas organizados? y para tener que declarar menos variables.

Con el ejemplo de las habitaciones del hotel, tendriamos que declarar las variables "estado", "fecha" y "tipo" para cada cuarto, pero si lo hacemos por estructuras solo tenemos que declara otra variable para referirse a otro cuarto (cuarto_n)


Título: Re: ¿Para que son las estructuras de datos? ¿Que ventaja ofrecen?
Publicado por: @synthesize en 3 Junio 2010, 19:54 pm
Lo vas pillando, ahora lo va a entender mejor, vamos a implementar un array de estructuras (Estructura estática)


Código
  1.  
  2. struct Nodo
  3. {
  4.    int Dato;
  5. } array[10];
  6.  
  7. int cont;
  8.  
  9. for (cont=0;cont<10;cont++)
  10. {
  11.    array[cont].Dato =cont;
  12. }
  13.  
  14.  

Con este código declaramos un array de estructuras, y las inicializamos con un For. SI tienes un Hotel con 10 habitaciones, lo puedes hacer igual, no se si me entiendes.

Tampoco quiero decirte todo lo que puedes hacer con estructuras, porque implica punteros... Como consejo, ensaya con lo que te he dicho, haz tus primeras estructuras y vas contando. Tampoco te he dicho, puedes usarlas con typedef como hago yo para el ejemplo del hotel.




Título: Re: ¿Para que son las estructuras de datos? ¿Que ventaja ofrecen?
Publicado por: @synthesize en 3 Junio 2010, 19:58 pm
Se me olvido decirte, el uso mas común de las estructuras es para crear nodos, y con ellos, todo tipo de estructuras dinámicas.. Aparte, como dije, son buenas para definir grupos de variables distintas que vayas a usar varias veces...


Título: Re: ¿Para que son las estructuras de datos? ¿Que ventaja ofrecen?
Publicado por: Horricreu en 3 Junio 2010, 21:32 pm
A lo que dijo GNU López de las estructuras dinámicas, no es más que hacer un puntero a la estructura:

Código
  1. struct t_prueba
  2. {
  3.     int intprueba;
  4. }
  5.  
  6. struct t_prueba *prueba;
  7. prueba = new struct t_prueba;
  8.  
  9. //Se accede a los datos con el símbolo: ->

Saludos :P


Título: Re: ¿Para que son las estructuras de datos? ¿Que ventaja ofrecen?
Publicado por: @synthesize en 3 Junio 2010, 21:45 pm
A lo que dijo GNU López de las estructuras dinámicas, no es más que hacer un puntero a la estructura:

Código
  1. struct t_prueba
  2. {
  3.     int intprueba;
  4. }
  5.  
  6. struct t_prueba *prueba;
  7. prueba = new struct t_prueba;
  8.  
  9. //Se accede a los datos con el símbolo: ->

Saludos  :P

Si todavía está aprendiendo a manejar estructuras estáticas, no creo que sea conveniente que empiece con dinámicas


Título: Re: ¿Para que son las estructuras de datos? ¿Que ventaja ofrecen?
Publicado por: Horricreu en 3 Junio 2010, 22:01 pm
Ya ya, era sólo una guía para cuando empiece con dinámicas :silbar:

Saludos :P


Título: Re: ¿Para que son las estructuras de datos? ¿Que ventaja ofrecen?
Publicado por: Aikanáro Anário en 3 Junio 2010, 22:45 pm
Bueno, bueno, despacio que todavía no se lo que son nodos, ni typedef, ni punteros. Pero ahora tengo una mejor idea de lo que son las estructuras.

Se usan mucho las estructuras?


Título: Re: ¿Para que son las estructuras de datos? ¿Que ventaja ofrecen?
Publicado por: @synthesize en 3 Junio 2010, 22:54 pm
Bueno, bueno, despacio que todavía no se lo que son nodos, ni typedef, ni punteros. Pero ahora tengo una mejor idea de lo que son las estructuras.

Se usan mucho las estructuras?

Yo si las uso mucho la verdad, xD


Título: Re: ¿Para que son las estructuras de datos? ¿Que ventaja ofrecen?
Publicado por: leogtz en 4 Junio 2010, 00:03 am
Bueno, bueno, despacio que todavía no se lo que son nodos, ni typedef, ni punteros. Pero ahora tengo una mejor idea de lo que son las estructuras.

Se usan mucho las estructuras?

Las listas, colas, pilas y árboles binarios usan estructuras, así que sí se usan mucho.


Título: Re: ¿Para que son las estructuras de datos? ¿Que ventaja ofrecen?
Publicado por: @synthesize en 4 Junio 2010, 00:55 am
Bueno, bueno, despacio que todavía no se lo que son nodos, ni typedef, ni punteros. Pero ahora tengo una mejor idea de lo que son las estructuras.

Se usan mucho las estructuras?

Las listas, colas, pilas y árboles binarios usan estructuras, así que sí se usan mucho.

Las pilas y colas también las puedes implementar con vectores y matrices.. El oro día tuve que hacer una pila con un un vector de 3 dimensiones,...