• Save
TDA
Upcoming SlideShare
Loading in...5
×
 

TDA

on

  • 13,976 views

TDA

TDA

Statistics

Views

Total Views
13,976
Views on SlideShare
13,883
Embed Views
93

Actions

Likes
2
Downloads
0
Comments
1

3 Embeds 93

http://www.slideshare.net 65
http://senaintro.blackboard.com 26
http://webcache.googleusercontent.com 2

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

TDA TDA Presentation Transcript

  • TIPOS DE DATOS ABSTRACTOS ESTRUCTURAS DE DATOS
  • OBJETIVOS
    • Determinar las posibles entidades a participar en un problema
    • Identificar las características y comportamientos importantes de cada entidad
    • Abstraer la definición y comportamiento de una entidad para crear un nuevo TDA
    • Aplicar un lenguaje formal parar definir un TDA
  • ABSTRACCION
    • Es “ignorancia selectiva”
      • Decidir que es importante y que no lo es
      • Enfocarse y depender de lo que ES importante
      • Ignorar y no depender de lo que NO ES importante
    El propósito de la abstracción no es ser poco específico , es más bien crear un nuevo nivel, en el cual se puede ser absolutamente preciso Edsger Dijkstra
  • ABSTRACCION PARA RESOLVER PROBLEMAS
    • La mejor abstracción es aquella que hace simples las cosas complejas.
      • Rescatar y resaltar los conceptos fundamentales
      • Esconder los aspectos no importantes
        • Ejemplo: Detalles de la implementación
    Mientras mas perfecta es una máquina, mas oculto se encuentra su funcionamiento. Al parecer, la perfección no se logra cuando no hay mas que añadir, si no cuando no haya mas que quitar. Antoine de Saint-Exupéry
  • ABSTRACCION DE DATOS
    • Es una técnica poderosa de programación
    • Permite “inventar”, o definir nuevos tipos de datos
      • Observando e identificando entidades del mundo real: objetos
      • Ocultando datos irrelevantes para la resolución del problema
    • Gracias a esto, se pueden diseñar programas
      • Mas cortos, Legibles y Flexibles
    • Estos nuevos tipos de datos se conocen como:
      • TIPOS DE DATOS ABSTRACTOS (TDA)
  • TIPOS DE DATOS ABSTRACTOS
    • Un TDA trata de representar entidades del mundo real: objetos
      • Especificando el QUE y no el COMO
    • Se componen de
      • Comportamiento  Operaciones
        • Los TDAs existen PARA proveer operaciones
        • Ejemplo: Un carro, es útil porque se lo puede manejar
        • Manejar es un comportamiento u operación del TDA Carro
      • Estado
        • Se refiere al funcionamiento interno del TDA
        • Un TDA correctamente creado mantiene su estado OCULTO
        • Ejemplo: No nos interesa como Carro funciona, solo nos interesa… que funciona
  • EJEMPLO
    • Se necesita crear un TDA para representar los números racionales
    • La abstracción nos permitirá reconocer
      • El comportamiento de un número racional y
      • El estado (datos) del mismo
    • TDA: Racional
      • Comportamiento :
        • Sumar, Restar, Multiplicar, Simplificar, etc.
      • Estado :
        • Numerador
        • Denominador , siempre debe ser diferente de 0
  • VENTAJAS DE LOS TDA
    • Permiten una mejor representación del mundo real
      • Una solución puede estar compuesta de un grupo de TDAs
        • Cada uno con sus comportamientos y estados
      • El código se comprende mejor, pues los TDAs representan entidades del mundo real
    • Permite llevar un control de cambios
      • Si el estado de un TDA esta oculto, si se modifica, nadie se verá afectado
      • Ejemplo: Se pueden hacer modificaciones a un auto sin que el usuario del mismo se entere o cambie su forma de USAR el auto
    • Permite la extensibilidad de un sistema
      • Cada Nuevo Tipo de Dato es un modulo que se adapta a una solución
  • DEFINICION DE UN TDA
    • La definición de un TDA durante el diseño debería
      • Clara, concisa, sin ambigüedades
    • Sin embargo, muchos de nosotros usamos
      • Lenguaje natural: sujeto a ambigüedades
      • Lenguaje de programación en particular
        • No todos lo entienden
      • Una notación formal, generalizada
        • Todos lo podrán entender y la definición será clara y concisa
    • Una notación formal propuesta es BNF
  • QUE ES BNF?
    • B ackus- N aur F orm
    • Es una notación formal matemática
    • Es utilizada para definir la sintaxis de los lenguajes
      • Que esta permitido en cierto lenguaje y que no
      • Sin lugar a ambigüedades
    • Ejemplo: En lenguaje C,
      • Hay reglas para declarar variables
      • Y cada sentencia de control tiene su propia regla de sintaxis
  • ¿Cómo funciona BNF?
    • Es como un juego matemático
    • Se busca definir un símbolo, dando las reglas para reemplazarlo
      • Símbolo := alternativa1 | alternativa2
    • Si una expresión escrita
      • Se puede expresar usando su definición BNF
      • Estará correctamente escrita
      • Si no, no será permitida según la sintaxis del lenguaje
        • ¡ERROR!
  • REGLAS Y SINTAXIS DE BNF
    • Una regla en BNF indica que
      • Un símbolo no terminal a la izquierda del := puede ser reemplazado por la o las alternativas del lado derecho
    • Las alternativas de reemplazo se separan con |
    • Cada alternativa puede ser
      • Otro símbolo no terminal
        • Que aún falta por definir, va encerrado entre <>
      • Un simbolo terminal
        • Que ya no necesita más definición
  • SIMBOLOS EN EL BNF
    • :=
      • Equivalencia
    • |
      • Separa opciones de reemplazo para un símbolo dado
    • [..]
      • Todo lo encerrado entre corchetes se considera opcional
    • {..}
      • Todo lo encerrado entre llaves se puede repetir mas de una vez
  • EJEMPLOS
    • Sentencia if para PASCAL
      • <sentencia_if> := if <expresion_logica> then
        • <sentencias>
      • [else
        • <sentencias>]
      • end if;
    • Reglas para un identificador en C
      • <identificador> := <letra>| _ {<letra> |<digito>|_ }
    • Numero real en C
      • <numero_real> := -<fraccion>|<fraccion>
      • <fraccion> := <cifra>{.<cifra>}
      • <cifra> := <digito>{digito}
      • <digito> := ’0’| ’1’| ’2’| ’3’| ’4’| ’5’| ’6’| ’7’| ’8’| ’9’
  • EL TDA RACIONAL CON BNF
    • Comportamiento:
      • Sumar, Restar, Multiplicar, Simplificar
    • Estado:
      • <racional> := <numerador>/<denominador>
      • <numerador>:=<digito>{<digito>}
      • <denominador>:=<dig_no_cero>{<digito>}
  • LAS CADENAS EN C
    • Conocemos las cadenas: Conjuntos de caracteres
    • En C, el concepto implica cierta complejidad
      • Una cadena es un arreglo de caracteres o es el puntero al primer carácter
    • El problema es que
      • El uso de punteros a veces es confuso y las funciones para trabajo con cadenas no son amigables
    • Ejemplo:
      • char cadena[4]; // se puede trabajar, pero tiene una longitud máxima de 4
      • char *ncadena; //no se puede trabajar aun
      • strcpy(cadena, “Mama”); //si sobrepasa la long. Max. Habra problemas
      • ncadena = malloc(sizeof(char) * 4); //hay que conocer memoria dinámica
  • EL TDA string
    • Mucha complejidad para usar las cadenas
    • Definamos que es una cadena
      • Basándonos en su comportamiento y estado
      • Sin considerar la complejidad
    • ¿Qué esperamos de las cadenas?  Comportamiento
      • Poder asignarle valores
      • Obtener un carácter de la cadena
      • Calcular su longitud
      • Buscar posición de un carácter en la cadena
      • Concatenar cadenas
      • Extraer una subcadena, etc.
  • DEFINICION DE STRING
    • Comportamiento
      • Obtener un carácter de la cadena
      • Calcular su longitud
      • Buscar posición de un carácter en la cadena
      • Concatenar cadenas
      • Extraer una subcadena, etc
    • Estado (debe estar oculto)
    • <string> := <fin_cadena>|<carácter><string>
    • <caracter>:= ‘a’|’b’|….
    • <fin_cadena>:=‘’
  • EJERCICIOS EN CLASE
    • Crear un TDA para representar:
      • Un numero complejo y sus diferentes operaciones
      • Una arreglo y sus diferentes operaciones