Está en la página 1de 19

Estructura de Datos

ESD-243
UNIDAD V:

CONTENIDO

1. Importancia y utilización de las Estructuras de Datos

Al inicio las computadoras fueron diseñadas o pensadas como una


herramienta que permitiera realizar operaciones de cálculo
complicadas en un lapso de mínimo tiempo. La mayoría de las
aplicaciones realizadas para este fantástico invento del hombre, son
las de almacenar y acezar grandes cantidades de información.

La información que se procesa en la computadora es un conjunto


de datos, que pueden ser simples o estructurados. Los datos
simples son aquellos que ocupan sólo una localidad de memoria,
mientras que los estructurados son un conjunto de casillas de
memoria a las cuales hacemos referencia mediante un identificador
único.

Debido a que por lo general tenemos que tratar con conjuntos de


datos y no con datos simples (enteros, reales, booleanos, entre
otros.) que por sí solos no nos dicen nada, ni nos sirven de mucho,
es necesario tratar con estructuras de datos adecuadas a cada
necesidad.

Las estructuras de datos son una colección de datos cuya


organización se caracteriza por las funciones de acceso que se
usan para almacenar y acceder a elementos individuales de datos.

Una estructura de datos se caracteriza por lo siguiente:

 Pueden descomponerse en los elementos que la forman.


 La manera en que se colocan los elementos dentro de la
estructura afectará la forma en que se realicen los accesos a
cada elemento.
 La colocación de los elementos y la manera en que se accede
a ellos puede ser encapsulada.
Si tomamos la decisión de tratar este tipo de problema son datos
simples, pronto nos percataríamos del enorme desperdicio de
tiempo, almacenamiento y velocidad. Es por eso que para
situaciones de este tipo la mejor solución son los datos
estructurados; ya que posee una alta relevancia para la
programación ya que esta permite organizar un conjunto de datos
elementales con el objetivo de facilitar su manipulación además
permite modificar "Globalmente" las variables sin tener que recorrer
el algoritmo o código buscando cada aparición, define variables y
evita que cambien entre rutinas, separa desde el inicio del programa
el espacio en memoria, facilita el trabajo entre el paso de datos
entre aplicaciones.

2. Arreglos Unidimensionales

Un arreglo unidimensional es un tipo de datos estructurado que está


formado por una colección finita, homogénea y ordenada de datos
del mismo tipo. Es la estructura natural para modelar listas de
elementos iguales.

 Finita: todo arreglo tiene un límite; es decir, se debe


determinar cuál será el número máximo de elementos que
formarán parte del arreglo.
 Homogénea: todos los elementos de un arreglo son del mismo
tipo. Es decir, todos enteros, todos booleano, etc. pero nunca
una combinación de distintos tipos.
 Ordenada: se puede determinar cuáles son el primero, el
segundo, el tercero,… y el enésimo elemento.

Un arreglo se puede representar gráficamente de la siguiente


manera:
Arreglos Unidimensionales Numérico

12 10 15 133 369

Nota: Los datos que se guarden en los arreglos todos deben ser del
mismo tipo.

El tipo de acceso a los arreglos unidimensionales es el acceso


directo, es decir, podemos acceder a cualquier elemento del arreglo
sin tener que consultar a elementos anteriores o posteriores, esto
mediante el uso de un índice para cada elemento del arreglo que
nos da su posición relativa.

NOMBRE_ARREGLO[número del índice]

Ejemplo:

N=arreglo [5]

12 10 15 133 369

Para implementar arreglos unidimensionales se debe reservar


espacio en memoria.

Los arreglos nos permiten hacer un conjunto de operaciones para


manipular los datos guardados en ellos, estas operaciones son:
ordenar, buscar, insertar, eliminar, modificar entre otras.

REPRESENTACION EN MEMORIA: Los arreglos guardan en


memoria la cantidad de espacios que se le indican en la
declaración.

Con frecuencia se presentan en la práctica problemas cuya solución


no resulta fácil – a veces es imposible si se utiliza tipos de datos
simple.

Con el propósito de ilustrar esta dificultad, a continuación se


presentará un problemas en dos de sus posibles soluciones
mediante tipos de datos simples de datos. El objetivo de este
problema es demostrarlo complejo que resulta un algoritmo de
solución para ciertos problemas, si no se utilizaría tipos de datos
estructurados. Finalmente, y luego de presentar los arreglos, se
ofrecerá una solución al problema mencionado en primer término
usando arreglos.

Declaración de los arreglos unidimensionales

