Tipos abstractos de datos

INTRODUCCION El siguiente trabajo nos ayudara a entender la manera en la cual utilizando la abstraccion para el entendimiento normal de la vida diaria o en el desarrollo de sistemas, TAD tipos abstractos de datos especificamente en lenguaje C; cual es el uso o utilidad de esto, principalmente la reduccion en los codigos de programacion todo mas compacto, mas rapido y evitando la sobre lectura del codigo para obtener algo que en un solo paso o proceso podria ser generado.

EL PAPEL DE LA ABSTRACCION. La abstraccion ha estado con nosotros desde tiempos muy antiguos no fue algo que apareciera por la programacion sino en formas diferentes , el entendimiento de lo que nos rodea, la solucion a problemas complejos que dificilmente pueden ser plasmados de nuestra mente a un medio impreso para su mejor explicacion a otros individuos.

Hablando del momento de la programacion desde un inicio donde utilizando interruptores hacia la programacion un proceso complejo y lento, se fue evolucionando hasta llegar a arreglos o macros donde se acumulan una serie de instruccion que pueden ser de uso repetitivo y ayudaron a acelerar la realizacion de un sinnumero de programas con mayor facilidad y entendimiento, ya no volveria a ser algo

Lo sentimos, pero las muestras de ensayos completos están disponibles solo para usuarios registrados

Elija un plan de membresía
unicamente utilizado por cientificos sino por ingenieros o personas con el interes de aprenderlo, y facilito esto su crecimiento y la evolucion a sistemas mas sencillos y mas potentes de programacion.

Llegando hasta los lenguajes de Alto Nivel donde instrucciones logicas como IF ELSE condicionantes nos permiten generar codigos donde siguiendo ciertas condiciones necesarias para que se cumplan el programa llevara un camino indicado a lo requerido en caso contrario sin necesidad de darle un seguimiento se tomara otra alternativa en forma automatica , desde luego se realiza un entendimiento claro de bajo que condiciones se deben cumplir los cambios y esto va en base a un diagrama de flujo para ver en forma clara el desarrollo del programa.

Dentro de algunos metodos de Abstraccion los Procedimientos fueron una de los metodos utilizados encontrandose con ciertas limitantes, estos procedimientos eran rutinas acumuladas que permitian ser utilizadas por otros programadores sin tener que conocer exactamente su descripcion exacta solo necesitaban la interfaz pero tenia la limitante del uso con el mismo nombre en diferentes puntos del mismo programa, su utilizacion con variables locales y globales.

Por ello no era el mejor metodo para ciertos casos como en BD en el ejemplo planteado de una PILA de datos donde el primer valor que entra seria el ultimo en salir y su llamado de cada variable es muy importante y en los Procedimientos este llamado resulta completo y no muy util.

Por otra parte los Modulos al poder utilizar sus datos tanto en forma privada como en forma publica o visible, si pueden ser definidas en cualquier parte cosa que no sucede con los procedimientos que son unicamente privadas; pero a su vez los modulos tampoco son totalmente utilizables en todos los casos sobre todo en el llamado de datos de tipo diferente como por ejemplo el uso de numeros complejos ya que solo se puede manipular uno a la vez.

Tenemos los tipos abstractos de datos los cuales al tener las propiedades de los modulos y de los procedimientos, podemos manipular el tipo de dato y su tipo de valores, para el caso de la pila donde veiamos ciertas condiciones que no se podian cumplir con los metodos anteriormente platicados, en nuestro caso podemos definir la pila como un tipo de datos abstracto y las operaciones realizadas dentro de la pila (suma, resta, multiplicaciones, etc. ) las podremos realizar como las unicas que pueden ser realizadas dentro de la pila o legales.

Hemos hablado de los objetos pero la definicion de los mismos es un tipo abstracto de datos, existiendo orientaciones para el tipo de objeto como de tipo Objeto, Mensajes, Clases y Herencias. Los objetos pueden adquirir diferentes atributos como son la herencia y el polimorfismo donde la herencia permitira al objeto del dato compartir su mismo codigo mejorando el funcionamiento del programa al reducir las lecturas del codigo desde un inicio y realizando todo en un solo paso o codigo, en cambio el polimorfismo permite que el dato puede interactuar de diferente modo con otros objetos y dar un diferente resultado.

TIPOS DE DATOS. Los tipos de datos tambien van de acuerdo al lenguaje de programacion para el caso de C tenemos los tipos enteros, reales, caracteres etc. ; asi como los compuestos o arreglos que pueden tener en su interior de tipo entero o flotante dependiendo el caso requerido.

Con estos datos es posible la realizacion de operaciones matematicas que son acumuladas a su vez en otros datos ya detallados para recibir el tipo de resultado, por ejemplo en una suma de enteros el dato que recibira el resultado debera ser tambien de tipo entero con un tamano suficiente para recibir las operaciones que se realizaran, si el analisis del mismo identifica que el resultado puede variar enormemente se puede utilizar entonces datos de tipo Long o de mayor tamano para dar un margen suficiente para no tener problemas con el tipo de dato que utilizamos.

ABSTRACCION EN LENGUAJES DE PROGRAMACION. En los lenguajes de programacion los tipos abstractos son utilizados de datos y de control, en el caso de los de control permiten definir las sentencias que se utilizaran en su mayoria de lectura en forma descendente, un ejemplo los subprogramas donde el desarrollador coloca instrucciones de repeticion constante o una funcion de uso unico o exclusivo donde solo su llamado permitira su utilizacion, con esto se evita que todo el codigo al ser leido tome tiempo en su llamado si no es imprescindible.

Existen tambien los que son por Procedimiento, donde son utilizados como sin preocuparse de como se implementan, con el conocimiento de su nombre es posible su llamado para utilizarlo en cualquier momento del sistema o programa. Los subprogramas tambien nos permitiran la ocultacion de codigo las variables locales y cualquier otra definicion se encapsulan en los subprogramas con esto se puede cuidar no ejecutar estas instruccion en cualquier sitio , unicamente al llamarlos por su nombre exacto podra utilizarse.

Con el incremento en los lenguajes de programacion incrementaron los tipos de datos que se podian utilizar siendo las primeras generaciones como cobol o fortran los que manejaban los datos basicos enteros, reales , etc. Con generaciones superiores como Pascal la seleccion de datos fue de mayor amplitud y se agrego el mejor de clases los cuales son la base de la programacion de objetos. TIPOS DE DATOS ABSTRACTOS Un tipo de dato definido por el programador se denomina tipo abstracto de dato (TAD); se implementa considerando los valores que se almacenan en las variables y las operaciones disponibles para manipular esas variables.

En resumen un tipo de datos abstracto es un tipo de datos que consta de datos (estructuras de datos propias) y operaciones que se pueden realizar sobre esos datos. Un TAD se compone de estructuras de datos y procedimientos o funciones que manipulan esas estructuras de datos. Un tipo de datos abstracto se puede definir mediante la siguiente operacion: TAD = Representacion (datos) + Operaciones (funciones y procedimientos). VENTAJAS • Permite una conceptualizacion y modelizacion del mundo real. • Mejora la robustez del sistema. Mejora el rendimiento (prestaciones). • Separa la implementacion de la especificacion. • Permite la extensibilidad del sistema. • Recoge mejor la semantica del tipo. Un programa que maneja un TAD lo hace teniendo en cuenta las operaciones o funcionalidad que tiene, sin interesarse por la representacion fisica de los datos. IMPLEMENTACION En los lenguajes en los que los modulos (TAD) se pueden implementar como una unidad, reciben los siguientes nombres: – Turbo Pascal – unidad, objeto. – Modula-2 – modulo – Ada – paquete – C++ – clase – Java – clase

En estos lenguajes se define la especificacion del TAD, que declara las operaciones y los datos ocultos al exterior, y la implementacion que muestra el codigo fuente de las operaciones y que permanece oculto al exterior del modulo. ESPECIFICACION INFORMAL DE UN TAD La especificacion informal consiste en dos partes: • Detallar en los datos del tipo los valores que pueden tomar. • Describir las operaciones, relacionandolas con los datos. El formato que generalmente se emplea, primero se especifica el nombre del TAD y los datos: TAD nombre del tipo (valores y su descripcion).

TAD Conjunto (coleccion de elementos sin duplicidades, pueden estar en cualquier orden, se usa para representar los conjuntos matematicos con sus operaciones). – Operaciones, existen numerosas operaciones matematicas sobre conjuntos, como: • Conjuntovacio. • Anadir (Conjunto, elemento). • Retirar (Conjunto, elemento). • Pertenece (Conjunto, elemento). • Esvacio (Conjunto) • Cardinal (Conjunto) • Union (Conjunto, elemento). ESPECIFICACION FORMAL DE UN TAD Proporciona un conjunto de axiomas que describen el comportamiento de todas las operaciones.

Debe ser potente para que cumpla el objetivo de verificar la correccion de la implementacion del TAD. TIPOS ABSTRACTOS DE DATOS EN C Las caracteristicas del lenguaje C que van a permitir implementar un TAD son las estructuras o registros para representacion de datos, y las funciones para representar las operaciones especificadas. Una estructura es una agrupacion de campos o variables de cualquier tipo predefinido. Permite que un grupo de variables que tienen una cierta relacion logica sean tratadas como un TODO. Ejemplo.

Struct punto3D{ float x; float y; float z; }; Los archivos de inclusion o de cabecera se utilizan para agrupar en ellos variables externas, declaraciones de datos comunes y prototipos de funciones. Estos se incluyen en los archivos que contienen la codificacion de las funciones, archivos fuente, y tambien en los archivos de codigo que hagan referencia a algun elemento del archivo inclusion, con la directiva del preprocesador #include. Ej. #include “tipodedato. h” IMPLEMENTACION DEL TAD CONJUNTO En el archivo de cabecera, conjunto. , se realiza la declaracion de la estructura que va a representar a los datos. Este archivo se debe incluir en todos los archivos con codigo C que vaya a utilizar el tipo Conjunto. ORIENTACION A OBJETOS Conjunto de disciplinas (ingenieria) que desarrollan y modelizan software que facilitan la construccion de sistemas complejos a partir de componentes. Proporciona conceptos y herramientas con las cuales se modela y representa el mundo real. Esta permite una representacion mas directa del modelo del mundo real en el codigo.

Las disciplinas y tecnicas orientadas a objetos manipulan la transformacion automaticamente, de modo que el volumen de codigo que codifica el problema y la transformacion se minimiza. Las tareas que realiza la programacion orientada a objetos, se realizan mediante la modelizacion del mundo real. El soporte fundamental es el modelo objeto. Los cuatro elementos (propiedades) mas importantes de este modelo son: • Abstraccion • Encapsulacion • Modularidad • Jerarquia ABSTRACCION Es la propiedad que permite representar las caracteristicas esenciales de un objeto, sin preocuparse de las restantes caracteristicas.

Se centra en la vista externa de un objeto- El elemento clave de la programacion orientada a objetos es la clase. Una clase es una descripcion abstracta de un grupo de objetos. ENCAPSULACION Es la propiedad que permite asegurar que el contenido de la informacion de un objeto esta oculta al mundo exterior. Esta permite la division de un programa en modulos, los cuales se implementan mediante clases. MODULARIDAD Es la propiedad que permite subdividir una aplicacion en partes mas pequenas (llamadas modulos), cada una debe ser independiente de la aplicacion en si y de las partes restantes.

Esta division de modulos se puede compilar por separado, pero siguen teniendo conexiones con otros modulos. JERARQUIA Es la propiedad que permite una ordenacion de las abstracciones. Las dos jerarquias mas importantes de un sistema complejo son: • Estructura de clases. • Estructura de objetos. Las jerarquias de generalizacion/especializacion se conocen como herencia. La herencia define una relacion entre clases en donde una clase comparte la estructura o comportamiento definido en una o mas clases. POLIMORFISMO Es la propiedad que indica la posibilidad de que una entidad tome muchas formas.

Este permite referirse a objetos de clases diferentes mediante el mismo elemento de programa y realizar la misma operacion de diferentes formas. Clases, herencia y polimorfismo son aspctos claves en la programacion orientada a objetos. LENGUAJES DE PROGRAMACION ORIENTADOS A OBJETOS El primer lenguaje de programacion que introdujo el concepto de clase fue Stimula-67, este introdujo el concepto de herencia. Entre los lenguajes orientados a objetos que se han desarrollado desde los ochenta, destacan C++ y Objective-C, Modula-2 y Object Pascal, cuyas primeras versiones comerciales aparecieron en 1994.

REUTILIZACION DE SOFTWARE Las tecnicas orientadas a objetos proporcionan un mecanismo para construir componentes de software reutilizables que posteriormente puedan ser interconectados entre si y formar grandes proyectos. En los sistemas de programacion tradicionales existen bibliotecas de funciones, que contienen funciones que pueden ser incorporados en diferentes programas. En la programacion orientada a objetos se puede reutilizar el codigo, creando una subclase y anulando alguno de sus metodos.

DESARROLLO TRADICIONAL FRENTE A DESARROLLO ORIENTADO A OBJETOS La programacion estructurada es un estilo disciplinado de programacion que sigue en los lenguajes procedimentales tales como FORTRAN, COBOL, PASCAL y C. Las metodologias tradicionales se vuelven poco practicas cuando han de aplicarse a proyectos de gran tamano. El diseno orientado a objetos se apoya en lenguajes orientados a objetos, que se sustentan en los tipos de datos y operaciones que se pueden realizar sobre los tipos de datos. CONCLUSIONES

Como todo, los lenguajes de programacion han ido evolucionando, facilitandonos asi la realizacion de programas tanto comunes como mas complejos (desarrollo de software, etc. ). Los lenguajes de programacion actuales, nos facilita tanto el desarrollo como la organizacion del codigo, y nos da grandes ventajas, tales como: • Reutilizacion de codigo – Este es un factor muy importante para los programadores, ya que les permite usar ciertas secciones de codigo una y otra vez en un programa, y asi no tener que escribirlo de nuevo.

Tambien puedes utilizar un pedazo de codigo de un programa, en otro programa diferente que utiliza las mismas instrucciones, etc. • Nos permite utilizar clases, para poder tener una programacion mas estructurada. • Tiene librerias las cuales nos ahorran tiempo. • En algunos programas como Java, se pueden crear paquetes. En la actualidad se sigue programando con COBOL y otros un tanto “viejos”, pero poco a poco se estan dejando atras para utilizar lenguajes mas completos como C, C++, Java, etc.