lunes, 10 de enero de 2011

Estructuras en C (Parte 1)

Echaba de menos escribir código en C. Ya que, dentro de poco, me toca comerme la cabeza con esto mas a menudo, voy a empezar ya mismo a poner ejemplos en el blog. Y, empezamos con estructuras. Me gustaría escribir sobre dinámicas, pero dado que el blog está destinado tanto a novatos como a Geek's apasionados, voy a dividir esto en varias partes partes; En esta primera, explicaré el uso de estructuras normales. En las siguientes, iré ampliando poco a poco la información.


Si normalmente imaginamos una variable como una caja en la cual podemos almacenar datos. Puse bien, una estructura es una estantería donde podemos almacenar cajas, de varios tipos. A cada "Caja" dentro de una estructura, la llamaremos Miembro. Por lo tanto, una variable entera "my_var" dentro de la Estructura "my_struct", es un Miembro.

Las estructuras se declaran de la siguiente forma:
struct id
{
    miembro
    miembro
    ...
};
Struct es la palabra reservada para declarar estructuras. id, es el nombre que le damos a la ya mencionada. Dentro de los corchetes, declaramos todos nuestros miembros. Es importante poner ; al acabar de declarar la estructura, como se puede ver en el ejemplo de arriba.

Por lo tanto, ya podemos comprender un ejemplo real de estructura:
struct my_struct
{
    int my_var;
};
Ahora ya podemos empezar a trabajar con nuestra estructura. Dentro de main, debemos implementarla para poder usarla. Podemos imaginar este proceso como si se tratase de una plantilla. Nosotros tenemos una plantilla (La estructura) y ahora queremos trabajar con ella. Creamos la implementación de nuestra plantilla, y trabajamos con ella (Y no directamente sobre la plantilla.

Veamos un ejemplo donde, creamos la implementación Estructura, inicializamos la variable miembro my_var y lo mostramos en pantalla.
int main(void)
{
    struct my_struct Estructura;
    Estructura.my_var=1;
    printf("%d\n", Estructura.my_var);
    return 0;
}
Como vemos, declaramos una nueva estructura de tipo my_struct llamada Estructura. Para acceder al miembro, usamos un punto ( . ) (La sintaxis por lo tanto es: Implementación.miembro). Por último, volvemos a acceder al miembro para mostrar su contenido en pantalla. Podemos ver el código completo del primer ejemplo aquí.

También podemos implementar estructuras en la plantilla (Queda mas legible, a la hora de escribir código). Para ello, antes del ; , escribimos los identificadores. En nuestro ejemplo, quedaría así:
struct my_struct
{
    int my_var;
}Estructura;
Y con esto, podemos eliminar la línea dentro de main donde declaramos la implementación. (Podemos hacer mas implementaciones, separándolas con el carácter coma ( , ).


Podemos incluir Estructuras dentro de Estructuras.  Como única condición, la estructura interna debe ser declarada antes que la externa. Veamos un ejemplo directamente aquí.

Podemos observar como declaramos 2 estructuras: my_struct_inside y my_struct. Dentro de my_struct, declaramos un miembro estructura my_struct_inside.

Ya dentro de main, podemos observar que para acceder a la estructura interior, debemos pasar primero por la exterior. (Exterior.Interior.miembro). Podemos declarar así todas las estructuras que queramos, creando incluso estructuras jerárquicas.

Otra opción bastante interesante con Estructuras, es la creación de arrays. (En un futuro trataremos estructuras con arrays dinámicos, por eso es importante prestar atención a esta parte si se es nuevo en esto). Aquí tenemos el código.

Declaramos un array de Estructuras ( identificador[n] ), por lo cual debemos acceder a los miembros de cada sector del array de la siguiente forma: identificador[valor_array].miembro .

En el primer bucle for, inicializamos las variables miembro de las 3 implementaciones de estructuras que hemos creado. En el siguiente, los volvemos a recorrer para imprimir en pantalla el resultado de la inicialización.


Una vez entendido todo esto, es pan comido empezar a trabajar con estructuras. Para quien no las domine, recomiendo que vaya haciendo ejercicios con estructuras, antes de continuar con cosas mas complicadas.


Ejemplo de ejercicio con Estructuras: Crear un programa que lleve el registro de una frutería: Se deben mostrar los Kilos de Manzanas, Peras y Mandarinas que hay almacenados, y por supuesto, poder actualizar la información (El usuario podrá cambiar los kilos). Evidentemente, hacer el ejercicio con Estructuras. ¿Quién se anima?

No hay comentarios:

Publicar un comentario