Sei sulla pagina 1di 10

Abstraccin, Estructuras y Tipos de Datos

(Agosto-2011)

Contenido
INTRODUCCIN ....................................................................................................................................... - 1 ABSTRACCIN .......................................................................................................................................... - 1 ABSTRACCIN DE PROCEDIMIENTOS ............................................................................................................... - 2 Mtodo de abstraccin por parametrizacin..................................................................................... - 2 Mtodo de abstraccin por especificacin ........................................................................................ - 3 ABSTRACCIN DE DATOS ............................................................................................................................. - 4 ESTRUCTURAS.......................................................................................................................................... - 4 ESTRUCTURAS EN INFORMTICA.................................................................................................................... - 5 Estructura en los lenguajes de programacin .................................................................................... - 5 Estructuras en los algoritmos ........................................................................................................... - 5 ESTRUCTURA DE DATOS .............................................................................................................................. - 5 Aspectos generales de las estructuras de datos................................................................................. - 6 Relaciones entre elementos .............................................................................................................. - 6 Funciones bsicas para estructuras .................................................................................................. - 6 Operaciones ..................................................................................................................................... - 6 Estructura de datos con base en la relacin entre los elementos ....................................................... - 7 TIPOS DE DATOS ...................................................................................................................................... - 7 TIPOS DE DATOS PREDEFINIDOS..................................................................................................................... - 8 TIPOS DE DATOS ESTRUCTURADOS ................................................................................................................. - 8 TIPO DE DATOS ABSTRACTOS ........................................................................................................................ - 8 Tipos de datos abstractos bsicos ..................................................................................................... - 8 Tipos de datos abstractos compuestos.............................................................................................. - 9 RESUMEN DE CONCEPTOS ....................................................................................................................... - 9 -

Abstraccin, Estructuras y Tipos de Datos

Introduccin
Con esta publicacin pretendo introducir a los estudiantes de carreras informticas en los conceptos tericos y prcticos de las Estructuras de Datos con especial inters en la Programacin Orientada a Objetos. Uno de los aspectos fundamentales para el estudio de cualquier sistema, en particular los sistemas de informacin, es la comprensin de su estructura; para caracterizar una estructura es indispensable un proceso de abstraccin. Abstraccin (en filosofa) es una operacin mental destinada a aislar conceptualmente una propiedad concreta de un objeto, y reflexionar sobre esta ignorando (mentalmente) las otras propiedades del objeto en cuestin. Estructura es la disposicin y orden de las partes dentro de un todo, tambin puede entenderse como un sistema de conceptos coherentes y enlazados, cuyo objetivo es precisar la esencia del objeto de estudio.

Abstraccin
La abstraccin es uno de los aspectos fundamentales para el estudio de las estructuras, y en general para el desarrollo de los sistemas de informacin, permite tener en cuenta los aspectos relevantes para la solucin de un problema y deja en segundo plano todo aquello que no es trascendente. Tambin se puede referir a la abstraccin como la habilidad de concentrarse en lo general y fundamental pasando por alto el detalle, lo que simplifica el anlisis y permite concentrarse en lo relevante. En informtica, la abstraccin desempea un papel importante dado que facilita el anlisis y el diseo, permite determinar la estructura de los sistemas que se van a implementar y tener una mejor visin de su funcionamiento. Los desarrolladores (an los principiantes) utilizan de manera casi natural los procesos de abstraccin. Por ejemplo cuando se desea realizar una operacin matemtica entre nmero reales, simplemente se escribe una expresin como la siguiente:
real Cantidad, Importe, Total ... Leer Cantidad Leer Importe Total = Cantidad * Importe ...

En este caso, el desarrollador no se preocupa por las cuestiones de aritmtica de punto flotante o la manera en que estos datos se representan en la memoria; su inters est centrado en que se efecte la operacin y obtener el resultado.

-1-

Abstraccin, Estructuras y Tipos de Datos An cuando los desarrolladores apliquen de manera natural los conceptos y procesos de abstraccin, es importante destacar que hay diferentes aspectos entre los cuales debemos mencionar la Abstraccin de Procedimientos y la Abstraccin de Datos.