Un arreglo unidimensional se puede definir de la siguiente manera:

Ident_arreglo=ARREGLO[líminf….. límsup] DE tipo

Con los valores líminf y límsup se declara el tipo de los índices, asi
como el número de elementos que tendrá el arreglo. El número total
de componentes (NTC) que tendrá el arreglo unidimensional se
calcula con

NTC= líminf – límsup + 1

Con tipo se declara el tipo de dato para todos los componentes no


tiene que ser el mismo que el de los índices. En general, los
lenguajes de programación establecen restricciones al respecto.

NOTAS:

 Al tipo del índice puede ser cualquier tipo ordinal: carácter,


entero, enumerado. En la mayoría de los lenguajes usados en
la actualidad permiten solo números enteros.
 El tipo de los componentes puede ser cualquier tipo de datos
– enteros, real, cadena de caracteres, registros, arreglos,
entre otros.
 Se utilizan los corchetes” []” para indicar el índice de un
arreglo, entre [] se debe escribir un valor ordinal; puede ser
una variable, una constante o una expresión tan compleja
como se quiera, pero que dé como resultado un valor ordinal.

Operaciones con arreglos Unidimensionales.


Como ya sabemos, los arreglos si misión primordial es el de
almacenar datos. Por lo tanto resulta necesario leer, escribir asignar
o simplemente modificar datos de un arreglo. Asimismo, al
considerar que es una estructura, a una colección de elementos se
deben incorporar nuevos elementos, así como eliminar algunos de
los ya almacenados.

Las operaciones válidas en arreglos son las siguientes:

 Lectura
 Escritura
 Asignación
 Actualización:
 Inserción
 Eliminación
 Modificación
 Ordenación
 Búsqueda

Los arreglos son tipo de datos estructurados, muchas de estas


operaciones no se pueden llevar a cabo de manera global; es decir,
tratando al arreglo como un todo, si no que se debe trabajar sobre
cada componente.

Lectura:

El proceso de lectura de un arreglo consiste en leer y asignar un


valor a cada uno de sus componentes. Supongamos que desea leer
todos los elementos del arreglo unidimensional V en forma
consecutiva. Se podría hacer de la siguiente manera:

Leer V [1],

Leer V [2],

Leer V [50]
Pero es importante que el lector observe que de esta forma no
resulta práctico. Por tanto, se usara un ciclo para leer todos los
elementos del arreglo unidimensional.

Para i<-1 Hasta 50 Con Paso 1 Hacer

leer v[i];

FinPara

Al variar el valor de i, cada elemento leído se asigna al


correspondiente componente del arreglo según la posición indicada
por i

Para i=1, se lee V[1]

Para i=2, se lee V[2]

Para i=3, se lee V[3]

Para i=n, se lee V[n]

Al finalizar el ciclo de lectura se tendrá asignado un valor a cada


uno de los componentes del arreglo unidimensional V. el arreglo se
muestro en la figura a continuación suponiendo que los datos
introducidos son los siguiente 10,12,13,15,……28,96.

10 12 13 15 28 96
V[1] V[2] V[3] V[4] …………
V[49] V[50]

Puede suceder que no se necesite leer todos los componentes de


arreglo, sino solamente alguna de ellos. Supongamos que se debe
leer los elementos con índices comprendidos entre el 1 y el 30. A
continuación se muestra el ciclo que se necesita para realizar esta
operación:

Para i<-1 Hasta 30 Con Paso 1 Hacer

leer v[i];
FinPara

10 12 13 15 59 28 96

10 12 13 15 59 28 96
V[1] V[2] V[3] V[4] ..... V[30] .......... V[48]
V[49] V[50]

Escritura:

El caso de las operaciones de escritura es similar al de lectura. Se


debe escribir el valor de cada uno de los componentes.
Supongamos que se desea escribir los primeros N componentes del
arreglo unidimensional V en forma consecutiva. Los pasos son los
siguientes:

Repetir

Escribir V[i];

Hasta Que i=n

Al variar el valor de i se escribe el elemento del arreglo


unidimensional de V, correspondiente a la posición indicada por i.

Para i=1, se escribe el valor de V[1]

Para i=2, se escribe el valor de V[2]

Para i=3, se escribe el valor de V[3]

Pa ra i=n, se escribe el valor de V[n]

Asignación:

En general, no es posible asignar directamente un valor a todo el


arreglo, sino que se debe asignar el valor deseado a cada
componente. Enseguida se analizan algunos ejemplos de
asignación.
Observe que en los dos primeros casos se asigna un valor a una
determinada casilla del arreglo, en el primero a la señalada por los
índices ene, en el segundo a la indicada por el índice mar.

