Sunteți pe pagina 1din 19

TTULO: ESTRUCTURA DE DATOS

TUTOR:

Ttulo: ESTRUCTURA DE DATOS EN LA ROBOTICA


Universitario: ALBERTO
ASISTIRI
LIZARES
MONRROY
POMA
Fecha:

Carrera: INGENIERIA GAS Y PETROLEO


Asignatura: ESTRUCTURA DE DATOS
Grupo: B

ASIGNATURA: REGISTRO DE POZO


CARRERA: LICENCIATURA EN INGENIERA GAS Y PETRLEO 1
TTULO: ESTRUCTURA DE DATOS
TUTOR:

Docente: ING.ADHEMAR HUGO RAMIREZ CASTELLON


Periodo Acadmico Semestre: 7MO SEMESTRE
Subsede: LA PAZ

RESUMEN:

En la prctica, la mayor parte de informacin til no aparece aislada en forma de


datos simples, sino que lo hace de forma organizada y estructurada. Los diccionarios,
guas, enciclopedias, etc., son colecciones de datos que seran intiles si no
estuvieran organizadas de acuerdo con unas determinadas reglas. Adems, tener
estructurada la informacin supone ventajas adicionales, al facilitar el acceso y el
manejo de los datos. Por ello parece razonable desarrollar la idea de la agrupacin
de datos, que tengan un cierto tipo de estructura y organizacin interna.

Como tendremos ocasin de ver, la seleccin de una estructura de datos frente a


otra, a la hora de programar es una decisin importante, ya que ello influye
decisivamente en el algoritmo que vaya a usarse para resolver un determinado
problema. El objetivo de este captulo no es slo la descripcin de las distintas
estructuras, sino tambin la comparacin de las mismas en trminos de utilidad para
la programacin. De hecho, se trata de dar una idea, acerca de los pros y contras de
cada una de ellas con el propsito final de justificar la ya citada ecuacin de:
PROGRAMACION = ESTRUCTURAS DE DATOS + ALGORITMOS

Pilas ,Colas ,Estructura de Datos ,Colas Circulares, Listas Enlazadas, Vectores


,Matrices, Arreglos.
ASIGNATURA: REGISTRO DE POZO
CARRERA: LICENCIATURA EN INGENIERA GAS Y PETRLEO 2
TTULO: ESTRUCTURA DE DATOS
TUTOR:

ASIGNATURA: REGISTRO DE POZO


CARRERA: LICENCIATURA EN INGENIERA GAS Y PETRLEO 3
TTULO: ESTRUCTURA DE DATOS
TUTOR:

CAPITULO I. INTRODUCCION

CAPITULO II. INGENIERIA DEL PROYECTO

2. CONCEPTO DE DATOS ESTRUCTURADOS:

Empecemos recordando que un dato de tipo simple, no est compuesto de otras


estructuras, que no sean los bits, y que por tanto su representacin sobre el ordenador
es directa, sin embargo existen unas operaciones propias de cada tipo, que en cierta
manera los caracterizan. Una estructura de datos es, a grandes rasgos, una coleccin
de datos (normalmente de tipo simple) que se caracterizan por su organizacin y las
operaciones que se definen en ellos.

Por tanto, una estructura de datos vendr caracterizada tanto por unas ciertas
relaciones entre los datos que la constituyen ( el orden de las componentes de un
vector de nmeros reales), como por las operaciones posibles en ella. Esto supone
que podamos expresar formalmente, mediante un conjunto de reglas, las relaciones y
operaciones posibles (tales como insertar nuevos elementos o como eliminar los ya
existentes). Por el momento y a falta de otros, pensemos en un vector de nmeros,
como el mejor ejemplo de una estructura de datos.

Llamaremos dato de tipo estructurado a una entidad, con un solo identificador,


constituida por datos de otro tipo, de acuerdo con las reglas que definen cada una de
las estructuras de datos. Por ejemplo: una cadena est formada por una sucesin de
caracteres, una matriz por datos simples organizados en forma de filas y columnas y
ASIGNATURA: REGISTRO DE POZO
CARRERA: LICENCIATURA EN INGENIERA GAS Y PETRLEO 4
TTULO: ESTRUCTURA DE DATOS
TUTOR:

