Sunteți pe pagina 1din 14

UNIVERSIDAD NACIONAL AUTNOMA DE MXICO

FACULTAD DE CONTADURA Y ADMINISTRACIN

Licenciatura En Infor !tica

Programa cin
Datos)

(Estructuras de

Autor: L.I. Mara de Lourdes Isabel Ponce Vsquez

AGOSTO 2012 - DICIE !"E 2012

Unidad 1. Fundamentos de Estructuras de Datos Pg. 2

Contenido
UNIVERSIDAD NACIONAL AUTNOMA DE MXICO..................................................................1 FACULTAD DE CONTADURA Y ADMINISTRACIN....................................................................1 Licenciatura En In !r"#tica......................................................................................................................1 Aut!r$ L.I. Mar%a &e L!ur&e' I'a(e) ........................................................................................................1 O*+ETIVO ,ENERAL............................................................................................................................Uni&a& 1. FUNDAMENTOS DE ESTRUCTURAS DE DATOS............................................................

Unidad 1. Fundamentos de Estructuras de Datos Pg. 3

OBJETIVO GENERAL

Al terminar el curso, el alumno implantar y manipular las estructuras de datos estticas y dinmicas ms importantes que todo buen programador debe conocer, definiendo estructuras lgicas de datos que le permitan hacer un uso ms eficiente del espacio de memoria, de minimizar los tiempos de acceso, as como de lograr formas ms efectivas de insercin y eliminacin de datos en estructuras de almacenamiento.

Unidad 1. Fundamentos de Estructuras de Datos Pg. 4

Unidad 1. FUNDAMENTOS DE ESTRUCTURAS DE DATOS


Como ya sabemos, las computadoras fueron diseadas o ideadas como una herramienta mediante la cual podemos realizar operaciones de clculo complicadas en un lapso de mnimo tiempo. ero la mayora de las aplicaciones que se utilizan actualmente requieren de almacenamiento y acceso de grandes cantidades de informacin. !ran parte de la "nformtica se basa en el estudio de algoritmos que permitan dar solucin a diversos problemas para despu#s llevarlos a la programacin$ estos algoritmos requieren manipular datos y para hacerlo, generalmente esos datos deben estar relacionados %estructurados& de alguna forma en particular. or ello, ya que uno de los problemas ms serios con los que se enfrentar el programador es, precisamente, la estructuracin y almacenamiento de la informacin, la "nformtica requiere el estudio de los datos, su estructura y manipulacin.

1.1. Abstraccin
'n esta unidad, se tratar inicialmente el concepto de abstra podemos encontrar en programacin, particularmente la abstra i!n y las diversas formas de abstraccin que i!n de datos.

1.1.1. Definicin
Abstraer es omitir detalles irrelevantes a las necesidades inmediatas. '(cluir detalles no deseados o no significativos al problema a resolver. 's la capacidad para encapsular y aislar la informacin del diseo y e)ecucin. 'n el desarrollo de nuestra comprensin de fenmenos comple)os la herramienta ms potente disponible por el intelecto humano es la abstraccin. *a abstraccin resulta de un reconocimiento de similitudes entre ob)etos, situaciones o procesos del mundo real y la decisin de concentrarse en estas similitudes e ignorar inicialmente las diferencias. +,oare*a abstraccin genera un modelo mental, que es una vista simplificada de cmo funcionan las cosas para interactuar con ellas, de esta forma, el diseo de soft.are produce modelos que pueden ser mane)ados por una computadora, los cuales deben ser mas sencillos que el sistema imitado o sern in/tiles. *a abstraccin nos permite simplificar el anlisis y resolucin de un problema separando las caractersticas que son relevantes de aquellas que no lo son. *a relevancia depender fuertemente del conte(to. *a abstraccin fue evolucionando desde la aparicin de los primeros lengua)es de programacin %instrucciones binarias que manipulaban directamente las interrupciones de la computadora& hasta la agrupacin de instrucciones primitivas que forman macro instrucciones que permiten distanciarse de las caractersticas arquitectnicas especficas del hard.are escribiendo soft.are para propsito gen#rico sin importar sobre qu# mquina se e)ecuta el programa.

