Estructuras de datos

Las estructuras de datos (vectores, listas, tuplas, matrices, etc…) son las forma de para poder organizar, almacenar y hacer uso de datos agrupados en forma eficiente.


Permiten organizar adecuadamente los datos para hacer uso de ellos de forma mas eficiente y poder así resolver problemas mas complejos, utilizando menos líneas de código, menos uso de memoria (programas mas livianos y veloces).


Además son mas "elegantes".


Si entraste en una librería, viste que están organizadas en estructuras determinadas y típicas (Estanterías con divisiones numeradas), recorrerlos estantes buscando libres, puedes buscar entre multitud de libros de forma ráida precisa y sin perderte, ya que las estanterías donde se almacenan los libros están ordenadas y diferenciadas unas de otras.

Esto es para poder llegar a encontrar mas fácilmente un libro. Pero, ¿Qué pasaría si llegamos y los libros están mezclados en diversas estanterías y las estanterías no están distinguidas por números, letras o nombres?


Si preguntamos al biliotecario por un libro específico, él mirará su lista o catálogo y nos dirá número letra y/o sección, en donde se ubica exactmente.

(Lo que vemos en los estantes son estructuras eficientes y organizadas para contener libros de todo tipo y poder encontrarlos rápido.)


En cambio, cuando el bibliotecario mira su lista para indicarnos dónde encontrarlo, está mostrando una lista abstracta...un stipo de estructura simnólica organizada que representa a los estantes organizados llenos de libros. (Aunque podría ser una lista vacia...por ejemplo. si se decide regalar todos los libros viejos para adquirir luego nuevos libros)


En programación estas forma de ordenar cosas eficientemente son las "estructuras de datos".(obviamente son estructuras abstractas, vieuales, no existen en el plano físico, son simulaciones de vectores, listas tablas, diccionarios, etc. pero que son muy eficientes para el manejo de los datos complejos.)

Solo imagínense que sería de la NASA o de un laboratorio o una universidad en al que el departamentod e informática tuvieran todos sus datos dersordenados y encima no tivieran estructuras eficientes para luego pdoer recuperar la ingformación de forma rápida y precisa!


Dentro de las estructuras de datos, en programación hay: Listas, Vectores, tuplas, etc. (algunos lenguajes solo tienen una o dos de estas opciones...y unas y otras pueden ser similares en apariencia, pero se utilizan de forma diferente y para resolver para problemas diferentes.)



Las Listas

¿Qué son las listas en LibreLogo en particular y en los lenguajes de programación en general?

Estructuras de datos en forma de listas:

En programación, las estructuras de datos permiten almacenar datos ordenadamente para que nuestro código sea mas eficiente.

Ya no guardamos un solo valor para un nombre de variable...sino una lista ordenada de valores bajo un mísmo nombre de Lista. (como una lista de supermercado o una lista de tareas a seguir.)

Este tipo de estructura de datos, las listas, tienen su propia "estructura", valga la redundancia y una forma de ser utilizada que depende de sus partes y de ella misma.


Las Listas son un recurso que ayuda a organizar los datos para resolver problemas, ya que en ellas fijamos datos que están emparentados o correlacionados y se asocian a un número de orden - Una posición en la memoria. (algo parecido a como se guarda el valor en una variable...

Pero, imaginemos que si una variable es un cajón, una lista es como esos cajones de las ferreterías que tienen muchos compartimientos pequeños numerados en los que hay diferentes tipos de tornillos o clavos con un ìtem que lo identifica o el número de tamaño o modelo.

-O, como dijimos antes, imaginemos que podría ser las entantería de una biblioteca real-.


Por ejemplo, una lista sirve para muchas cosas: Listar en forma ordenada o dersordenada o de adelante hacia a ras y viceversa o para clasificas y guardar ordenadamente los libros de nuestra biblioteca o de ua estantería o repisa, o la lista de nuestros CDs favoritos, etc.

(Podemos pedirle al programa que elija el primero o el último o el tercero, o mostrar la lista en orden ascendente o descendente. y muchas cosas mas, que suelen se útiles cuando usamos listas ordenadas de cosas o de datos)

Agregar o eliminar items de la lista también es posible o saber cuantos elementos tiene dentro (longitud).


Existen muchas estructuras de datos como las matrices, las tablas de varios valores correlacionados...que son como listas de diccionarios. donde hay un nombre y al lado su significado, etc.


Listas

Son muy útiles para ordenar y almacenar datos.

Las listas, como otras estructuras, nos permiten almacenar múltiples datos ()lo correcto sería que almacenen siempre datos del mísmo tipo...es decir o letras o textos o números enteros o números decimales, etc.

Ello hace las listas mas eficientes. (No queires tener en una misma lista: manzanas, números y elefantes.) Porque es mas eficiente por ejemplo usar solo umeros y operar sobre ellos, o usar solo textos y perar sobre ellos. _ Ya que, sumar Juan con 3,1416, sería un desastre.

Para ser programador hay que tener, orden, simplificar y tener sentido común.

Una vez que creamos (declaramos) una lista, a partir de ahora esa Lista pasa a estar disponible y con ella todos los valores que contenga o con que la llenemos, es una estructura más dentro del programa/algoritmo.

Habrás visto, cuado estudias que, ademas de hacer resúmenes y cuadros sinópticos, a veces necesitas escribir una lista ordenada (Por ejemplo, la lista de heroes de la independencia, una lista de sucesos históricos, la lista de elementos químicos fundamentales que generan la vida, etc.).

Todo eso te lo aprendes de memoria. Y cuando llegas al excamen, el profesor te puede pedir que dias la lista que aprendiste en orden cronológico o en orden inverso, o te pide que hables específicamente del tercer item de la lista que memorizaste o que digas cada item aelatoriamente, sin un orden determinado.


Como verás, así como esribiste tu lista y luego la memorizaste (Incluso pareciera que la puedes ver), luego puedes manipular sus datos acceder a ellos trabajar con ellos o darles diferentes ordenamientos. o corregir uno que estaba equivocado. sumar otro, quitar alguno que era irrelevante.

Todo eso que hacemos inconscientemente, también estna preparadas las memoris de las máquinas para hacerlo.


Programar es casi tan sencillo como preparar una materia para rendir u exámen.



Cuado preparas un examen usas no solo resúmenes de texto, sino que tambien utilizas Listas y también son muy ùtiles las tablas (esas tablas de doble entrada que te facilitan la memoriación de un exámen, con una estructura un poco diferente a las listas, pero tambien son estructuras eficientes par el guardado y recuperación de información)

Incluso puede haber "listas dentro de listas". (Listas anidadas)

En general, los seres humanos tendemos a pensar de unan forma estructurada.

Cqs siempre repetimos los mismos patrones (Las mismas partes y estructura que tenía la materia química que estudiaste el año pasado, la puedes usar para este año, pero con los nuevos datos referidos a los contenidos de éste año.).

Así que programar, despues de todo es algo que hacemos todos sin saberlo, simplemente un programador es mas consciente de ello y lo hace de forma mas eficiente.

Por algo, un programador suele sacer buenas notas en todo lo que estudia.

Todo buen alumno, puede, además, ser un buen programador.


Los docentes también suelen "programar", la materia que van a enseñar... Y se parece muchísimo a como se programa una computadora...

La diferencia, es que en un caso programas mentes de personas o "espacios" en su neuronas y en la otra, programas "mentes" de máquinas o "espacios" en sus memorias digitales.)