un archivo, est constituido por registros, stos por campos, que se componen, a su
vez, de datos de tipo simple. Por un abuso de lenguaje, se tiende a hacer sinnimos,
el dato estructurado con su estructura correspondiente. Aunque ello evidentemente no
es as, a un primer nivel, en este libro, asumiremos esta identificacin.

Para muchos propsitos es conveniente tratar una estructura de datos como si fuera
un objeto individual y afortunadamente, muchos lenguajes de programacin permiten
manipular estructuras completas como si se trataran de datos individuales, de forma
que los datos estructurados y simples se consideran a menudo por el programador de
la misma manera. As a partir de ahora un dato puede ser tanto un entero como una
matriz, por nombrar dos ejemplos.

Las estructuras de datos son necesarias tanto en la memoria principal como en la


secundaria, de forma que en este captulo nos centraremos en las correspondientes a
la memoria principal, dejando para el captulo siguiente las estructuras ms adecuadas
para el almacenamiento masivo de datos.

TIPOS DE DATOS ESTRUCTURADOS:

Los datos de tipo simple tienen una representacin conocida en trminos de espacio
de memoria. Sin embargo, cuando nos referimos a datos estructurados esta
correspondencia puede no ser tan directa; por ello vamos a hacer una primera
clasificacin de los datos estructurados en: contiguos y enlazados. Las estructuras
contiguas o fsicas son aquellas que al representarse en el hardware del ordenador, lo
hacen situando sus datos en reas adyacentes de memoria; un dato en una estructura
contigua se localiza directamente calculando su posicin relativa al principio del rea
de memoria que contiene la estructura.

Los datos se relacionan por su vecindad o por su posicin relativa dentro de la


estructura. Las estructuras enlazadas son estructuras cuyos datos no tienen por qu
situarse de forma contigua en la memoria; en las estructuras enlazadas los datos se

ASIGNATURA: REGISTRO DE POZO


CARRERA: LICENCIATURA EN INGENIERA GAS Y PETRLEO 5
TTULO: ESTRUCTURA DE DATOS
TUTOR:

relacionan unos con otros mediante punteros (un tipo de dato que sirve para apuntar
hacia otro dato y por tanto para determinar cul es el siguiente dato de la estructura).

La localizacin de un dato no es inmediata sino que se produce a travs de los


punteros que relacionan unos datos con otros.

Los datos estructurados se pueden clasificar, tambin, segn la variabilidad de su


tamao durante la ejecucin del programa en: estticos y dinmicos. Las estructuras
estticas son aquellas en las que el tamao ocupado en memoria, se define con
anterioridad a la ejecucin del programa que los usa, de forma que su dimensin no
puede modificarse durante la misma (de una matriz) aunque no necesariamente se
tenga que utilizar toda la memoria reservada al inicio (en todos los lenguajes de
programacin las estructuras estticas se representan en memoria de forma contigua).

Por el contrario, ciertas estructuras de datos pueden crecer o decrecer en tamao,


durante la ejecucin, dependiendo de las necesidades de la aplicacin, sin que el
programador pueda o deba determinarlo previamente: son las llamadas estructuras
dinmicas. Las estructuras dinmicas no tienen tericamente limitaciones en su
tamao, salvo la nica restriccin de la memoria disponible en el computador.

Estas dos clasificaciones nos ayudarn a exponer los distintos tipos de datos
estructurados, incidiendo en las ventajas e inconvenientes para su almacenamiento y
tratamiento, en trminos de la eficacia de una determinada aplicacin ya sea de
economa espacial (no emplear ms memoria de la necesaria) o temporal (emplear el
menor tiempo posible en las operaciones).

ESTRUCTURAS DE DATOS CONTIGUAS:

Vamos a estudiar una serie de agrupaciones de datos que son utilizadas en todos los
lenguajes de programacin, y que tienen en comn la ubicacin de sus datos en
zonas de memoria adyacentes.