1.1.2.

i!eles de Abstraccin

*a me)or forma de controlar la comple)idad es aumentar el nivel de abstraccin. Aunque la abstraccin es un concepto general aplicable en cualquier campo nosotros estamos interesados en la abstraccin que proporciona un lengua)e de programacin. 'n este sentido la aportacin ms importante ha sido el desarrollo de los lengua)es de alto nivel, #stos nos permiten utilizar ciertas construcciones de alto nivel en lugar de una secuencia de instrucciones mquina.

Unidad 1. Fundamentos de Estructuras de Datos Pg. 5

,acer encontrado 0 falso ,acer i 0 "i#ite$in%erior%a& 1ientras i ( li#ite$s&'erior%a& hacer 2i a+i- 0 ( entonces ,acer z 0 i ,acer encontrado 0 verdadero 3in si ,acer i 0 i 4 5 3in mientras

,acer encontrado 0 falso ,acer i 0 "i#ite$s&'erior%a& 1ientras i ) "i#ite$in%erior%a& hacer 2i a+i- 0 ( entonces ,acer z 0 i ,acer encontrado 0 verdadero 3in si ,acer i 0 i 65 3in mientras

Dos algoritmos A/n as, el nivel de abstraccin proporcionado por un lengua)e de programacin resulta insuficiente. Consid#rese, por e)emplo, los algoritmos anteriores, los cules tienen una traslacin directa a cualquier lengua)e de alto nivel, ambos buscan la ocurrencia de x en el vector a, en el primer algoritmo se busca la primera ocurrencia y en el segundo la /ltima. As, desde el punto de vista del lengua)e de alto nivel correspondera a programas distintos y, sin embargo, podra ser que ambos estuviesen escritos con el mismo ob)etivo7 determinar si e(iste alguna ocurrencia de x en a y en su caso obtener el ndice z de dicha ocurrencia. 8na forma de aumentar el nivel de abstraccin de los lengua)es de programacin sera el disear un lengua)e de muy alto nivel que incorporara un con)unto de estructuras de datos generales y un con)unto de potentes primitivas para mane)ar dichas estructuras. 'n cuyo caso el problema anterior podra resolverse de la siguiente forma7 ,acer encontrado 0 esta$en%a, (&$ 2i encontrado entonces ,acer z 0 indice9de%a, (& 3in si siendo esta9en%a, (& e indice9de%a, (& primitivas del lengua)e que permiten determinar si ocurre x en a y retornar la posicin de dicha ocurrencia en a, respectivamente. 'l problema de disear un lengua)e de programacin del tipo indicado es que presumiblemente debera contener la mayor parte de las abstracciones que los usuarios demandaran. As aunque dispusi#ramos de tal lengua)e dada la gran cantidad de estructuras de datos que hay y de operaciones que se podran realizar con ellos sera inmane)able. 8na alternativa para aumentar el nivel de abstraccin de un lengua)e de programacin es que #ste incluya mecanismos que permitan construir al usuario sus propias abstracciones. 'l mecanismo ms com/n para tal fin es el uso de funciones y procedimientos, aunque e(isten otros mecanismos. :ebe tenerse en cuenta que las dos alternativas indicadas para aumentar el nivel de abstraccin de un lengua)e de programacin no son dis)untas. As, por e)emplo, los lengua)es de programacin ofrecen diversas estructuras de datos y el usuario puede definir nuevas abstracciones. or otro lado, un sistema puede visualizarse desde diversos puntos de vista %niveles de abstraccin& dependiendo de quien y para qu# se analiza la situacin. 'n una visin general de un sistema la abstraccin tendr generalizaciones$ en cambio, una visin para modificar el sistema e(igir una abstraccin detallada. ')emplo7 un auto desde el punto de vista del conductor, vendedor, fabricante, etc.

