UNIDAD 3: TIPOS ABSTRACTOS DE DATOS



Documentos relacionados
Unidades en PASCAL (Units)

Manual de turbo pascal

Concepto. Ventajas. Abstracción, Encapsulamiento, Interfaz e Implementación. Tipos de unidades. Creación y uso de unidades para implementar TADs.

TIPO DE DATO ABSTRACTO (TAD)

Introducción a los tipos de datos abstractos (TAD)

Estructura de datos Tema 2: Tipos Abstractos de Datos (TADs)

1. ESTRUCTURA DE UN PROGRAMA PASCAL Todo programa escrito en lenguaje Pascal, del más simple al más complejo, tiene la siguiente estructura:

Arreglos y Subrangos

Tipos Abstractos de Datos

Apunte Laboratorio ALPI - El lenguaje de programación Pascal

Estructuras de Datos Dinámicas: Tipo de Dato Abstracto parte I. Programación I Departamento de Informática Universidad Nacional de San Luis Argentina

Tipo de dato Abstracto (Tad) PILAS COLAS

Inicio del programa. Entrada de datos. Proceso de datos. Salida de datos. Fin del programa

El lenguaje C. 1. Estructuras. Principios de Programación Definicion de estructuras

EJERCICIO 2 (3 PUNTOS) A) Sea el árbol binario AVL de la figura siguiente: B) Dada la estructura de la figura siguiente:

Los Tipos Abstractos de Datos. Estructuras de Datos y Algoritmos 03/04

Este es un arreglo de números enteros, o sea que guarda una serie de variables de tipo INTEGER, todas agrupadas en una sola estructura.

Módulo. = Asignación = = Comp. de igualdad!= Com. de desigualdad <= Comp. menor o igual >= Comp. mayor o igual AND lógico OR lógica.

FUNDAMENTOS DE OBJECT PASCAL

descripción del argumento identificador tipo longitud condición restricción

Definición de Tipo de Dato Abstracto (TDA)

Operando1 operador de relación Operando2

LENGUAJES DE PROGRAMACION I. Propósito del curso :

CLAVE ASIGNATURA REQUISITOS HORA/SEMANA CREDITOS TI-8 PROGRAMACION II 80% DE ASISTENCIA 4 6

Módulo 8: Primitivas en Pascal

FUNDAMENTOS DE PROGRAMACIÓN. 1º ING. INFORMÁTICA (Plan 2000) 2ª Convocatoria. 21 de junio de 2001

INTRODUCCIÓN AL TURBO PASCAL.

Algoritmos y Programación I. Clase Teórica Nº 11. Registros

Introducción al lenguaje C

EJERCICIOS DE PROGRAMACIÓN EN C. DIBUJAR UN ROMBO O DIAMANTE. CALCULAR SUMATORIOS. (CU00542F)

ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES

Datos en Turbo Pascal

2.2 Nombres, Ligado y Ámbito

Procesadores de lenguaje Tema 5 Comprobación de tipos

LENGUAJE FORTRAN. FUNCIONES Y SUBRUTINAS

Excepciones. Prof. Laura Lanzarini

Expresión, Operador, Operando, Asignación, Prioridad

FUNDAMENTOS DE INFORMÁTICA

Tipos de Datos Abstractos TDA

GUIA DE PROCEDIMIENTOS Y FUNCIONES ALMACENADOS EN MYSQL

DISEÑO CURRICULAR ALGORITMOS, ESTRUCTURAS Y PROGRAMACIÓN I

APUNTES DE CÁTEDRA: ARREGLOS MULTIDIMENSIONALES

EXAMENES RESUELTOS DE PROGRAMACION I

Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C++ Sesión 2

Introducción al Tipo de Dato Abstracto (TDA)

Dra. Jessica Andrea Carballido

Resolución de Problemas y Algoritmos Segundo cuatrimestre 2015 Clase 11: Construcción de primitivas (Funciones)

Arreglos y Subrangos

324 MR Versión 1 1 Prueba Integral 1/6 Lapso UNIVERSIDAD NACIONAL ABIERTA Semana 12 VICERRECTORADO ACADÉMICO ÁREA INGENIERÍA

Departamento de Informática Universidad de Valladolid Campus de Segovia LABORATORIO: INTRODUCCIÓN A LAS UNIDADES EN TURBO PASCAL

Se guardan en archivos con extencion c y los cabezales con extension h

Introducción a la Programación

Tipos Abstractos de Datos

Universidad de Valladolid. Departamento de informática. Campus de Segovia. Estructura de datos Tema 1: Recursividad. Prof. Montserrat Serrano Montero

1 Introducción a los algoritmos y a la programación de computadoras... 1

UNIDAD 2: INTRODUCCIÓN AL LENGUAJE DE PROGRAMACiÓN R

Introducción a C# y la plataforma.net

Calidad del Software. Ejercicios Tema 4 Conceptos de pruebas

Registros. Programación 1. InCo - FING. Programación 1 Registros InCo - FING 1 / 20

Pilas. Uso (I) * 2 = * + Transformación de expresiones aritméticas de notación infija a postfija. Ejemplo:

CAPÍTULO 1 INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS

Indice del curso básico programación desde cero Visual Basic Nivel I (CU00302A)

UNAN LEÓN Departamento de Computación. Asignatura: ALGORITMO Y ESTRUCTURA DE DATOS MANEJO DE ARCHIVOS (FICHEROS) EN C

TAD CONJUNTOS Y MULTICONJUNTOS

Introducción al Lenguaje de Programación Ada

Apuntadores en C y C++

TIPOS DE DATOS BASICOS EN LENGUAJE C

Tipos Abstractos de Datos (TAD) Lección 1

UNIDAD 6 Tipos Abstractos de Datos (TAD) Interfaz e Implementación. Tipos de unidades. Creación y uso de unidades para

Departamento de Informática Universidad de Valladolid Campus de Segovia TEMA 1: RECURSIÓN

MATRICES. nombrematriz = array[puntoinicialfila..puntofinalfila, puntoinicialcolumna..puntofinalcolumna ] of tipodato

Universidad Central Del Este U C E Facultad de Ciencias y Humanidades Escuela de Pedagogía Mención Informática

Introducción al lenguaje C

Datos Elementales y formato de un programa en Java

324 MR Versión 1 Primera Integral 1/5 Lapso 2009/2. ASIGNATURA: Computación II CÓDIGO: 324 MOMENTO: Primera Integral FECHA DE APLICACIÓN: 24/10/09;

Ordinales, Enumerados y Conjuntos

8- LEX-Expresiones regulares

Programación Digital I

Programación en Pascal. Memoria dinámica

Tecnólogo Informático- Estructuras de Datos y Algoritmos- 2009

SUBRANGO ENUMERADOS CONJUNTOS

Arboles Binarios de Búsqueda en C++

Array con tope y Registros variantes

ALGORITMOS Y ESTRUCTURAS DE DATOS EJERCICIOS RESUELTOS SEGUNDA PARTE

Introducción al Lenguaje de Programación C

Prof. Dr. Paul Bustamante

Transcripción:

. 1 UNIDAD 3: TIPOS ABSTRACTOS DE DATOS (APUNTES DE APOYO A CLASES TEÓRICAS TIEMPO DE EXPOSICIÓN: 2 HS)

Bibliografía: 2 1. Rubén Maza. Artículo Abstracción de Datos. Revista Compumagazine 1993 2000. 2. Aho, Hopcroft y Ullman, Estructuras de Datos y Algoritmos. Addison Wesley. 1988. 3. Luis Joyanes Aguilar, Programación en Pascal y C -

Objetivos: 3 1. Definir Abstracción, Niveles de abstracción y Tipo Abstracto de Datos (TAD). 2. Conceptualizar las etapas del diseño de un TAD 3. Diseñar un TAD ejemplo 4. Desarrollar otros ejemplos de aplicación

Definiciones: 4 Abstracción: Es un proceso mental que consiste en eliminar los detalles superfluos, resaltando solo los esenciales, permitiendo de esta manera entender los aspectos que interesan. También podemos definir la abstracción, como la extracción de las propiedades esenciales de un concepto. Niveles de abstracción: El programador solo ve los detalles que son importantes en un determinado nivel de diseño, ignorando los detalles de los niveles más bajos. De esta manera, podemos concentrarnos sobre la especificación (EL QUE HACER) y dejar los detalles de la implementación para después (EL COMO HACER).

Tipo Abstrcto de Datos: (TAD) Definición 5 TAD: Es un modelo matemático definido por medio de especificaciones que son independientes de su implementación. Un tipo abstracto de dato (TDA) es un tipo de dato definido por el programador que encapsula en una sola entidad: la representación de los datos (una estructura de datos) las operaciones (procedimientos y funciones para manipular la estructura de datos). La única manera de manipular la estructura de datos será mediante estas operaciones. Se denominan ABSTRACTOS para diferenciarlos de los tipos de datos fundamentales o básicos definidos por el lenguaje, por ejemplo en Pascal, tales como integer, char, etc

Diseño de un TAD: Consta de dos niveles. 6 Nivel lógico: Se especifica solamente qué se debe hacer. Nivel de Implementación: Se detalla el cómo hacerlo, cómo se representan los datos en memoria y cómo se implementan los algoritmos para la gestión de la estructura de datos elegida. EjemploTAD Complejo Nivel lógico: - Estructura de datos: - Parte real. - Parte imaginaria - Operaciones: - Leer un nro. complejo. - Sumar dos nros. complejos. - Mostar un nro. Complejo.. Nivel de Implementación: - Estructura de datos: - preal: Integer - pimag: Integer - Operaciones: - Leer(VAR A: Complejo) - Sumar (A,B,VAR C: Complejo) - Mostar (A: Complejo)

Diseño de un TAD: Ventajas. 7 Ventajas de separar los dos niveles de diseño: 1. Ocultamiento de la información: Nos permite concentrarnos en el diseño global del TAD, sin considerar los detalles de los niveles inferiores del diseño. Esto incrementa la modularidad. 2. Mejora el mantenimiento de los programas. Al separar los TAD de los programas que los usan, podemos cambiar el nivel de implementación sin afectar los programas. Esto incrementa la modificabilidad 3. Un mismo TAD puede ser utilizado en programas diferentes. No será necesario volver a escribir los procedimientos y funciones del TAD Esto incrementa la reusabilidad.

Implementación de un TAD: en C 8 Definición en C archivo cabecera: Complejo.h //Complejo.h : Definición de tipos y declaración de operaciones // ---------------------------------------------------------------------------------- typedef struct { int preal; int pimag; } NumComplejo; NumComplejo Leer(void); NumComplejo Sumar(NumComplejo z1, NumComplejo z2); void Mostrar(NumComplejo z);

Implementación de un TAD: en C 9 Definición en C archivo cabecera: Complejo.c //Complejo.c : Definición de operaciones (implementación) //------------------------------------------------------ #include "Complejo.h" NumComplejo Leer(void) { NumComplejo z; printf("\ningresa parte real:"); scanf("%i",&z.preal); printf("\ningresa parte imaginaria:"); scanf("%i",&z.pimag); return(z); } NumComplejo Sumar(NumComplejo z1, NumComplejo z2) { NumComplejo z; z.preal = z1.preal + z2.preal; z.pimag = z1.pimag + z2.pimag; return(z); } void Mostrar(NumComplejo z) { printf("\nel numero complejo es:"); printf("(%i + %ii)\n",z.preal,z.pimag); }

Utilización de un TAD: en C 10 //UsaComplejo.c //Utiliza el TAD Complejo en un programa C #include <stdio.h> #include <stdlib.h> #include "Complejo.h" main() { NumComplejo a,b,suma; a= Leer(); b= Leer(); suma = Sumar(a,b); printf("la suma es:"); Mostrar(suma); system("pause"); }

Implementación de un TAD: en Pascal 11 En Pascal, es posible definir una unidad, es decir código fuente separado, escrito y compilado aparte del programa que la utiliza. Definición en Pascal de una unidad: UNIT TADComplejo; INTERFACE {declaraciones públicas, visibles al usuario} Type Complejo = Record preal: Integer; pimag: Integer; End; Procedure Leer(Var A: Complejo) Procedure Sumar(A,B: Complejo; VAR C: Complejo); Procedure Mostrar(A); IMPLEMENTATION {Código de cada operación} BEGIN END.

Utilización de un TAD: en Pascal 12 Teniendo en cuenta la unidad que contiene el TAD Complejo, el programa que la utiliza podría ser: Programa en Pascal: PROGRAM UsaTADComplejo; USES TADComplejo; VAR A, B, C: Complejo; BEGIN END. Leer(A); Leer(B); Sumar(A,B,C); Mostrar(C);

Otro ejemplo: TAD CadenaDeLetras 13 TAD CadenaDeLetras Nivel lógico: - Estructura de datos: - CantLetras - Letras Nivel de Implementación: - Estructura de datos: - CantLetras: Integer - Letras: Array [1..80] of char - Operaciones: - Leer la cadena. - Concatenar dos cadenas. - Longitud de la cadena. - etc - Operaciones: - Leer(VAR S:CadenaDeLetras) - Concatenar(A,B:CadenaDeLetras; VAR C: CadenaDeLetras) - Longitud (S:CadenaDeLetras)

Implementación de TAD CadenaDeLetras 14 UNIT TADCadena; INTERFACE {declaraciones públicas, visibles al usuario} Type CadenaDeLetras = Record CantLetras :Integer; Letras: Array[1..80] of char; End; Procedure Leer(VAR S:CadenaDeLetras); Procedure Concatenar(A,B: CadenaDeLetras; VAR C: CadenaDeLetras); Function Longitud(S: CadenaDeLetras):Integer; IMPLEMENTATION BEGIN END. {Código de cada operación} Los alumnos lo hacen en C.

Utilización del TAD en Pascal 15 Teniendo en cuenta la unidad que contiene el TAD CadenaDeLetras, el programa que la utiliza podría ser: Programa en Pascal: PROGRAM UsaTADCadenaDeLetras; USES TADCadena; VAR S1,S2, S3: CadenaDeLetras; BEGIN END. Leer(S1); Leer(S2); Concatenar(S1,S2,S3); Writeln (Longitud(S3)); Los alumnos lo hacen en C.

TAD Conjunto: 16 Nivel lógico: - Estructura de datos: - CantElementos. - Elementos - Operaciones: - Agregar - Eliminar - Vacio - etc Nivel de Implementación (I): - Estructura de datos: Set de Pascal - Conjunto: Set of Elem (donde el tipo Elem : 0..255, por ej) - Operaciones: - Agregar (C, elem) - Eliminar (C, elem) - Vacio(C) Nivel de Implementación (II): - Estructura de datos: con Array de Pascal - Conjunto: Array [0..255] of Boolean - Operaciones: - Agregar (C, elem) - Eliminar(C, elem) - Vacio(C)

TAD Conjunto: Implementación I 17 UNIT TADConjuntoI; INTERFACE {declaraciones públicas, visibles al usuario} Type Elem = 0..255; Type Conjunto = Set of Elem; Procedure Agregar(VAR C:Conjunto; e:elem); Procedure Eliminar(VAR C:Conjunto; e:elem); Function Vacio(C:Conjunto): Boolean; IMPLEMENTATION {Código de cada operación} BEGIN END. Procedure Agregar(VAR C:Conjunto; e:elem); Begin C:= C + [e]; End; {implementación de las otras operaciones}

TAD Conjunto: Implementación I 18 Teniendo en cuenta la unidad que contiene el TAD Conjunto implementado como Set de Pascal, el programa que la utiliza podría ser: Programa en Pascal: PROGRAM UsaTADConjuntoI; USES TADConjuntoI; VAR A: Conjunto; BEGIN ; Agregar(A, 1); ; END.

TAD Conjunto: Implementación II 19 UNIT TADConjuntoII; INTERFACE {declaraciones públicas, visibles al usuario} Type Elem = 0..255; Type Conjunto = Array [0..255] of Boolean; Procedure Agregar(VAR C:Conjunto; e:elem); Procedure Eliminar(VAR C:Conjunto; e:elem); Function Vacio(C:Conjunto): Boolean; IMPLEMENTATION {Código de cada operación} Procedure Agregar(VAR C:Conjunto; e:elem); Begin End; If e <= 255 then C[e] := True else Write( Ingrese enteros =< a 255 ) {implementación de las otras operaciones} BEGIN END.

Utilización II del TAD Conjunto 20 Teniendo en cuenta la unidad que contiene el TAD Conjunto implementado como Array de Pascal, el programa que la utiliza podría ser: Programa en Pascal: PROGRAM UsaTADConjuntoII; USES TADConjuntoII; VAR A: Conjunto; BEGIN ; Agregar(A, 1); ; END.

Hasta aquí vimos. 21 Abstracción - Niveles TAD : Definición Nivel Lógico TAD: Diseño Nivel de Implementación Tipos Abstractos de Datos Ejemplos de implementa ción de TAD s TAD Complejo: En Lenguaje C y Pascal TAD CadenaDeLetras: En Lenguaje Pascal y C TAD Conjunto: En Lenguaje Pascal y C Implementación I: Usando el tipo Set of Implementación II: Usando el tipo Array[ ]