estructuras de datos y tipos de datos abstractos
Post on 24-May-2015
45.641 Views
Preview:
DESCRIPTION
TRANSCRIPT
ArreglosRegistros
Tipo Abstracto de Datos
Estructuras de datos y tipos abstractos de datosUnidad 1
Luis Lastra Cid llastra@virginiogomez.cl
Instituto Profesional Virginio Gómez
2009-1
Luis Lastra | http://www.severus.cl Estructura de Datos 2009-1
ArreglosRegistros
Tipo Abstracto de Datos
Arreglos
¿Que es un arreglo?Los arreglos son una coleccion de variables del mismo tipo que sereferencian utilizando un nombre comun. Un arreglo consta de posicionesde memoria contigua. La dirección más baja corresponde al primerelemento y la más alta al último. Un arreglo puede tener una o variasdimensiones. Para acceder a un elemento en particular de un arreglo seusa un índice.
Luis Lastra | http://www.severus.cl Estructura de Datos 2009-1
ArreglosRegistros
Tipo Abstracto de Datos
Arreglos
¿String?Los llamados strings en C no existen como tal, son solo un arreglo decaracteres, los cuales tienen como unica diferencia el caracter de corte enel último elemento \0. Deben recordar que la posición comienza desde 0y que cada elemento char utiliza un byte de memoria. Si necesitanexactamente 10 letras deben declarar el arreglo con 11 direcciones dememorias asignadas.
Luis Lastra | http://www.severus.cl Estructura de Datos 2009-1
ArreglosRegistros
Tipo Abstracto de Datos
Ejemplirijillo
Cuenta Letras
1 i n t l e t r a s ( char a r r [ ] ) {2 i n t i , c=0;3 f o r ( i =0; i<max ; i ++){4 i f ( a r r [ i ] != ’ \0 ’ )5 c++;6 e l s e7 break ;8 }9 p r i n t f ( "\n Posee %i l e t r a s " , c ) ;10 return ( c ) ;11 }
Luis Lastra | http://www.severus.cl Estructura de Datos 2009-1
ArreglosRegistros
Tipo Abstracto de Datos
Registros
Registros/estructurasUna estructura es un tipo de dato compuesto que permite almacenar unconjunto de datos de diferente tipo. Los datos que contiene unaestructura pueden ser de tipo simple (caracteres, números enteros oreales, etc.) o a su vez de tipo compuesto (arreglos, estructuras, listas,etc.).
¿de que sirven?Usualmente, las estructuras nos sirven para representar abstractamenteuna parte de un problema, generando así, un modelo acorde a lasnecesidades de la situación y no un modelo con detalles que no usaremos.
Luis Lastra | http://www.severus.cl Estructura de Datos 2009-1
ArreglosRegistros
Tipo Abstracto de Datos
Ejemplirijillo
Cuenta Letras
1 s t ruc t t r i bu_urbana {2 char nombreT [ 2 0 ] ;3 char banda sT ip i c a s [ 3 ] [ 3 0 ] ;4 } ;5 s t ruc t pe r sona {6 char nombre [ 2 0 ] ;7 char r u t [ 1 2 ] ;8 s t ruc t t r i bu_urbana t r i b u ;9 } ;10 typedef s t ruc t pe r sona pe r sona ;11 pe r sona x ;
Luis Lastra | http://www.severus.cl Estructura de Datos 2009-1
ArreglosRegistros
Tipo Abstracto de Datos
Antonces podemos representar a ....
Figura: Metalero
Figura: EMO
Luis Lastra | http://www.severus.cl Estructura de Datos 2009-1
ArreglosRegistros
Tipo Abstracto de Datos
TAD
Tipo abstracto de datosUn tipo de dato abstracto (TDA) o Tipo abstracto de datos (TAD) es unmodelo compuesto por una colección de operaciones definidas sobre unconjunto de datos para el modelo.
AbstracciónLo primero que debemos enfrentar antes de programar es a unproblema.
Como los problemas son complejos, debemos analizar solo lo masimportante.Luego de separar los detalles generales de los especificos podemosobtener un modelo abstracto de problema.
Luis Lastra | http://www.severus.cl Estructura de Datos 2009-1
ArreglosRegistros
Tipo Abstracto de Datos
TAD
Tipo abstracto de datosUn tipo de dato abstracto (TDA) o Tipo abstracto de datos (TAD) es unmodelo compuesto por una colección de operaciones definidas sobre unconjunto de datos para el modelo.
AbstracciónLo primero que debemos enfrentar antes de programar es a unproblema.Como los problemas son complejos, debemos analizar solo lo masimportante.
Luego de separar los detalles generales de los especificos podemosobtener un modelo abstracto de problema.
Luis Lastra | http://www.severus.cl Estructura de Datos 2009-1
ArreglosRegistros
Tipo Abstracto de Datos
TAD
Tipo abstracto de datosUn tipo de dato abstracto (TDA) o Tipo abstracto de datos (TAD) es unmodelo compuesto por una colección de operaciones definidas sobre unconjunto de datos para el modelo.
AbstracciónLo primero que debemos enfrentar antes de programar es a unproblema.Como los problemas son complejos, debemos analizar solo lo masimportante.Luego de separar los detalles generales de los especificos podemosobtener un modelo abstracto de problema.
Luis Lastra | http://www.severus.cl Estructura de Datos 2009-1
ArreglosRegistros
Tipo Abstracto de Datos
Ejemplo gráfico
Luis Lastra | http://www.severus.cl Estructura de Datos 2009-1
ArreglosRegistros
Tipo Abstracto de Datos
Ejemplo gráfico
Luis Lastra | http://www.severus.cl Estructura de Datos 2009-1
ArreglosRegistros
Tipo Abstracto de Datos
Ejemplo gráfico
Figura: Abstracción Gatuna
Luis Lastra | http://www.severus.cl Estructura de Datos 2009-1
ArreglosRegistros
Tipo Abstracto de Datos
TAD
¿Que debemos considerar?Datos afectados.
Operaciones identificadas.
Luis Lastra | http://www.severus.cl Estructura de Datos 2009-1
ArreglosRegistros
Tipo Abstracto de Datos
TAD
¿Que debemos considerar?Datos afectados.Operaciones identificadas.
Luis Lastra | http://www.severus.cl Estructura de Datos 2009-1
ArreglosRegistros
Tipo Abstracto de Datos
TAD
Otro ejemplo¿Que pasa si necesitamos hacer una abstracción de un perro? ¿Que datosafectados veremos? ¿Que operaciones identificadas podemos apreciar?Todo esto depende de las necesidades de nuestro modelo a realizar.
Luis Lastra | http://www.severus.cl Estructura de Datos 2009-1
ArreglosRegistros
Tipo Abstracto de Datos
TAD
¿Perreando?Ok! hagamos entonces una abstracción con los datos y operaciones masgenericas de un perro. Nuestro objetivo es generar un modelo que seaplique a todos los perros existentes, donde por ende, debe ser abstracto.Hagamos algo sencillo, no nos compliquemos.
Definitivamente .... perreandoNuestro perro tiene nombre, raza y la cantidad de ladridos queda.Nuestro perro Ladra y Come.
Excelente!Ahora tenemos un modelo abstracto de nuestro perro.
Luis Lastra | http://www.severus.cl Estructura de Datos 2009-1
ArreglosRegistros
Tipo Abstracto de Datos
TAD
¿Perreando?Ok! hagamos entonces una abstracción con los datos y operaciones masgenericas de un perro. Nuestro objetivo es generar un modelo que seaplique a todos los perros existentes, donde por ende, debe ser abstracto.Hagamos algo sencillo, no nos compliquemos.
Definitivamente .... perreandoNuestro perro tiene nombre, raza y la cantidad de ladridos queda.Nuestro perro Ladra y Come.
Excelente!Ahora tenemos un modelo abstracto de nuestro perro.
Luis Lastra | http://www.severus.cl Estructura de Datos 2009-1
ArreglosRegistros
Tipo Abstracto de Datos
TAD
¿Perreando?Ok! hagamos entonces una abstracción con los datos y operaciones masgenericas de un perro. Nuestro objetivo es generar un modelo que seaplique a todos los perros existentes, donde por ende, debe ser abstracto.Hagamos algo sencillo, no nos compliquemos.
Definitivamente .... perreandoNuestro perro tiene nombre, raza y la cantidad de ladridos queda.Nuestro perro Ladra y Come.
Excelente!Ahora tenemos un modelo abstracto de nuestro perro.
Luis Lastra | http://www.severus.cl Estructura de Datos 2009-1
ArreglosRegistros
Tipo Abstracto de Datos
Representación de un TAD
TAD Boolean ( VALORES: booleanos; Operaciones: Not, And, Or)Sintaxis
* TRUE: → Boolean* FALSE: → BooleanNot(Boolean) → BooleanAnd(Boolean, Boolean) → BooleanOr(Boolean, Boolean) → Boolean
Semántica ∀ e de tipo booleanNot(true) → FalseNot(False) → TrueAnd(e,True) → eAnd(e,False) → FalseOr(e,True) → TrueOr(e, False) → e
Luis Lastra | http://www.severus.cl Estructura de Datos 2009-1
ArreglosRegistros
Tipo Abstracto de Datos
Representación de un TAD
TAD Enteros positivos ( VALORES: Numeros Enteros positivos Booleanos;Operaciones: Cero, Sucesor, Antecesor, Suma, Resta, Producto)Sintaxis
* Cero: → Entero* Sucesor(Entero): → Entero* Antecesor(Entero) → EnteroSuma(Entero, Entero) → EnteroResta(Entero, Entero) → EnteroProducto(Entero, Entero) → Entero
Semántica ∀ m,n de tipo enteroSucesor(Antecesor(n)) → nSuma(n, Sucesor(m)) → Sucesor(Suma(n,m))Resta(n, Cero) → nResta(n,Sucesor(m) → Antecesor(resta(n,m))Producto(n, Sucesor(m)) → Suma(Producto(n,m),n)Sucesor(n) = Sucesor(m) → n = m
Luis Lastra | http://www.severus.cl Estructura de Datos 2009-1
ArreglosRegistros
Tipo Abstracto de Datos
TAD
Ocultación de la información o EncapsulamientoProtección de la implementación en caso de modificación. Proteger unadecisión de diseño supone proporcionar una interfaz estable que proteja elresto del programa de la implementación. Esto refiere a permitir laextensibilidad del código sin necesidad de grandes modificaciones a cadaparte del programa en si. Quienes usen nuestro código deben saber quees lo que hace, pero no es necesario saber como lo hace.
Luis Lastra | http://www.severus.cl Estructura de Datos 2009-1
ArreglosRegistros
Tipo Abstracto de Datos
Ejemplo gráfico
Figura: Encapsulamiento Gatuno
Luis Lastra | http://www.severus.cl Estructura de Datos 2009-1
ArreglosRegistros
Tipo Abstracto de Datos
TAD
ModularidadLa modularidad descompone un programa en un pequeño número deabstracciones independientes unas de otras pero fáciles de conectar entresí. Un módulo se caracteriza principalmente por su interfaz y suimplementación. La programación modular sigue el criterio de ocultaciónde información: si no se necesita algún tipo de información, no se debetener acceso a ella.
Aspectos importantesLa modularidad es un aspecto muy importante en los TAD, ya que es elreflejo de la independencia de la especificación y la implementación. Es lademostración de que un TAD puede funcionar con diferentesimplementaciones. Además de esto, la programación modular ofrece otrasventajas, como por ejemplo un mejor reparto del trabajo y una detecciónde fallos mucho mejor.
Luis Lastra | http://www.severus.cl Estructura de Datos 2009-1
ArreglosRegistros
Tipo Abstracto de Datos
Ejemplo gráfico
Figura: Modularidad Gatuna
Luis Lastra | http://www.severus.cl Estructura de Datos 2009-1
ArreglosRegistros
Tipo Abstracto de Datos
Basta de palabrerias
¿Como aplicamos todo esto en C?La respuesta es tan sencilla como que deben realizar una libreria estáticapara ejemplificar todo lo anteriormente comentado. En el archivo tar.gzque acompaña a esta presentación está la respuesta, indicaciones yejemplos.
Hecho con LATEX
Luis Lastra | http://www.severus.cl Estructura de Datos 2009-1
top related