CICLO[ene]<-123.89

CICLO[mar]<- CICLO [ene]/2

Para el tercer caso se le asignara 0 a todas las casillas del arreglo,


con lo que este queda como se muestra a continuación:

0 0 0 ...... 0
ene feb mar …..
dic

Repetir con MES desde ene hasta dic

CICLO[MES]<-0

Cabe destacar que en algunos lenguajes de programación es


posible asignar una variable tipo arreglo a otra del mismo tipo.

V1<-V

La expresión anterior es equivalente a realizar lo siguiente:

Repetir con i desde 1 hasta 50

V1[i]<-V[i]

3. Arreglos Bidimensionales

Un arreglo bidimensional es una colección homogénea, finita y


ordenada de da-tos, en la que se hace referencia a cada
componente del arreglo por medio de dos índices. El primero se
utiliza para indicar el renglón, y el segundo para señalar la columna.
Un arreglo bidimensional también se puede definir como un arreglo
de arreglos.

El arreglo A (M, N) tiene M renglones y N columnas. Un elemento A


[I, J] se lo-caliza en el renglón I, y en la columna J. Internamente en
memoria se reservan M, N posiciones consecutivas para almacenar
todos los elementos del arreglo.

Declaración de arreglos bidimensionales

Los arreglos bidimensionales se declaran cuando se especifican el


número de renglones y el número de columnas, junto con el tipo de
dato de los componentes.

id_arreglo = ARREGLO [líminfr..límsupr,líminfc..límsupc] DE tipo

Con líminfr y límsupr se declara el tipo de dato del índice de los


renglones y cuántos renglones tendrán el arreglo. Asimismo, con
líminfc y límsupc se declara el tipo de dato del índice de las
columnas y cuántas columnas tendrá el arreglo. Con tipo se declara
el tipo de datos de todos los componentes del arreglo.

El número total de componentes (NTC) de un arreglo bidimensional


está determinado por la expresión: NTC = (límsupr - líminfr + 1) *
(límsupc - líminfc + 1)

Operaciones con arreglos bidimensionales

Las operaciones que se pueden realizar con arreglos


bidimensionales son:

 Lectura/Escritura
 Asignación
 Actualización:
 Inserción
 Eliminación
 Modificación
 Ordenación
 Búsqueda

Los arreglos bidimensionales se consideran una generalización de


los unidimensionales, por lo que se presentará una revisión rápida
de algunas de las operaciones mencionadas. Para ilustrarlas se
utilizarán los ejemplos anteriores.

Lectura

Cuando se presentó la operación de lectura en arreglos


unidimensionales, se mencionó que con la ayuda de un ciclo se
iban leyendo y asignando valores a cada uno de los componentes.
Lo mismo sucede con los arreglos bidimensionales. Sin embargo,
como sus elementos deben indicarse por medio de dos índices,
normalmente se usan dos ciclos para lograr la lectura de elementos
consecutivos.

Supongamos, por ejemplo, que se desea leer todos los elementos


del arreglo bidimensional MATRIZ. Los pasos a seguir son:

Repetir con I desde 1 hasta 10

Repetir con J desde 1 hasta 5

Leer MATRIZ [I, J]

Al variar los índices de I y J, cada elemento de MATRIZ que se lee


se asigna al lugar que le corresponde en el arreglo, según la
posición de los índices I y J.

Para I= 1 y J = 1, se lee el elemento del renglón 1 y columna 1.

I = 1 y J = 2, se lee el elemento del renglón 1 y columna 2.

I = 10 y J = 5, se lee el elemento del renglón 10 y columna 5.

Escritura

La escritura de un arreglo bidimensional también se lleva a cabo


elemento tras elemento. Supongamos que se quiera escribir todos
los componentes del arreglo MATRIZ. Los pasos a seguir son:

Repetir con I desde 1 hasta 10

Repetir con J desde 1 hasta 5


Escribir MATRIZ [I, J]

Al variar los valores de I y J se escribe el elemento de MATRIZ


correspondiente a la posición indicada justamente por los índices I y
J.

Para I=l y J=l, se escribe el elemento del renglón 1 y columna 1.

I = 1 y J = 2, se escribe el elemento del renglón 1 y columna 2.

I= 10 y J= 5, se escribe el elemento del renglón 10 y columna 5.

Asignación

La asignación de valores a un arreglo bidimensional se realiza de


diferentes formas. La forma depende del número de componentes
involucrados. Observemos a continuación dos alternativas
diferentes.

