TIPOS DE DATOS ABSTRACTOS
description
Transcript of TIPOS DE DATOS ABSTRACTOS
![Page 1: TIPOS DE DATOS ABSTRACTOS](https://reader036.fdocuments.co/reader036/viewer/2022082612/56813ac0550346895da2cf31/html5/thumbnails/1.jpg)
TIPOS DE DATOS ABSTRACTOS
ESTRUCTURAS DE DATOS
![Page 2: TIPOS DE DATOS ABSTRACTOS](https://reader036.fdocuments.co/reader036/viewer/2022082612/56813ac0550346895da2cf31/html5/thumbnails/2.jpg)
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
![Page 3: TIPOS DE DATOS ABSTRACTOS](https://reader036.fdocuments.co/reader036/viewer/2022082612/56813ac0550346895da2cf31/html5/thumbnails/3.jpg)
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
![Page 4: TIPOS DE DATOS ABSTRACTOS](https://reader036.fdocuments.co/reader036/viewer/2022082612/56813ac0550346895da2cf31/html5/thumbnails/4.jpg)
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
![Page 5: TIPOS DE DATOS ABSTRACTOS](https://reader036.fdocuments.co/reader036/viewer/2022082612/56813ac0550346895da2cf31/html5/thumbnails/5.jpg)
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)
![Page 6: TIPOS DE DATOS ABSTRACTOS](https://reader036.fdocuments.co/reader036/viewer/2022082612/56813ac0550346895da2cf31/html5/thumbnails/6.jpg)
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
![Page 7: TIPOS DE DATOS ABSTRACTOS](https://reader036.fdocuments.co/reader036/viewer/2022082612/56813ac0550346895da2cf31/html5/thumbnails/7.jpg)
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
![Page 8: TIPOS DE DATOS ABSTRACTOS](https://reader036.fdocuments.co/reader036/viewer/2022082612/56813ac0550346895da2cf31/html5/thumbnails/8.jpg)
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
![Page 9: TIPOS DE DATOS ABSTRACTOS](https://reader036.fdocuments.co/reader036/viewer/2022082612/56813ac0550346895da2cf31/html5/thumbnails/9.jpg)
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
![Page 10: TIPOS DE DATOS ABSTRACTOS](https://reader036.fdocuments.co/reader036/viewer/2022082612/56813ac0550346895da2cf31/html5/thumbnails/10.jpg)
QUE 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
![Page 11: TIPOS DE DATOS ABSTRACTOS](https://reader036.fdocuments.co/reader036/viewer/2022082612/56813ac0550346895da2cf31/html5/thumbnails/11.jpg)
¿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!
![Page 12: TIPOS DE DATOS ABSTRACTOS](https://reader036.fdocuments.co/reader036/viewer/2022082612/56813ac0550346895da2cf31/html5/thumbnails/12.jpg)
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
![Page 13: TIPOS DE DATOS ABSTRACTOS](https://reader036.fdocuments.co/reader036/viewer/2022082612/56813ac0550346895da2cf31/html5/thumbnails/13.jpg)
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
![Page 14: TIPOS DE DATOS ABSTRACTOS](https://reader036.fdocuments.co/reader036/viewer/2022082612/56813ac0550346895da2cf31/html5/thumbnails/14.jpg)
EL TDA RACIONAL CON BNFComportamiento:
Sumar, Restar, Multiplicar, Simplificar
Estado:<racional> := <numerador>/<denominador><numerador>:=<digito>{<digito>}<denominador>:=<dig_no_cero>{<digito>}
![Page 15: TIPOS DE DATOS ABSTRACTOS](https://reader036.fdocuments.co/reader036/viewer/2022082612/56813ac0550346895da2cf31/html5/thumbnails/15.jpg)
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
![Page 16: TIPOS DE DATOS ABSTRACTOS](https://reader036.fdocuments.co/reader036/viewer/2022082612/56813ac0550346895da2cf31/html5/thumbnails/16.jpg)
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.
![Page 17: TIPOS DE DATOS ABSTRACTOS](https://reader036.fdocuments.co/reader036/viewer/2022082612/56813ac0550346895da2cf31/html5/thumbnails/17.jpg)
DEFINICION DE STRINGComportamiento
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>:=‘\0’
![Page 18: TIPOS DE DATOS ABSTRACTOS](https://reader036.fdocuments.co/reader036/viewer/2022082612/56813ac0550346895da2cf31/html5/thumbnails/18.jpg)
EJERCICIOS EN CLASE Crear un TDA para representar:
Un numero complejo y sus diferentes operaciones Una arreglo y sus diferentes operaciones