ASIGNATURA: REGISTRO DE POZO


CARRERA: LICENCIATURA EN INGENIERA GAS Y PETRLEO 6
TTULO: ESTRUCTURA DE DATOS
TUTOR:

CADENA:

La cadena es quizs la estructura ms simple y se define como una secuencia de


caracteres que se interpretan como un dato nico. Su longitud puede ser fija o variable
por lo que, adems de saber que estn constituidas por caracteres alfanumricos,
hemos de conocer su longitud. En una variable tipo cadena se puede almacenar una
palabra, una frase, una matrcula de coche, una temperatura, etc. La longitud de una
cadena se puede determinar bien indicando al principio de la misma el nmero de
caracteres que contiene, bien situando un carcter especial denominado fin-de-
cadena. Los siguientes ejemplos muestran los dos mtodos de representar la cadena.

En el segundo caso el carcter elegido como fin-de-cadena ha sido el #. La cadena que no contiene
ningn carcter se denomina cadena vaca y su longitud es 0, que no tiene que ser confundida por una
cadena formada slo por blancos (o espacios), cuya longitud es igual al nmero de blancos que
contiene. De esta manera, una variable de tipo cadena de tamao 10 puede guardar cadenas de 10
caracteres, pero tambin de menos si indicamos dnde terminan los caracteres de la cadena. Por
ejemplo la cadena

Sobre datos de tipo cadena se pueden realizar las siguientes operaciones:

Asignacin: Guardar una cadena en una variable tipo cadena. Como en toda
asignacin a una variable, la cadena que se guarda puede ser una constante, una
variable tipo cadena o una expresin que produzca un dato tipo cadena. Por ejemplo:
nombre Oscar
nombre mi-nombre-de-pila

ASIGNATURA: REGISTRO DE POZO


CARRERA: LICENCIATURA EN INGENIERA GAS Y PETRLEO 7
TTULO: ESTRUCTURA DE DATOS
TUTOR:

Concatenacin: Formar una cadena a partir de dos ya existentes, yuxtaponiendo los


caracteres de ambas. Si se denota por // al operador concatenacin, el resultado de:
ab // cd es abcd
Ntese que las constantes de tipo cadena se escriben entre comillas, para no
confundirlos con nombres de variables u otros identificadores del programa.

Extraccin de subcadena: Permite formar una cadena (subcadena) a partir de otra


ya existente. La subcadena se forma tomando un tramo consecutivo de la cadena
inicial. Si NOMBRE es una variable de tipo cadena que contiene JOSE LUIS MAMANI
y denotamos por (n:m) la extraccin de m caracteres tomados a partir del lugar n,
entonces NOMBRE(6:5) es una subcadena que contiene LUIS.

Un caso particular de extraccin que se utiliza a menudo es el de extraer un nico


carcter. Por ello se suele proporcionar un mtodo directo: el nombre seguido por el
lugar que ocupa dentro de la cadena. As, en el ejemplo anterior, NOMBRE(6) = O =
NOMBRE(6:1).

Obtencin de longitud: La longitud de una cadena es un dato de tipo entero, cuyo


valor es el nmero de caracteres que contiene sta. En el primero de los dos mtodos
anteriores de representacin de cadenas, la longitud se obtiene consultando el nmero
de la primera casilla; en el segundo mtodo la longitud es el nmero de orden que
ocupa el carcter de fin-de-cadena, menos uno.

Comparacin de cadenas: Consiste en comparar las cadenas carcter a carcter


comenzando por el primero de la izquierda, igual que se consulta un diccionario. El
orden de comparacin viene dado por el cdigo de E/S del ordenador (ASCII
habitualmente). As la expresin booleana: Karen < Mara, se evaluara como
verdadera. Ntese que en los cdigos de E/S, las maysculas y las minsculas son
diferentes, dando lugar a resultados paradjicos en la comparacin, as pues, si el
cdigo de E/S es ASCII, donde las maysculas tienen cdigos inferiores a las
minsculas, se cumplira que Z < a.

