martes, 22 de octubre de 2019

¿Que son pilas?


Las pilas son estructuras de datos que se utilizan generalmente para simplificar ciertas operaciones Estas estructuras pueden implementarse mediante arrays o mediante listas enlazadas.

Las pilas son estructuras de datos que tienes dos operaciones básicas: PUSH (para insertar un elemento) y POP (para extraer un elemento).

Su característica fundamental es que al extraer se obtiene siempre el último elemento que acaba de insertarse. Por esta razón también se conocen como estructuras de datos LIFO.

Una posible implementación mediante listas enlazadas sería insertando y extrayendo siempre por el principio de la lista.

Gracias a las pilas es posible el uso de la recursividad La variable que llama al mismo procedimiento en el que está, habrá que guardarla, así como el resto de variables de la nueva llamada, para a la vuelta de la recursividad ir sacándolas, esto es posible a la implementación de pilas. 


Resultado de imagen para pilas en programacion

jueves, 10 de octubre de 2019

¿Qué son las Listas Doblemente Enlazadas?


Si recordamos nuevamente el concepto de Listas Enlazadas, este tema será muy fácil de retomar. Y si no recuerdas, te dejo aquí el enlace: Listas Enlazadas.

Bueno, conceptualmente diremos que: una lista doblemente enlazada es una estructura de datos que consiste en un conjunto de nodos enlazados secuencialmente.


En otras palabras, una lista de elementos que están una seguida de otra, y como las listas anteriores que vimos, cada Nodo (elemento) contiene dos enlaces: el anterior y el siguiente.

A diferencia de esta última en las doblemente enlazadas se tienen dos direcciones, así:

Una lista doblemente enlazada cuyos nodos contienen tres campos: un valor entero, el enlace al nodo siguiente, y el enlace al nodo anterior.




Una lista doblemente enlazada cuyos nodos contienen tres campos: un valor entero, el enlace al nodo siguiente, y el enlace al nodo anterior.

Lo que se muestra gráficamente es que podemos barrer los datos, o los elementos de la lista, desde el inicio al final y viceversa.

En el ejemplo anterior podemos leer lo siguiente:

    "El anterior de nodo 12 apunta a nulo, y el siguiente apunta al anterior de nodo 99".

También podemos decir:
    "El anterior de nodo 37 apunta a siguiente del nodo 99 y el siguiente apunta a nulo".

En esta estructura de datos podemos realizar las mismas funciones que podíamos hacer en las Listas Enlazadas, con la únicamente diferencia que es de dos sentidos.


Ahora ya con esta teoría, puedes imaginar las utilidades que tiene esta estructura de datos.
Seguidamente agregaremos un video para demostrar como se programa en Java y como se ve gráficamente.



¿Te gustaría aprender más?
Sigue en este blog.

<!-- SI PUEDES IMAGINARLO, PUEDES PROGRAMARLO -->

lunes, 7 de octubre de 2019

¿Que son Nodos?

Nodo

En general un nodo es un punto de unión de varios elementos que confluyen en el mismo lugar que también va haciendo conexiones con otros nodos hasta llegar al final

Es un elemento de una lista enlazada y cada nodo es un dato o registro que tiene varios campos uno de esos campos es el puntero que hace referencia a si a otro nodo y el otro campo es donde va el dato.

Puntero.

el puntero es una variable que hace referencia a otro nodo, que tiene una dirección en memoria en la cual esta almacenado el valor del nodo y se dice que el primer nodo apunta a segundo nodo.




Resultado de imagen para imagen de nodo programación




                             https://youtu.be/0_b1-iUmV_g.

domingo, 29 de septiembre de 2019

¿Qué son las Listas enlazadas?

¿Recuerdan el concepto de memoria dinámica?
Pues si no, aquí lo veremos nuevamente y en el caso que te haya gustado, le entenderás muy fácilmente a este nuevo tema: Listas enlazadas.

¿Qué es una lista?
Al oír este término, en lo personal recuerdo cuando niño mi mamá me mandaba a la tienda para comprar cosas para el almuerzo. Entonces, me hacía una LISTA de productos que quería que le trajera. Una cosa tras otra.
Y eso es efectivamente una lista.

Pero en programación, ¿qué es una Lista enlazada?
Bueno, en estructuras de datos, podemos definirlo como un conjunto de elementos uno tras otro, enlazados por un vínculo y que tienen un inicio y un final.

Es decir que, podemos tener varios elementos, y tener una posición exacta de cada uno. Y hacer con cada uno lo que sea, como eliminarlo, editarlo, etc. Porque forma parte del concepto de memoria dinámica.

Veamos, si tengo una lista de 1,2 y 3.
Y quisiera agregar un cero al inicio, y eliminar el tres... Con los métodos que más adelante veremos podemos hacerlo y quedará de la siguiente manera: 0,1 y 2.

¿Les ves una poderosa utilidad a ello?
Pues, se puede programar tambien.

Cada elemento, le llamaremos NODO.
Que está compuesto por el ELEMENTO, o sea, la información y el ENLACE, que es dónde apunta.

Para finalizar, existe categorías de las listas enlazadas, las cuales son:

 *Listas simplemente enlazadas
 *Listas doblemente enlazadas
 *Listas circular simplemente enlazadas
 *Listas circular doblemente enlazadas

