Title: TIPOS DE DATOS ABSTRACTOS
1TIPOS DE DATOS ABSTRACTOS
2OBJETIVOS
- 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
3ABSTRACCION
- 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
4ABSTRACCION 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
5ABSTRACCION 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)
6TIPOS 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
7EJEMPLO
- 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
8VENTAJAS 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
9DEFINICION 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
10QUE ES BNF?
- Backus-Naur Form
- 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
11Có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!
12REGLAS 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 ltgt
- Un simbolo terminal
- Que ya no necesita más definición
13SIMBOLOS 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
14EL TDA RACIONAL CON BNF
- Comportamiento
- Sumar, Restar, Multiplicar, Simplificar
- Estado
- ltracionalgt ltnumeradorgt/ltdenominadorgt
- ltnumeradorgtltdigitogtltdigitogt
- ltdenominadorgtltdig_no_cerogtltdigitogt
15LAS 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 cadena4 // 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
16EL 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.
17DEFINICION 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)
- ltstringgt ltfin_cadenagtltcaráctergtltstringgt
- ltcaractergt ab.
- ltfin_cadenagt\0
18EJERCICIOS EN CLASE
- Crear un TDA para representar
- Un numero complejo y sus diferentes operaciones
- Una arreglo y sus diferentes operaciones