You are on page 1of 4

TIPO DE DATOS ABSTRACTO - TDA

Una funcin es una generalizacin del concepto operador para ser aplicado a operaciones generales definidas por un programador. Una funcin puede ser aplicada a diferentes datos. Con funciones se logra una ocultacin de informacin, denominado encapsulacin. Un concepto similar es la abstraccin de datos. Un tipo de datos abstracto TDA define una nueva clase de objeto o concepto que puede manejarse con independencia de la estructura de datos para representarlo. Para ello es necesario especificar: Las operaciones que se puede realizar con los objetos. El efecto que se produce al actuar con las operaciones sobre los mismos.

As un TDA es una generalizacin de los tipos de datos primitivos de un lenguaje de programacin. Un TDA encapsula la definicin del tipo y todas las operaciones con este tipo. Los lenguajes de programacin entregan al programador ciertos tipos de datos bsicos o primitivos, especificando el conjunto de valores que una variable de uno de esos tipos puede tomar y el conjunto de operaciones realizables sobre los mismos. El nmero de tipo de datos vara de un lenguaje de programacin a otro. Por ejemplo, LISP puro tiene slo la expresin simblica como tipo de dato, en cambio ADA tiene seis tipos de datos bsicos: enumeration, integer, real, array, record, y acces. Los lenguajes de programacin tienen sus propias reglas para sus tipos de datos. Por ejemplo, si se declara en C/C++ unsigned int x, y; indica que las dos variables son del tipo int y el rango de valores que pueden tomar es 0 a 65.535. Si se realiza la operacin x/y su resultado ser de tipo int. En cambio si una de las variables fuese de punto flotante el resultado ser de punto flotante. En el caso de FORTRAN77 las variables de tipo entero no se declaran, se usan las letras I, J, K, L, M o N como inicial del nombre de la variable para indicar que una variable es del tipo entero. Adems, los tipos de datos bsicos o primitivos que entregan los lenguajes de programacin, tambin proporcionan algn soporte para combinar datos entre s de diferentes formas. Esto se realiza por medio de estructuras de datos. De esta forma, los programadores son capaces de definir sus propios tipos de datos combinando varios tipos bsicos para crear tipos agregados o compuestos, como son los arreglos y las estructuras (registros). La instruccin n = 5+3 de un programa donde = es el operador de asignacin, el contenido de la localidad de almacenamiento dado por n ser el valor 8. En cambio, si n = O + K, n contendr la cadena OK. Cada tipo de datos no solamente es reconocido por los elementos de datos que puede tomar, sino por las operaciones asociadas a l. A un conjunto de elementos de datos se le conoce como dominio de datos. Por ejemplo, en PASCAL el dominio entero se describe como: D = {0, 1, 2, ....., max}. Con el identificador constante max, que corresponde al entero ms grande. Las operaciones para este dominio son: Operadores unarios: {+, -} 1 de 4

Operadores binarios: {+, -, /,* ,div, mod}.

Esto es una abstraccin matemtica que define los nmeros enteros y sus propiedades. De esta forma definido se espera que los nmeros enteros asociados a sus operaciones se comporten de manera apropiada en cualquier computador en la que se ejecute un programa. Los TDAs son generalizaciones de los tipos de datos bsicos y de las operaciones primitivas. Adems, un TDA encapsula cierto tipo de datos en el sentido que es posible poner la definicin del tipo y todas las operaciones con ese tipo en una seccin de un programa. Cada conjunto de operaciones define un TDA distinto. Por ejemplo, se puede definir un tipo de datos abstracto CONJUNTO [Aho1988] con el cual se pueden definir las siguientes operaciones: B. ANULA(A) UNION(A, B, C) TAMAO(A) Hace vaco al conjunto A Construye el conjunto C a partir de la unin de los conjuntos A y Entrega la cantidad de elementos del conjunto A.