ASIGNATURA: REGISTRO DE POZO


CARRERA: LICENCIATURA EN INGENIERA GAS Y PETRLEO 8
TTULO: ESTRUCTURA DE DATOS
TUTOR:

ARREGLO:

Es un conjunto de datos del mismo tipo almacenados en la memoria del ordenador en


posiciones adyacentes. Sus componentes individuales se llaman elementos y se
distinguen entre ellos por el nombre del arreglo seguido de uno o varios ndices o
subndices. Estos elementos se pueden procesar, bien individualmente, determinando
su posicin dentro del arreglo, bien como arreglo completo. El nmero de elementos
del arreglo se especfica cuando se crea ste, en la fase declarativa del programa,
definiendo el nmero de dimensiones o nmero de ndices del mismo y los lmites
mximo y mnimo que cada uno de ellos puede tomar, que llamaremos rango. Segn
sea este nmero, distinguiremos los siguientes tipos de arreglos:

unidimensionales (vectores)
bidimensionales (matrices)
multidimensionales

Por ello hablaremos de arreglos de dimensin 1, 2 o n, cuyo producto por el rango (o


rangos) especifica el nmero de elementos que lo constituyen. Este dato lo utiliza el
compilador para reservar el espacio necesario para almacenar todos los datos. Sus
elementos ocupando un rea contigua. Cada elemento ocupa el mismo nmero de
palabras, que ser el que corresponda al tipo de stos. No debemos olvidar que, al
nivel fsico, la memoria es lineal; por ello los elementos se colocan en la memoria
linealmente segn un orden prefijado de los ndices.

En el ejemplo de la figura el nmero de dimensiones es 2, su rango (3;5) y el nmero


total de elementos es 15.

FIGURA. REPRESENTACIN DE UN ARREGLO BIDIMENSIONAL.

ASIGNATURA: REGISTRO DE POZO


CARRERA: LICENCIATURA EN INGENIERA GAS Y PETRLEO 9
TTULO: ESTRUCTURA DE DATOS
TUTOR:

VECTORES:

Por motivos de simplicidad y mayor frecuencia de uso, a la hora de revisar las


operaciones con arreglos nos centraremos en los vectores, que adems presentan la
ventaja de ser estructuras ordenadas (slo existe orden total cuando tenemos
estructuras de una dimensin o lineales). Las notaciones algortmicas que utilizaremos
son:
nombre_vector = vector [inf . . sup] de tipo
nombre_vector nombre vlido del vector
inf .. sup lmites inferior y superior del rango
(valor entero que puede tomar el ndice)
tipo tipo de los elementos del vector
{ entero, real, carcter}

La declaracin de un vector supone una mera reserva de espacio, pudindose asumir


que, hasta que asignemos valores por cualquier mecanismo a sus distintos elementos,
estamos ante una estructura vaca.
NUMEROS = vector [1.10] de real
Significa que NUMEROS es un vector, que podr contener como elementos, al menos
10 nmeros de tipo real, cuyos ndices varan desde el 1 hasta el 10.
FORTRAN BASIC
REAL X(10) DIM X(10) AS
SINGLE
PASCAL C
x: array[1..10] of real float x[10]

Es importante sealar que podemos implementar arreglos cuyos elementos sean a su


vez cadenas o elementos de otro tipo, as podemos pensar en situaciones como la
siguiente, durante la fase declarativa
tipo: palabra = cadena[16]

ASIGNATURA: REGISTRO DE POZO


CARRERA: LICENCIATURA EN INGENIERA GAS Y PETRLEO 10
TTULO: ESTRUCTURA DE DATOS
TUTOR:

COCHES = vector [1.9] de palabra


Lo que nos permitir manipular en un solo vector hasta 9 cadenas conteniendo como
mximo 16 caracteres cada una. Con lo cual COCHES puede contener una
informacin tal como:

Ya hemos dicho que las operaciones sobre arreglos se pueden realizar con elementos
individuales o sobre la estructura completa mediante las correspondientes
instrucciones y estructuras de control del lenguaje. Las operaciones sobre elementos
del vector son:

