M.C. José Andrés Vázquez Flores FCC/Primavera 2014.

30
M.C. José Andrés Vázquez Flores FCC/Primavera 2014

Transcript of M.C. José Andrés Vázquez Flores FCC/Primavera 2014.

Page 1: M.C. José Andrés Vázquez Flores FCC/Primavera 2014.

M.C. José Andrés Vázquez Flores

FCC/Primavera 2014

Page 2: M.C. José Andrés Vázquez Flores FCC/Primavera 2014.

AbstracciónEs un proceso mental mediante el cual se extraen

los rasgos esenciales de una problemática mediante descripción simplificada de la realidad.

Abstracción de datos: determinación de un conjunto de objetos organizados (estructuras de datos) y el conjunto de operaciones que se puede efectuar sobre ellos. En este proceso se omiten los detalles específicos de la implementación.

04/21/23 2

Page 3: M.C. José Andrés Vázquez Flores FCC/Primavera 2014.

Tipos de Datos Abstracto (TDA)Una estructura de datos es la manera de organizar

los datos para realizar operaciones sobre ellos de forma eficiente.

El TDA es un tipo de dato organizado que consiste en la declaración de la estructura de datos más el conjunto de operaciones en las que interviene tal estructura.

El usuario de un TDA invoca esas operaciones para crear, destruir, manipular y consultar información del tipo de datos abstracto.

04/21/23 3

Page 4: M.C. José Andrés Vázquez Flores FCC/Primavera 2014.

Objetivo de los TADsEl fin que persigue el concepto de TDA es

separar el uso del tipo de dato, de su implementación.

Para conseguir este objetivo, la definición de un TDA se divide en dos partes:EspecificaciónImplementación

4

TDA

Especificación Implementación

Sintáctica SemánticaEstructuras de datos

Algoritmos

Page 5: M.C. José Andrés Vázquez Flores FCC/Primavera 2014.

:Especificación Sintáctica

1) Especificación Sintáctica: ¿Qué hace? Especificación de las entidades y

sus propiedades (interface)Definir el nombre de las entidades abstractas.Definir el nombre de las operaciones indicando

el dominio (argumentos) y el codominio o rango (los valores de retorno)

Page 6: M.C. José Andrés Vázquez Flores FCC/Primavera 2014.

Especificación Semántica2) Especificación Semántica:

¿Cómo lo hace? Descripción de la representación del objeto (estructura de los datos) y desarrollo de las operaciones.

Definir el significado de cada operación usando los símbolos definidos en la especificación sintáctica.

Page 7: M.C. José Andrés Vázquez Flores FCC/Primavera 2014.

Especificación semántica. ContLa especificación semántica puede ser

de dos tipos:(1) Informal, a través del lenguaje natural (2) Formal, rigurosa y fundamentada

matemáticamente.Además:{P} Pre-condición: condiciones que

deben cumplirse antes de realizar la operación.

{Q} Post- condición: condiciones que se cumplen una vez realizada la operación.

La notación usual {P} S {Q} donde S es la función o procedimiento.

Page 8: M.C. José Andrés Vázquez Flores FCC/Primavera 2014.

Especificación de un TDALa especificación de un TDA consiste en

establecer las propiedades que lo definen.Para especificar un TDA es necesario describir:

Los valores que pueden tomar los datos de ese tipo

Todas las operaciones realizables sobre ellos.Una especificación debe poseer 4 propiedades:

Ser precisa - solo dice lo imprescindible Ser general - es adaptable a diferentes contextos Ser legible - transmite a los usuarios del tipo y al

implementador el comportamiento del tipo

no ambigua - evita dobles interpretaciones

8

Page 9: M.C. José Andrés Vázquez Flores FCC/Primavera 2014.

Ejemplo: TDA BolsaTipo: BolsaDefinición: Es una colección no ordenada de elementos con

repeticiónSintaxis: CrearBolsa() → BolsaBolsaVacia → BolsaBolsaLLena → BolsaPoner(Bolsa, elemento) → BolsaEsVacia(Bolsa) → BooleanRetirar(Bolsa, elemento) → BolsaReciclar(Bolsa)->PlásticoSemántica: b es Bolsa, e, f son elementosCrearBolsa() = BolsaVacia { precondición n/a,postcondición: devuelve una bolsa

vacía }

EsVacia(CrearBolsa()) = Verdadero { precondición: existencia de una bolsa, postcondición: devuelve verdadero si la bolsa no tiene elementos, falso en otro caso}

EsVacia(Poner(CrearBolsa(), e)) = FalsoRetirar(BolsaVacia, e) = Error { precondición: la bolsa no está vacía ,

postcondición:elimina el elemento e de la bolsa B }

Retirar(Poner(CrearBolsa(),f), e) = f si f = e Poner(BolsaLlena, e) = Error { precondición: la bolsa no está llena, poscondición añade

el elemento e a la bolsa }

Page 10: M.C. José Andrés Vázquez Flores FCC/Primavera 2014.

