Antes de concentrarnos en los Tipos Abstractos de Datos, tenemos que saber qué es un Tipo de Dato. Para entender este concepto daremos varios ejemplos, estos serán examinados con el propósito de ir descrubriendo que características comunes e inferir un modelo intuitivo de Tipo de Dato que será formalizado más adelante mediante el concepto de Tipos de Dato Abstracto.
Tomaremos los ejemplos de dos fuentes: el lenguage C y la realidad cotidiana. En el lenguaje C tenemos varios Tipos de Datos, por ejemplo: int, float, cadena de caracteres y arreglo de número enteros. De la realidad cotidiana podemos hablar de los Tipos de Datos como por ejemplo: Perro y Automóvil.
¿Qué podemos decir, por ejemplo, del tipo int?. primero: que este tipo es un subconjunto de los números enteros que se utilizan en matemática, pues los enteros son infinitos, en cambio, los int aunque muchos, son finitos. Esto quiere decir, que no todos los números enteros están representados en el tipo int, resumiendo:
Esto quiere decir que el tipo int tiene las operaciones: +, -, *, / y %, o sea:
Al igual que el tipo int el tipo float es un subconjunto, pero esta vez de los números reales. Esto es, no todos los números reales se pueden expresar como float, pero todos los elementos de float son números reales. En resumen:
Los float también se pueden operar:
Resumiendo las operaciones de tipo float son:
El tipo Cadena de Caracteres es una secuencia de caracteres terminada por fin
de cadena. Por ejemplo la cadena que se ve en la figura
Los operadores que tiene C para las cadenas son muchos, todas las funciones que comienzan por str, las de la libreria string.h, además de las operaciones de arreglos. Algunas de estas operaciones son: [ ], strcmp, strstr, strcat, strcpy, etc. Estas operaciones se pueden expresar de la siguiente forma:
Un arreglo de enteros es como lo vemos en la figura
Sorprendentemente un arreglo de enteros tiene una única operación: la de selección. Si se quiere seleccionar el elemento tres del arreglo, se escriba así: arr[3]. Formalmente:
Ahora tomando los ejemplos de la realidad cotidiana, un perro es un animal perteneciente a la especie Canis Familiaris, matemáticamente:
Las operaciones del tipo Perro podrían ser: dar de comer, defecar, acariciar, jugar, ladrar, etc. Formalmente:
De otro lado, un automovil puede decirse que está constituido por un motor, un chasis, un área de pasajeros y una carrocería. Esta es una coleción de elementos distintos y no una secuencia como los arreglos de los ejemplos pasados, tiene que se una tupla:
Las operaciones que se pueden hacer con tipo Automovil son muchas, listamos algunas: prender, apagar, acelerar, frenar, cambiar dirección, etc.
¿Qué hay de común en los ejemplos anteriores?. Hay dos elementos que se repiten a lo largo de los ejemplos: las proposiciónes lógicas y los conjuntos de operaciones. Las proposiciones lógicas expresan qué elementos pertenecen o no al tipo, por ejemplo: la de tipo Automovil, indica que solo los vehiculos que tengan motor, chasis, área pasajeros, baúl y carrocería pueden ser calificados como tales. La del tipo Perro dice que solo los animales que sean cannis familiares pertenecería a este tipo, por ejemplo un lobo no perteneceria1.2. La del tipo Cadena dice que solo las secuencias de caracteres que terminen en fin de cadena son cadenas.
Las operaciones son el conjunto de acciones que se pueden hacer sobre un tipo, como por ejemplo: acariciar a un perro, prender un automovil, seleccionar un elemento de un arreglo, sumar dos enteros o restar dos flotantes.
Resumiendo, un tipo de datos define el conjunto de valores válidos del tipo y las operaciones que se pueden aplicar al tipo.