Una lista podría crecer en tamaño (lista dinámica) pero, hay progrmas que llevan listas fijas. (donde tú como programador, decides de antemano cuantos items tendrá esa lista y o puedes variar eso durante la ejecucuión del programa.)



Las Listas fjas


Las listas fjas, aunque limitadas y artificiales, son útiles para almacenar y procesar datos fácilmente, gracias a los comandos de tipo (sacar y poner/ Pop-Push).


Podremos sacar o poner datos por cualquiera de los extremos de una lista:

Por el principio o por el final.


Con este planteamiento podemos usar las listas como mejor convenga en cada caso, sacando y poniendo datos con distintas combinaciones.


El orden en el que procesamos los datos se verá afectado por las combinaciones que elijamos.



Listas especiales:


Pilas y Colas de datos

Las Pilas y las Colas son dos casos especiales de listas, y son prte de las estructuras de datos.



  • Las Pilas de datos

Si ponemos y sacamos datos siempre por el mismo extremo, es una Pila.



  • Las Colas de datos

Si ponemos y sacamos datos por extremos diferentes, las listas se comportarán como una Cola.


En las Listas como en los Vectores (arrays) podemos acceder a datos en posiciones concretas si usamos su índice. (podemos acceder a todos los datos (recorrer el array con un "ciclo Mientras" -While Loop-)


En los Vectores, además podemos acceder a un dato específico situado en uno de sus compartimientos o a un grupo de datos dentro del array siempre que conozcamos su indexación -Sus números particulares de ubicación en el vector/array.) Esto no sucede en las Listas.


Algunas tareas de programación nos pedirán que recorramos una lista mientras que suceda tal cosa, o hasta que, se cumpla cierta condición.


Es clave construir correctamente la condición lógica que acompaña al ciclo «Mientras», porque si está o no, en negativo cambiará la forma de procesar los datos de la lista.

Arrays y matrices

Se trata de un conjunto de variables que nos permite crear una colección de datos (un conjunto).


Array (Vector)

Los arrays (o vectores) están representados como una mesa larga donde caben varios datos, sus columnas son de color azul y se encuentran enumeradas desde 0.



Matrices (vectores de dos dimensiones)

Las matrices son arrays 2D, tienen columnas pero también múltiples filas (Como una tabla de doble entrada).

Existen funciones para facilitar el acceso a las distintas posiciones

Trabajo con estructuras de datos


Junto con estas estructuras, hay comandos para manejarlas:

  • Incrementar y Decrementar: permiten sumar y restar una unidad a cualquier dato numérico.

  • Resetear: permite poner el valor 0 a cualquier dato numérico.

Son operaciones son prácticas para trabajar con índices.

Con ellas se agilizan las operaciones recurrentes en el trabajo con arrays y matrices, simplificando y optimizando los algortimos. AHcen al vida mas fácil al programador.


Con todas estas herramientas tendremos también la flexibilidad necesaria para recorrer estas estructuras, consultando o modificando sus posiciones: por columnas, por filas, hacia delante, hacia atrás, o con ciertos patrones.


Comandos como incrementar, decrementar y resetear permiten agilizar muchas operaciones al trabajar con estructuras de datos

Estas estructuras abren la puerta a que encontremos mas, mejores y nuevas soluciones.

Es una de los artes y técnicas que dispone el buen programador moderno y le permien elevarse "a otro nivel". PEro aunque parece algo complejo...las estructuras y el manejod e ellas es tan fácil como usar listas en al vida real, conjuntos, grupos, diccionarios y tablas de doble entrada, o bases de datos.