2. Algoritmos y Programación
Temario
• Abstracción
• Encapsulamiento
• Tipos abstractos de datos
• Diferencia entre tipo de datos y tipo abstracto de
datos
• TAD Pila y Cola
www.unaj.edu.ar
4. Algoritmos y Programación
Abstracción
• La abstracción es la representación de las
características esenciales de un objeto o entidad.
• Consiste en aislar un elemento de su contexto o
del resto de los elementos que lo acompañan.
• La abstracción es una de las herramientas que
más nos ayuda a la hora de solucionar un
problema.
www.unaj.edu.ar
5. Algoritmos y Programación
Abstracción
• Es un mecanismo fundamental para la
comprensión de problemas y fenómenos que
poseen una gran cantidad de detalles.
www.unaj.edu.ar
6. Algoritmos y Programación
Abstracción
• A grandes rasgos, la abstracción, permite que
dispongamos de las características de un objeto
que necesitemos para resolver un problema.
www.unaj.edu.ar
8. Algoritmos y Programación
Encapsulamiento
Se denomina encapsulamiento al ocultamiento
del estado interno, es decir, de los datos miembro,
de un objeto de manera que sólo se puede
cambiar mediante las operaciones definidas para
el mismo.
www.unaj.edu.ar
9. Algoritmos y Programación
Encapsulamiento de Datos
• Este aislamiento protege a los datos asociados a
un objeto contra su modificación por quien no
tenga derecho a acceder a ellos, eliminando
efectos secundarios e interacciones.
• El usuario del objeto puede obviar la
implementación de los métodos y propiedades
para concentrarse sólo en cómo usarlos.
www.unaj.edu.ar
11. Algoritmos y Programación
¿Qué es un TAD?
• Un tipo abstracto de datos, o TAD, especifica:
– Un conjunto de operaciones (o métodos)
denominados usualmente su interfaz pública
y representan el comportamiento del TAD.
– La semántica de las operaciones (lo que
hacen).
• Pero no especifica la implementación de las
operaciones.
• Esto es lo que lo convierte en abstracto.
www.unaj.edu.ar
12. Algoritmos y Programación
¿Qué es un TAD?
• Sólo podemos modificar el estado interno del TAD
con las operaciones definidas.
Programa
Cliente
• La implementación interna del TAD está oculta al
programa cliente que lo usa.
www.unaj.edu.ar
13. Algoritmos y Programación
¿Para qué sirve TAD?
• Abstracción: Los usuarios de un TAD no
́
necesitan conocer sus detalles de implementación.
• Reutilización: un TAD puede ser utilizado por
distintos programas.
• Corrección: al reutilizar código ya probado y forzar
a utilizar la estructura de datos correctamente.
•
www.unaj.edu.ar
14. Algoritmos y Programación
Diferencia entre tipo de datos y tipo abstracto de
datos
• Los datos son los valores que manejamos en la
resolución de un problema.
• Un tipo de dato se puede definir como un
conjunto de valores y un conjunto de operaciones
definidas para esos valores.
• Los tipos de datos abstractos extienden la
función de un tipo de dato ocultando la
implementación de las operaciones definidas por el
usuario.
www.unaj.edu.ar
16. Algoritmos y Programación
TAD Pila
• Una pila es una colección, lo que significa que es
una estructura de datos que contiene elementos
múltiples.
• La pila implementa una estructura “último en entrar
primero en salir” (“last in, first out” en inglés), o
LIFO, porque el elemento añadido en último lugar
es el primero que extraemos.
www.unaj.edu.ar
17. Algoritmos y Programación
TAD Pila
• Las operaciones básicas que se pueden realizar
con una pila son apilar (push) y desapilar (pop).
Sacamos el
Sacamos el
Agregamos un
Agregamos un último elemento
último elemento
elemento al
elemento al agregado
agregado
final
final
www.unaj.edu.ar
18. Algoritmos y Programación
TAD Pila
• Las operaciones apilar (push) y desapilar (pop)
que constituyen las mínimas necesarias para
manipular una pila (de lo que sea) forman parte de
la interfaz pública del TAD pila.
• Otras operaciones posibles:
– Tope (top): devuelve el elemento en el tope de
la pila.
– Está Vacía (isEmpty): prueba si la pila está
vacía.
www.unaj.edu.ar
19. Algoritmos y Programación
TAD Pila en Python
• Tenemos las operaciones básicas, y ahora, como
implementamos el TAD Pila en Python?
• Que estructura de datos conocida puede ser
utilizada para representar internamente la Pila?
www.unaj.edu.ar
20. Algoritmos y Programación
TAD Pila en Python usando listas
Inicializamos la
Inicializamos la
lista
lista
Utilizamos el
Utilizamos el
método append
método append
Elpara hacer el push
para hacer el
El método pop push
método pop
funciona de
funciona de
manera similar
manera similar
www.unaj.edu.ar
21. Algoritmos y Programación
TAD Pila en Python usando listas
• Una pila es una estructura genérica de datos, lo
significa que se puede añadir cualquier tipo de
elementos a ella.
• Ej:
<type 'int'>
<type 'int'>
<type 'float'>
<type 'float'>
<type 'str'>
<type 'str'>
www.unaj.edu.ar
22. Algoritmos y Programación
TAD Pila en Python usando listas
• Se pueden utilizar isEmpty y pop para quitar e
imprimir todos los elementos en la pila:
• Ej:
www.unaj.edu.ar
23. Algoritmos y Programación
TAD Cola
• En la vida real, una cola es una fila de clientes
esperando un servicio de algún tipo.
• En la mayoría de los casos, el primer cliente de la
fila es el primero al que se va a servir.
www.unaj.edu.ar
24. Algoritmos y Programación
TAD Cola
• La regla que determina quién va primero se llama
táctica de encolamiento.
• La táctica de encolamiento más simple se llama
FIFO, de “first-in-first-out”, “el primero que entra es
el primero que sale”.
• Al igual que la pila, una cola es una colección de
elementos.
www.unaj.edu.ar
25. Algoritmos y Programación
TAD Cola
• El TAD Cola se define a través de las operaciones
de encolado (push) y desencolado (pop).
Agregamos un
Agregamos un
elemento al
elemento al
final
final Sacamos el
Sacamos el
primer
primer
elemento
elemento
agregado
agregado
www.unaj.edu.ar
26. Algoritmos y Programación
TAD Cola
• Al igual que con el TAD Pila, otras operaciones
posibles:
– Tope (top): devuelve el elemento al principio de
la cola.
– Está Vacía (isEmpty): prueba si la cola está
vacía.
www.unaj.edu.ar
27. Algoritmos y Programación
TAD Cola en Python
• Tenemos las operaciones básicas, y ahora, como
implementamos el TAD Cola en Python?
• Que diferencias hay con el TAD Pila?
www.unaj.edu.ar
28. Algoritmos y Programación
TAD Cola en Python
• La diferencia se encuentra en que elemento es
retirado de la cola.
• Ahora se quita el primer elemento agregado, no el
último.
www.unaj.edu.ar
29. Algoritmos y Programación
TAD Cola en Python usando listas
El método pop de colas:
1. Obtenemos el
1. Obtenemos el
elemento en lael
elemento en la
2. Eliminamos el
2. Eliminamos
1ra posición esa
1ra posición
elemento de esa
elemento de
3. Retornamos el
posicion.
3. Retornamos el
posicion.
elemento
elemento
www.unaj.edu.ar