EJEMPLO GRÁFICO DE LISTAS ENLAZADAS


¿Te gustaría aprender más?
Sigue en este blog.

VER VIDEO PRÁCTICO

<!-- SI PUEDES IMAGINARLO, PUEDES PROGRAMARLO -->

viernes, 27 de septiembre de 2019

¿Que es la Recursividad?

La recursividad podríamos decir que es un proceso que se repite n veces hasta que llega a su final o es resuelto el problema, un ejemplo puede ser poner dos espejos enfrente esa misma imagen que se ve se repite ósea es recursiva.

Podemos entender que recursividad es un procedimiento para resolver problemas y ir haciendo mas pequeño el problema hasta que quede resuelto.

Resultado de imagen para recursividad

Para usarlo en programación tendríamos que crear una función y hacer un return para llamar a esa misma función y se ejecutara hasta que se resuelva el problema.

                             https://youtu.be/N6xzUiJsEPY.

miércoles, 25 de septiembre de 2019

¿Qué es Memoria Dinámica?


Bueno, en el último tema de este blog estuvimos hablando de la memoria estática, y que de esta no se pude modificar en tiempo de ejecución. Si no que tiene que asignarle un espacio y el programa lo reserva.

Pero ahora definiremos la memoria dinámica. Que es totalmente diferente a la estática, hasta podemos decir que es lo contrario. Si nos funciona para almacenar contenido, pero este sí se puede modificar en tiempo de ejecución.

Definamos en sí qué es memoria dinámica: es el espacio de memoria la cual su tamaño puede variar durante la ejecución de un programa.

Para entenderlo mejor pondremos el ejemplo de un CRUD (Create, Read, Update and Delete), que es un sistema automatizado para crear, cargar o leer, actualizar y eliminar cualquier tipo de información.  Es muy común en sistemas dinámicos por que se interactúa con el usuario.

Ya en programación lo más común es usar un vector donde el usuario puede agregar más elementos a la matriz o eliminarlos mientras se ejecuta el programa. Y este no presenta ningún error ni dificultad para hacerlo.


En Java, podemos programar un CRUD con una librería de Java.util una clase que se llama: arrayList. Esta clase tiene métodos para poder interactuar con la memoria del programa.
Y hacer la función del CRUD sin modificar el tamaño de la memoria en código.

Si quieres  ver el ejemplo de Memoria Dinámica en un pequeño CRUD en Java, puedes visitar el link de abajo. 

Esperando  que te haya servido de mucho.

VER VIDEO DE: CRUD ArrayList | Java

<!-- SI PUEDES IMAGINARLO PUEDES PROGRAMARLO -->


¿Que es Memoria Estática?


Alguna vez has oído hablar de memoria de una computadora, o de otro dispositivo. O por lo menos lo que nosotros tenemos, los recuerdos. Esto se llama memoria. Pero en informática tenemos dos tipos de memoria: dinámica y estática.

Esta última memoria es la que estudiaremos en este blog.

Primero, ¿qué es memoria? Es un espacio lógico para guardar información.

Con este concepto en mente podemos definir memoria estática como el espacio de memoria que no se modifica al menos en tiempo de ejecución.

Una de las ventajas puede ser que tiene una lógica simple de entender, óptima para resolver problemas.

Unas desventajas también pueden ser que no es óptimo con grandes cantidades, no se puede modificar en tiempo de ejecución, y al no usar la memoria completa seria como que estemos desperdiciando la memoria que queda


            Link de un ejemplo: https://www.youtube.com/watch?v=rUth8ps73bM

<!-- SI PUEDES IMAGINARLO PUEDES PROGRAMARLO -->

jueves, 19 de septiembre de 2019

¿QUÉ ES UN TDA?

En el mundo de programación existen muchas formas para crear la estructura de funcionamiento de un programa. Podemos crear un sistema de forma lineal, que consta de inicio, proceso y fin. Sin poder alterar ese curso. Pero también podemos realizar un sistema donde seguido del fin, se cree un proceso de forma dinámica, y por supuesto el fin. 

Con forma dinámica quiero decir que el usuario puede ejecutar varias funciones internas y sin seguir un patrón específico. Sino acorde a sus necesidades. Y este tipo de orden se conoce como programación orientada a objetos (POO).

Pero para entender bien la POO, definiremos qué es un TDA:

Sus siglas significan tipo de dato abstracto. Y hace referencia a un tipo de dato que se sabe qué hace ciertas cosas sin mencionarlas. Por ejemplo, podría yo decir “caballo”, y usted entenderá qué es, y qué hace. A esto le llamamos abstracción. Porque se obvia aparentemente lo que es.

Entonces en programación, podemos definir una función que realice una sola actividad, y el usuario poder utilizarla cuantas veces quiera. A estas funciones las llamamos métodos, y pertenecen a una  clase principal, y esa la podemos asociar con el “caballo”, y lo que hace caballo serán los métodos.

Los TDA consta de dos partes: Atributos y Métodos.

Los atributos  son los tipos de datos como los numéricos, cadenas, booleanos, etc.
Los métodos, como anteriormente mencionamos, es lo que hace la clase.


Resultado de imagen para tda estructura de datos

<!-- SI PUEDES IMAGINARLO PUEDES PROGRAMARLO -->


lunes, 16 de septiembre de 2019