Se asignan valores a todos los elementos del arreglo: en este caso


se necesitarán dos ciclos para recorrer todo el arreglo.

Repetir con I desde 1 hasta 10

Repetir con J desde 1 hasta 5

MATRIZ [I, J] <- 0

Al variar los valores de I y J se asigna el 0 al elemento de MATRIZ


correspondiente a la posición indicada por los índices I y J.

Para I=l y J=l,se asigna el valor 0 al elemento del renglón 1 y


columna 1.

I = 1 y J = 2, se asigna el valor 0 al elemento del renglón 1 y


columna 2.

I = 1O y J=5, se asigna el valor 0 al elemento del renglón 10 y


columna 5.
Es importante aclarar que las operaciones de lectura, escritura y
asignación a todos los elementos de un arreglo bidimensional se
pueden hacer tanto por renglones como por columnas.

4. Registros

¿Qué son los registros?

Son un tipo de datos formado por una colección finita de elementos


no necesariamente homogéneos. El acceso se realiza a través del
nombre del registro seguido del campo específico al que se desea
acceder.

Supongamos la sgte. vista gráfica de un registro cualquiera:

¿Cómo acceder a los campos individuales de un registro?

Para acceder a cada uno de los campos se utiliza la siguiente


función de acceso:

NombreRegistro.nombre del campo

Para el registro AUTOMOVILES revisado anteriormente se tiene


que el acceso a cada uno de sus campos se realiza como sigue:

AUTOMOVILES.año
AUTOMOVILES.mar ca

AUTOMOVILES.precio

La principal ventaja del uso de registros es que posibilitan modelar


objetos que contienen varias características y acceder a ellas
mediante un nombre único.

Para Implementar

 Definir la estructura de datos que represente las cuentas


bancarias para 500 clientes del Banco Della Plaza. Ellas
deben contener un saldo cuenta corriente y otro en línea de
crédito. Identifica las operaciones básicas asociadas a la
estructura.
 Definir la estructura de datos que represente un hotel 5
estrellas de 5 pisos y 10 habitaciones por piso. Identifica las
operaciones básicas asociadas a la estructura.
 Definir una estructura de datos para representar una agenda
di aria. Plantear la solución estática y dinámica. Identificar las
operaciones básicas asociadas a la estructura.

Alternativa solución Cajero Automático (1):

Operaciones básicas

 Alta, adicionar un nuevo valor a la estructura.


 Baja, borrar un valor de la estructura.
 Búsqueda, encontrar un determinado valor en la estructura
para realizar una operación con este valor, en forma
secuencial o binario (siempre y cuando los datos estén
ordenados).

Otras operaciones que se pueden realizar son:

 Ordenamiento, de los elementos pertenecientes a la


estructura.
 Apareo, dadas dos estructuras originar una nueva ordenada y
que contenga a las apareadas.
5. Archivos

Los archivos también denominados ficheros (file); es una colección


de información (datos relacionados entre sí), localizada o
almacenada como una unidad en alguna parte de la computadora.

Los archivos son el conjunto organizado de informaciones del


mismo tipo, que pueden utilizarse en un mismo tratamiento; como
soporte material de estas informaciones.

Los archivos como colección de datos sirven para la entrada y


salida a la computadora y son manejados con programas.

Los archivos pueden ser contrastados con Arrays y registros; Lo


que resulta dinámico y por esto en un registro se deben especificar
los campos, él número de elementos de un arrays (o arreglo), el
número de caracteres en una cadena; por esto se denotan como "
Estructuras Estáticas".

En los archivos no se requiere de un tamaño predeterminado; esto


significa que se pueden hacer archivos de datos más grandes o
pequeños, según se necesiten.

CARACTERÍSTICAS DE LOS ARCHIVOS

Las principales características de esta estructura son:

 Independencia de las informaciones respecto de los


programas.
 La información almacenada es permanente.
 Un archivo puede ser accedido por distintos programas en
distintos momentos.
 Gran capacidad de almacenamiento.

CLASIFICACION DE LOS ARCHIVOS

Los archivos se clasifican según su uso en tres grupos:

Permanentes o Maestros:
Estos contienen información que varía poco. En algunos casos es
preciso actualizarlos periódicamente.

De Movimientos

Se cercan para actualizar los archivos maestros. Sus registros son


de tres tipos: alta, bajas y modificaciones.

De Maniobra o Trabajo.

Tienen una vida limitada, normalmente menor que la duración de la


