estructuras de datos y tipos de datos abstractos

26
Arreglos Registros Tipo Abstracto de Datos Estructuras de datos y tipos abstractos de datos Unidad 1 Luis Lastra Cid [email protected] Instituto Profesional Virginio Gómez 2009-1 Luis Lastra | http://www.severus.cl Estructura de Datos 2009-1

Upload: luis-lastra

Post on 24-May-2015

45.640 views

Category:

Education


6 download

DESCRIPTION

Primera unidad de la asignatura de Estructuras de datos del Instituto Profesional Virginio Gómez. Archivos con librerias estáticas, manuales paso a paso, códigos, etc en http://www.severus.cl

TRANSCRIPT

Page 1: Estructuras de datos y tipos de datos abstractos

ArreglosRegistros

Tipo Abstracto de Datos

Estructuras de datos y tipos abstractos de datosUnidad 1

Luis Lastra Cid [email protected]

Instituto Profesional Virginio Gómez

2009-1

Luis Lastra | http://www.severus.cl Estructura de Datos 2009-1

Page 2: Estructuras de datos y tipos de datos abstractos

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

Page 3: Estructuras de datos y tipos de datos abstractos

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

Page 4: Estructuras de datos y tipos de datos abstractos

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

Page 5: Estructuras de datos y tipos de datos abstractos

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

Page 6: Estructuras de datos y tipos de datos abstractos

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

Page 7: Estructuras de datos y tipos de datos abstractos

ArreglosRegistros

Tipo Abstracto de Datos

Antonces podemos representar a ....

Figura: Metalero

Figura: EMO

Luis Lastra | http://www.severus.cl Estructura de Datos 2009-1

Page 8: Estructuras de datos y tipos de datos abstractos

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

Page 9: Estructuras de datos y tipos de datos abstractos

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

Page 10: Estructuras de datos y tipos de datos abstractos

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

Page 11: Estructuras de datos y tipos de datos abstractos

ArreglosRegistros

Tipo Abstracto de Datos

Ejemplo gráfico

Luis Lastra | http://www.severus.cl Estructura de Datos 2009-1

Page 12: Estructuras de datos y tipos de datos abstractos

ArreglosRegistros

Tipo Abstracto de Datos

Ejemplo gráfico

Luis Lastra | http://www.severus.cl Estructura de Datos 2009-1

Page 13: Estructuras de datos y tipos de datos abstractos

ArreglosRegistros

Tipo Abstracto de Datos

Ejemplo gráfico

Figura: Abstracción Gatuna

Luis Lastra | http://www.severus.cl Estructura de Datos 2009-1

Page 14: Estructuras de datos y tipos de datos abstractos

ArreglosRegistros

Tipo Abstracto de Datos

TAD

¿Que debemos considerar?Datos afectados.

Operaciones identificadas.

Luis Lastra | http://www.severus.cl Estructura de Datos 2009-1

Page 15: Estructuras de datos y tipos de datos abstractos

ArreglosRegistros

Tipo Abstracto de Datos

TAD

¿Que debemos considerar?Datos afectados.Operaciones identificadas.

Luis Lastra | http://www.severus.cl Estructura de Datos 2009-1

Page 16: Estructuras de datos y tipos de datos abstractos

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

Page 17: Estructuras de datos y tipos de datos abstractos

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

Page 18: Estructuras de datos y tipos de datos abstractos

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

Page 19: Estructuras de datos y tipos de datos abstractos

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

Page 20: Estructuras de datos y tipos de datos abstractos

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

Page 21: Estructuras de datos y tipos de datos abstractos

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

Page 22: Estructuras de datos y tipos de datos abstractos

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

Page 23: Estructuras de datos y tipos de datos abstractos

ArreglosRegistros

Tipo Abstracto de Datos

Ejemplo gráfico

Figura: Encapsulamiento Gatuno

Luis Lastra | http://www.severus.cl Estructura de Datos 2009-1

Page 24: Estructuras de datos y tipos de datos abstractos

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

Page 25: Estructuras de datos y tipos de datos abstractos

ArreglosRegistros

Tipo Abstracto de Datos

Ejemplo gráfico

Figura: Modularidad Gatuna

Luis Lastra | http://www.severus.cl Estructura de Datos 2009-1

Page 26: Estructuras de datos y tipos de datos abstractos

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