1.1.2.1. "erarqua de Abstracciones


*os diversos niveles de abstraccin se pueden organizar en )erarquas. 'n grandes problemas se organizan )erarquas de abstraccin de modo que en el primer nivel se definen los ob)etivos generales y los /ltimos niveles definen los detalles muy precisos.

1.1.#. Abstraccin en Pro$ra%acin


Unidad 1. Fundamentos de Estructuras de Datos Pg. 6

*a historia de la programacin es, en definitiva, un camino hacia un grado creciente de abstraccin7 *os lenguajes de alto nivel permitieron a los programadores abstraerse del sinfn de detalles de los lengua)es ensambladores, y traba)ar de un modo independiente de las mquinas concretas. *os procedimientos con parmetros %abstraccin por parametrizacin&, permiten dar un nombre a un con)unto comple)o de instrucciones y activarlas con una sola instruccin. *as construcciones creadas para sincronizar procesos en muchos lengua)es de programacin concurrente abstraen al programador de la necesidad de tener en cuenta si la mquina subyacente dispone de un solo procesador, de varios que comparten una memoria com/n, o si consiste en una red de computadoras. *as especificaciones formalizan el efecto de las instrucciones de un lengua)e sin tener que descender al detalle de cmo se e)ecutan en una computadora. *os tipos de datos abstractos permiten definir una coleccin de valores y de operaciones mediante una especificacin independiente de cualquier representacin.

1.1.#.1. Abstraccin en los len$ua&es de alto ni!el


Cuando la computacin estaba en su infancia, la mayora de los programas eran escritos en lengua)e ensamblador por un programador, y no se consideraran como grandes programas seg/n los estndares de hoy en da. A/n as, en la medida en que los programas se hicieron ms comple)os, los programadores encontraron ms dificultades para recordar toda la informacin que necesitaban para desarrollar o eliminar errores de sus programas. Aunque la introduccin de lengua)es de alto nivel resolvi algunas dificultades, al mismo tiempo increment las e(pectativas de la gente acerca de lo que podra hacer una computadora, de tal forma que slo provoc la aparicin de un mayor n/mero de problemas. As, a medida que se intentaban resolver problemas ms comple)os por medio de una computadora, mayor era la tarea que deba desarrollar el programador, rebasando la capacidad, aun de los me)ores programadores. 'n consecuencia, comenzaron a proliferar equipos de programadores que traba)aban con)untamente para emprender grandes tareas de programacin. 2e observ entonces un problema que a/n hoy no se ha abordado de forma completamente satisfactoria7 los sistemas de software son sistemas complejos con un alto grado de interconexin . *a intercone(in es la dependencia de una parte del cdigo de otra seccin de cdigo. 2urgieron as, diversas t#cnicas y mecanismos para tratar de reducir el problema de la comple)idad. recisamente la abstraccin es uno de estos mecanismos siendo, seguramente, el ms importante de todos ellos. 'l mecanismo de abstraccin permite descomponer de forma productiva un problema mediante el cambio del nivel de detalle a considerar, pero es algo intangible.

1.1.#.2. Abstraccin 'or 'ara%etrizacin