Existen muchas estructuras de datos que se pueden utilizar para implantar eficientemente un conjunto. Por ejemplo, mediante arreglos. Las operaciones sobre conjuntos se pueden implantar mediante funciones. El componente bsico de una estructura de dato es la celda, la cual almacena un valor tomado de algn tipo de dato bsico o compuesto. Las estructuras de datos se crean dando un nombre a agregados de celdas e interpretando (algunas veces) los valores de algunas celdas como representantes de conexiones entre las celdas. La mayora de los lenguajes de programacin utilizan el mecanismo de agregacin de celdas llamado arreglo que es una coleccin de elementos de tipo homogneo. Generalmente, est ligado de manera esttica con informacin proporcionada en la declaracin de una variable del tipo arreglo. Ejemplo: Arreglo bidimensional en C/C++ int a[5][3]
0 0 1 2 3 4 1 2

2 de 4

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Aunque el programador declara un arreglo de dos dimensiones, el computador tiene slo una memoria de una dimensin, lo que muestra en la figura. En el arreglo bidimensional se quiere tener acceso al elemento marcado utilizando dos ndices i y j, a[i][j]. En este caso con i=2 y j=0. La transformacin de estos ndices es realizada aplicando la frmula: a[i][j] = b[i * n + j] n es la cantidad de columnas del arreglo bidimensional. La aplicacin de esta frmula entrega el siguiente resultado: a[2][0] = b[6] Este resultado corresponde al caso que los datos de un arreglo bidimensional estn almacenados por filas. Una frmula similar se obtiene si los datos estn almacenados por columnas. Otro ejemplo para un tipo de dato abstracto es un objeto crculo para el cual es necesario especificar que operaciones puede realizarse con l y el efecto que se produce al actuar sobre l, por ejemplo: float entregaRadio(circulo: c) {Necesita: un circulo c Entrega: el radio del crculo c} La estructura de datos lista tambin puede ser tratada como un TDA. Los detalles de la implantacin de la estructura de datos lista no le interesan al programador que utiliza esta estructura. El trmino tipo de datos abstracto se refiere al hecho que se acentan las operaciones permitidas y no los detalles de la representacin de los datos en el programa, es decir se conocen solamente las propiedades funcionales incluyendo los casos de error. La abstraccin permite simplificar el anlisis y resolucin de un problema separando las caractersticas que son relevantes de aquellas que no lo son. La relevancia depender fuertemente del contexto. Hay muchas formas para especificar un TDA. Una de esas formas usa la estructura de una funcin en C/C++. Un ejemplo es el TDA RACIONAL [Tenenbaum1993], que corresponde al concepto matemtico de nmero racional. Un nmero racional es un nmero que puede expresarse como el cociente de dos enteros. Las operaciones que se definen con nmeros racionales son: 3 de 4

La creacin de un nmero racional a partir de dos enteros. La suma. La multiplicacin. La prueba de igualdad.

La especificacin de este TDA en un lenguaje formal de especificacin es la siguiente: /* Definicin de valores */ abstract typedef <int, int> RACIONAL; condicin RACIONAL[1] != 0; /* Definicin de operadores */ abstract RACIONAL crearRacional(a, b) int a, b; precondicin b != 0; postcondicin crearRacional[0] == a; crearRacional[1] == b; abstract RACIONAL sumaRacional(a, b) int a, b; postcondicin suma[1] == a[1]*b[1]; suma[0] == a[0]*b[1] + b[0]*a[1]; abstract RACIONAL multRacional(a, b) int a, b; postcondicin multRacional[0] == a[0]*b[0]; multRacional[1] == a[1]*b[1]; abstract igualRacional(a, b) int a, b; postcondicin igualRacional == (a[0]*b[1] == b[0]*a[1]); El concepto TDA se puede resumir con la siguiente figura, en la cual se muestra como un TDA especifica el QU pero no el CMO. El CMO est encapsulado.

QU ?

Condicin previa

CMO ?

Condicin posterior

4 de 4

You might also like