Asignacin: Tiene el mismo significado que la asignacin de un valor a una variable


no dimensionada, ya que un vector con su ndice representa la misma entidad que una
variable no dimensionada.
A[20] 5 asigna el valor 5 al elemento 20 del vector A
A[17] B asigna el valor de la variable B al elemento 17 del vector A

Acceso secuencial o recorrido del vector: Consiste en acceder a los elementos de


un vector para someterlos a un determinado proceso, tal como introducir datos
(escribir) en l, visualizar su contenido (leer), etc. la operacin de efectuar una accin
general sobre todos los elementos de un vector se la denomina recorrido y para ello
utilizaremos estructuras repetitivas, cuyas variables de control se utilizan. Como
subndices del vector, de forma que el incremento del contador del bucle producir el
tratamiento sucesivo de los elementos del vector.

ASIGNATURA: REGISTRO DE POZO


CARRERA: LICENCIATURA EN INGENIERA GAS Y PETRLEO 11
TTULO: ESTRUCTURA DE DATOS
TUTOR:

EJEMPLO:

Supongamos que queremos procesar los primeros elementos de un vector PUNTOS,


previamente declarado, realizando las siguientes operaciones desde 1 hasta LMITE
(donde este valor debe necesariamente ser menor que el lmite superior del rango):
a) lectura del arreglo
b) clculo de la suma de los valores del arreglo
c) clculo de la media de los valores. Escribir el algoritmo correspondiente.

BSQUEDA EN UN VECTOR: Esta operacin, relacionada con la recuperacin de


informacin, consiste en encontrar un determinado valor dentro del vector, obteniendo
su posicin en el mismo en caso que ste exista o declarar la bsqueda como fallida
en caso de no encontrarlo.

La experiencia a la hora de buscar un dato entre una coleccin de ellos nos dice que
este proceso vara sensiblemente segn que stos estn o no ordenados; por esta
razn presentaremos dos mtodos bsicos, segn que el vector est desordenado u
ordenado.

ASIGNATURA: REGISTRO DE POZO


CARRERA: LICENCIATURA EN INGENIERA GAS Y PETRLEO 12
TTULO: ESTRUCTURA DE DATOS
TUTOR:

Una manera ms eficaz de realizar una bsqueda secuencial consiste en modificar el


algoritmo utilizando un elemento centinela. Este elemento se agrega al vector al final
del mismo. El valor del elemento centinela es el del argumento. El propsito de este
elemento centinela, A[n+1], es significar que la bsqueda siempre tendr xito. El
elemento A[n+1] sirve como centinela y se le asigna el valor de t antes de iniciar la
bsqueda. En cada paso se evita la comparacin de i con n y por consiguiente este
algoritmo ser preferible al mtodo anterior. Si el ndice alcanzase el valor n+1,
supondr que el argumento no pertenece al vector original y en consecuencia la
bsqueda no tiene xito.

ASIGNATURA: REGISTRO DE POZO


CARRERA: LICENCIATURA EN INGENIERA GAS Y PETRLEO 13
TTULO: ESTRUCTURA DE DATOS
TUTOR:

Notemos que, a pesar de esta mejora, el nmero de comparaciones que hemos de


efectuar es del orden de la magnitud del vector y si sta es muy grande el tiempo
necesario para la bsqueda puede ser alto. Por ello, puede valer la pena tener
ordenado el vector pues, como veremos ahora, las bsquedas sobre vectores
ordenados son sensiblemente ms rpidas.

Bsqueda binaria: Se aplica a vectores cuyos datos han sido previamente ordenados
y es un ejemplo del uso del divide y vencers para localizar el valor deseado. Ms
adelante, trataremos los algoritmos (y su coste) para ordenar un vector; sin embargo
ahora supondremos que esta ordenacin ya ha tenido lugar. El algoritmo de bsqueda
binaria se basa en los siguientes pasos:

Examinar el elemento central del vector; si ste es el elemento buscado,


