Pero se daba el caso de que había problemas que con estos tipos solamente no podíamos solucionar.
El ejemplo más sencillo lo tenemos en una agenda: si queremos crear una agenda con cien entradas lo podemos hacer de una manera un poco bruta creando 100 variables de tipo string y cada una de ellas guardará un nombre de la agenda. Pero además necesitamos 100 variables de tipo int para que almacenen los 100 números de teléfono de las cien personas.
Imagina cómo queda el programa de farragoso y los problemas que se generan al querer buscar algo en esa agenda ya que habría que ir variable por variable comparándolo con nuestra busqueda:
buscar "jose"
es var1="jose"
si final
no es var2="jose"
si final
no es var3="jose"...
hasta var100 o final
Por eso se recurrió a un recurso que se usa en matemáticas para colocar un punto en dos ejes o en tres coordenadas: Los vectores.
Si usamos un vector para modelar la agenda creamos un vector de tamaño 100 para los nombres y otro vector de tamaño 100 para los teléfonos (c#):
string[] nombre= new string [100];
int[] teléfono=new int[100];
int[] teléfono=new int[100];
De esta manera nuestro código se simplifica bastante ya que ahora para recorrer todos los campos y comparar podemos usar un bucle, que vaya 1 por uno por todos nuestros datos hasta encontrar el que buscamos:
for (int indice=0;indice<100;indice++)
{
if (nombre[indice]=="jose" )
{
Console.WriteLine("jose encontrado en posición "+indice);
break;
}
}
Es decir, hemos reducido más de 100 lineas de código a menos de 10. Y no solo eso.
En nuestra primera versión del programa si queríamos aumentar en 100 más los datos de nuestra agenda teníamos que crear otras 100 variables más y de esta forma cada vez que fuéramos a hacer algo con ellos necesitaríamos otras 100 lineas más de código.
Sin embargo con un vector es tan sencillo como cambiar el valor del indice(c#):
//Versión con indicemaximo variable más compacta y más útil
const int indicemaximo=200;
string[] nombres = new string[indicemaximo ];
int[] teléfonos = new int[indicemaximo ];
for (int indice = 0; indice < indicemaximo ; indice++)
{
if (nombres[indice] == "jose")
{
Console.WriteLine("jose encontrado en posición " + indice);
break;
}
}
Con este avance lo siguiente era fácil de entender, por qué no usar las matrices para modelar los datos que sean iguales y funcionen juntos...
Dicho y hecho: en nuestro ejemplo en lugar de introducir solo el nombre podría darse el caso de que quisiéramos los apellidos y la dirección también, con lo cual nuestro modelo podría ser así:
string nombreapellidodirecion[indicemáximo,3];
Con lo cuál nuestro programa accedería directamente a estos tres datos de cada entrada de una vez y dispondrá de ellos solamente con una llamada a esa matriz:
nombreapellidodirecion [1,0] devuelve el nombre de la entrada 1
nombreapellidodirecion [1,1] devuelve el nombre de la entrada 2
nombreapellidodirecion [1,2] devuelve el nombre de la entrada 3
Con todo esto aumentaba en gran medida la velocidad con la que se podía acceder a los datos y además de esto disminuía el número de lineas necesarias para programar...
Mira el programa completo en :
https://drive.google.com/open?id=0BzIgvq6j7YqGTUc1dFdSb243YW8&authuser=0
Pero como veremos más adelante esto acababa siendo ineficaz ya que la memoria se usaba con demasiada frecuencia y se acababa llenando...
Con lo cual hubo que explorar otras vías...
[Continuará]
No hay comentarios:
Publicar un comentario