2eparando la definicin de una funcin de su invocacin, un lengua)e de programacin permite la abstraccin por parametrizacin. *a abstraccin por parametrizacin permite, mediante la introduccin de parmetros, representar un con)unto potencialmente infinito de clculos distintos mediante un simple programa de te(to que es una abstraccin de todos ellos.

Unidad 1. Fundamentos de Estructuras de Datos Pg. 7

rocedimiento intercambia %& var t 7 ;ipo:ato$ inicio hacer t 0 ( hacer ( 0 y hacer y 0 t fin rocedimiento sin parmetros

rocedimiento intercambia %(, y7 ;ipo:ato& var t 7 ;ipo:ato$ inicio hacer t 0 ( hacer ( 0 y hacer y 0 t fin rocedimiento con parmetros

As, en el caso del primer procedimiento, su invocacin /nicamente permite intercambiar los valores de las variables x e y, mientras que en el segundo caso su invocacin permite intercambiar los valores de cualquier par de variables de tipo ;ipo:ato que se utilicen como argumentos.

1.1.(. )i'os de Abstraccin


'n programacin e(isten principalmente dos categoras de abstraccin7 Abstraccin rocedimental o 3uncional Abstraccin de :atos

Cualquiera de ellas puede incorporar la abstraccin por parametrizacin.

1.1.(.1. Abstraccin Procedi%ental o *uncional


*a abstraccin procedimental es aquella que separa el propsito de un programa de su implementacin. 8n mdulo ya codificado se puede usar sin saber cmo resuelve un problema %algoritmo& tan slo con saber como se llama y sus parmetros. *a abstraccin procedimental permite e(tender las operaciones definidas por el lengua)e de programacin agregando nuevas, por e)emplo, la operacin intercambia. *a abstraccin procedimental, es decir, la idea de crear procedimientos y funciones e invocarlos mediante un nombre, fue uno de los primeros mecanismos de abstraccin que se usaron ampliamente en los lengua)es de programacin. *os procedimientos permitan que las tareas que se e)ecutaban varias veces, fueran agrupadas en un lugar para reutilizarlas, en vez de duplicar el cdigo una y otra vez. 'n este tipo de abstraccin lo que se destaca es qu hace la funcin y lo que se ignora es cmo lo hace. 'l usuario del procedimiento solo necesita conocer la especificacin de la abstraccin %el qu& y puede ignorar el resto de detalles %el cmo&. 'n este sentido el procedimiento otorga la posibilidad para la ocultacin de la informacin. ero los procedimientos no resolvan todos los problemas, en especial, no eran un mecanismo efectivo para la ocultacin de la informacin y resolvan slo parcialmente el problema de m/ltiples programadores que usaban los mismos nombres. Con los aos en el diseo de programas se dio un mayor #nfasis al diseo de procedimientos que a la organizacin de los datos. As, aparecieron los mdulos, que en cierto sentido pueden considerarse como una t#cnica me)orada de los procedimientos para crear y mane)ar espacios de nombres. *a modularidad y la abstraccin procedimental se complementan, la modularidad separa un problema en diversos procedimientos para resolverlo y la abstraccin procedimental genera una especificacin de cada procedimiento antes de codificarlo, esto implica que el algoritmo se puede modificar sin afectar el resto de la solucin al problema. *a abstraccin procedimental se basa en el uso de procedimientos y funciones sin preocuparse de cmo se implementan, esto es factible slo si se conoce qu# hace el procedimiento %sinta(is y semntica&. *a abstraccin procedimental se debe a que7

Unidad 1. Fundamentos de Estructuras de Datos Pg. 8

'l nombre del mdulo asigna una descripcin abstracta que captura el significado global del mdulo. 8sar el nombre en vez del cdigo permite al programador aplicar la accin en t#rminos de su descripcin de alto nivel en vez de los detalles de ba)o nivel. *os mdulos ocultan informacin de elementos locales ya que no se pueden usar fuera de ellos. 'l programador usa el ;A: sin conocer sus detalles internos. *os parmetros del mdulo sirven como interfaz p/blica del mdulo permitiendo crear entidades propias.

:ebe observarse, que una abstraccin funcional puede ser una funcin o un procedimiento.

1.1.(.2. Abstraccin de Datos


*a abstraccin de datos es aquella que se centra en las operaciones que se pueden realizar sobre un ;A: y no en cmo se almacenan los datos o cmo se realizan esas operaciones. *a abstraccin de datos es la tcnica de programacin que permite definir nuevos tipos de datos adecuados a la aplicacin que se desea realizar, esta permite usar los TA sin tener en cuenta cmo se implementaron . *os tipos de datos son abstracciones y el proceso de construir nuevos tipos se llama abstraccin de datos. 'n una abstraccin de datos lo que se destaca es qu son los valores del tipo de dato y cul es el efecto de las operaciones permitidas para el tipo %su especificacin& y lo que se ignora es cmo se representan y cmo se implementan las operaciones en t#rminos de #sta. 'l usuario del tipo de dato solo necesita conocer la especificacin de la abstraccin %qu son los valores y la especificacin de las operaciones& y puede ignorar el resto de detalles %el cmo&. 'sto permite que los programas usuarios del tipo de dato no dependan de la representacin elegida para el mismo, de forma que un cambio en la representacin %que puede tener por ob)eto me)orar la eficiencia espacial y<o la eficiencia de las operaciones& no afecta a #stos. *a abstraccin de datos permite agregar nuevos tipos de datos a los definidos en el lengua)e de programacin y un con)unto de operaciones para manipular los ob)etos de los nuevos tipos. or e)emplo, en C el tipo de dato Cliente no est predefinido pero podra incorporarse fcilmente definiendo dicho tipo )unto con un con)unto de funciones para, al menos, poder crearlos y poder acceder a sus campos caractersticos %rfc, nombre, domicilio&. 8na abstraccin de datos %tipo de dato o tipo abstracto de dato& es un nuevo tipo de dato ms un con)unto de operaciones que permiten manipular los ob)etos de dicho tipo.

1.1.+. )i'os de Datos Abstractos ,)AD AD) Abstract Data )-'e.


'l concepto de tipo de dato de los lengua)es de alto nivel y la programacin con mdulos, condu)o a la centralizacin de todos los datos de un cierto tipo ba)o el control de un mdulo administrador del tipo, de forma que con el tiempo se empezaron a aplicar las ideas de abstraccin y ocultacin de la informacin a los datos en lugar de a los procedimientos. ero los mdulos no resuelven algunos de los problemas del desarrollo de soft.are. 'n concreto los mdulos por s mismos no permiten realizar la creacin de ejemplares %instanciacin&, la cual es la capacidad para hacer copias m/ltiples de los datos, tarea que debera ser especialmente relevante para un mdulo administrador de tipo. 'l concepto de tipo de datos abstractos %o abstraccin de datos&$ propuesto hacia 5=>? por @ohn !uttag y otros investigadores, permiti resolver el problema. *os tipos de datos abstractos son una coleccin de datos y un con)unto de operaciones que act/an sobre esos datos. *os ;A: son los tipos de datos que define el programador, estos se manipulan de forma similar a los tipos de datos definidos por el sistema y son abstractos ya que el programador abstrae slo los elementos importantes del ob)eto del mundo real para crear el nuevo tipo de dato. Al igual que estos /ltimos, un tipo de datos abstracto corresponde a un con)unto de valores legales de datos y de un n/mero de operaciones primitivas que pueden e)ecutarse sobre ellos, operaciones que se definen
Unidad 1. Fundamentos de Estructuras de Datos Pg. 9

mediante una especificacin que es independiente de cualquier representacin. ara construir un tipo de datos abstracto, debemos ser capaces de7 '(portar una definicin de tipo. roporcionar un con)unto de operaciones que puedan usarse para manipular los e)emplares de tipo. roteger los datos asociados con el tipo de tal manera que se pueda operar con ellos slo mediante las operaciones provistas. Crear m/ltiples e)emplares del tipo.

*os ;A: proporcionan mecanismos para separar la interfaz y la implementacin del tipo de dato. *a implementacin de un ;A: consta de7 / *a representacin7 eleccin de las estructuras de datos. / *as operaciones7 eleccin de los algoritmos. *a interfaz se refiere a las operaciones y datos visibles al e(terior del ;A:. *os tipos de datos abstractos representaron un gran avance en la !ngenier"a del #oftware, de hecho la aplicacin de los mismos permiti me)orar notablemente el dise$o modular de los programas respecto al m#todo de diseo tradicional por refinamientos sucesivos basado en la abstraccin funcional. 2e solventaron, as, los inconvenientes que presentaba este /ltimo m#todo de diseo7 *os tipos de datos utilizados eran los predefinidos del lengua)e. 'sto introduca un desequilibrio, al tener que e(presar acciones abstractas en t#rminos de tipos concretos de ba)o nivel. *as decisiones de representacin de unos tipos en otro se tomaban demasiado temprano en el proceso de diseo. :ichas decisiones podran y deberan ser aplazadas hasta el momento en que se conocieran las operaciones que se van a necesitar para cada nuevo tipo.

*os detalles de representacin de los tipos estaban presentes en los algoritmos de alto nivel, oscureciendo innecesariamente su comprensin. *a correcta utilizacin de los ;A:s en el dise$o de programas da lugar a programas de gran modularidad y calidad7 son ms legibles, son ms fciles de mantener y son ms fciles de modificar.

*a razn de tales venta)as est en la diferencia entre el antiguo concepto de tipo de dato %con)unto de valores& y el nuevo que incluye sus operaciones. 2i se considera el tipo de dato como un con)unto de valores, entonces todo lo que se necesita para implementarlo es elegir una representacin de almacenamiento %o estructura de datos& para las variables del tipo, por tanto, si la representacin cambia tambi#n deben modificarse todos los programas que usan el tipo de dato. 2i por el contrario, se considera el tipo de dato como un con)unto de ob)etos )unto con un con)unto de operaciones para manipularlos implementadas en t#rminos de la representacin elegida y si los programas que utilizan el tipo de dato slo dependen de estas operaciones y no de la representacin, entonces un cambio de representacin slo obliga a modificar las operaciones, no siendo necesario modificar los programas que utilizan el tipo de dato. 'videntemente, para poder utilizar un tipo de dato de esta forma es necesario disponer de su especificacin$ es decir, de las caractersticas del tipo de dato y el significado de cada una de las operaciones definidas
Unidad 1. Fundamentos de Estructuras de Datos Pg. 10

%especificacin de funcin&. As, el fin que persigue el concepto de tipo abstracto de dato es separar el uso del tipo de dato de su implementacin. ara conseguir este ob)etivo el diseo de un ;A: se divide en dos partes7 la parte de especificacin la parte de implementacin
TAD

E"#ecificaci$n Sinta3i' Se"#ntica

I #%e entaci$n Re0re'entaci1n A)2!rit"!'

Composicin de un ;A: *a parte de especificacin define cmo se puede utilizar el tipo de dato y est formada por la sinta(is y la semntica %A "&. *a parte de implementacin define una posible realizacin del tipo de dato y est formada por la representacin %o estructura de datos& y los algoritmos correspondientes a las operaciones en t#rminos de la misma. :e este modo, para utilizar el tipo de dato no es necesario conocer su implementacin, a/n ms, es importante que el posible conocimiento de la misma se ignore por completo.

1.1.+.1. /s'ecificacin de un )AD


*a especificacin de un ;A: define cmo puede utilizarse un tipo de dato. :eber, por tanto, incluir una definicin %o descripcin& de los ob)etos del tipo de dato, adems como stos slo deben manipularse mediante las operaciones del TAD , la mayor parte de la especificacin consistir en e(plicar cmo deben utilizarse las operaciones y qu# es lo que hacen. Asicamente hay dos tipos de especificacin7 informal, mediante el uso del lengua)e natural formal, mediante a(iomas algebraicos 'n este caso se usar la primera por ser ms clara.

1.1.+.2. I%'le%entacin de un )AD


ara implementar un tipo de datos se elige una representacin, o estructura de datos, para los ob)etos y se realizan los algoritmos correspondientes a las operaciones en t#rminos de la representacin. *a representacin elegida debe permitir implementar las operaciones de forma eficiente y razonablemente simple, as como posibilitar el hecho de que algunas de las operaciones ms habituales se e)ecuten ms rpidamente. Como, normalmente, unas representaciones hacen ms eficientes unas operaciones que otras, hay que tener presente la posibilidad de realizar varias implementaciones. :ebe resaltarse el hecho de que normalmente e*istir+n ,arias i#'"e#enta iones 'ara &na #is#a es'e i%i a i!n.

1.1.+.#. Len$ua&es de Pro$ra%acin - )ADs


*a abstraccin de datos es una tcnica de dise$o de programas que promete un alto grado de modularidad y un desarrollo independiente de la implementacin de dicha abstraccin y de la aplicacin del programa. or tratarse de una t#cnica de diseo, su utilizacin es en su mayor parte independiente del lengua)e de programacin, sin embargo, el uso e implementacin de ;A:s con lengua)es de programacin que no los soportan convenientemente puede dar lugar a deficiencias en algunos aspectos.
Unidad 1. Fundamentos de Estructuras de Datos Pg. 11

1.2. /structuras de Datos


1.2.1. Definicin
*as estr& t&ras de datos en su forma ms general son colecciones de nodos o registros que mantienen importantes relaciones entre s" y cuya organizacin se caracteriza por las funciones de acceso que se usan para almacenar y acceder a elementos individuales de datos. 'sto quiere decir que las estructuras de datos estudian los ;A:, ya que definen los con)untos de datos relacionados y las operaciones %de almacena)e y acceso& que se realizan sobre ellos.

1.2.2. 0aractersticas
8na estructura de datos se caracteriza por lo siguiente7 uede descomponerse en los elementos que la forman. *a manera en que se colocan %almacenan& los elementos dentro de la estructura afectar la forma en que se realicen los accesos a cada elemento.

8n dato es una cantidad que toma un /nico valor que puede cambiar en cualquier momento. *os algoritmos de solucin de problemas deben incluir reglas de acceso a la estructura de datos. Bormalmente la eleccin de una estructura de datos depende de su funcin$ tras la seleccin, se elegir la me)or disposicin de los datos y por /ltimo se agregarn los valores. 'n consecuencia, los valores de los datos pueden cambiar frecuentemente, la disposicin con menos frecuencia y la estructura de los datos se modifica raramente. *a eleccin del m#todo adecuado para e(presar los datos de un problema es esencial para conseguir una buena solucin. 2i se hace una eleccin incorrecta, el algoritmo resultante puede ser muchas veces complicado y difcil o imposible de codificar. or el contrario, una buena eleccin de estructura de datos generar algoritmos ms claros, sencillos y rpidos.