Ejemplo:TDA FracciónTipo: FracciónDefinición: Una fracción es un par ordenado de enteros, siempre y cuando

la segunda componente sea distinta de cero.Tipo abstracto Racional = (e(1), e(2))Sintaxis: ConstruirFracción(a,b:Entero) → Fracción Numerador (r: Fraccion) → entero Denominador (r: Fraccion) → enteromultiplicar(r1, r2: Fraccion) → Fraccion

Semantica:ConstruirFracción(a,b:Entero)=Fraccion { precondición: b ≠ 0, postcondición: e(1) = a AND

e(2) = b }

Numerador (r: Fraccion) = entero { precondición: debe existir una fracción, postcondición: Numerador = e(1) }

Denominador (r: Fraccion) =entero { precondición: debe existir una fracción,postcondición: Denominador = e(2) }

multiplicar(r1, r2: Fraccion) =Fraccion { precondición: deben existir dos fracciones, multiplicar=construirFraccion(Numerador(r1) * Numerador(r2), Denominador(r1)*Denominador(r2)), postcondición: una nueva fracción

Page 11: M.C. José Andrés Vázquez Flores FCC/Primavera 2014.

Notación

Toda descripción de un TDA consiste en dos partes :

1. Datos: Esta parte describe la estructura de los datos usada en el TDA de una manera informal.

2. Operaciones: Esta parte describe las operaciones válidas para este TDA, por lo tanto, describe su interface. Usamos la operación especial constructor para describir las acciones que se van a ejecutar una vez que una entidad de este TDA es creada y destructor para describir las acciones que se van a efectuar cuando una entidad es destruida.

Page 12: M.C. José Andrés Vázquez Flores FCC/Primavera 2014.

Tipos de Estructuras respecto a memoriaEstáticas: Son aquellas en las que el espacio

ocupado en memoria se define en tiempo de compilación y no puede ser modificado durante la ejecución del programa. los arreglos y las estructuras.

Dinámicas: Son aquellas en las que el espacio ocupado en memoria puede ser modificado en tiempo de ejecución. las listas, los grafos y los árboles.

04/21/23 12

Page 13: M.C. José Andrés Vázquez Flores FCC/Primavera 2014.

Tipos de estructuras respecto a la organizaciónPor posición: Pilas, Colas y Listas

Por valor: árboles

13

Page 14: M.C. José Andrés Vázquez Flores FCC/Primavera 2014.

Organización para guardar los elementos de la estructuraExisten cuatro tipos de organización para los

datos de una estructura:Lineal:

Jerárquica:

Red:

Sin relación:

04/21/23 14

Page 15: M.C. José Andrés Vázquez Flores FCC/Primavera 2014.

Funciones básicas para las estructuras de datos Constructoras: crean la estructura.

Acceso: son la base para desarrollar una serie de operaciones sobre la estructura porque permite navegar en ella.

Destructoras: devuelven al sistema los recursos asignados a la estructura de datos.

04/21/23 15

Page 16: M.C. José Andrés Vázquez Flores FCC/Primavera 2014.

Operaciones efectuadas en estructuras de datosNavegar por la estructura: realizar el recorrido de la

estructura.Modificación: permite variar total o parcialmente el

contenido de los elementos de la estructura.Consulta de información: permite obtener información

de uno o más elementos de la estructura.Búsqueda: determina si un elemento se encuentra o

no en la estructura. Inserción: se incluye un nuevo elemento en la

estructuraEliminación: permite suprimir elementos de la

estructura.04/21/23 16

Page 17: M.C. José Andrés Vázquez Flores FCC/Primavera 2014.

Tipos de organizaciónOrganización Lógica: Involucra todo

aquello que tenga que ver con las partes de cada elemento, tipo de los elementos, referencia a alguno o algunos elementos, cantidad de los elementos que contiene la estructura, relaciones entre los elementos, etc.

Organización Física: Se refiere a todo aquello que tenga que ver con la ubicación de la información en la memoria y la forma de almacenarla de acuerdo a sus dominios.

04/21/23 17

Page 18: M.C. José Andrés Vázquez Flores FCC/Primavera 2014.

04/21/23 18

Ejemplo Ejemplo Organización Lógica:

Arreglo de un índice;Inicio: 1, Fin: 50;Tipo de elementos: Entero;

 Organización Física: Almacenamiento: Secuencial

Dirección Inicial: dir(A)Tamaño del elemento: 2 bytes;Número de elementos: 50;

Eliminación de un elemento:• Por desplazamiento• Por marca

Page 19: M.C. José Andrés Vázquez Flores FCC/Primavera 2014.

04/21/23 19

ArreglosArreglosOrganización Lógica:

Dimensiones.Límite inferior y superior de cada dimensión.Tipo de elementos. 

Organización Física: Dirección inicial (de un intervalo de memoria)Tamaño de los elementos.Orden de las dimensiones.Desplazamientos .

19

Page 20: M.C. José Andrés Vázquez Flores FCC/Primavera 2014.

04/21/23 20

ArregloArreglo

Las operaciones con los arreglos son:Recuperación de uno de sus elementos.Actualización de un elemento.

Ambas operaciones se realizan en función de los índices que señalan la ubicación del elemento.

20

Page 21: M.C. José Andrés Vázquez Flores FCC/Primavera 2014.

04/21/23 21

ArreglosArreglosSea A un ARREGLO [1..20] con elementos de

tipo Carácter.Reserva un intervalo de memoria de 20 lugares

consecutivos a partir de una dirección que denotaremos por DirA.

21

A[1]A[2]A[3]

A[20]

DirA

DirA+1

DirA+2

DirA+19

Intervalo de memoria: [DirA, DirA+19]

Page 22: M.C. José Andrés Vázquez Flores FCC/Primavera 2014.

04/21/23 22

El REGISTRO proporciona heterogeneidad en este producto cartesiano; por ejemplo:

Sea x un REGISTRO con los camposy de tipo ENTEROz de tipo REAL

tiene como dominio Dom (x) = Z X R, cuyos elementos son de la forma (a,b) a Z y bR.

Tipos de ED y sus dominiosTipos de ED y sus dominios

Page 23: M.C. José Andrés Vázquez Flores FCC/Primavera 2014.

04/21/23 23

En general, tenemos que por ejemplo:Sea k un REGISTRO con los campos

l de tipo booleanom de tipo x

Dom(k) = B X Dom(x)Para poder generalizar esto último, se deben

considerar los elementos de referencia, para ello consideremos que en el siguiente ejemplo el operador ^ define tales elementos.

Tipos de ED y sus dominiosTipos de ED y sus dominios

Page 24: M.C. José Andrés Vázquez Flores FCC/Primavera 2014.

04/21/23 24

Sea p un REGISTRO con los camposxc, yc de tipo Real

Sea l-p un REGISTRO con los campospunto de tipo psp de tipo ^l-p

Dom (l-p) define un dominio recursivo:Dom (l-p) = Dom (p) x Dom (^l-p)

Los elementos de Dom (^l-p) son de la forma Dom(^l-p) = {nil} U [Dom (l-p)].

Tipos de ED y sus dominiosTipos de ED y sus dominios

Page 25: M.C. José Andrés Vázquez Flores FCC/Primavera 2014.

04/21/23 25

Polinomio de DireccionamientoPolinomio de Direccionamiento

Suponiendo que el direccionamiento sea a nivel de bytes.

Las operaciones se reducen al cálculo del Polinomio de Direccionamiento (Pd).

El Pd obtiene la dirección absoluta de un elemento del arreglo dados sus índices. 

25

Page 26: M.C. José Andrés Vázquez Flores FCC/Primavera 2014.

04/21/23 26

Por ejemplo:Si nos referimos a A[7] Pd (A[7]) = DirA + 6

Pd (A[x]) = DirA + x-1.En general se tiene que si B es un ARREGLO

[1..5] con elementos de tipo TPd (B[x]) = DirB + (x-1) lt; con lt igual a la longitud en bytes asignada al tipo T.

Polinomio de DireccionamientoPolinomio de Direccionamiento

26

Page 27: M.C. José Andrés Vázquez Flores FCC/Primavera 2014.

04/21/23

27

Para almacenar los elementos de una matriz en la memoria que es lineal, podemos hacerlo por columnas o por renglones.

Matriz de 3X4, n=3, m=4 11 12 13 14 21 22 23 24 31 32 33 34

Polinomio de DireccionamientoPolinomio de Direccionamiento

27

Page 28: M.C. José Andrés Vázquez Flores FCC/Primavera 2014.

04/21/2328

Por columnas: Dirección Elemento

100=dir 11 101=dir+1 21 1ª. Columna 102=dir+2 31 103=dir+3 12 104=dir+4 22 2ª. Columna 105=dir+5 32 106=dir+6 13 107=dir+7 23 3ª. Columna 108=dir+8 33 109=dir+9 14 110=dir+10 24 4ª. Columna 111=dir+11 34

Polinomio de DireccionamientoPolinomio de Direccionamiento

28

Page 29: M.C. José Andrés Vázquez Flores FCC/Primavera 2014.

04/21/23

29

Para la dirección del elemento C[i][j] y el almacenamiento por columnas, el PD es:

PD(C[i][ j])=DirC+[n*(j-1)+(i-1)]*T

Si el almacenamiento se hubiese realizado por renglones, entonces el PD quedaría como:

pd(C[i,j])=dirC+[m*(i-1)+(j-1)]*T

Polinomio de DireccionamientoPolinomio de Direccionamiento

29

Page 30: M.C. José Andrés Vázquez Flores FCC/Primavera 2014.

Polinomio de direccionamiento para un arreglo tridimensionalSean p el número de piso, r el número de

renglones y c el número de columnas.Pd(C[i,j,k])= DirC + (i-1)*r*c +(j-1)*c + (k-1)

04/21/23

30