entonces la bsqueda ha terminado
En caso contrario, se determina si el elemento buscado est en la primera o en
la segunda mitad del vector (de aqu el nombre de binario) y a continuacin se

ASIGNATURA: REGISTRO DE POZO


CARRERA: LICENCIATURA EN INGENIERA GAS Y PETRLEO 14
TTULO: ESTRUCTURA DE DATOS
TUTOR:

repite este proceso, utilizando el elemento central del subvector


correspondiente.
EJEMPLO:
Considerar el siguiente vector ordenado de nueve elementos enteros, donde queremos
buscar el valor 2983.

Para buscar el elemento 2983, se examina el nmero central 2898, situado en la quinta
posicin, que resulta ser distinto. Al ser 2983 mayor que 2898, se desprecia la primera
mitad del vector, quedndonos con la segunda:

Se examina ahora el nmero central 3005, situado en la posicin 7, que resulta ser
distinto. Al ser 2983 menor que 3005, nos quedamos con la primera mitad del vector:

Finalmente encontramos que el valor buscado coincide con el central. Ntese que si
el valor buscado hubiera sido, por ejemplo, el 2900, la bsqueda habra finalizado con
fracaso al no quedar mitades donde buscar. Vamos a dar el algoritmo de bsqueda
binaria para encontrar un elemento K, en un vector de elementos X(1), X(2),..., X(n),
previamente clasificados en orden ascendente (ordenado en orden creciente si los
datos son numricos, o alfabticamente si son caracteres).

El proceso de bsqueda debe terminar normalmente conociendo si la bsqueda ha


tenido xito (se ha encontrado el elemento) o bien no ha tenido xito (no se ha
encontrado el elemento), y normalmente se deber devolver la posicin del elemento
buscado dentro del vector.

ASIGNATURA: REGISTRO DE POZO


CARRERA: LICENCIATURA EN INGENIERA GAS Y PETRLEO 15
TTULO: ESTRUCTURA DE DATOS
TUTOR:

Las variables enteras BAJO, CENTRAL, ALTO, indican los lmites inferior, central y
superior del intervalo de bsqueda, en cada subvector que sucesivamente se est
considerando, durante la bsqueda binaria.

La funcin ent, entenderemos que obtiene un entero redondendolo por defecto.


El funcionamiento del algoritmo de bsqueda binaria, en un vector de
enteros, se ilustra en la Figura 5.2 para dos bsquedas: los enteros 8 y 11 que
finalizan respectivamente con xito (localizado el elemento) y sin xito (no
encontrado el elemento)
Aunque dejamos para un captulo posterior el anlisis de la complejidad
algortmica, con el nico objeto de ilustrar la diferencia entre los dos tipos de
bsqueda, digamos que para un vector de 1000 elementos, la bsqueda secuencial
supone efectuar un promedio de unas 500 comparaciones, mientras que la binaria,
resuelve el problema con slo 10 en el peor de los casos. Otra cuestin, es el
esfuerzo que nos suponga ordenar el vector, pero esto lo veremos ms adelante.

ASIGNATURA: REGISTRO DE POZO


CARRERA: LICENCIATURA EN INGENIERA GAS Y PETRLEO 16
TTULO: ESTRUCTURA DE DATOS
TUTOR:

CAPITULO.III OBJETIVOS DE LA INVESTIGACION


OBJETIVO GENERAL:
OBJETIVO ESPECIFICOS:

ASIGNATURA: REGISTRO DE POZO


CARRERA: LICENCIATURA EN INGENIERA GAS Y PETRLEO 17
TTULO: ESTRUCTURA DE DATOS
TUTOR:

CAPITULO.IV CONCLUSION

ASIGNATURA: REGISTRO DE POZO


CARRERA: LICENCIATURA EN INGENIERA GAS Y PETRLEO 18
TTULO: ESTRUCTURA DE DATOS
TUTOR:

BIBLIOGRAFIA

ASIGNATURA: REGISTRO DE POZO


CARRERA: LICENCIATURA EN INGENIERA GAS Y PETRLEO 19

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