1.2.#. 0lasificacin de las /structuras de Datos


ara su estudio, los tipos de datos se dividen en7
*a informacin que se procesa en la computadora est conformada por un con)unto de datos, que pueden ser simples o estructurados. *os datos simples ocupan slo una localidad de memoria, por lo tanto, una variable simple hace referencia a un /nico valor a la vez. *os datos estructurados ocupan un con)unto de localidades de memoria, a las cuales se hace referencia mediante un identificador /nico. Cada componente puede ser a su vez un dato simple o estructurado, sin embargo, los componentes bsicos de un tipo estructurado %los de nivel ms ba)o& son datos simples. :ebido a que por lo general tenemos que tratar con con)untos de datos y no con datos simples que por s solos no nos proporcionan informacin, es necesario tratar con estructuras de datos adecuadas a cada necesidad.

'ntero Bum#rico
Unidad 1. Fundamentos de Estructuras de Datos Pg. 12

:ecimal 2imple Caracter Bo Bum#rico *gico 'lemental Arreglo 'sttico Cegistro 'structurado :inmico ;ipo de :ato ila 3ila *ineal *igada *ista Compuesto %;A:& Drbol Bo *ineal :irigido !rafo Bo :irigido :oblemente *igada Ainario A A4 3ila 2imple 3ila Circular 3ila :oble 3ila de rioridad Apuntadores
8nidimensional %Eector& Aidimensional %1atriz& 1ultidimensional % oliedro&

1.2.#.1. )i'os de Datos /le%entales ,funda%entales o 'redefinidos..


2on aquellos datos cuya manipulacin y representacin se ha estandarizado en los lengua)es de programacin. Ti'os de Datos E"e#enta"es Si#'"es%& son aquellos datos que utilizan una sola posicin de memoria para ser almacenados. Ti'os de Datos E"e#enta"es Estr& t&rados%& son aquellos datos que utilizan ms de una posicin de memoria para ser almacenados pero son referenciados mediante un solo nombre. Ti'os de Datos E"e#enta"es Estr& t&rados Est+ti os%& son aquellos datos que durante la compilacin se les asigna un espacio de memoria, y #sta permanece inalterable a lo largo de la e)ecucin del programa. Ti'os de Datos E"e#enta"es Estr& t&rados Din+#i os%& son aquellos datos cuyo tamao no se determina desde el inicio del programa y por tanto, puede variar durante la e)ecucin del programa, utilizando tanto espacio de memoria como sea necesario, hasta el total de espacio disponible.

1.2.#.2. )i'os de Datos 0o%'uestos ,)AD.


2on aquellos datos cuya manipulacin y representacin requiere del ingenio del programador, y pueden ser implementados tanto de manera esttica como dinmica. Ti'os de Datos Co#'&estos Linea"es%& son aquellos datos donde a un elemento slo le sigue otro elemento. Ti'os de Datos Co#'&estos No Linea"es%& son aquellos datos donde a cada elemento pueden seguir varios elementos.

1.#. /stilo 'ara 'ro$ra%ar durante el curso


Unidad 1. Fundamentos de Estructuras de Datos Pg. 13

Con el fin de me)orar la calidad de los programas creados durante el curso, se proporciona una lista de caractersticas a cubrir en cada uno. / / / / / / / / / / 1odularizar con diseo descendente. 'vitar variables globales. :efinir constantes con nombres en solo may/sculas. Bo escribir cdigo espagueti. 'scribir rutinas cortas que hagan una sola cosa. 8sar adecuadamente los parmetros %por valor o referencia&. 8sar declaraciones de tipos %;:86 ;ipos :efinidos por el 8suario&. Agregar documentacin interna. 1ane)ar los errores. *egibilidad %usar min/sculas para funciones estndar y palabras reservadas, nombres significativos para los identificadores, may/sculas para constantes, capitalizar los nombres de identificadores, iniciar los nombres de variables con una letra que indique el tipo de dato que almacena %a 6 arreglo, c 6 carcter < cadena, e 6 entero, l 6 lgico, f 6 flotante, r 6 registro&, sangrado de F a G espacios, alinear instrucciones de control&. *as interfaces de usuario %ventanas de programa& deben incluir7 o Bombre del programa %;tulo&. o "nstrucciones al usuario para poder e)ecutarlo correctamente. o Confirmacin de los datos ingresados por el usuario. o 2i la pantalla que se est mostrando es una pantalla de salida, se deben mostrar tambi#n los datos de entrada %ingresados por el usuario&.

Tarea ,acer un resumen de esta unidad %m(imo 5 cuartilla, no olvidar conclusiones y bibliografa 6leer otras fuentes&. '(plicar7 5. Hu# es la abstraccin I. ara qu# se emplea la abstraccin en la programacin. F. Hu# es un ;A: ?. Hu# son las estructuras de datos G. Cules son las caractersticas de las estructuras de datos. '(plicar cules son las similitudes %si e(isten& y diferencias entre7 J. Abstraccin funcional y abstraccin de datos. >. 'specificacin y la implementacin de un ;A:. K. *os tipos de datos elementales y los compuestos. =. *os tipos de datos simples y estructurados. 5L. *os tipos de datos lineales y no lineales.

Unidad 1. Fundamentos de Estructuras de Datos Pg. 14

S-ar putea să vă placă și