Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto
Estructurasdedatos
Abstraccin Mecanismosdeabstraccinenprogramacin
Porparametrizacin Porespecificacin
Tiposdeabstraccin
AbstraccinProcedimental AbstraccindeIteracin Abstraccindedatos
Tipoabstractodedato(TAD)
VisionesdeunTAD Separacindelainterfazeimplementacin Caracterizacin OperacionessobreunTAD EspecificacingenricadeunTAD
EspecificacindelosTAD
Especificacininformalogenrica Especificacinformal
Mtodoaxiomticooalgebraico Mtodoconstructivouoperacional
Prof.DanielCruzGarca
Contenido
Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto
Estructurasdedatos
Abstraccin: Operacin intelectual que ignora selectivamente partes de un todo para facilitar su comprensin. Abstraccin en la resolucin de problemas: Ignorar detalles especficos buscando generalidades que ofrezcan una perspectiva distinta, mas favorable a su resolucin, i.e. es una descomposicin en que se vara el nivel de detalle. La abstraccin sirve para:
Problema bajo un contexto Representacin detallada y modularizada bajo otro contexto
Prof.DanielCruzGarca
Abstraccin
Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto
Estructurasdedatos
Prof.DanielCruzGarca
Abstraccin
Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto
Estructurasdedatos
Abstraccin por parametrizacin: Se introducen parmetros para abstraer un numero infinito de computaciones.
Ejemplo: calculo de cos
Abstraccin por especificacin: Permite abstraerse de la implementacin concreta de un procedimiento asocindole una descripcin precisa de su comportamiento.
Ejemplo: double sqrt (double a);
Requisitos: a >0; Efecto: devuelve una aproximacin de
a
5
La especificacin es un comentario lo suficientemente definido y explicito como para poder usar el procedimiento sin necesitar conocer otros elementos.
Prof.DanielCruzGarca
Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto
Estructurasdedatos
Prof.DanielCruzGarca
Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto
Estructurasdedatos
Una abstraccin por especificacin, se suele expresar en trminos de: Precondicin: Condiciones necesarias y suficientes para que el procedimiento se comporte como se prev. Postcondicin: Enunciados que se suponen ciertos tras la ejecucin del procedimiento, si se cumpli la precondicin.
Prof.DanielCruzGarca
Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto
Estructurasdedatos
/* precondicion: - num_elem > 0. - 'array' es un vector con 'num_elem' componentes. postcondicion: devuelve la posicin del mnimo elemento dentro del 'array'. */
Prof.DanielCruzGarca
Estructurasdedatos
Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto
Prof.DanielCruzGarca
Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto
Estructurasdedatos
Abstraccin Procedimental: Definimos un conjunto de operaciones (procedimiento) que se comporta como una operacin. Abstraccin de Iteracin: Abstraccin que permite trabajar sobre colecciones de objetos sin tener que preocuparse por la forma concreta en que se organizan. Abstraccin de Datos: Tenemos un conjunto de datos y un conjunto de operaciones que caracterizan el comportamiento del conjunto. Las operaciones estn vinculadas al tipo de abstraccin del dato.
10
Prof.DanielCruzGarca
Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto
Estructurasdedatos
Permite abstraer un conjunto preciso de operaciones de computo como una operacin simple. La identidad de los datos no es relevante para el diseo. Solo interesa el numero de parmetros y su tipo. Con la abstraccin por especificacin es irrelevante la implementacin, pero no que hace.
Localidad: Para implementar una abstraccin procedimental no es necesario conocer la implementacin de otras que se usen, solo su especificacin. Modificabilidad: Se puede cambiar la implementacin de una abstraccin procedimental sin afectar a otras abstracciones que la usen, siempre y cuando no cambie la especificacin.
11
Prof.DanielCruzGarca
Abstraccin procedimental
Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto
Estructurasdedatos
La abstraccin de iteracin y los iteradores: Los iteradores son una generalizacin del mecanismo de iteracin disponible en la mayora de los lenguajes de programacin. stos permiten a los usuarios iterar sobre los tipos de datos arbitrarios de un modo prctico y eficaz.
E.g. llevar a cabo alguna operacin para cada uno de los elementos de un arreglo.
12
Prof.DanielCruzGarca
Abstraccin de iteracin
Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto
Estructurasdedatos
Abstraer datos se refiere a especificar un conjunto de datos y operaciones que caracterizan el comportamiento del conjunto. A todo el proceso de extraer, definir, implementar y especificar es a lo que llamamos Abstraccin de Datos. Abstraccin de datos implica:
Especificar: Descripcin del comportamiento del TAD. Representar: Forma concreta en que se representan los datos en un lenguaje de programacin para poder manipularlos. Implementar: La forma especifica en que se expresan las operaciones.
13
Prof.DanielCruzGarca
Abstraccin de datos
Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto
Estructurasdedatos
Tipo de datos: proporcionados por los leguajes de alto nivel. La representacin usada es invisible al programador, al cual solo se le permite ver las operaciones predefinidas para cada tipo. Tipos definidos por el programador: que posibilitan la definicin de valores de datos ms cercanos al problema que se pretende resolver. (p.g. definir estructuras en C). Tipo abstracto de dato (TAD): para la definicin y representacin de tipos de datos (valores + operaciones), junto con sus propiedades. Objetos: Son TAD a los que se aade propiedades de reutilizacin y de comparticin de cdigo.
14
Prof.DanielCruzGarca
La abstraccin de datos
Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto
Estructurasdedatos
Tipo Abstracto de Dato (TAD): Entidad abstracta formada por un conjunto de datos organizados en cierta estructura y una coleccin de operaciones asociadas especificados formalmente.
15
Prof.DanielCruzGarca
Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto
Estrictamente un tipo de dato abstracto (TDA) o tipo abstracto de datos (TAD) es un modelo matemtico compuesto por una coleccin de operaciones definidas sobre un conjunto de datos para el modelo.
Estructurasdedatos
16
Prof.DanielCruzGarca
Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto
Estructurasdedatos
Ventajas de la separacin:
Se puede cambiar la visin interna sin afectar a la externa. Facilita la labor del programador permitindole concentrarse en cada fase por separado.
17
Prof.DanielCruzGarca
Visiones de un TAD
Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto
Estructurasdedatos
Cuando se usa en un programa de computacin, un TAD es representado por su interfaz, la cual sirve como cubierta a la correspondiente implementacin. Los usuarios de un TAD tienen que preocuparse por la interfaz, pero no por la implementacin. Esto se basa en el concepto de ocultacin de informacin y proporciona una proteccin para el programa. La solidez de un TAD reposa en la idea de que la implementacin est escondida al usuario. Solo la interfaz es pblica, i.e. el TAD puede ser implementado de diferentes formas, pero mientras se mantenga consistente con la interfaz, los programas que lo usan no se ven afectados.
18
Prof.DanielCruzGarca
Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto
Estructurasdedatos
Cuando hablemos de un TAD no se hace ninguna alusin al tipo de los elementos sino tan slo a la forma en que estn dispuestos estos elementos. Slo nos interesa la estructura que soporta la informacin y sus operaciones. Para determinar el comportamiento estructural basta con observar la conducta que seguirn los datos. Un TAD tendr una parte que ser invisible al usuario la cual hay que proteger y que se puede decir que es irrelevante para el uso del usuario y est constituida tanto por la maquinaria algortmica que implemente, la semntica de las operaciones y por los datos que sirvan de enlace entre los elementos del TAD.
19
Prof.DanielCruzGarca
Caracterizacin
Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto
Estructurasdedatos
Se destacan los detalles (normalmente pocos) de la especificacin (el qu). Se ocultan los detalles (casi siempre numerosos) de la implementacin (el cmo).
Interfaz
Datos
20
Prof.DanielCruzGarca
Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto
Estructurasdedatos
Constructora: Crea elementos del TAD. Modificadora: Permite alterar el estado de un elemento del TAD. Analizadora: Permite consultar por el estado del objeto y retornar algn tipo de informacin. Persistencia: Permiten almacenar un TAD indefinidamente. P.g. Analizadoras:
Comparacin de igualdad entre objetos. Salida en pantalla, permite visualizar el estado de un elemento del TAD (sirve como base para alguna interfaz o depuracin en pruebas).
P.g. Modificadoras:
Copiar un elemento por otro, cambiando su estado. Destruccin, retorna el espacio de memoria dinmica ocupada por un elemento.
P.g. Persistencia:
Operaciones que permiten guardar/leer el estado de un elemento desde un medio de almacenamiento secundario.
21
Prof.DanielCruzGarca
Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto
Estructurasdedatos
X i,j
n1
22
Prof.DanielCruzGarca
Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto
Estructurasdedatos
Especificar: Determinar, explicar algo con todos los detalles precisos para su identificacin o entendimiento.
23
Unamalaespecificacindelainterfaz Especificacintcnicadeunproducto
Prof.DanielCruzGarca
Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto
Estructurasdedatos
Se establecen sus propiedades, se define totalmente su comportamiento, pero no se dice nada sobre su implementacin. Indica el tipo de entidades que modela, que operaciones se les pueden aplicar, como se usan y que hacen.
Usuarioprogramador
Especificacin
Implementacin
24
Prof.DanielCruzGarca
Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto
Estructurasdedatos
nicamente
aquello
que
es
General: Se adapta a los diferentes contextos que se podran llegar a manejar. Legible: Debe ser entendible para lograr una comunicacin clara entre el especificador, el implementador y los usuarios del tipo. No ambigua: Que evite futuros problemas en la manera de interpretarse.
25
Prof.DanielCruzGarca
Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto
Estructurasdedatos
En este tipo de especificacin a veces se llega a cierta ambigedad e imprecisin ya que su descripcin se realiza en un lenguaje ms natural.
Explicacin redactada Apoyada en imgenes y diagramas Sencilla y fcil de entender
26
Prof.DanielCruzGarca
Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto
Estructurasdedatos
Se apoya de una explicacin en lenguaje natural, imgenes y diagramas, donde se mencionan los objetos sobre los que opera el TAD, la estructura del TAD y las posibles operaciones sobre el mismo.
27
Prof.DanielCruzGarca
Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto
Estructurasdedatos
Los nmeros naturales son un conjunto cerrado para las operaciones de la adicin y la multiplicacin, ya que al operar con cualquiera de sus elementos, resulta siempre un nmero perteneciente a.
28
Prof.DanielCruzGarca
Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto
Estructurasdedatos
En este tipo de especificacin no debe haber imprecisin. En esta especificacin la descripcin se realiza mediante reglas algebraicas o expresiones estndares que no permiten ambigedad en la descripcin
Se expresan en un lenguaje formal Lenguajes algebraicos Compleja
Una especificacin formal de tipo de datos abstracto consta de cuatro secciones: TIPOS, FUNCIONES, AXIOMAS y PRECONDICIONES.
29
Prof.DanielCruzGarca
Especificaciones formales
Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto
Estructurasdedatos
La especificacin formal de un TAD describe un TAD y sus operaciones de manera precisa sin ambigedades apoyndose en lenguajes formales que permitan que cualquiera entienda el mismo significado de las operaciones, los datos y las caractersticas de un TAD. Comnmente se emplean notaciones formales para definir la semntica, ya sea a travs de mtodos axiomticos o algebraicos o mtodo constructivos u operacionales.
30
Prof.DanielCruzGarca
Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto
Estructurasdedatos
Mtodo constructivo u operacional: Se define cada operacin por s misma, independientemente de las otras. Significado explcito de las operaciones.
31
Prof.DanielCruzGarca
Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto
Estructurasdedatos
(Mtodo axiomtico o algebraico) Este tipo de especificacin consiste en la determinacin del como hay que escribir las operaciones de un TAD, proporcionando el tipo de operandos y el tipo de resultados. P.g.
int + (int a,b) int (int a,b) int abs (int a)
32
Prof.DanielCruzGarca
Definicin de la semntica
Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto
Estructurasdedatos
33
Prof.DanielCruzGarca
Definicin de la semntica
Estructurasdedatos
34
Prof.DanielCruzGarca
Estructurasdedatos
Semntica: paratodomynpertenecientesaN 1.escero (cero)=true 2.escero (sucesor(n))=false 3.igual(cero,n)=escero (n) 4.igual(sucesor(n),cero)=false 5.igual(sucesor(n),sucesor(m))=igual(n,m) 6.suma(cero,n)=n 7.suma(sucesor(m),n)=sucesor(suma(m,n))
35
Prof.DanielCruzGarca
Ejemplo 1 Definicin de la semntica mediante el mtodo axiomtico o algebraico: (TAD Nmeros Naturales)
Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto
Estructurasdedatos
36
Prof.DanielCruzGarca
Definicin de la semntica
Estructurasdedatos
max_restring:ZxZZ
premax_restring (x,y) ::=(x>0)^(y>0) postmax_restring (x,y;r) ::=(rx)^(ry)^(r=xVr=y) Qusucederasixoynosonmayoresque0?
Nosecumplelaprecondicinynopodramosasegurarquese cumplalapotscondicin.
37
Prof.DanielCruzGarca
Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto
Estructurasdedatos
ParaelcursodeEstructurasdeDatosemplearemoslasiguienteestructura deespecificacin,dentrodelaculseutilizaranespecificacionestanto formalescomoinformalessegnseaelTADaespecificar 1. 2. Cabecera: nombre del tipo y listado de las operaciones. Definicin: Descripcin del comportamiento sin indicar la representacin. Se debe indicar si el tipo es mutable o no. Tambin se expresa donde residen los datos internos. Operaciones: Especificar las operaciones una por una como abstracciones procedimentales
Condicin de los parmetros de entrada de las operaciones. Resultados de las operaciones
3.
4.
Observaciones
38
Prof.DanielCruzGarca