Programación dinámica

Si ya conocéis el funcionamiento y utilidad de los arrays o arreglos en programación, quizás os hayáis percatado del principal inconveniente que ocurre a la hora de guardar datos en ellos durante su ejecución y, si así no fuese, ahora mismo os lo comento yo:

Supongamos que estamos implementando un programa que guarda edades de personas en un array de números enteros con capacidad fija y máxima para guardar 100 edades. En estas circunstancias podría ocurrir que durante la ejecución del programa el número de edades que finalmente tuvieran que ser guardadas fuera superior a la capacidad máxima del array que, en nuestro ejemplo es de 100, en este caso, resulta evidente que no será posible almacenar cualquier edad que supere el límite máximo de almacenamiento de números enteros definido en tiempo de programación cuando se especificó el array de las edades necesitado.

Dado el problema presentado, podríamos plantearnos el aumentar la capacidad del array para así, solventar la insuficiencia de espacio que a priori ofrecía. El inconveniente de esta decisión estriba en el uso poco óptimo de la memoria. Quizás en muchos casos no se ocupe, ni por aproximación, todos los espacios del array para guardar cada una de las edades, desperdiciando mucha memoria RAM finalmente no utilizada, por otra parte, en otras ejecuciones del programa, nuevamente nos quedemos cortos y no se puedan guardar todas las edades necesarias, pudiéndose producir un error de ejecución por este motivo.

Como solución al problema que presentan los arrays estáticos de datos aparece la programación dinámica, en ella, las estructuras de datos implementadas, a diferencia de las estructuras estáticas como los arrays, aumentan o disminuyen la cantidad de espacio reservado durante la ejecución de la aplicación, ofreciendo la posibilidad de reservar o liberar memoria mientras se ejecuta la aplicación y así, en todo momento, gestionar un uso óptimo de la memoria adapatado en todo momento a las necesidades de memoria del programa durante su funcionamiento. De esta forma, siguiendo el ejemplo de las edades, conforme se guarde una nueva edad se reservará o aumentará la memoria estrictamente necesaria para guardar la nueva edad, pero si se debe borrar una edad previamente introducida, se liberará la memoria que ocupaba.

En el lenguaje Java, la clase que permite la implementación de estucturas dinámicas de datos objeto de estudio en el tema del curso que vamos a iniciar, recibe el nombre de ArrayList.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *