Tipos de Datos Abstractos TDA

Documentos relacionados
Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Tema 2. Concepto de Algoritmo

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

1. Computadores y programación

Nombre de la asignatura: Diseño Estructurado de Algoritmos. Carrera: Ingeniería en Sistemas Computacionales. Clave de la asignatura: SCB-9316

Verificación de programas. Algoritmos y Estructuras de Datos I. Semánticas formales: Primer cuatrimestre de 2016

INTRODUCCIÓN. Estructura de Datos Tipos Abstractos de Datos (TAD S) Profs. Lorna Figueroa M. Mauricio Solar F. UTFSM 1 / 2008

Especificación de TAD. Lección 2

Elementos de un programa en C

Tema 2: Análisis léxico

SISTEMAS INFORMÁTICOS PROGRAMACION I - Contenidos Analíticos Ing. Alejandro Guzmán M. TEMA 2. Diseño de Algoritmos

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

PROGRAMACIÓN PLAN 2008

Tema 4: Gramáticas independientes del contexto. Teoría de autómatas y lenguajes formales I

Requerimientos de Software

Carrera: MTE Participantes Representante de las academias de ingeniería Mecatrónica de los Institutos Tecnológicos.

Lenguajes y Gramáticas

Tema: Análisis Léxico

Introducción a la programación: Contenido. Introducción

INTRODUCCIÓN A LA PROGRAMACIÓN EN FORTRAN. Métodos Numéricos Carlos Zotelo

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

Estructuras de Datos y Algoritmos. Programa de la asignatura

Ficha de Aprendizaje N 13

2. EXPRESIONES 3. OPERADORES Y OPERANDOS 4. INDENTIFICADORES COMO LOCALIDADES DE MEMORIA

Semántica: principales usos. Semántica: principales enfoques. Semántica Operacional. Sintaxis abstracta de un lenguaje (sujeto) Semántica Operacional

Control de Flujo. Estructuras de Control! Experiencia Educativa de Algorítmica CONTROL DE FLUJO

Definición de Tipo de Dato Abstracto (TDA)

Manual de turbo pascal

Etapa 1: El Dialogo. Etapa 2: Las Especificaciones

Universidad de Managua

Las expresiones son combinaciones de constantes, variables, símbolos de operación, paréntesis y nombres de funciones especiales.

Los tipos de datos primitivos

Programación en java. Estructuras algorítmicas

Unidad III Análisis Léxico. M.C. Juan Carlos Olivares Rojas

Planificaciones Algoritmos y Programación I. Docente responsable: CARDOZO MARTIN MIGUEL. 1 de 8

Programación I. Ingeniería Técnica Informática. Ejercicios de los Temas 4, 5, 6 y 7

Procesadores de lenguaje Tema 5 Comprobación de tipos

Tipos De Datos. Numéricos. Alfanuméricos (string) Arreglos (Vectores, Matrices) Estructurados Registros (Def. Por el Archivos Usuario) Apuntadores

REPÚBLICA BOLIVARIANA DE VENEZUELA UNIVERSIDAD BICENTENARIA DE ARAGUA VICERRECTORADO ACADÉMICO ARAGUA VENEZUELA

Conceptos de Algoritmos, Datos y Programas

Introducción. Algoritmos y Complejidad. Algoritmos y Algoritmia. Introducción. Problemas e instancias. Pablo R. Fillottrani

Introducción al Lenguaje "C++"

Informática General 2016 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales

Fundamentos de Programación Visual Basic

Compiladores: Análisis Semántico. Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inès Alvarez V.

TÍTULO: MATEMÁTICA DISCRETA Y LÓGICA Disponibilidad

Tema 1: Introducción. Teoría de autómatas y lenguajes formales I

INTRODUCCION A LA PROGRAMACIÓN ORIENTADA A OBJETOS

Objetivos Que el estudiante logre conocer, comprender y manejar conceptos y técnicas vinculados con el Analizador Léxico, para lo cual debe:

Introducción a la Lógica y la Computación

- AnallogicA - Software para crear tablas de verdad

Unidad I: Tipo de Dato Abstracto (TDA)

Apunte Laboratorio ALPI - El lenguaje de programación Pascal

Lenguajes de Programación Programación funcional

Guía práctica de estudio 05: Diagramas de flujo

Constante: Una constante es un dato numérico o alfanumérico que no cambia durante la ejecución del programa.

PROGRAMACIÓN. UNIDAD II. ALGORITMO PROFA : HAU MOY

Tema: Análisis Semántico

El TAD Árbol. El TAD Árbol

Diseño estructural y propuesta de actividades. Desarrollo de software, metodología de proyectos IT, licenciatura en informática o afines

El lenguaje C. 1. Identificadores, constantes y variables

Programación Estructurada

Lección 2: Creando una Aplicación en Java. 1. Estructura del archivo de una clase. 3. Definiendo clases fundamentos

El proceso del Análisis Léxico

CIENCIAS FORMALES CIENCIAS FÁCTICAS

SISTEMA DE NUMEROS REALES

CURSO : ESTRUCTURA DE DATOS DOCENTE : ING. JUAN ZEVALLOS VALLE

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

Fundamentos de Ciencias de la Computación Trabajo Práctico N 2 Lenguajes Libres del Contexto y Sensibles al Contexto Segundo Cuatrimestre de 2002

Lógica de predicados

LEX. Las definiciones y subrutinas son opcionales. El segundo %% es opcional pero el primer %% indica el comienzo de las reglas.

A continuación se presenta la información de la altura promedio para el año de 1998 en Holanda de hombres y mujeres jóvenes.

Algoritmos y programas. Algoritmos y Estructuras de Datos I

DEFINICIONES BÁSICAS DE LAS ESTRUCTURAS DE DATOS

Diseño Estructurado de Algoritmos

TIPOS DE DATOS (VARIABLES) EN JAVA. TIPOS PRIMITIVOS (INT, BOOLEAN, ETC.) Y OBJETO (STRING, ARRAY, ETC.) (CU00621B)

Modelo Conceptual de datos. Yenifer Laurens.

Anexo 2. Para los nombres de variable se aplican las siguientes normas:

Programación Estructurada

Es un lenguaje estructurado, tiene una abundante cantidad de operadores y tipos de datos.

Representación de la información

Análisis semántico. Análisis semántico. Índice (I)

Tema 2: Desarrollo de Algoritmos. E.E. de Algorítmica

Unidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos

TAD CONJUNTOS Y MULTICONJUNTOS

Arreglos. Algoritmos y Estructuras de Datos I. Arreglos en C++ Arreglos y listas

Inteligencia Artificial

Generación de Código Intermedio

Uno de los conceptos más útiles en ciencias de la computación es la pila.

UNIVERSIDAD AUTÓNOMA DE YUCATÁN FACULTAD DE MATEMÁTICAS

Transcripción:

1

O Historia El origen del concepto de tipo de dato abstracto se remonta al tipo class en el lenguaje SIMULA 67 (Birtwistle et al. 1973). Desde entonces se han desarrollado varios lenguajes que manejan tipos de datos abstractos: O En 1977 Liskov lo introduce para el Lenguaje CLU.llina O En 1982 Stroustrup lo incorpora para el lenguaje C (C con clases) 2

O Definición y Conceptos Básicos 1. Liskop establece que Un define una clase de objetos abstractos la cual está completamente caracterizada por las operaciones definidas para estos objetos. 2. Guttag expresa que un es Una clase de objetos definida por una especificación independiente de la representación. 3. Aho, Hopcroft y Ullman señalan que un se entiende como un modelo matemático con una serie de operaciones definidas en ese modelo. 3

Definición y Conceptos Básicos Caracterización: Los son generalizaciones de los tipos de datos primitivos (enteros, reales, etc), al igual que los procedimientos y funciones son generalizaciones de operaciones primitivas (suma, resta, etc). Un se caracteriza por un conjunto de operaciones las cuales representan el comportamiento del. El permite crear nuevos tipos de abstracciones de datos que están presentes implícitamente o explícitamente en el dominio del problema, y que no son provistos por el lenguaje. 4

O Definición y Conceptos Básicos Para crear los nuevos tipos de abstracciones es necesario 1 Definir objetos y las operaciones válidas 2 Elegir la representación concreta del objeto abstracto en término de las estructuras o tipos de datos presentes en los lenguajes de alto nivel 3 Desarrollar los algoritmos para las operaciones, basándose en la representación seleccionada. 5