ejecución de un programa. Su utilizan como auxiliares de los
anteriores.

TIPOS DE ARCHIVOS

Los elementos de un archivo pueden ser de cualquier tipo, simples


o estructurados o según su función.

SEGÚN SU FUNCION.

Se define por:

 Archivos Permanentes:

Son aquellos cuyos registros sufren pocas o ninguna variación a lo


largo del tiempo, se dividen en:

Constantes: Están formados por registros que contienen campos


fijos y campos de baja frecuencia de variación en el tiempo.

De Situación: Son los que en cada momento contienen información


actualizada.

Históricos: Contienen información acumulada a lo largo del tiempo


de archivos que han sufridos procesos de actualización o bien
acumulan datos de variación periódica en el tiempo.

Archivos de Movimiento

Son aquellos que se utilizan conjuntamente con los maestros


(constantes), y contienen algunos campos comunes en sus
registros con aquellos, para el procesamiento de las modificaciones
experimentados por los mismos.

Archivo de Maniobra o Transitorio

Son los archivos creados auxiliares creados durante la ejecución del


programa y borrados habitualmente al terminar el mismo.

SEGÚN SUS ELEMENTOS.

Los principales archivos de este tipo son:

 Archivo de Entrada: Una colección de datos localizados en un


dispositivo de entrada.
 Archivo de Salida: Una colección de información visualizada
por la computadora.
 Constantes: Están formados por registros que contienen
campos fijos y campos de baja frecuencia de variación en el
tiempo.
 De Situación: Son los que en cada momento contienen
información actualizada.
 Históricos: Contienen información acumulada a lo largo del
tiempo de archivos que han sufrido procesos de actualización,
o bien acumulan datos de variación periódica en el tiempo.
 Archivos de Movimiento o Transacciones: Son aquellos que
se utilizan conjuntamente con los maestros (constantes), y
contienen algún campo común en sus registros con aquellos,
para el procesamiento de las modificaciones experimentado
por los mismos.
 Archivos de Maniobra o Transitorios: Son los archivos
auxiliares creados durante la ejecución del programa y
borrados habitualmente al terminar el mismo.

SEGÚN SUS ELEMENTOS

Los principales archivos de este tipo son:

 Archivo de Entrada, una colección de datos localizada en un


dispositivo de entrada.
 Archivo de Salida, una colección de información visualizada
por la computadora.
 Archivo de Programa, un programa codificado en un lenguaje
especifico y localizado o almacenado en un dispositivo de
almacenamiento.
 Archivo de Texto, una colección de caracteres almacenados
como una unidad en un dispositivo de almacenamiento.

ACCESO A LOS ARCHIVOS

Se refiere al método utilizado para acceder a los registros de un


archivo prescindiendo de su organización. Existen distintas formas
de acceder a los datos:

1. Secuenciales: Los registros se leen desde el principio hasta el


final del archivo, de tal forma que para leer un registro se leen todos
los que preceden.

2. Directo: Cada registro puede leerse / escribirse de forma directa


solo con expresar su dirección en el fichero por él numero relativo
del registro o por transformaciones de la clave de registro en él
numero relativo del registro a acceder.

3. Por Índice: Se accede indirectamente a los registros por su clave,


mediante consulta secuenciales a una tabla que contiene la clave y
la dirección relativa de cada registro, y posterior acceso directo al
registro.

4. Dinámico: Es cuando se accede a los archivos en cualquier de


los modos anteriormente citados. La elección del método está
directamente relacionada con la estructura de los registros del
archivo y del soporte utilizado.

TIPOS DE ACCESOS

Acceso Secuencial. Exige el tratamiento de elemento, para esto es


necesario una exploración secuencial comenzando desde el primer
momento (Pascal permite este acceso)
 Secuenciales: Archivo de texto que debe ser leído del
principio hasta el final.
 Acceso Directo: Permite procesar o acceder a un elemento
determinado y referencia directamente por su posición en el
soporte de almacenamiento (Turbo Pascal permite este
acceso.
 Aleatorios: Es un archivo con registros de un mismo largo. Un
programa puede accesar directamente cualquier registro sin
tener que leer los registros previos.
 Binarios: es un archivo que lee byte por byte sin asumir
ninguna estructura. Los archivos Binarios no son un nuevo
tipo de archivo, pero si una nueva forma de manipular
cualquier tipo de archivo. Las técnicas de archivo binarios
permiten leer o cambiar cualquier byte de un archivo. Son
herramientas extremadamente potentes, pero como toda
herramienta potente debe manejarse con cuidado.

También podría gustarte