17 febrero 2008

Arreglando arreglos

Una manera que es muy conveniente almacenar datos en la memoria son los arreglos. Un arreglo (conocido como array entre los gringos) es un grupo consecutivo de localidades de memoria que tienen el mismo nombre y el mismo tipo. Estos son muy útiles cuando trabajas con muchos datos que lógicamente deberían ir juntos, como pueden ser las edades de todos los que están en tu salón de clases.

Hablando de edades, hice un pequeño programa que trabaja con edades de 10 personas. Vienen funciones que lo hacen de dos maneras diferentes: con arreglos y sin arreglos. En este mensaje les comparto como funciona. Por si quieres, los archivos del proyecto los puedes bajar aquí (vienen comprimidas en formato RAR, así que necesitarás el programa WinRAR para poder accesarlos). Sin más rollo, vamos a ver el programa.

Para empezar, esta es la interfaz de mi programa. Alrededor escribí los nombres que le dí a cada control (la propiedad Name de cada control).


De lado izquierdo tengo 3 botones que llenan un arreglo de 10 elementos (le pido los datos al usuario mediante un InputBox). Después hay otros dos botones, uno que calcula el promedio de las edades y el otro que encuentra la edad mayor y la menor. Hay que recordar que si el usuario no ha dado de alta las edades en el arreglo, no puede calcular promedios ni mínimos ni máximos, así que los botones btnPromArreglos y btnMinMaxArr los deshabilito para que el usuario no tenga acceso a ellos hasta que el usuario dé de alta las edades (esto se hace poniéndole el valor de False a la propiedad Enabled de los botones).

Del lado derecho de la ventana dibujé otros 3 botones que realizan las mismas fucnioens que ya describí, solo que no usan arreglos. Los puse simplemente para ilustrar la gran diferencia.

Ahora vamos a la programadera. Para empezar, estas son las variables que declaro en el programa para almacenar las edades. Como podrás observar, con arreglos solo tengo que declarar una variable, sin embargo tengo que declarar 10 si no uso arreglos.


Una cosa que ahorra tiempo y código cuando se trabaja con arreglos es que, como están en posiciones adyacentes y se hace referencia a cada elemento por medio de un número que va desde 0 hasta el número de elementos menos uno, puedo usar ciclos (particularmente el ciclo For es muy útil) para recorrerlo. Esto hago en el procedimiento que pide las edades y las almacena en el arreglo Edades. Al final de todo, habilito los botones que calculan el promedio y el mínimo y máximo.


Hacer lo mismo sin arreglos cuesta un poco más de trabajo porque tengo que escribir 10 líneas de código. Se ve así:


Calcular el mínimo y máximo de todos los datos del arreglo es fácil. Primero declaro dos variables donde voy a guardar el dato más pequeño y el más grande (en este caso los nombré Min y Max). Luego inicializo los valores mínimos y máximos para que sean igual que lo que tiene el primer elemento del arreglo, el que está en la posición 0. Después recorro el resto de los elementos (desde la 1 hasta la 9) y si encuentro que un valor es menor a lo que tengo en Min, a Min le asigno el valor más pequeño. Lo mismo hago con Max, si el valor del elemento que estoy revisando es mayor a lo que tiene Max, a Max le asigno el valor del elemento. Cuando termino de esto, muestro los resultados en un MsgBox. El código con arreglos se ve así:


Sin arreglos se complica un poco la cosa. El código se vería así:


Calcular el promedio es fácil. Por si no recuerdas, solo se tienen que sumar todos los elementos y dividir el total entre el número de elementos. En nuestro caso, son 10 elementos.

Al usar arreglos, declaro una variable Prom que va a acumular la suma de todos los elementos. Esto lo hago en un ciclo For. Al terminar de calcular la suma, divido el valor entre 10 y despliego el resultado al usuario con otro MsgBox. Aquí está el código:


Sin arreglos, tengo que hacer la suma y división escribiendo todos los elementos. En este caso, como son solo 10 edades, parece menos código. Pero imagínate que de pronto te dicen que son 100 edades, con arreglos simplemente cambio el ciclo For para que en lugar de ir hasta el elemento 9, le siga hasta la 99 y en lugar de dividir la suma entre 10, lo divido entre 100. Sin arreglos tengo que escribir otras 90 variables para hacer lo mismo. El código se ve así:


Lo que falta es lo más sencillo: la función que exita del programa (entendiendo exitar como acción y efecto de ir hacia el Exit). Como está muy claro, solo pongo el código:


Con esto termino en esta ocasión. Si tienes dudas, no dudes (valga la redundancia) en dejar un comentario o mandarme un I-Meil. ¡Hasta la próxima!
Publicar un comentario
Related Posts Plugin for WordPress, Blogger...