Crear nuevos tipos de abstracciones. A través de las especificaciones Sintácticas y Semántica se describen los objetos abstractos y las operaciones abstractas del tipo que se crea. La representación e implementación, requiere de la elección de las estructuras de datos provistas por el lenguaje y del desarrollo codificación de los procedimientos y/o funciones. 6

Especificación Sintáctica y Semántica 1 Para definir los objetos abstractos y sus propiedades (operaciones) se describe el tipo de dato independientemente de cualquier representación e implementación. Para ello es necesario definir el en términos de su especificación sintáctica y semántica: 1. La especificación sintáctica define el nombre de los objetos abstractos y de las operaciones indicando para cada una de ellas el dominio y el rango. 2. La especificación semántica define el significado de cada operación usando los símbolos introducidos en la parte sintáctica. 7

Especificación Sintáctica y Semántica La Especificación Semántica puede ser especificada tanto de modo formal o informal. La primera generalmente es rigurosamente formulada y fundamentada bajo la simbología matemática. La segunda puede especificarse en un lenguaje natural. 8

Representación Interna 2 La representación interna para los objetos del, se especifica en términos de las estructuras de datos provistas por los lenguajes de programación. Un puede tener diversas representaciones, las cuales deben cumplir con la especificación definida para el tipo. 9

Implementación 3 Esta implica procedimientos el desarrollo o - codificación de los funciones, basándose en la representación seleccionada. 10

Ejemplo El tipo SECUENCIA es un tipo estructurado formado por componentes de un mismo tipo, Si e es del tipo de los ELEMENTOS de SECUENCIA entonces la misma será tratada como una SECUENCIA de e. ELEMENTOS puede ser un tipo ENTERO, CARACTER, LÓGICOS. 11

Especificación Sintáctica DOMINIO PRIMERO : ÚLTIMO : PONERPRI : PONERULT: LONGITUD: MAYOR: MENOR: OBTENER: SECUENCIA SECUENCIA SECUENCIA x ELEMENTO SECUENCIA x ELEMENTO SECUENCIA SECUENCIA x SECUENCIA SECUENCIA x SECUENCIA SECUENCIA x POSICIÓN RANGO ELEMENTO ELEMENTO SECUENCIA SECUENCIA ENTERO SECUENCIA SECUENCIA ELEMENTO 12

Especificación Semántica Función PRIMERO (S :SECUENCIA) : ELEMENTO precondición: ninguna postcondición: e1 o Fin (S) acción: si S = (e1,e2,, e n) entonces PRIMERO = e1 sino PRIMERO = Fin (S) if S =(e1,e2,, e n) then PRIMERO = e1 else PRIMERO = Fin (S) 13

Especificación Semántica Función ULTIMO (S :SECUENCIA) : ELEMENTO precondición: ninguna postcondición: en o Fin (S) acción: si S = (e1,e2,, e n) entonces ULTIMO = e n sino ULTIMO = Fin (S) if S =(e1,e2,, e n) then ULTIMO = e n else ULTIMO = Fin (S) 14

O Especificación Semántica Procedimiento PONERPRI (Var S :SECUENCIA, E: ELEMENTO) precondición: ninguna postcondición: S = (e1) o S = (e1,e2, e3,,en) acción: si S = ( ) entonces S = (e1) sino Si S = (e2, e3,,e n) entonces S = (e1,e2, e3,, e n) if S =( ) then S = e1 else if S = (e2, e3,, e n) then S = (e1,e2,e3,, e n) 15

Especificación Semántica Procedimiento PONERULT (Var S :SECUENCIA, E: ELEMENTO) precondición: ninguna postcondición: S = (en) o S = (e1,e2, e3,,e n) acción: si S = (e n) entonces S = (e n) sino Si S = (e1,e2, e3,,en-1) entonces S = (e1,e2, e3,,en-1,en) if S =(e n) then S = (e1,e2, e3,,e n) else if S = (e1,e2, e3,,e-1) then S = (e1,e2, e3,, e n -1,e n) 16