Abstraccin de procedimientos
Mediante esta abstraccin se determinan los objetivos y operaciones necesarias para dar solucin a un problema, y mediante la modularidad se efecta la separacin en unidades funcionales. La abstraccin de procedimientos se puede considerar como una herramienta que permite extender las posibilidades de un lenguaje de programacin, al agregar nuevas operaciones mediante procedimientos, funciones, subrutinas, mtodos, etc. se tiene la posibilidad de dividir un programa en unidades funcionales. Esta clase de extensin es til especialmente cuando los programas por desarrollar son grandes (en nmero de lneas) y es conveniente descomponerlos. Este tipo de abstraccin actualmente se aplica de forma intensiva cuando se utiliza una funcin o un procedimiento para realizar una tarea. La abstraccin de procedimientos combina los mtodos de parametrizacin y especificacin de manera que permite abstraer su accin como si se tratara de una simple operacin o evento, y adems se tiene el uso de parmetros mediante el cual el procedimiento provee una transformacin de unos argumentos de entrada en unos argumentos de salida, sin olvidar otras posibilidades, como que se modifiquen los parmetros de entrada o que no existan estos argumentos. Mtodo de abstraccin por parametrizacin Esta abstraccin se define en trminos de parmetros formales; de esta manera la identidad del dato es irrelevante; pero la presencia, el tipo y el nmero son indispensables. Este mtodo se utiliza frecuentemente en el desarrollo de sistemas, permite mediante parmetros representar potencialmente diferentes valores, que pueden llegar a ser infinitos. Ejemplo: funcin cuyo objetivo es entregar el mayor valor de dos enteros dados.
entero Maximo(entero Valor1, entero Valor2) Inicio Si Valor1 > Valor2 Entonces regresar Valor1 Sino regresar Valor2 FinSi Fin

Esta funcin se puede utilizar de diferentes maneras:


Leer X Leer Y Escribir Maximo(X, Y) ...

-2-

Abstraccin, Estructuras y Tipos de Datos O un uso ms complejo, en este caso hallar el mayor de tres nmeros
Leer A Leer B Leer C Escribir Mximo(Maximo(A, B), C) ...

Obviamente esto se puede extender a la cantidad de nmeros que se desee. Mtodo de abstraccin por especificacin El objetivo de este tipo de abstraccin es centrar la atencin sobre "qu hace", y pasar a un segundo plano el "cmo lo hace". El hecho que la implementacin (cmo lo hace) no sea lo relevante sino sus efectos (que hace), requiere que se tenga una descripcin o especificacin tcnica del proceso; adems es exigible que las modificaciones a nivel de la implementacin sean transparentes a su uso brindando de esa manera una gran flexibilidad. Para obtener los beneficios de la abstraccin es necesario que la especificacin sea precisa; estas especificaciones pueden ser formales o informales, algunos lenguajes facilitan esta tarea pues han sido diseados para soportar la abstraccin. Una manera de hacer esta especificacin es por medio de aserciones. La primera de ellas es la precondicin, que es el conjunto de condiciones necesarias y suficientes que aseguran la correcta ejecucin del proceso; la otra aseveracin es la postcondicin, donde se debe especificar los resultados que se obtienen despus de la ejecucin del proceso. Otra informacin importante de la especificacin es el encabezado del procedimiento, adems de dar el nombre al mismo, debe brindar informacin acerca de su funcin, tipos de parmetros de entrada y salida, su nmero y orden. Ejemplo: subrutina que ordena un vector de nmeros; la ordenacin se puede realizar de diferentes maneras lo que no es importante en este caso porque se est especificando lo que hace y no como lo hace. Caso de un procedimiento:
Descripcin: Ordena el contenido de un vector de nmeros Precondicin: Se debe facilitar el vector de nmeros y la cantidad de elementos que este vector contiene, debiendo ser esta un entero mayor o igual a cero. Postcondicin: El vector de nmeros es modificado de manera que se presenten ordenados de manera ascendente. Encabezado: Ordenar(ref TipoVector Datos, entero Cantidad)

Caso de una funcin:


Descripcin: Ordena el contenido de un vector de nmeros Precondicin: Se debe facilitar el vector de nmeros y la cantidad de elementos que este vector contiene, debiendo ser esta un entero mayor o igual a cero.

-3-

Abstraccin, Estructuras y Tipos de Datos


Postcondicin: Se entrega un nuevo vector cuyo contenido son los nmeros del vector original ordenados de manera ascendente. Encabezado: TipoVector Ordenar(TipoVector Datos, entero Cantidad)

Abstraccin de datos
As como la abstraccin de procedimientos permite ampliar la capacidad de los lenguajes de programacin, la abstraccin de datos permite extender la base de los tipos predefinidos en estos lenguajes. Esta capacidad permite incluir nuevos tipos de datos con las operaciones correspondientes y generar de esa manera estructuras de datos de mayor complejidad. La abstraccin de datos se puede sintetizar en la determinacin de un conjunto de objetos y el conjunto de operaciones que se pueden efectuar sobre esos datos. Cuando se implementa el tipo de dato, simultneamente se deben implementar dichas operaciones. Los lenguajes de programacin modernos facilitan un tipo de dato que permite manipular fechas, lo que nos permite pensar en el siguiente cdigo:
TipoFecha Fecha1, Fecha2 ... Leer Fecha1 Leer Fecha2 Escribir "Hay ", Fecha2 - Fecha1, " das de diferencia entre ambas fechas" ...

Es importante aclarar que la expresin Fecha2 - Fecha1 se realiza sobre dos variables cuyos contenidos son fechas (da, mes, ao) y el resultado es un entero que representa la cantidad de das que hay entre ambas fechas, obviamente este valor ser cero cuando las fechas sean iguales, positivo si Fecha2 es mayor que Fecha1 o negativo si Fecha1 es menor que Fecha1; pero lo ms importante es que la operacin "resta" indicada con el operador "-" (menos) debe tener en cuenta las cantidades de das que cada mes tiene en cada una de las fechas as como las consideraciones necesarias para los aos bisiestos.

Estructuras
En un sistema ideal, la nica relacin que debe existir entre los elementos que lo componen debe ser a travs de la estructura; aunque esta condicin es difcil que se cumpla, especialmente en los sistemas de informacin que se tienen en el mundo real. Para ejemplificar el concepto, se puede considerar la estructura atmica propuesta en el modelo de Bohr. En este modelo los elementos de la estructura son los electrones y el ncleo con sus respectivos componentes (protones, neutrones, mesones, etc.); las leyes que gobiernan esa estructura son las que establecen la interrelacin entre sus elementos, a saber: "La distribucin de los niveles de energa", "La distribucin de los electrones en sus rbitas", "La conservacin de la cantidad de movimiento" o "La conservacin de la energa" entre otras. Bajo este concepto, todos los elementos qumicos tienen la misma estructura bsica, la que corresponde al modelo atmico; sin embargo las caractersticas de los elementos son diferentes.

-4-

Abstraccin, Estructuras y Tipos de Datos El concepto de estructura no slo se aplica en la qumica o los cuerpos fsicos, tambin es aplicable en otras reas por ejemplo: En matemticas una estructura algebraica es un objeto matemtico formado por un conjunto no vacio y una o varias leyes de composicin interna. En sociologa se habla de la estructura social como el concepto que describe la forma que adopta el sistema global de las relaciones entre individuos.

