martes, 3 de septiembre de 2013

UNIDAD I: Fundamentos de Estructura de Datos


1.1 DEFINICIÓN

Estructura de datos

Es una forma de organizar un conjunto de datos elementales con el objetivo de facilitar su manipulación

Es también un conjunto de reglas que contienen datos juntos.
Define la organización e interrelación de estos y un conjunto de operaciones que se pueden realizar sobre ellos.

Las operaciones básicas de los datos son:
  • Insertar, adiciona un nuevo valor a la estructura.
  • Eliminar, borra un valor de la estructura.
  • Ordenamiento, de los elementos pertenecientes a la estructura.
  • Búsqueda, encontrar un determinado valor en la estructura para realizar una operación con él.

1.2 CLASIFICACIÓN

Tipo de datos
Es un conjunto de valores y operaciones asociados a esos valores.

Enteros                                                 Valores                   -3, -2, -1, 0, 1, 2, 3
                                                            Operaciones             *, +, -, /

Carácter                                               Valores                   "A", "B", "C", "D" - "a", "b", "c", "d"
                                                            Operaciones             <  >

1.- Datos primitivos
Son aquellos que no se construyen a partir de otros tipos y son entidades únicas.
  •   Enteros
  •   Coma Flotante
  •   Carácter                                                                Ejemplo: int x;  int n; bit, byte, GB etc.
  •   Lógico                                                                              
2.- Unidades de almacenamiento

Bit: unidad mínima de almacenamiento (0/1).
Byte: 8 bits (un caracter)
Kilobyte (Kb): 1024 bytes
Megabyte (Mb): 1024 Kb
Gigabyte (Gb): 1024 Mb
Terabyte (Tb):   1024 Gb

3.- Datos compuestos
Son tipos de datos cuyos valores constan de colecciones de elementos de datos.

                                                                                                                             Ejemplo:

  • Arreglos
  • Secuencias (Listas, árboles y cadenas)                         
  • Registros (Bases de datos)


4.- Abstracción de datos

Es la Técnica para inventar nuevos tipos de datos que sean mas adecuados a una aplicación y, por consiguiente faciliten la escritura del programa.

Obtenemos como resultado programas más cortos, más legibles y flexibles.

  •  Abstracciones de control ( Nivel sentencia ):
Ejemplo.
Sentencias de Bifurcación ( If ) y Bucles ( For, While, Loop, etc )

  •  Abstracciones por control ( Nivel por procedimiento):
Ejemplo.
 Procedimientos, Métodos o Funciones.

4.1 Tipos de datos Abstractos.
Los tipos de datos son Abstracciones
La Abstracción de datos: Proceso de construir nuevos datos.
Tipos de datos: los nuevos tipos de datos definidos por el usuario.


5.- Modularidad

La modularidad se basa en la descomposición de un problema en una serie de sub problemas; dividiéndolo en módulos que resultan de segmentar el problema en funciones lógicas que son perfectamente diferenciadas. Esta división exige la presencia de un módulo denominado módulo de base o principal a objeto de que controle y se relacione con los demás.


En pocas palabras la modularidad es la posibilidad de dividir una aplicación en piezas más pequeña

 1.3 Estructuras lineales y no lineales


Estructuras de datos lineales

Las estructuras lineales de datos se caracterizan porque sus elementos están en secuencia, relacionados en forma lineal, uno luego del otro. Una estructura lineal de datos os lista está conformada por ninguno, uno o varios elementos que tienen una relación dónde existe un primer elemento, seguido de un segundo elemento y así sucesivamente hasta llegar al último. El valor contenido en los elementos pueden ser el mismo o diferente. En estas estructuras se realizan operaciones de agregar y/o eliminar elementos a la lista según un criterio particular

Existen tres estructuras lineales especialmente importantes: 

1.-Las pilas
2.-Las colas
3.-Las listas

Su importancia radica en que son muy frecuentes en los esquemas algorítmicos.

Las operaciones básicas para dichas estructuras son:

• Crear la secuencia vacía
• Añadir un elemento a la secuencia
• Borrar un elemento a la secuencia
• Consultar un elemento de la secuencia
• Comprobar si la secuencia está vacía

La diferencia entre las tres estructuras vendrá dada por la posición del elemento a añadir, borrar y consultar:

• Pilas: Las tres operaciones actúan sobre el final de la secuencia
• Colas: Se añade por el final y se borra y consulta por el principio
• Listas: Las tres operaciones se realizan sobre una posición privilegiada de la secuencia, la cual puede desplazarse


Estructura de datos no lineales:



Se caracteriza por no existir una relación de sus elementos es decir que un elemento puede estar con cero uno o más elementos. Las estructuras no lineales de datos más generales son los árboles donde no existe ninguna relación de orden Predefinida. Esta estructura se usa principalmente para representar datos con una relación jerárquica entre sus elementos, como por ejemplo registros, árboles genealógicos y tablas de contenidos.


1.4 Estructuras dinámicas y Estáticas.
  • Estructura de datos estática.

Son aquellas en las que el tamaño ocupado en memoria se define antes de que el programa se ejecute y no puede modificarse dicho tamaño durante la ejecución del programa.
Estas estructuras están implementadas en casi todos los lenguajes.
Su principal característica es que ocupan solo una casilla de memoria, por lo tanto una variable simple hace referencia a un único valor a la vez, dentro de este grupo de datos se encuentra:

a)Enteros
b)Reales
c)Caracteres
d)Boléanos
e)Enumerados
f)Subrangos
Nota:Los últimos no existen en algunos lenguajes de programación. Es el uso de estructura de datos de tamaño fijo , como los arreglos de uno o dos subíndices.
Ejemplo de memoria estática. Arreglo unidimensional.
Ejemplo de memoria estática. Arreglo Bidimensional.







  • Estructura de datos dinámica.
No tienen las limitaciones o restricciones en el tamaño de memoria ocupada que son propias de las estructuras estáticas.
Mediante el uso de un tipo de datos especifico, denominado puntero, es posible construir estructuras de datos dinámicas que no son soportadas por la mayoría de los lenguajes, pero que en aquellos que si tienen estas características ofrecen soluciones eficaces y efectivas en la solución de problemas complejos.
Se caracteriza por el hecho de que con un nombre se hace referencia a un grupo de casillas de memoria.
Es decir un dato estructurado tiene varios componentes.

  • Clasificación de las estructuras de datos
ESTRUCTURAS DE DATOS ESTÁTICAS
1.- Simples o primíticas
      a) Boolean
      b) Char
      c) Integer
      d) Real
2.- Compuestas
      a) Arreglos
      b) Conjuntos
      c) Strings
      d) Registros
      e) Archivos
ESTRUCTURA DE DATOS DINAMICAS
1.- Lineales
     a) Pila
     b) Cola
     c) Lista
2.- No lineales
     a) Árboles
     b) Grafos