Especificación Semántica Función LONGITUD (S :SECUENCIA) : ENTERO precondición: ninguna postcondición: LONGITUD (S) acción: si S = ( ) entonces LONGITUD = 0 sino Si S = (e1,e2,,en) LONGITUD = n if S =( ) LONGITUD = o else if S = (e1,e2,,en) LONGITUD = n 17

Especificación Semántica Función MAYOR (S1, S2 :SECUENCIA) : SECUENCIA precondición: ninguna postcondición: MAYOR = S1 o MAYOR = S2 acción: si LONGITUD (S1) > LONGITUD (S2) entonces MAYOR := S1; si LONGITUD (S2) > LONGITUD (S1) entonces MAYOR := S2; 18

Especificación Semántica Función MENOR (S1, S2 :SECUENCIA) : SECUENCIA precondición: ninguna postcondición: MENOR = S1 o MENOR = S2 acción: si LONGITUD (S1) < LONGITUD (S2) entonces MENOR := S1; si LONGITUD (S2) < LONGITUD (S1) entonces MENOR := S2; 19

Especificación Semántica Función OBTENER (S :SECUENCIA, P : POSICIÓN) : ELEMENTO precondición: S < > ( ) postcondición: P tiene la posición del elemento ep en la Secuencia S acción: si S = (e1,e2, ep,..en) entonces OBTENER = ep 20

O Representación Interna Seleccionemos una estructura de datos existentes en los lenguajes de programación que nos permita simular una SECUENCIA. Asumamos que los ELEMENTOS que contiene la SECUENCIA son representados por letras del alfabeto (mayúsculas y minúsculas), dígitos y caracteres especiales. Por lo que el tipo debe ser CARACTER y la cantidad de ELEMENTOS que puede contener la SECUENCIA tiene un máximo de n ELEMENTOS. Por lo que la representación formal de este tipo se define de la siguiente manera: Tipo SECUENCIA = arreglo [1..n] de CARACTER; Var S SECUENCIA; 21

O Representación Gráfica Gráficamente podríamos ver la SECUENCIA S de esta forma: POSICIÓN 1 n 1 2 n e1: ELEMENTO : CARACTER 22

O Implementación O Implementación Función PRIMERO (S :SECUENCIA) : ELEMENTO var e : CARÁCTER; principio si S[1] <> entonces e : = S [1] sino e : = PRIMERO := e; fin; Función ULTIMO(S :SECUENCIA) : ELEMENTO var i : ENTERO; principio i.= 1; mientras (i <= n) y (S[ i ] <> ) hacer principio i := i + 1; fin; ULTIMO := S[ i 1]; fin; 23

Implementación Implementación Procedimiento PONERPRI (Var S :SECUENCIA; e: ELEMENTO) var i : entero; principio i := n; mientras (i > 0) hacer principio S[ i ]:= S [ i 1]; i := i 1; fin; S [ 1 ] := e; fin; Procedimiento PONERULT (Var S :SECUENCIA; e: ELEMENTO) var i : entero; principio i := 1; mientras ( i < = n) y (S[ i ] < > ) hacer principio i := i + 1; fin; S[ i ] := e; fin; 24

Implementación Función LONGITUD (S :SECUENCIA) : ENTERO var i : ENTERO; principio i:=1; mientras (i <= n) y (S [ i ] < > ) hacer principio i:= i + 1; fin; si i = n y S[ i ] <> entonces LONGITUD := i; sino LONGITUD := i -1; fin; Implementació n Función MAYOR (S1, S2 :SECUENCIA) : SECUENCIA principio si LONGITUD (S1) >= LONGITUD (S2) entonces MAYOR := S1 sino MAYOR := S2 fin; 25

O Implementación Función MENOR (S1, S2 :SECUENCIA) : SECUENCIA principio si LONGITUD (S1) <= LONGITUD (S2) entonces MENOR := S1 sino MENOR := S2 fin; 26

Referencias Aho A., Hopcroft J., Ullman J (1988). Estructura de Datos y Algoritmos. Addison Wesley Iberoamericana, Delaware, USA FUERTE BALDERRAMA URIEL Liskov, B. (1974). Programing with Abstract Data Types. ACM. Sygplan. Vol 9 4. Zambrano, N. y Sepúlveda, J. (1988). Tipos De Datos Y Estructuras De Datos Fondo editorial acta científica venezolana. Universidad Central de Venezuela. 27