Estructuras en informtica
Con el objeto de presentar una visin general de las estructuras en informtica, se debe tener en cuenta que este concepto se utiliza con mayor frecuencia para referirse a las estructuras de datos, sin embargo se aplica tambin a los lenguajes de programacin y en general a las diferentes aplicaciones y sistemas informticos. Estructura en los lenguajes de programacin Los lenguajes de programacin se pueden caracterizar mediante su propia estructura general. A nivel individual se puede determinar la estructura de cada lenguaje de programacin, siendo factible agruparlos segn una caracterizacin de acuerdo a los diferentes tipos de lenguajes; por ejemplo, procedimentales, orientados a objetos o funcionales, entre otros. Cualquier lenguaje est constituido por un conjunto de elementos (componentes lxicos) que estn regidos mediante normas de sintaxis y semntica propias, todo esto constituye la estructura del lenguaje. Un anlisis completo de esta estructura implica definir cada uno de sus componentes y las reglas que los interrelacionan. Estructuras en los algoritmos En este caso el concepto de estructura se aplica teniendo en cuenta el tipo de algoritmo: procedimental, orientado a objeto, recursivo; en general de acuerdo a la tcnica de programacin que se utilice. Si se desea profundizar adems de la estructura general, entonces se puede analizar las estructuras bsicas dentro de cada mdulo o mtodo segn el caso. Estos elementos estn relacionados mediante la lgica del algoritmo, y forman de esta manera su estructura.

Estructura de datos
En general, se puede considerar una estructura de datos como un conjunto de variables, quiz de tipos distintos, que se relacionan entre s y que se pueden operar como un todo, esto implica un conjunto de "celdas" en las que se puede almacenar los datos. El componente bsico de la estructura de datos es la "celda", las estructuras de datos se implementan a travs de los lenguajes y son un modelo que caracteriza y permite almacenar y utilizar una determinada organizacin de datos. Nota: En los prrafos anteriores se utiliza el trmino "celda" para indicar el espacio de memoria que un equipo informtico destina para almacenar un dato. No es el objetivo de esta publicacin internarse en las cuestiones de arquitectura o estructura de computadoras. Las estructuras de datos son fundamentales para el manejo de informacin y el desarrollo de sistemas. Las diferentes maneras como se relacionan los datos originan conformaciones que son estructuras de datos de mayor complejidad.

-5-

Abstraccin, Estructuras y Tipos de Datos Aspectos generales de las estructuras de datos Las estructuras de datos se usan en el manejo de informacin y en el desarrollo de algoritmos; es el caso de los arreglos, las cadenas de caracteres, los archivos entre otras. Tradicionalmente el enfoque que se tiene es hacia su aplicacin por medio de un lenguaje y rara vez se trata el punto de vista estructural, sin embargo existen aspectos fundamentales para el conocimiento de una estructura de datos, tal es el caso de: las relaciones entre sus elementos, las funciones que permite su creacin, la forma de acceso a los elementos y las operaciones que se pueden efectuar sobre la estructura. Relaciones entre elementos Las relaciones entre los elementos de una estructura establecen la conexin fsica o lgica entre los distintos elementos que componen la estructura. Los principales tipos de relacin son: De precedencia: permite representar la secuencia u orden de los elementos. De equivalencia: con esta relacin es posible equiparar o igualar elementos. De jerarqua: permite indicar "niveles de importancia" entre los elementos. De pertenencia: determina que algunos elementos estn incluidos en otros elementos, conformando de esta manera estructuras ms complejas. De adyacencia: permite representar la "igualdad de importancia" entre los elementos de la estructura.

Es importante destacar que una estructura puede estar constituida por un conjunto de estructuras elementales o bsicas, consecuentemente estas mismas relaciones son vlidas entre estructuras. Funciones bsicas para estructuras Para disponer de una estructura de datos se necesita una serie de algoritmos que ejecuten las tareas fundamentales, los cuales reciben el nombre de funciones bsicas y se enumeran a continuacin: Funciones constructoras: Se encargan de crear la estructura; es decir definen las caractersticas, la delimitacin, las relaciones, y asignan el espacio correspondiente, dejando la estructura a disposicin del desarrollador para que proceda a colocar la informacin. Funciones para acceso: Facilitan la llegada de un elemento perteneciente a la estructura; la funcin puede ser simple o compleja, depende del tipo de estructura. En general las formas de acceso se pueden considerar directas cuando a partir de un parmetro o una direccin se trata de encontrar el valor correspondiente, y son inversas en el caso contrario. Funciones destructoras: Se encargan de devolver al sistema los recursos asignados a la estructura de datos. En los lenguajes modernos casi nunca es necesario efectuar alguna operacin sobre la estructura, pues el espacio que ocupaba queda automticamente liberado.

