sábado, 13 de junio de 2015

VARIABLES 4: TIPOS COMPLEJOS. ESTRUCTURAS

En el capítulo anterior hemos creado una agenda con 100 nombres y 100 teléfonos, los primeros son de tipo string y los segundos son de tipo int, Al crear dos arrays hemos creado una relación lógica entre ambos a partir del indice que va a correlaccionar cada nombre con cada teléfono.

De esta forma, en la posición "indice=10", estará en nombre 10 y el teléfono 10.

Con estos datos puede mover los datos de posición, intercambiarlos, ordenarlos alfabéticamente según el campo nombre o numéricamente según el número de teléfono sin olvidar que al mover el teléfono x a la posición y tengo que mover el nombre x a la posición y.


Estructuras:

Pero se puede ir un poco más allá, partiendo de cómo grabábamos los datos en los primeros ordenadores: estos grababan los datos en cinta o en disco como si fueran registros, es decir, como si fueran fichas.

nombre juan 
apellido pedro
teléfono 91000000
dirección Teresitas 10
.
nombre pedro
apellido elias
.......

Así lo grababan y se indicaba que cada retorno de carro (fin de linea) era el final de un campo y en este caso el punto era un final de registro.

Si os fijáis, lo que se ha hecho es estructurar los datos, es decir, tenemos un cliente, que va a tener un nombre, un apellido, un teléfono y una dirección pero es un cliente.

Que sucede si ahora lo que creo es un tipo nuevo, que no es numérico ni de letras, es un conjunto ordenado de ambos tipos:

Struct cliente
{
string nombre;
string apellido;
int teléfono;
string dirección;
}


Y luego es sencillo pensar que podríamos crear un array de esta estructura cliente y poder ir dando a cada campo valor, y luego añadiendo registros:

array cliente [100];

cliente[0].nombre="jose carlos";
cliente[0].apellido="martín";
cliente[0].teléfono=9100000000;
cliente[0].dirección="Alcalá";


Con esto hemos ganado claridad a la hora de declarar los datos y hemos ganado en facilidad a la hora de operar ya que es fácil pensar que con esto podríamos crear nuestras funciones para esta estructura:

introducirdatos (cliente[i]);
imprimirdatos (cliente[i]);
cambiardatos (cliente[i],clienten[j]);
borrardatos (cliente[i]);

Nuestros programas ganan aún más en claridad y no solo eso en facilidad a la hora de cambiar algo, ya que podemos aumentar el número de registros solo modificando el indice máximo, o podemos añadir nuevos campos modificando la estructura inicial:

Añadimos un teléfono2:


Struct cliente
{
string nombre;
string apellido;
int teléfono;
int teléfono2;
string dirección;
}

Y las modificaciones en las funciones de la estructura son menores en comparación con lo que tendríamos que hacer si solo tuvieramos la unión lógica que habíamos descrito entre las variables de los arrays.

Por eso esto fue un gran avance aunque todavía se podía mejorar, en rendimiento y sobre todo en lógica...

[Continuará]


No hay comentarios:

Publicar un comentario