La abstracción consiste en aislar un elemento de su contexto o del resto de los elementos que lo acompañan. En programación, el término se refiere al énfasis en el "¿qué hace?" más que en el "¿cómo lo hace?" (característica de caja negra). El común denominador en la evolución de los lenguajes de programación, desde los clásicos o imperativos hasta los orientados a objetos, ha sido el nivel de abstracción del que cada uno de ellos hace uso.
2. Abstracciones de datos
Este campo se conoce con el nombre de
estructura de datos. El objetivo es permitir al
usuario de los datos acceder al conjunto de datos
como si fueran herramientas abstractas.
3. Estructura de datos básicas
Arrays o matrices: es un bloque de datos
“rectangular” cuyas entradas son todas del
mismo tipo.
4. Array bidimensional
Esta compuesto por filas y columnas en las que
las distintas posiciones se identifican mediante
una pareja de índices, el primer índice identifica
la fila asociada con la posición, mientras que el
segundo identifica la columna.
5. Listas, pilas y colas
Estructura básica de datos:
Lista: es un conjunto cuyas entradas están
ordenadas de manera secuencial, el inicio de
una lista se denomina principio. El otro extremo
se denomina final
6. Estructura de datos estática o
dinámica.
Las estructuras de datos estáticas se manipulan
mas fácilmente que las dinámicas. Si una
estructura es estática, simplemente necesitamos
proporcionar un medio para acceder a los distintos
elementos de datos de estructura y quizá también
un medio de modificar los valores almacenados en
ciertas ubicaciones.
7. Estructura dinámica
Si la estructura es dinámica, tendremos que
ocuparnos también de los problemas de añadir
o eliminar entradas, si tenemos una estructura
mal diseñada, el añadir una única entrada
nueva podría provocar que numerosos
elementos de la estructura tuvieran que ser
recolocados.
8. Punteros
Un puntero es un área de almacenamiento que
contiene una de esas direcciones codificadas.
En el caso de las estructuras de datos, se
utilizan punteros para anotar la ubicación en la
que están anotados los campos de datos.
9. Implementación de estructura de
datos
Almacenamiento arrays: estas estructuras suelen
proporcionarse como estructuras primitivas en el
lenguaje de programación de alto nivel. El objetivo
es comprender como se traducen los programas
que manejan esas estructuras a programas en
lenguaje maquina que manipulan los datos
almacenados en la memoria principal.
10. Implementación de listas contiguas
Las primitivas para la construcción y
manipulación de matrices que se proporcionan
en la mayoría de los lenguajes de programación
de alto nivel son herramientas cómodas para la
construcción y manipulación de listas contiguas.
Si las entradas de lista son todas ellas del
mismo tipo de dato primitivo no es mas que una
matriz homogénea.
11. Almacenamiento de listas
Una de las estrategias posibles seria almacenar
la lista completa en un solo bloque de celdas de
memoria con direcciones consecutivas.
Podemos dividir ese bloque de celdas en un
conjunto de sub bloques, teniendo cada uno de
ellos ocho celdas.
12. Un problema con los punteros
El uso inadecuado de los punteros puede
producir estructuras de datos innecesariamente
complejas y proclives a errores.
13. Almacenamiento de pilas y
colas
En el caso de una pila se reserva un bloque de
memoria lo suficientemente grande como para
que quepa la pila con su tamaño máximo.
14. Puntero de pila:
El puntero de pila es un puntero que indica
donde eta situada la sima de la pila.
Puntero de cabecera: indica donde se ubica el
punto de la cola.
Puntero final: indica donde termina la cola.
15. Manipulación de estructura de
datos.
La forma en que se almacenan realmente en la
memoria de una computadora las estructuras de
datos no coinciden con la estructura conceptual,
tal como el usuario se la representa mentalmente.
16. Una matriz bidimensional no se almacena como
un bloque rectangular bidimensional y una lista
y un árbol pueden estar en la practica
compuestos por pequeños fragmentos
dispersos por un área memoria de gran
tamaño.
17. Recolección de basura
La recolección de basura es necesario en
diferentes escenarios. El gestor de memoria de
un sistema operativo debe realizar la
recolección de basura a medida que va
asignando y liberando espacio de memoria.
18. Tipos de datos personalizados
Tipo datos elementales:
• Enteros
• Reales
• caracteres
• booleanos
19. Tipos de datos definidos por el
usuario
Muchos lenguajes de programación modernos
permiten a los programadores definir tipos de
datos adicionales, utilizando los tipos primitivos
como componentes básicos. Son básicamente
conglomerados de tipos primitivos agrupados
bajo un nombre común.
20. Tipos abstractos de datos
Un tipo de datos completo esta compuesto por
dos partes.
1)Un sistema de almacenamiento
predeterminado.
2)Una colección de operaciones definidas.
21. • Sistema de almacenamiento predeterminado:
como un sistema en complemento a dos en
el caso de tipo enteros y un sistema de punto
flotante en el caso del tipo real.
. Operaciones predefinidas: como la suma y la
resta.
22. Clases y objetos
Objetos: interactúan entre si para poder llevar a
cabo una serie de tareas. Cada objeto es una
entidad que responde a mensajes recibidos de
otros objetos. Los objetos se describen
mediante plantillas que se conocen con el
nombre clases.
23. Clases:
en muchos aspectos estas clases son en
realidad descripciones de tipos abstractos de
datos(cuyas instancias se denominan objetos).
24. La librería STL
(standard template library. Librería estándar de
plantillas).la STL contiene un conjunto de clases
predefinidas que describen diversas estructuras
de datos muy populares.
25. Punteros en lenguaje maquina
Nuestro lenguaje maquina proporciona dos
instrucciones para cargar registros: uno con el
código de operación 2 y la otra con el código de
operación 1