Operaciones Sobre una estructura de datos se puede efectuar diferentes tipos de operaciones, entre las ms importantes estn:

-6-

Abstraccin, Estructuras y Tipos de Datos Navegar por la estructura, es el trmino que actualmente se utiliza para referirse al recorrido por los elementos de la estructura. Esta es una operacin bsica, y garantiza que se puede recuperar la informacin almacenada. Bsqueda, permite determinar si un elemento se encuentra o no en la estructura. Consulta de la informacin, permite obtener informacin de uno o ms elementos de la estructura. Copia parcial o total, es aquella operacin mediante la cual se puede obtener total o parcialmente una estructura con caractersticas similares a la original. Prueba, permite determinar si uno o varios elementos cumplen determinadas condiciones. Modificacin, permite variar parcial o totalmente el contenido de la informacin de los elementos de la estructura. Insercin, es la operacin mediante la cual se incluye un nuevo elemento en la estructura. Eliminacin, es la operacin que permite suprimir elementos de la estructura.

Estructura de datos con base en la relacin entre los elementos Para establecer una clasificacin bsica es necesario tener en cuenta el tipo de relacin existente entre los elementos que conforman las estructuras de datos. La primera abstraccin consiste en considerar que los elementos son datos de los que no nos interesa su conformacin (en realidad pueden ser estructuras de gran complejidad), lo importante es que se pueden considerar como datos simples y en consecuencia tratados como si fueran elementos. De esta manera se puede obtener la siguiente clasificacin: Estructura de tipo lista: Es la que surge al observar la manera como se relacionan los elementos y se puede concluir que una forma de relacin es la secuencia u orden de la cual deriva la estructura de lista. Estructura de tipo rbol: La estructura de tipo lista es muy utilizada, sobre todo cuando los elementos tienen la misma categora; sin embargo cuando entre stos elementos existen diferentes niveles, surgen relaciones del tipo jerrquico que se plasman en una estructura jerrquica o arborescente. Estructura de tipo red: Las relaciones que existen entre los elementos en muchos casos son complejas y las dos estructuras anteriores son insuficientes; por ello se requiere de una estructura ms abierta, en la que los elementos puedan relacionarse sin tener las restricciones de secuencia o jerarqua, sino bsicamente de adyacencia.

Los tipos de relaciones mencionados no son los nicos que se pueden establecer; existen relaciones entre los elementos que aunque no sean un tipo de estructura se pueden analizar como ellas, tal es el caso del modelo relacional que seguramente se estudia en un curso de base de datos.

Tipos de datos
Los tipos de datos son fundamentales para la implantacin de estructuras ms complejas. En general, cuando se define una variable como perteneciente a un tipo de datos se efecta una abstraccin que incluye la especificacin de las celdas en que se puede almacenar, el conjunto de valores vlidos que sta celda puede tomar y el conjunto de operaciones que se pueden efectuar.

-7-

Abstraccin, Estructuras y Tipos de Datos Por ejemplo cuando el desarrollador utiliza variables numricas, sabe que con estas variables se pueden realizar operaciones matemticas, de ninguna manera se le ocurre concatenar nmeros lo que s se puede hacer con variables del tipo carcter. En esencia, un tipo de datos es una coleccin de valores; el desarrollador aprende que con distintos tipos de datos puede realizar distintas operaciones, las cuales estn implementadas en el lenguaje de programacin que utiliza.

Tipos de datos predefinidos


Los lenguajes de programacin siempre han tenido, como parte de su estructura, la posibilidad de definir una variable o una constante como perteneciente a un tipo de datos que el lenguaje reconoce. Por ello se denominan TDP - Tipo de Dato Predefinido, es el caso de los enteros, reales, booleanos, caracteres. Es conveniente aclarar que no todos los lenguajes soportan los mismos tipos de datos, ni el mismo TDP - Tipo de Dato Predefinido define exactamente el conjunto de valores para diferentes lenguajes.

Tipos de datos estructurados


Los lenguajes de programacin en general permiten definir lo que se conoce como TDE - Tipo de Dato Estructurados, es decir colecciones de ms de un elemento que pueden manipularse como si fuese una sola cosa. Algunos de estos tipos de datos estructurados son: Arreglos: Un arreglo es un tipo de dato cuya implantacin implica una coleccin de elementos finita y homognea. Para hacer referencia a cualquiera de las celdas del arreglo es necesario el nombre del arreglo y el valor de uno o ms ndices lo que permite tener acceso aleatorio a cada elemento de la coleccin. Registros: El tipo de datos registro permite agrupar diferentes elementos y manejarlos como un todo, adems permite establecer relaciones lgicas entre ellos. Para acceder a cada uno de los elementos se utiliza un selector de campo o elemento. Enumerados: Es un tipo de dato que permite agrupar diferentes identificadores bajo una denominacin y asignar estos valores a las variables definidas para ello.

Tipo de datos abstractos


Uno de los problemas que se presentan en los lenguajes de programacin es que muchos de los tipos de datos que requiere el desarrollador no se encuentran predefinidos ni tampoco estructurados, sin embargo se pueden definir y posteriormente implementar, mejorando y ampliando de esta manera las posibilidades que brinda el lenguaje. Un TDA - Tipo de Dato Abstracto es el resultado de aplicar un proceso de abstraccin de datos, reuniendo un Tipo de Dato y las operaciones que se pueden realizar con este tipo de dato. Un aspecto importante que no debe olvidarse es que los TDA son fundamentalmente un modelo, y las estructuras de datos son la implementacin de estos TDA en un lenguaje de programacin. Tipos de datos abstractos bsicos El TDA Entero tiene como tipo el conjunto de nmeros enteros definido por las matemticas y como operaciones la suma, la resta, la multiplicacin y la divisin entera.

-8-

Abstraccin, Estructuras y Tipos de Datos El TDA Real tiene como tipo el conjunto de nmeros reales definido por las matemticas y como operaciones la suma, la resta, la multiplicacin la divisin. El TDA Carcter tiene como tipo el conjunto de caracteres definido por un alfabeto dado y como operaciones todos los operadores relacionales (<, >, =, >=, <=,<>) El TDA Booleano tiene como tipo el conjunto de valores {verdadero, falso} y como operaciones el AND, OR y NOT definidos en el lgebra Booleana.

Tipos de datos abstractos compuestos El TDA Conjunto es una coleccin de elementos tratados con las operaciones unin, interseccin y diferencia de conjuntos definidas en las matemticas. El TDA Arreglo es una coleccin de elementos homognea de longitud fija tal que cada uno de sus elementos puede ser accedido individualmente mediante uno o varios ndices, que sern de tipo ordinal y que indican la posicin del elemento dentro de la coleccin. El TDA Registro es una coleccin de elementos heterognea compuesta por una cantidad fija de elementos denominados campos a las que se accede mediante un selector de campo.

Los lenguajes de programacin modernos implementan estos tipos de datos abstractos bsicos o compuestos de diferentes maneras por eso es importante destacar que en los lenguajes de programacin se encuentran Estructuras de Datos que implementan un concepto o modelo denominado Tipo de Dato Abstracto.

Resumen de conceptos
Abstraccin: Habilidad que permite tener en cuenta lo fundamental o relevante, dejando de lado los detalles. Se aplica en la solucin de problemas o situaciones. Abstraccin de datos: Facilidad mediante la cual en un lenguaje de programacin se pueden definir nuevos tipos de datos. Abstraccin de procedimientos: Facilidad que presentan los lenguajes de programacin de manera que se los programas se puedan dividir en unidades funcionales. Estructura: Conjunto de las partes fundamentales de un sistema, incluidas sus relaciones, distribucin y orden, que caracterizan al sistema. Estructura de datos: Implementacin a la que se llega mediante un nivel adecuado de abstraccin lo que permite caracterizar, almacenar y utilizar una determinada organizacin de datos. Tipos de datos: Permite caracterizar una variable al determinar el conjunto de valores que puede tomar. Tipo de datos abstractos: Modelo definidos por el desarrollador, que permiten caracterizar un conjunto de datos y las operaciones que se pueden efectuar con stos.

-9-

Potrebbero piacerti anche