Computacion - FA.CE.NA.
Estructuras de datos
Tema 7
Computacion - FA.CE.NA.
Estructuras de datos
TEMA 7
Estructura de datos. Campo, registro, archivos y
base de datos. Operaciones. Estructuras lineales
(Arreglos). Operaciones.
Computacion - FA.CE.NA.
Estructuras de datos
En todos los tiempos y más aún en la era en que vivimos, el hombre
tiene cada vez mas necesidad de consultar una mayor cantidad de
información para poder desarrollar sus actividades. El gran cúmulo de
información ha hecho necesario que ésta tenga que ser almacenada y
organizada correctamente para acceder a ella rápidamente.
Según lo visto hasta el momento, la única forma que tiene el
ordenador de almacenar la información es mediante variables, que no
son mas que porciones de la memoria central del mismo. Pero al ser
la memoria central un conjunto de dispositivos electrónicos que
funcionan mediante la alimentación eléctrica, cuando se apaga el
ordenador, toda la información que había en su memoria central
desaparece.
7.1 Estructura de datos. Concepto
Computacion - FA.CE.NA.
Estructuras de datos
Por lo tanto, para poder acceder a determinada información en
cualquier momento, se necesitará que ella esté depositada en
soportes físicos los cuales la almacenan en forma permanente. Este
es el caso de la memoria externa o auxiliar como ser disquete, disco
duro, cinta magnética, etc.-, en las cuales sin necesidad de estar
conectadas a la corriente eléctrica, la información permanece allí. La
forma de guardar los datos en estos dispositivos auxiliares es
mediante unas estructuras llamadas archivos o ficheros.
Además, existe una gran diferencia en cuanto a capacidad de
almacenamiento entre la memoria central y las auxiliares, en
general la capacidad de las últimas es muy superior.
7.1 Estructura de datos. Concepto
Computacion - FA.CE.NA.
Estructuras de datos
Conociendo esto, podríamos comparar la memoria central con la
memoria humana y una memoria auxiliar con una guía de teléfonos.
El hecho de llamar por teléfono a una determinada persona es mucho
más rápido si sabemos su número de memoria (el número está
dentro de la memoria). Es también casi impensable que el hombre
retenga en su memoria todos los números de teléfono de la guía
(memoria central), para ello se recurre a una memoria externa que
es la guía telefónica. Entonces, cuando deseamos llamar a una
persona de la cual desconocemos su número, lo buscamos en la guía;
una vez localizado, lo retenemos en la memoria (la información pasa
de la memoria auxiliar a la memoria central) y realizamos la acción
de marcar el número.
7.1 Estructura de datos. Concepto
Computacion - FA.CE.NA.
Estructuras de datos
Si comprendimos este caso, podríamos decir que en un ordenador la
información de entrada de la que se parte para su tratamiento se va a
obtener de dispositivos externos, desde los que la va a introducir en
su memoria central a través de variables. A partir de aquí trabajará
con estas variables, y la información de salida que obtenga la
guardará nuevamente en los soportes de almacenamiento externos.
Anteriormente se nombró la palabra archivo, la cual es de entender
que no es un término puramente informático, y para comprender este
significado podemos comparar con hechos de la vida cotidiana.
Por ejemplo cuando concurrimos a una biblioteca a pedir un libro
prestado, el encargado consulta su archivo de libros; si trabajamos
en alguna empresa, nuestros datos estarán registrados en un archivo
de empleados, etc.- Entonces vemos que al menos todos tenemos de
alguna manera intuitiva el concepto de lo que significa archivo o
fichero.
A continuación veremos algunas definiciones que están básicamente
relacionados con este concepto.
7.1 Estructura de datos. Concepto
Computacion - FA.CE.NA.
Estructuras de datos
7.1.1 Campo
Un campo es un conjunto de caracteres capaz de suministrar una
determinada información referida a un concepto. Un campo es un
elemento de datos elementales tales como nombre y apellido,
numero de documento, domicilio, etc.-
Al igual que en las variables, al definir un campo hay que indicar
claramente sus tres características:
Nombre: Nombre que identifica a ese conjunto de caracteres
Tipo: Tipo de caracteres que puede contener (alfabético, entero,
etc.-)
Tamaño: Cantidad de caracteres que puede contener
Por ejemplo, si tenemos que definir al campo número de documento
resultaría:
Nombre: documento
Tipo: numérico
Tamaño: 8 enteros
Un campo es la entidad lógica más pequeña, consiste en un conjunto
de byte que conforman un dato.
Un campo es la unidad mínima de información de un registro.
7.1 Estructura de datos. Concepto
Computacion - FA.CE.NA.
Estructuras de datos
7.1.2 Registros
Un registro es un conjunto de campos referentes a una entidad en
particular y constituyen una unidad para su proceso. Un ejemplo de
un registro puede ser la información de un determinado alumno
universitario, que contiene los campos: libreta universitaria, apellido
y nombre, número de documento, domicilio, fecha de nacimiento,
entre otros campos. La figura muestra un ejemplo gráfico de
registro.
7.1 Estructura de datos. Concepto
lib
re
tau
n
iv
e
rs
ita
ria A
p
e
llid
oyn
o
m
b
re n
ú
m
e
r
od
ed
o
c
u
m
e
n
to D
o
m
ic
ilio F
e
c
h
ad
en
a
c
im
ie
n
to
Computacion - FA.CE.NA.
Estructuras de datos
7.1.3 Archivos
Es el conjunto de registros homogéneos referidos a objetos de la
misma naturaleza o del mismo tipo, almacenados en un soporte
externo, que presenta entre sí una relación lógica y que pueden ser
consultados individualmente de forma iterativa o sistemática.
Tomando el ejemplo anterior, podemos decir que habrá un registro
por alumno, y habrá tantos registros como alumnos haya. Este
conjunto de registros de alumnos formará un archivo y lo vemos
gráficamente en la figura.
7.1 Estructura de datos. Concepto
lib
r
e
tau
n
iv
e
r
s
ita
r
ia A
p
e
llid
oyn
o
m
b
r
e n
ú
m
e
r
od
ed
o
c
u
m
e
n
to D
o
m
ic
ilio F
e
c
h
ad
en
a
c
im
ie
n
to
Computacion - FA.CE.NA.
Estructuras de datos
7.1.3 Archivos
Un archivo en una computadora es una estructura diseñada para
contener datos, estos están organizados de forma tal que pueden ser
recuperados fácilmente, borrados, actualizados, etc.-
Al hablar de archivo es imprescindible que cada uno de ellos tenga un
nombre para poder identificarlo. En este caso podría ser un nombre
apropiado: ESTUDIANTES.
En resumen, podríamos decir que un archivo está
formado por un conjunto de registros, y estos a
su vez por un conjunto de campos.
7.1 Estructura de datos. Concepto
Archivo
Registro 1
Registro 2
Registro n
Computacion - FA.CE.NA.
Estructuras de datos
7.1.4 Base de Datos
Es una colección de archivos relacionados lógicamente, que se
estructura en diferentes formas para reducir duplicaciones y
proporcionar un mejor acceso a los datos. Constituye el nivel mas
alto en la jerarquía de organización de los datos, siendo el nivel
mas bajo el carácter. Así una base de datos de una universidad
podría contener archivos de estudiantes, profesores, inventarios,
libros, etc. La figura presenta gráficamente la estructura
jerárquica en base de datos. .
7.1 Estructura de datos. Concepto
Computacion - FA.CE.NA.
Estructuras de datos
7.1.4 Base de Datos
.
7.1 Estructura de datos. Concepto
Base de datos
Archivo Archivo Archivo
Registro Registro Registro Registro
Campo Campo Campo Campo
Campo
Caracter Caracter Caracter Caracter
Caracter
Computacion - FA.CE.NA.
Estructuras de datos
7.2.1 Campo Clave
Un campo clave (key) es aquel que identifica al registro y
lo diferencia de los otros registros. Debe ser UNICO, es decir
debe ser diferente para cada registro. De todos los campos
o datos siempre se elige a uno como campo clave. Por
ejemplo, en el registro mostrado en la figura el campo clave
podría ser libreta universitaria
.
7.2 Conceptos
lib
r
e
t
a
u
n
iv
e
r
s
it
a
r
ia A
p
e
llid
o
yn
o
m
b
r
e n
ú
m
e
r
o
d
e
d
o
c
u
m
e
n
t
o D
o
m
ic
ili
o F
e
c
h
a
d
e
n
a
c
im
ie
n
t
o
Computacion - FA.CE.NA.
Estructuras de datos
7.2.2 Registro lógico
Se denomina registro lógico al conjunto de campos o datos
referente a un mismo objeto y constituyen una unidad para su
proceso. Son los registros organizados en campos
7.2.3 Registro físico
Registro físico es un conjunto de registros lógicos que constituyen la
unidad de transferencia en una sola operación de entrada / salida
(para transferencias entre las unidades de E/S o dispositivos de
almacenamiento, y la memoria principal).
.
7.2 Conceptos
Computacion - FA.CE.NA.
Estructuras de datos
Creación
Apertura
Cierre
Lectura / Consulta
Fin de Archivo
Actualización
Destrucción
.
7.3 Operaciones sobre archivos
Computacion - FA.CE.NA.
Estructuras de datos
Creación
Es la primera operación que se hará con un archivo y es la
operación mediante la cual se introduce la información
correspondiente al archivo en un soporte de almacenamiento de
datos.
Para poder utilizar un archivo, este debe existir, es decir, es
necesario que se haya creado previamente.
La creación exige organización, estructura, localización o reserva de
espacio en el soporte de almacenamiento. En un entorno de
computadoras, durante la creación es necesario darle una serie de
datos: Nombre del dispositivo, nombre de archivo, tamaño,
organización, etc.-
Al momento de la creación puede suceder que sea creado por
primera vez en un soporte determinado, proceder de otro que ya
existe, ser el resultado de un cálculo, condición, etc.- o ambas
cosas a la vez.
.
7.3 Operaciones sobre archivos
Computacion - FA.CE.NA.
Estructuras de datos
Apertura
Abrir un archivo significa dejarlo dispuesto para ser utilizado. Todos los
archivos que se ocupan en un programa deben ser abiertos
previamente a su uso.
Un archivo que se pretende usar debió haber sido creado previamente,
he aquí la diferencia entre estas dos operaciones: para crear el archivo
no debe existir y para abrir debe haber sido creado previamente.
7.3 Operaciones sobre archivos
Computacion - FA.CE.NA.
Estructuras de datos
Cierre
La finalidad de cierre de los archivos radica en permitir al usuario
detener el uso de ese archivo, dejarlo inaccesible.
Como todos los archivos fueron abiertos durante un programa,
necesitan ser cerrados al finalizar el proceso.
Para realizar esta operación solo necesitamos conocer el nombre del
mismo.
7.3 Operaciones sobre archivos
Computacion - FA.CE.NA.
Estructuras de datos
Lectura/Consulta
Es la operación que nos permite acceder al archivo de datos para
conocer la información alojada en uno, varios o todos los registros
del archivo.
Esta operación implica el traspaso de información desde el archivo a
la memoria central del ordenador. Esta información es la contenida
en un registro.
Como se mencionó anteriormente, la única forma de guardar
información en la memoria central es a través de variables. En una
operación de este tipo, los nombres de las variables que reciben los
datos del registro leído son los que se han asignado a los campos
del mismo.
7.3 Operaciones sobre archivos
Computacion - FA.CE.NA.
Estructuras de datos
Lectura/Consulta
Por ejemplo, si tenemos el archivo de estudiantes cuyo registro
posee:
LU - Libreta Universitaria
AYN - Apellido y Nombre
DOMI- Domicilio
FECHANAC- Fecha de Nacimiento
Para representar gráficamente la operación de lectura haríamos
A partir de este momento se podrá operar con estas variables,
visualizarlas en pantalla, imprimirlas, compararlas, etc.-
Si se efectúa una segunda lectura, el contenido del segundo registro
pasará a las mismas variables de la memoria, sustituyendo sus
anteriores valores. Por lo tanto, en cada instante del proceso solo se
dispone de la información del registro recién leído.
7.3 Operaciones sobre archivos
Leer
LU
AYN
DOMI
FECHANAC
Computacion - FA.CE.NA.
Estructuras de datos
Fin de archivo
Toda instrucción de ingreso de datos, ya sea
desde teclado o desde un dispositivo magnético,
requiere una condición de fin de ingreso de los
datos, con el objeto de determinar cuando se han
terminado los registros de un archivo o cuando ya
no se desean ingresar mas datos desde el teclado.
Esta condición la denominamos fin de archivo
conocida como EOF (end of file).
Para el ingreso de datos por teclado se prevee,
generalmente la introducción de un valor elegido
por el programador que será el indicador de que
ya no se ingresarán mas datos, por ejemplo si se
introducen por teclado notas de los alumnos, el fin
de datos estará dado por un valor que sea un
absurdo o datos que no existan en esa población,
en este caso se podría tomar NOTA=11. El
diagrama de la figura muestra lo mencionado.
7.3 Operaciones sobre archivos
Comenzar
Ingresar
NOTA
NOTA = 11
Si
Parar
No
Computacion - FA.CE.NA.
Estructuras de datos
Fin de archivo
Si los datos que se leen están soportados en
un archivo y sobre el se realizan lecturas
sucesivas, llegará un momento en que este
se acabe; es decir ya no queden mas
registros por leer. Esta situación la detecta el
sistema después de una operación de
lectura, cuando lo que se ha leído no es un
registro de datos, sino lo que se conoce con
el nombre de marca de fin de archivo. Por
tanto, siempre que se ejecute una operación
de lectura sobre un archivo secuencial, a
continuación hay que preguntar si lo que se
ha leído es la marca EOF o, por el contrario,
un registro de datos para ejecutar las
acciones pertinentes. El diagrama de flujo de
la figura muestra el uso de la condición EOF.
.
7.3 Operaciones sobre archivos
Comenzar
Leer
{lista de
campos}
EOF
Si
Parar
No
Computacion - FA.CE.NA.
Estructuras de datos
Actualización
La actualización de un archivo supone las siguientes
operaciones:
Añadir registros – ALTAS
Modificar registros ya existentes – MODIFICACIONES
Borrar registros – BAJAS
El modo de operar la actualización varía según la
organización y método de acceso del archivo.
.
7.3 Operaciones sobre archivos
Computacion - FA.CE.NA.
Estructuras de datos
Destrucción
La operación de destrucción o borrado realiza la supresión del archivo
en el soporte o dispositivo, dejando este espacio que ocupaba
anteriormente disponible.
.
7.3 Operaciones sobre archivos
Computacion - FA.CE.NA.
Estructura de datos
Cuando hablamos de Estructuras de Datos hacemos referencia a
un conjunto de datos que poseen el mismo nombre, que
pueden ser caracterizados por su organización y por las
operaciones que se definen en ella.
Las Estructuras de Datos son muy importantes en los sistemas
de computación y para explicar mas fácilmente veremos la
siguiente clasificación la cual refleja el tipo de datos mas
frecuentemente utilizados:
.
7.4 Estructuras lineales y no lineales
Datos Simples
Estándar
Entero
Real
Caracteres
Lógico
Estructura de datos
Estáticas
Vectores y Matrices
Registros
Archivos
Dinámicas
Lineales
Pilas
Colas
Listas Enlazadas
No lineales Arboles
Grafos
Computacion - FA.CE.NA.
Estructura de datos
Las estructuras de datos estáticas son aquellas en las que el
tamaño ocupado en memoria se define antes que el programa se
ejecute y el mismo no puede ser modificado durante la ejecución.
En cambio las estructuras de datos dinámicas no tienen limitaciones
en cuanto al tamaño de memoria ocupada. Para utilizar este tipo de
estructuras necesitamos usar un tipo de dato específico llamado
puntero.
Los tipos de datos que vimos hasta ahora son datos simples cuya
característica común es que cada variable representa a un
elemento; en cambio los tipos de datos estructurados tienen como
particularidad que con un nombre o identificador se puede
representar múltiples datos individuales y a su vez cada uno de
estos puede ser referenciado independientemente.
.
7.4 Estructuras lineales y no lineales
Computacion - FA.CE.NA.
Estructura de datos
Concepto
Arreglos se define como una colección finita,
homogénea y ordenada de elementos.
Finita: Todo arreglo tiene un límite, es decir, debe determinarse cual
será el número máximo de elementos que podrán formar parte del
arreglo.
Homogénea: Todos los elementos de un arreglo son del mismo tipo
o naturaleza (todos enteros, todos booleanos, etc.- ), pero nunca una
combinación de distintos tipos.
Ordenada: Se debe determinar cual es el primer elemento, el
segundo, el tercero..... y el enésimo elemento.
.
7.5 Arreglos
N - ELEMENTO
ARREGLO
1º ELEMENTO 2º ELEMENTO
Computacion - FA.CE.NA.
Estructura de datos
Características
Si un arreglo tiene la característica de que puede almacenar a N
elementos del mismo tipo, deberá tener la posibilidad de permitir
seleccionar a cada uno de ellos. Así se distinguen dos partes en los
arreglos.
● Los componentes o elementos (valores que se almacenan en c/u de
las casillas)
● Los índices (Permiten hacer referencia a los componentes)
El número total de componentes (NTC) es igual al límite superior (LS)
menos límite inferior (LI) mas 1
NTC = LS - LI + 1
El tipo de índice puede ser cualquier tipo ordinal (carácter, entero,
enumerado)
El tipo de los componentes puede ser cualquiera (entero, real, cadena
de caracteres, registro, etc.)
Se utilizan ( ) para indicar el índice de un arreglo. Entre los ( ) se
debe escribir un valor ordinal (puede ser una variable, una constante
o una expresión que dé como resultado un valor ordinal)
.
7.5 Arreglos
Computacion - FA.CE.NA.
Estructura de datos
Ejemplo
Sea V un arreglo de 30 elementos enteros con índices enteros.
V = (52,12,31,102,....75)
V (50)= v(1), v(2), v(3),...., v(30),
Su representación se muestra en la figura
Donde
NTC = (30 – 1 + 1) = 30
Cada componente del arreglo V será un número entero, y podrá
accederse por medio de un índice que será un valor comprendido
entre 1 y 30.
.
7.5 Arreglos
5
2 1
2 3
1 1
0
2 ..... 7
5
1 2 3 4 3
0
.....
C
o
m
p
o
n
e
n
te
s
In
d
ice
s
Computacion - FA.CE.NA.
Estructura de datos
En cuanto a las dimensiones los arreglos pueden ser:
Unidimensional o vector: un solo índice
Bidimensional o matriz: dos índices
Multidimensional: mas de dos índices
.
7.5 Arreglos
Computacion - FA.CE.NA.
Estructura de datos
Diferencia con registros
Las dos diferencias sustanciales entre arreglos y registro son:
1) Un arreglo puede almacenar N elementos del mismo tipo,
mientras que un registro puede almacenar N elementos de distintos
tipos que se llaman campos.
2) Los componentes de un arreglo se acceden por medio de índices,
mientras que en un registro los campos se acceden por medio de su
nombre, el cual es único.
Un vector unidimensional, es el vector TEMPERATURA que contiene
las temperaturas horarias registradas en una ciudad durante las 24
horas del día. Este vector constará de 24 elementos del tipo real, ya
que las temperaturas no serán enteras siempre.
El valor mínimo del índice permitido de un vector se denomina límite
inferior del vector (L) y el valor máximo permitido se denomina límite
superior (U). En este ejemplo el límite inferior es 1 y el superior 24.
TEMPERATURA (I) donde 1 <= I <= 24
.
7.5 Arreglos
Computacion - FA.CE.NA.
Estructura de datos
Diferencia con registros
Los vectores se almacenan en memoria central de la computadora en un
orden adyacente.
Así, un vector de cincuenta números denominado NUMEROS se
representa físicamente por cincuenta posiciones de memoria sucesivas.
Sea un vector X de ocho elementos:
X[1] X[2] X[3] X[4] X[5] X[6] X[7] X[8]
14.0 12.0 8.0 7.0 6.41 5.23 6.15 7.25
.
7.5 Arreglos
Computacion - FA.CE.NA.
Estructura de datos
Operaciones
Podemos clasificar a las operaciones en las que intervienen arreglos de
la siguiente manera:
Lectura / escritura
Recorrido
Asignación
Actualización (Añadir, eliminar, insertar)
Ordenación
Búsqueda
7.5 Arreglos
Computacion - FA.CE.NA.
Leer
V(1)
Leer
V(2)
..................
Leer
V(30)
Estructura de datos
Operaciones: Lectura / escritura
El proceso de lectura /escritura de un arreglo se realiza de
la siguiente manera:
Leer V(i) Lee todo el arreglo
Escribir V(i) Escribe todo el arreglo
Leer V(3) Lee el elemento 3 del arreglo
Si se desea leer los 30 elementos de un vector en forma consecutiva
se deberá hacer de la siguiente manera .
Leer V(1)
Leer V(2)
Leer V(3)
Leer V(..)
Leer V(.30)
7.5 Arreglos
Computacion - FA.CE.NA.
Estructura de datos
Operaciones: Lectura / escritura
Pero de esta forma resultaría poco práctico, por lo tanto debemos
usar la siguiente notación para realizar la lectura / escritura de un
arreglo.
Este proceso es válido también para escritura, simplemente se debe
especificar dentro del símbolo la acción a realizar, en este caso
Escribir V(i).
7.5 Arreglos
Leer V(i) i = 1 a 30
Computacion - FA.CE.NA.
Estructura de datos
Operaciones: Recorrido
Recorrer un vector significa acceder a todos y a cada uno de sus
elementos desde el principio hasta el final o viceversa.
Se puede acceder a los elementos de un vector para introducir datos
(leer) en él o bien para ver su contenido (escribir). A la operación de
acceder a todos los elementos para efectuar una acción determinada
se denomina recorrido del vector. Esta operación se realiza usando
estructuras repetitivas, cuya variable de control I, se utiliza como
subíndice del vector (por ejemplo V(i). El incremento del contador del
bucle producirá el tratamiento sucesivo de los elementos del vector.
Esta operación es muy utilizada en este tipo de estructuras de datos,
dado que cuando se está en presencia de un vector, el acceso a toda
la información se realiza recorriéndolo. En algunos casos se puede
acceder a un determinado elemento o a varios de ellos con ciertas
características sin necesidad de recorrer todo el arreglo, por ejemplo
acceder solo al último elemento que sabemos a priori posee la suma
de los elementos anteriores.
7.5 Arreglos
Computacion - FA.CE.NA.
Estructura de datos
Operaciones: Recorrido
Ejemplo
Sumar los 30 elementos de un
vector V.
7.5 Arreglos
Comienzo
I = 1
I = 30 No I = I +1
SI
Parar
Leer
V(i) i = 1 a 30
SUMA = 0
SUMA = SUMA + V(i)
Computacion - FA.CE.NA.
Estructura de datos
Operaciones: Asignacion
En general no es posible asignar directamente un valor a todo el
arreglo; se debe asignar el valor deseado a cada componente
usando la instrucción de asignación, recordando que la asignación
coloca el nuevo contenido en la variable destruyendo el valor
anterior.
15  V(20) o V(20) = 15 asigna el valor 15 al
elemento 20 del
vector V
Si se quiere asignar valores a todos los componentes del vector, se
debe recurrir a las estructuras repetitivas. Por ejemplo, si se desea
poner en cero al vector V(30) la solución se muestra en la siguiente
pantalla
7.5 Arreglos
Computacion - FA.CE.NA.
Estructura de datos
Operaciones: Asignacion
También se puede asignar una
variable tipo arreglo a otra
exactamente del mismo tipo.
A(I)  V(I) o V(I) = A(I)
7.5 Arreglos
Comienzo
I = 1
I = 30 No I = I +1
SI
Parar
V (i) = 0
Computacion - FA.CE.NA.
Estructura de datos
Operaciones: Actualizacion
Muchas veces resulta interesante que dado un arreglo, puedan
añadirse nuevos elementos o eliminar o insertar componentes. Estas
resultan las tres operaciones elementales que se pueden realizar en un
arreglo: añadir, eliminar e insertar elementos.
Cuando se realiza una operación de añadir un nuevo elemento a
continuación del último valor no nulo, la única condición necesaria para
esta operación es comprobar que haya espacio para el nuevo elemento.
7.5 Arreglos
Computacion - FA.CE.NA.
Estructura de datos
Operaciones: Actualizacion
Ejemplo
Dado un vector C de 8 elementos que contiene una nómina de 5
direcciones de correo ordenadas alfabéticamente. Se desea añadir la
dirección valeria@server.com
7.5 Arreglos
I=1a8
a
lic
ia
@
s
e
r
v
e
r
.c
o
m
c
a
s
to
r
@
s
e
r
v
e
r
.c
o
m
d
a
n
ie
l@
s
e
r
v
e
r
.c
o
m
m
a
r
ta
@
s
e
r
v
e
r
.c
o
m
s
o
n
ia
@
s
e
r
v
e
r
.c
o
m
a
lic
ia
@
s
e
r
v
e
r
.c
o
m
c
a
s
to
r
@
s
e
r
v
e
r
.c
o
m
d
a
n
ie
l@
s
e
r
v
e
r
.c
o
m
m
a
r
ta
@
s
e
r
v
e
r
.c
o
m
s
o
n
ia
@
s
e
r
v
e
r
.c
o
m
v
a
le
r
ia
@
s
e
r
v
e
r
.c
o
m
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
C
(
6
)="
v
a
le
r
ia
@
s
e
r
v
e
r
.c
o
m
"
C
o
m
e
n
z
a
r
C
(
I
)
P
a
r
a
r
Computacion - FA.CE.NA.
Estructura de datos
Operaciones: Actualizacion
Con la simple instrucción de asignación se añaden los elementos.
Insertar un elemento es una operación que consiste en introducir
dicho elemento en el interior del vector, en una posición I dada, de
forma tal que los elementos ubicados en las siguientes posiciones
sean desplazados a las posiciones I + 1 respectivas.
La operación de eliminar un elemento al final del arreglo no
presenta ningún problema; en cambio, si el borrado se realiza en el
interior del mismo esto provoca el efecto contrario al de insertar, el
movimiento deberá ser hacia arriba (I-1) de los elementos
inferiores a él para reorganizar el vector.
7.5 Arreglos
Computacion - FA.CE.NA.
Estructura de datos
Operaciones: Actualizacion
Ejemplo
Tomamos el vector C del ejemplo anterior, pero en este caso se desea
eliminar del arreglo el elemento 4.
7.5 Arreglos
I = 1 a 8
alicia@server.com
castor@server.com
daniel@server.com
marta@server.com
pascual@server.com
sonia@server.com
valeria@server.com
alicia@server.com
castor@server.com
daniel@server.com
pascual@server.com
sonia@server.com
valeria@server.com
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
Comenzar
C(I)
I = 4
C(I) = C(I+1)
I = 8 No I = I + 1
Si
Parar
Computacion - FA.CE.NA.
Estructura de datos
Operaciones: Bùsqueda
Consiste en encontrar elemento/s dentro de un arreglo
Ejemplo
Dado un arreglo A de 100 elementos, averiguar e informar cuantos
elementos nulos posee. Imprimir el arreglo.
Pseudocódigo
Comenzar
NULOS = 0
Leer A(I)
Para I desde 1 hasta 100
Si A(I) = 0
entonces NULOS = NULOS + 1
fin_si
fin_para
Imprimir “Total nulos” NULOS
Imprimir “Vector “ A(I)
Parar
7.5 Arreglos
I n i c i o
0 - - > N U L O S
L e e r
A ( I )
I = 1 , 1 0 0
1 - - > I
A ( I ) = 0 S i N U L O S = N U L O S + 1
I = 1 0 0
S i
N o I = I + 1
" T o t a l d e n u l o s "
N U L O S
F i n
N o
" V e c t o r A "
A ( I ) I = 1 , 1 0 0
I m p r i m e e l v e c t o r d e
u n a s o l a v e z
A v e r i g u a s i e l
e l e m e n t o e s c e r o
T e r m i n a d e r e c o r r e r e l
v e c t o r e i n f o r m a e l
t o t a l d e e l e m e n t o s
n u l o s e n c o n t r a d o s
Computacion - FA.CE.NA.
Estructura de datos
Arreglos bidimensionales: Matrices
Un arreglo de dos dimensiones, también denominada matriz, se
define como una tabla de tablas, o vector de vectores, es decir, es
aquella en la cual uno de sus elementos es, a su vez, una tabla
unidimensional.
Podemos comparar una matriz con una hoja de papel cuadriculado
en la que cada cuadrícula corresponderá a un elemento.
7.5 Arreglos
12
Fila 1
Fila 2
Fila 3
Columna 1 Columna 2 Columna 3 Columna 4
Computacion - FA.CE.NA.
Estructura de datos
Arreglos bidimensionales: Matrices
Un arreglo de dos dimensiones, también denominada matriz, se
define como una tabla de tablas, o vector de vectores, es decir, es
aquella en la cual uno de sus elementos es, a su vez, una tabla
unidimensional.
Podemos comparar una matriz con una hoja de papel cuadriculado en
la que cada cuadrícula corresponderá a un elemento.
7.5 Arreglos
12
Fila 1
Fila 2
Fila 3
Columna 1 Columna 2 Columna 3 Columna 4
En este gráfico podemos
observar que cada fila está
dividida en varias columnas. Por
lo tanto, para poder referenciar
un elemento de la matriz, hay
que especificar el nombre de la
misma (igual que con los
vectores) y, entre paréntesis, dos
subíndices separados por coma;
el primero indicará la fila en la
que se encuentra el elemento y
el segundo la columna.
Computacion - FA.CE.NA.
Estructura de datos
Arreglos bidimensionales: Matrices
Por lo tanto, si suponemos que la matriz representada se llama MAT,
el casillero con el número 12 corresponderá al elemento ubicado en la
fila 2 columna 3 y se lo representa como MAT(2,3). Si generalizamos,
MAT(i,j) sería el elemento correspondiente a la fila i columna j.
El caso anterior, representado en forma matricial sería como muestra
la figura.
7.5 Arreglos
MAT(I,J)
1
2
3
1 2 3 4
Donde la matriz llamada MAT tiene filas que
varían de 1 a 3 y columnas que varían de 1 a 4,
por lo tanto diremos que la matriz MAT tiene 3 x
4 elementos.
I = 1...3
J = 1....4
Si generalizamos el rango, resultaría:
I = 1...M
J = 1....N
Y diremos que la matriz MAT tiene M x N
elementos. Existen N elementos en cada fila y M
elementos en cada columna.
El resultado de multiplicar la cantidad de filas
por cantidad de columnas es el tamaño de la
matriz. En nuestro ejemplo anterior el tamaño es
de 12 (3 x 4).
Computacion - FA.CE.NA.
Estructura de datos
Recorrido de una matriz
Como vimos anteriormente, recorrer una tabla de dos dimensiones
significa acceder a todos y a cada uno de sus elementos. Este
proceso de recorrer la matriz se llevará a cabo mediante la estructura
repetitiva anidada.
El recorrido de los elementos de la matriz se puede realizar por fila o
por columna (ver figura) . Para recorrer por fila la matriz MAT se debe
realizar dos estructuras repetitivas anidadas. En la primera de ellas
(las mas externa) se realizan tres iteraciones para recorrer las 3 filas.
En cada una de esas iteraciones, se realizará a su vez 4 iteraciones
para recorrer los 4 elementos de cada fila (uno por cada columna).
7.5 Arreglos
S
e
n
tid
oe
nq
u
es
e
r
e
c
o
r
r
eu
n
am
a
tr
izp
o
r
f
ila
S
e
n
tid
oe
ns
er
e
c
o
r
r
e
u
n
am
a
trizp
o
r
c
o
lu
m
n
a
Computacion - FA.CE.NA.
Estructura de datos
Ejemplo
Supongamos que tenemos una matriz que contiene de los doce
meses del año las 4 temperaturas máximas de cada mes
T(12,4) y se desea imprimir los datos.
7.5 Arreglos
30 31 33 30
29 31 30 30
22 24 24 23
25 23 24 24
Temperatura
Máxima
1
Temperatura
Máxima
2
Temperatura
Máxima
3
Temperatura
Máxima
4
01
enero
02
febrero
03
marzo
04
abril
............... ........................ ............................ ......................
28 26 29 30
12
diciembre
Si deseamos imprimir los datos por mes (fila
de la matriz) debemos recorrer la misma por
fila de forma tal que por cada fila debemos
recorrer las 4 columnas de la misma. Pero
como la matriz tiene 12 filas, este proceso se
repite 12 veces – uno por cada fila – y de
esta manera formamos dos ciclos anidados.
Uno mas externo – fila - que se repite 12
veces y uno mas interno – columna – que por
cada fila se repite 4 veces.
12 FILAS 4 COLUMNAS
POR CADA FILA DEBO
RECORRER LAS
CUATRO COLUMNAS
DE LA MATRIZ
Computacion - FA.CE.NA.
Estructura de datos
Entonces, recorrer esta matriz para imprimirla consistirá en:
Posicionarse en la primer fila (I=1) y recorrer todas sus columnas
(desde J=1 hasta J=4).
Posicionarse en la segunda fila (I=2) y volver a recorrer, nuevamente,
todas sus columnas (desde J=1 hasta J=4).
Repetir estas operaciones para cada valor de I hasta que se hayan
realizado para la última fila, es decir para I=12.
7.5 Arreglos
30 31 33 30
29 31 30 30
22 24 24 23
25 23 24 24
Temperatura
Máxima
1
Temperatura
Máxima
2
Temperatura
Máxima
3
Temperatura
Máxima
4
01
enero
02
febrero
03
marzo
04
abril
............... ........................ ............................ ......................
28 26 29 30
12
diciembre
Computacion - FA.CE.NA.
Estructura de datos
El Pseudocódigo y diagrama de flujo correspondientes para recorrer e
imprimir la matriz T(12,4) sería:
Comenzar
Para I = 1 a 12
Para J = 1 a 4
Imprimir T(I,J)
Fin_para
Fin_para
Parar
7.5 Arreglos
COMENZAR
T(I , J)
I = 1,12
J = 1,4
I = 1
J = 1
T(I,J)
J = 4 No
Si
J = J + 1
I = 4 No
Si
I = I + 1
PARAR
ciclo de J
ciclo de I
Computacion - FA.CE.NA.
Estructura de datos
Del mismo modo, si deseamos recorrer una matriz por
columna se debe para cada columna recorrer todas sus filas,
en este caso 12.
El pseudocódigo se transformaría en:
Comenzar
Para J = 1 a 4
Para I = 1 a 12
Imprimir T(I,J)
Fin_para
Fin_para
Parar
7.5 Arreglos
c o m ie n z o
T ( I , J )
I = 1 ,1 2
J = 1 ,4
J = 1
I = 1
T ( I,J )
I = 1 2 N o
S i
I = I + 1
J = 4 N o
S i
J = J + 1
p a ra r
c ic lo d e I
c ic lo d e J
Computacion - FA.CE.NA.
Estructura de datos
Es importante observar que la única variación entre estas
dos resoluciones es el intercambio de los subíndices en
las estructuras repetitivas, y lo que permanece
invariable, sin embargo, es el orden de los mismos
durante la impresión.
7.5 Arreglos
c o m ie n z o
T ( I , J )
I = 1 ,1 2
J = 1 ,4
J = 1
I = 1
T ( I,J )
I = 1 2 N o
S i
I = I + 1
J = 4 N o
S i
J = J + 1
p a ra r
c ic lo d e I
c ic lo d e J
COMENZAR
T(I , J)
I = 1,12
J = 1,4
I = 1
J = 1
T(I,J)
J = 4 No
Si
J = J + 1
I = 4 No
Si
I = I + 1
PARAR
ciclo de J
ciclo de I

Estructura de datos.ppt

  • 1.
  • 2.
    Computacion - FA.CE.NA. Estructurasde datos TEMA 7 Estructura de datos. Campo, registro, archivos y base de datos. Operaciones. Estructuras lineales (Arreglos). Operaciones.
  • 3.
    Computacion - FA.CE.NA. Estructurasde datos En todos los tiempos y más aún en la era en que vivimos, el hombre tiene cada vez mas necesidad de consultar una mayor cantidad de información para poder desarrollar sus actividades. El gran cúmulo de información ha hecho necesario que ésta tenga que ser almacenada y organizada correctamente para acceder a ella rápidamente. Según lo visto hasta el momento, la única forma que tiene el ordenador de almacenar la información es mediante variables, que no son mas que porciones de la memoria central del mismo. Pero al ser la memoria central un conjunto de dispositivos electrónicos que funcionan mediante la alimentación eléctrica, cuando se apaga el ordenador, toda la información que había en su memoria central desaparece. 7.1 Estructura de datos. Concepto
  • 4.
    Computacion - FA.CE.NA. Estructurasde datos Por lo tanto, para poder acceder a determinada información en cualquier momento, se necesitará que ella esté depositada en soportes físicos los cuales la almacenan en forma permanente. Este es el caso de la memoria externa o auxiliar como ser disquete, disco duro, cinta magnética, etc.-, en las cuales sin necesidad de estar conectadas a la corriente eléctrica, la información permanece allí. La forma de guardar los datos en estos dispositivos auxiliares es mediante unas estructuras llamadas archivos o ficheros. Además, existe una gran diferencia en cuanto a capacidad de almacenamiento entre la memoria central y las auxiliares, en general la capacidad de las últimas es muy superior. 7.1 Estructura de datos. Concepto
  • 5.
    Computacion - FA.CE.NA. Estructurasde datos Conociendo esto, podríamos comparar la memoria central con la memoria humana y una memoria auxiliar con una guía de teléfonos. El hecho de llamar por teléfono a una determinada persona es mucho más rápido si sabemos su número de memoria (el número está dentro de la memoria). Es también casi impensable que el hombre retenga en su memoria todos los números de teléfono de la guía (memoria central), para ello se recurre a una memoria externa que es la guía telefónica. Entonces, cuando deseamos llamar a una persona de la cual desconocemos su número, lo buscamos en la guía; una vez localizado, lo retenemos en la memoria (la información pasa de la memoria auxiliar a la memoria central) y realizamos la acción de marcar el número. 7.1 Estructura de datos. Concepto
  • 6.
    Computacion - FA.CE.NA. Estructurasde datos Si comprendimos este caso, podríamos decir que en un ordenador la información de entrada de la que se parte para su tratamiento se va a obtener de dispositivos externos, desde los que la va a introducir en su memoria central a través de variables. A partir de aquí trabajará con estas variables, y la información de salida que obtenga la guardará nuevamente en los soportes de almacenamiento externos. Anteriormente se nombró la palabra archivo, la cual es de entender que no es un término puramente informático, y para comprender este significado podemos comparar con hechos de la vida cotidiana. Por ejemplo cuando concurrimos a una biblioteca a pedir un libro prestado, el encargado consulta su archivo de libros; si trabajamos en alguna empresa, nuestros datos estarán registrados en un archivo de empleados, etc.- Entonces vemos que al menos todos tenemos de alguna manera intuitiva el concepto de lo que significa archivo o fichero. A continuación veremos algunas definiciones que están básicamente relacionados con este concepto. 7.1 Estructura de datos. Concepto
  • 7.
    Computacion - FA.CE.NA. Estructurasde datos 7.1.1 Campo Un campo es un conjunto de caracteres capaz de suministrar una determinada información referida a un concepto. Un campo es un elemento de datos elementales tales como nombre y apellido, numero de documento, domicilio, etc.- Al igual que en las variables, al definir un campo hay que indicar claramente sus tres características: Nombre: Nombre que identifica a ese conjunto de caracteres Tipo: Tipo de caracteres que puede contener (alfabético, entero, etc.-) Tamaño: Cantidad de caracteres que puede contener Por ejemplo, si tenemos que definir al campo número de documento resultaría: Nombre: documento Tipo: numérico Tamaño: 8 enteros Un campo es la entidad lógica más pequeña, consiste en un conjunto de byte que conforman un dato. Un campo es la unidad mínima de información de un registro. 7.1 Estructura de datos. Concepto
  • 8.
    Computacion - FA.CE.NA. Estructurasde datos 7.1.2 Registros Un registro es un conjunto de campos referentes a una entidad en particular y constituyen una unidad para su proceso. Un ejemplo de un registro puede ser la información de un determinado alumno universitario, que contiene los campos: libreta universitaria, apellido y nombre, número de documento, domicilio, fecha de nacimiento, entre otros campos. La figura muestra un ejemplo gráfico de registro. 7.1 Estructura de datos. Concepto lib re tau n iv e rs ita ria A p e llid oyn o m b re n ú m e r od ed o c u m e n to D o m ic ilio F e c h ad en a c im ie n to
  • 9.
    Computacion - FA.CE.NA. Estructurasde datos 7.1.3 Archivos Es el conjunto de registros homogéneos referidos a objetos de la misma naturaleza o del mismo tipo, almacenados en un soporte externo, que presenta entre sí una relación lógica y que pueden ser consultados individualmente de forma iterativa o sistemática. Tomando el ejemplo anterior, podemos decir que habrá un registro por alumno, y habrá tantos registros como alumnos haya. Este conjunto de registros de alumnos formará un archivo y lo vemos gráficamente en la figura. 7.1 Estructura de datos. Concepto lib r e tau n iv e r s ita r ia A p e llid oyn o m b r e n ú m e r od ed o c u m e n to D o m ic ilio F e c h ad en a c im ie n to
  • 10.
    Computacion - FA.CE.NA. Estructurasde datos 7.1.3 Archivos Un archivo en una computadora es una estructura diseñada para contener datos, estos están organizados de forma tal que pueden ser recuperados fácilmente, borrados, actualizados, etc.- Al hablar de archivo es imprescindible que cada uno de ellos tenga un nombre para poder identificarlo. En este caso podría ser un nombre apropiado: ESTUDIANTES. En resumen, podríamos decir que un archivo está formado por un conjunto de registros, y estos a su vez por un conjunto de campos. 7.1 Estructura de datos. Concepto Archivo Registro 1 Registro 2 Registro n
  • 11.
    Computacion - FA.CE.NA. Estructurasde datos 7.1.4 Base de Datos Es una colección de archivos relacionados lógicamente, que se estructura en diferentes formas para reducir duplicaciones y proporcionar un mejor acceso a los datos. Constituye el nivel mas alto en la jerarquía de organización de los datos, siendo el nivel mas bajo el carácter. Así una base de datos de una universidad podría contener archivos de estudiantes, profesores, inventarios, libros, etc. La figura presenta gráficamente la estructura jerárquica en base de datos. . 7.1 Estructura de datos. Concepto
  • 12.
    Computacion - FA.CE.NA. Estructurasde datos 7.1.4 Base de Datos . 7.1 Estructura de datos. Concepto Base de datos Archivo Archivo Archivo Registro Registro Registro Registro Campo Campo Campo Campo Campo Caracter Caracter Caracter Caracter Caracter
  • 13.
    Computacion - FA.CE.NA. Estructurasde datos 7.2.1 Campo Clave Un campo clave (key) es aquel que identifica al registro y lo diferencia de los otros registros. Debe ser UNICO, es decir debe ser diferente para cada registro. De todos los campos o datos siempre se elige a uno como campo clave. Por ejemplo, en el registro mostrado en la figura el campo clave podría ser libreta universitaria . 7.2 Conceptos lib r e t a u n iv e r s it a r ia A p e llid o yn o m b r e n ú m e r o d e d o c u m e n t o D o m ic ili o F e c h a d e n a c im ie n t o
  • 14.
    Computacion - FA.CE.NA. Estructurasde datos 7.2.2 Registro lógico Se denomina registro lógico al conjunto de campos o datos referente a un mismo objeto y constituyen una unidad para su proceso. Son los registros organizados en campos 7.2.3 Registro físico Registro físico es un conjunto de registros lógicos que constituyen la unidad de transferencia en una sola operación de entrada / salida (para transferencias entre las unidades de E/S o dispositivos de almacenamiento, y la memoria principal). . 7.2 Conceptos
  • 15.
    Computacion - FA.CE.NA. Estructurasde datos Creación Apertura Cierre Lectura / Consulta Fin de Archivo Actualización Destrucción . 7.3 Operaciones sobre archivos
  • 16.
    Computacion - FA.CE.NA. Estructurasde datos Creación Es la primera operación que se hará con un archivo y es la operación mediante la cual se introduce la información correspondiente al archivo en un soporte de almacenamiento de datos. Para poder utilizar un archivo, este debe existir, es decir, es necesario que se haya creado previamente. La creación exige organización, estructura, localización o reserva de espacio en el soporte de almacenamiento. En un entorno de computadoras, durante la creación es necesario darle una serie de datos: Nombre del dispositivo, nombre de archivo, tamaño, organización, etc.- Al momento de la creación puede suceder que sea creado por primera vez en un soporte determinado, proceder de otro que ya existe, ser el resultado de un cálculo, condición, etc.- o ambas cosas a la vez. . 7.3 Operaciones sobre archivos
  • 17.
    Computacion - FA.CE.NA. Estructurasde datos Apertura Abrir un archivo significa dejarlo dispuesto para ser utilizado. Todos los archivos que se ocupan en un programa deben ser abiertos previamente a su uso. Un archivo que se pretende usar debió haber sido creado previamente, he aquí la diferencia entre estas dos operaciones: para crear el archivo no debe existir y para abrir debe haber sido creado previamente. 7.3 Operaciones sobre archivos
  • 18.
    Computacion - FA.CE.NA. Estructurasde datos Cierre La finalidad de cierre de los archivos radica en permitir al usuario detener el uso de ese archivo, dejarlo inaccesible. Como todos los archivos fueron abiertos durante un programa, necesitan ser cerrados al finalizar el proceso. Para realizar esta operación solo necesitamos conocer el nombre del mismo. 7.3 Operaciones sobre archivos
  • 19.
    Computacion - FA.CE.NA. Estructurasde datos Lectura/Consulta Es la operación que nos permite acceder al archivo de datos para conocer la información alojada en uno, varios o todos los registros del archivo. Esta operación implica el traspaso de información desde el archivo a la memoria central del ordenador. Esta información es la contenida en un registro. Como se mencionó anteriormente, la única forma de guardar información en la memoria central es a través de variables. En una operación de este tipo, los nombres de las variables que reciben los datos del registro leído son los que se han asignado a los campos del mismo. 7.3 Operaciones sobre archivos
  • 20.
    Computacion - FA.CE.NA. Estructurasde datos Lectura/Consulta Por ejemplo, si tenemos el archivo de estudiantes cuyo registro posee: LU - Libreta Universitaria AYN - Apellido y Nombre DOMI- Domicilio FECHANAC- Fecha de Nacimiento Para representar gráficamente la operación de lectura haríamos A partir de este momento se podrá operar con estas variables, visualizarlas en pantalla, imprimirlas, compararlas, etc.- Si se efectúa una segunda lectura, el contenido del segundo registro pasará a las mismas variables de la memoria, sustituyendo sus anteriores valores. Por lo tanto, en cada instante del proceso solo se dispone de la información del registro recién leído. 7.3 Operaciones sobre archivos Leer LU AYN DOMI FECHANAC
  • 21.
    Computacion - FA.CE.NA. Estructurasde datos Fin de archivo Toda instrucción de ingreso de datos, ya sea desde teclado o desde un dispositivo magnético, requiere una condición de fin de ingreso de los datos, con el objeto de determinar cuando se han terminado los registros de un archivo o cuando ya no se desean ingresar mas datos desde el teclado. Esta condición la denominamos fin de archivo conocida como EOF (end of file). Para el ingreso de datos por teclado se prevee, generalmente la introducción de un valor elegido por el programador que será el indicador de que ya no se ingresarán mas datos, por ejemplo si se introducen por teclado notas de los alumnos, el fin de datos estará dado por un valor que sea un absurdo o datos que no existan en esa población, en este caso se podría tomar NOTA=11. El diagrama de la figura muestra lo mencionado. 7.3 Operaciones sobre archivos Comenzar Ingresar NOTA NOTA = 11 Si Parar No
  • 22.
    Computacion - FA.CE.NA. Estructurasde datos Fin de archivo Si los datos que se leen están soportados en un archivo y sobre el se realizan lecturas sucesivas, llegará un momento en que este se acabe; es decir ya no queden mas registros por leer. Esta situación la detecta el sistema después de una operación de lectura, cuando lo que se ha leído no es un registro de datos, sino lo que se conoce con el nombre de marca de fin de archivo. Por tanto, siempre que se ejecute una operación de lectura sobre un archivo secuencial, a continuación hay que preguntar si lo que se ha leído es la marca EOF o, por el contrario, un registro de datos para ejecutar las acciones pertinentes. El diagrama de flujo de la figura muestra el uso de la condición EOF. . 7.3 Operaciones sobre archivos Comenzar Leer {lista de campos} EOF Si Parar No
  • 23.
    Computacion - FA.CE.NA. Estructurasde datos Actualización La actualización de un archivo supone las siguientes operaciones: Añadir registros – ALTAS Modificar registros ya existentes – MODIFICACIONES Borrar registros – BAJAS El modo de operar la actualización varía según la organización y método de acceso del archivo. . 7.3 Operaciones sobre archivos
  • 24.
    Computacion - FA.CE.NA. Estructurasde datos Destrucción La operación de destrucción o borrado realiza la supresión del archivo en el soporte o dispositivo, dejando este espacio que ocupaba anteriormente disponible. . 7.3 Operaciones sobre archivos
  • 25.
    Computacion - FA.CE.NA. Estructurade datos Cuando hablamos de Estructuras de Datos hacemos referencia a un conjunto de datos que poseen el mismo nombre, que pueden ser caracterizados por su organización y por las operaciones que se definen en ella. Las Estructuras de Datos son muy importantes en los sistemas de computación y para explicar mas fácilmente veremos la siguiente clasificación la cual refleja el tipo de datos mas frecuentemente utilizados: . 7.4 Estructuras lineales y no lineales Datos Simples Estándar Entero Real Caracteres Lógico Estructura de datos Estáticas Vectores y Matrices Registros Archivos Dinámicas Lineales Pilas Colas Listas Enlazadas No lineales Arboles Grafos
  • 26.
    Computacion - FA.CE.NA. Estructurade datos Las estructuras de datos estáticas son aquellas en las que el tamaño ocupado en memoria se define antes que el programa se ejecute y el mismo no puede ser modificado durante la ejecución. En cambio las estructuras de datos dinámicas no tienen limitaciones en cuanto al tamaño de memoria ocupada. Para utilizar este tipo de estructuras necesitamos usar un tipo de dato específico llamado puntero. Los tipos de datos que vimos hasta ahora son datos simples cuya característica común es que cada variable representa a un elemento; en cambio los tipos de datos estructurados tienen como particularidad que con un nombre o identificador se puede representar múltiples datos individuales y a su vez cada uno de estos puede ser referenciado independientemente. . 7.4 Estructuras lineales y no lineales
  • 27.
    Computacion - FA.CE.NA. Estructurade datos Concepto Arreglos se define como una colección finita, homogénea y ordenada de elementos. Finita: Todo arreglo tiene un límite, es decir, debe determinarse cual será el número máximo de elementos que podrán formar parte del arreglo. Homogénea: Todos los elementos de un arreglo son del mismo tipo o naturaleza (todos enteros, todos booleanos, etc.- ), pero nunca una combinación de distintos tipos. Ordenada: Se debe determinar cual es el primer elemento, el segundo, el tercero..... y el enésimo elemento. . 7.5 Arreglos N - ELEMENTO ARREGLO 1º ELEMENTO 2º ELEMENTO
  • 28.
    Computacion - FA.CE.NA. Estructurade datos Características Si un arreglo tiene la característica de que puede almacenar a N elementos del mismo tipo, deberá tener la posibilidad de permitir seleccionar a cada uno de ellos. Así se distinguen dos partes en los arreglos. ● Los componentes o elementos (valores que se almacenan en c/u de las casillas) ● Los índices (Permiten hacer referencia a los componentes) El número total de componentes (NTC) es igual al límite superior (LS) menos límite inferior (LI) mas 1 NTC = LS - LI + 1 El tipo de índice puede ser cualquier tipo ordinal (carácter, entero, enumerado) El tipo de los componentes puede ser cualquiera (entero, real, cadena de caracteres, registro, etc.) Se utilizan ( ) para indicar el índice de un arreglo. Entre los ( ) se debe escribir un valor ordinal (puede ser una variable, una constante o una expresión que dé como resultado un valor ordinal) . 7.5 Arreglos
  • 29.
    Computacion - FA.CE.NA. Estructurade datos Ejemplo Sea V un arreglo de 30 elementos enteros con índices enteros. V = (52,12,31,102,....75) V (50)= v(1), v(2), v(3),...., v(30), Su representación se muestra en la figura Donde NTC = (30 – 1 + 1) = 30 Cada componente del arreglo V será un número entero, y podrá accederse por medio de un índice que será un valor comprendido entre 1 y 30. . 7.5 Arreglos 5 2 1 2 3 1 1 0 2 ..... 7 5 1 2 3 4 3 0 ..... C o m p o n e n te s In d ice s
  • 30.
    Computacion - FA.CE.NA. Estructurade datos En cuanto a las dimensiones los arreglos pueden ser: Unidimensional o vector: un solo índice Bidimensional o matriz: dos índices Multidimensional: mas de dos índices . 7.5 Arreglos
  • 31.
    Computacion - FA.CE.NA. Estructurade datos Diferencia con registros Las dos diferencias sustanciales entre arreglos y registro son: 1) Un arreglo puede almacenar N elementos del mismo tipo, mientras que un registro puede almacenar N elementos de distintos tipos que se llaman campos. 2) Los componentes de un arreglo se acceden por medio de índices, mientras que en un registro los campos se acceden por medio de su nombre, el cual es único. Un vector unidimensional, es el vector TEMPERATURA que contiene las temperaturas horarias registradas en una ciudad durante las 24 horas del día. Este vector constará de 24 elementos del tipo real, ya que las temperaturas no serán enteras siempre. El valor mínimo del índice permitido de un vector se denomina límite inferior del vector (L) y el valor máximo permitido se denomina límite superior (U). En este ejemplo el límite inferior es 1 y el superior 24. TEMPERATURA (I) donde 1 <= I <= 24 . 7.5 Arreglos
  • 32.
    Computacion - FA.CE.NA. Estructurade datos Diferencia con registros Los vectores se almacenan en memoria central de la computadora en un orden adyacente. Así, un vector de cincuenta números denominado NUMEROS se representa físicamente por cincuenta posiciones de memoria sucesivas. Sea un vector X de ocho elementos: X[1] X[2] X[3] X[4] X[5] X[6] X[7] X[8] 14.0 12.0 8.0 7.0 6.41 5.23 6.15 7.25 . 7.5 Arreglos
  • 33.
    Computacion - FA.CE.NA. Estructurade datos Operaciones Podemos clasificar a las operaciones en las que intervienen arreglos de la siguiente manera: Lectura / escritura Recorrido Asignación Actualización (Añadir, eliminar, insertar) Ordenación Búsqueda 7.5 Arreglos
  • 34.
    Computacion - FA.CE.NA. Leer V(1) Leer V(2) .................. Leer V(30) Estructurade datos Operaciones: Lectura / escritura El proceso de lectura /escritura de un arreglo se realiza de la siguiente manera: Leer V(i) Lee todo el arreglo Escribir V(i) Escribe todo el arreglo Leer V(3) Lee el elemento 3 del arreglo Si se desea leer los 30 elementos de un vector en forma consecutiva se deberá hacer de la siguiente manera . Leer V(1) Leer V(2) Leer V(3) Leer V(..) Leer V(.30) 7.5 Arreglos
  • 35.
    Computacion - FA.CE.NA. Estructurade datos Operaciones: Lectura / escritura Pero de esta forma resultaría poco práctico, por lo tanto debemos usar la siguiente notación para realizar la lectura / escritura de un arreglo. Este proceso es válido también para escritura, simplemente se debe especificar dentro del símbolo la acción a realizar, en este caso Escribir V(i). 7.5 Arreglos Leer V(i) i = 1 a 30
  • 36.
    Computacion - FA.CE.NA. Estructurade datos Operaciones: Recorrido Recorrer un vector significa acceder a todos y a cada uno de sus elementos desde el principio hasta el final o viceversa. Se puede acceder a los elementos de un vector para introducir datos (leer) en él o bien para ver su contenido (escribir). A la operación de acceder a todos los elementos para efectuar una acción determinada se denomina recorrido del vector. Esta operación se realiza usando estructuras repetitivas, cuya variable de control I, se utiliza como subíndice del vector (por ejemplo V(i). El incremento del contador del bucle producirá el tratamiento sucesivo de los elementos del vector. Esta operación es muy utilizada en este tipo de estructuras de datos, dado que cuando se está en presencia de un vector, el acceso a toda la información se realiza recorriéndolo. En algunos casos se puede acceder a un determinado elemento o a varios de ellos con ciertas características sin necesidad de recorrer todo el arreglo, por ejemplo acceder solo al último elemento que sabemos a priori posee la suma de los elementos anteriores. 7.5 Arreglos
  • 37.
    Computacion - FA.CE.NA. Estructurade datos Operaciones: Recorrido Ejemplo Sumar los 30 elementos de un vector V. 7.5 Arreglos Comienzo I = 1 I = 30 No I = I +1 SI Parar Leer V(i) i = 1 a 30 SUMA = 0 SUMA = SUMA + V(i)
  • 38.
    Computacion - FA.CE.NA. Estructurade datos Operaciones: Asignacion En general no es posible asignar directamente un valor a todo el arreglo; se debe asignar el valor deseado a cada componente usando la instrucción de asignación, recordando que la asignación coloca el nuevo contenido en la variable destruyendo el valor anterior. 15  V(20) o V(20) = 15 asigna el valor 15 al elemento 20 del vector V Si se quiere asignar valores a todos los componentes del vector, se debe recurrir a las estructuras repetitivas. Por ejemplo, si se desea poner en cero al vector V(30) la solución se muestra en la siguiente pantalla 7.5 Arreglos
  • 39.
    Computacion - FA.CE.NA. Estructurade datos Operaciones: Asignacion También se puede asignar una variable tipo arreglo a otra exactamente del mismo tipo. A(I)  V(I) o V(I) = A(I) 7.5 Arreglos Comienzo I = 1 I = 30 No I = I +1 SI Parar V (i) = 0
  • 40.
    Computacion - FA.CE.NA. Estructurade datos Operaciones: Actualizacion Muchas veces resulta interesante que dado un arreglo, puedan añadirse nuevos elementos o eliminar o insertar componentes. Estas resultan las tres operaciones elementales que se pueden realizar en un arreglo: añadir, eliminar e insertar elementos. Cuando se realiza una operación de añadir un nuevo elemento a continuación del último valor no nulo, la única condición necesaria para esta operación es comprobar que haya espacio para el nuevo elemento. 7.5 Arreglos
  • 41.
    Computacion - FA.CE.NA. Estructurade datos Operaciones: Actualizacion Ejemplo Dado un vector C de 8 elementos que contiene una nómina de 5 direcciones de correo ordenadas alfabéticamente. Se desea añadir la dirección valeria@server.com 7.5 Arreglos I=1a8 a lic ia @ s e r v e r .c o m c a s to r @ s e r v e r .c o m d a n ie l@ s e r v e r .c o m m a r ta @ s e r v e r .c o m s o n ia @ s e r v e r .c o m a lic ia @ s e r v e r .c o m c a s to r @ s e r v e r .c o m d a n ie l@ s e r v e r .c o m m a r ta @ s e r v e r .c o m s o n ia @ s e r v e r .c o m v a le r ia @ s e r v e r .c o m 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 C ( 6 )=" v a le r ia @ s e r v e r .c o m " C o m e n z a r C ( I ) P a r a r
  • 42.
    Computacion - FA.CE.NA. Estructurade datos Operaciones: Actualizacion Con la simple instrucción de asignación se añaden los elementos. Insertar un elemento es una operación que consiste en introducir dicho elemento en el interior del vector, en una posición I dada, de forma tal que los elementos ubicados en las siguientes posiciones sean desplazados a las posiciones I + 1 respectivas. La operación de eliminar un elemento al final del arreglo no presenta ningún problema; en cambio, si el borrado se realiza en el interior del mismo esto provoca el efecto contrario al de insertar, el movimiento deberá ser hacia arriba (I-1) de los elementos inferiores a él para reorganizar el vector. 7.5 Arreglos
  • 43.
    Computacion - FA.CE.NA. Estructurade datos Operaciones: Actualizacion Ejemplo Tomamos el vector C del ejemplo anterior, pero en este caso se desea eliminar del arreglo el elemento 4. 7.5 Arreglos I = 1 a 8 alicia@server.com castor@server.com daniel@server.com marta@server.com pascual@server.com sonia@server.com valeria@server.com alicia@server.com castor@server.com daniel@server.com pascual@server.com sonia@server.com valeria@server.com 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 Comenzar C(I) I = 4 C(I) = C(I+1) I = 8 No I = I + 1 Si Parar
  • 44.
    Computacion - FA.CE.NA. Estructurade datos Operaciones: Bùsqueda Consiste en encontrar elemento/s dentro de un arreglo Ejemplo Dado un arreglo A de 100 elementos, averiguar e informar cuantos elementos nulos posee. Imprimir el arreglo. Pseudocódigo Comenzar NULOS = 0 Leer A(I) Para I desde 1 hasta 100 Si A(I) = 0 entonces NULOS = NULOS + 1 fin_si fin_para Imprimir “Total nulos” NULOS Imprimir “Vector “ A(I) Parar 7.5 Arreglos I n i c i o 0 - - > N U L O S L e e r A ( I ) I = 1 , 1 0 0 1 - - > I A ( I ) = 0 S i N U L O S = N U L O S + 1 I = 1 0 0 S i N o I = I + 1 " T o t a l d e n u l o s " N U L O S F i n N o " V e c t o r A " A ( I ) I = 1 , 1 0 0 I m p r i m e e l v e c t o r d e u n a s o l a v e z A v e r i g u a s i e l e l e m e n t o e s c e r o T e r m i n a d e r e c o r r e r e l v e c t o r e i n f o r m a e l t o t a l d e e l e m e n t o s n u l o s e n c o n t r a d o s
  • 45.
    Computacion - FA.CE.NA. Estructurade datos Arreglos bidimensionales: Matrices Un arreglo de dos dimensiones, también denominada matriz, se define como una tabla de tablas, o vector de vectores, es decir, es aquella en la cual uno de sus elementos es, a su vez, una tabla unidimensional. Podemos comparar una matriz con una hoja de papel cuadriculado en la que cada cuadrícula corresponderá a un elemento. 7.5 Arreglos 12 Fila 1 Fila 2 Fila 3 Columna 1 Columna 2 Columna 3 Columna 4
  • 46.
    Computacion - FA.CE.NA. Estructurade datos Arreglos bidimensionales: Matrices Un arreglo de dos dimensiones, también denominada matriz, se define como una tabla de tablas, o vector de vectores, es decir, es aquella en la cual uno de sus elementos es, a su vez, una tabla unidimensional. Podemos comparar una matriz con una hoja de papel cuadriculado en la que cada cuadrícula corresponderá a un elemento. 7.5 Arreglos 12 Fila 1 Fila 2 Fila 3 Columna 1 Columna 2 Columna 3 Columna 4 En este gráfico podemos observar que cada fila está dividida en varias columnas. Por lo tanto, para poder referenciar un elemento de la matriz, hay que especificar el nombre de la misma (igual que con los vectores) y, entre paréntesis, dos subíndices separados por coma; el primero indicará la fila en la que se encuentra el elemento y el segundo la columna.
  • 47.
    Computacion - FA.CE.NA. Estructurade datos Arreglos bidimensionales: Matrices Por lo tanto, si suponemos que la matriz representada se llama MAT, el casillero con el número 12 corresponderá al elemento ubicado en la fila 2 columna 3 y se lo representa como MAT(2,3). Si generalizamos, MAT(i,j) sería el elemento correspondiente a la fila i columna j. El caso anterior, representado en forma matricial sería como muestra la figura. 7.5 Arreglos MAT(I,J) 1 2 3 1 2 3 4 Donde la matriz llamada MAT tiene filas que varían de 1 a 3 y columnas que varían de 1 a 4, por lo tanto diremos que la matriz MAT tiene 3 x 4 elementos. I = 1...3 J = 1....4 Si generalizamos el rango, resultaría: I = 1...M J = 1....N Y diremos que la matriz MAT tiene M x N elementos. Existen N elementos en cada fila y M elementos en cada columna. El resultado de multiplicar la cantidad de filas por cantidad de columnas es el tamaño de la matriz. En nuestro ejemplo anterior el tamaño es de 12 (3 x 4).
  • 48.
    Computacion - FA.CE.NA. Estructurade datos Recorrido de una matriz Como vimos anteriormente, recorrer una tabla de dos dimensiones significa acceder a todos y a cada uno de sus elementos. Este proceso de recorrer la matriz se llevará a cabo mediante la estructura repetitiva anidada. El recorrido de los elementos de la matriz se puede realizar por fila o por columna (ver figura) . Para recorrer por fila la matriz MAT se debe realizar dos estructuras repetitivas anidadas. En la primera de ellas (las mas externa) se realizan tres iteraciones para recorrer las 3 filas. En cada una de esas iteraciones, se realizará a su vez 4 iteraciones para recorrer los 4 elementos de cada fila (uno por cada columna). 7.5 Arreglos S e n tid oe nq u es e r e c o r r eu n am a tr izp o r f ila S e n tid oe ns er e c o r r e u n am a trizp o r c o lu m n a
  • 49.
    Computacion - FA.CE.NA. Estructurade datos Ejemplo Supongamos que tenemos una matriz que contiene de los doce meses del año las 4 temperaturas máximas de cada mes T(12,4) y se desea imprimir los datos. 7.5 Arreglos 30 31 33 30 29 31 30 30 22 24 24 23 25 23 24 24 Temperatura Máxima 1 Temperatura Máxima 2 Temperatura Máxima 3 Temperatura Máxima 4 01 enero 02 febrero 03 marzo 04 abril ............... ........................ ............................ ...................... 28 26 29 30 12 diciembre Si deseamos imprimir los datos por mes (fila de la matriz) debemos recorrer la misma por fila de forma tal que por cada fila debemos recorrer las 4 columnas de la misma. Pero como la matriz tiene 12 filas, este proceso se repite 12 veces – uno por cada fila – y de esta manera formamos dos ciclos anidados. Uno mas externo – fila - que se repite 12 veces y uno mas interno – columna – que por cada fila se repite 4 veces. 12 FILAS 4 COLUMNAS POR CADA FILA DEBO RECORRER LAS CUATRO COLUMNAS DE LA MATRIZ
  • 50.
    Computacion - FA.CE.NA. Estructurade datos Entonces, recorrer esta matriz para imprimirla consistirá en: Posicionarse en la primer fila (I=1) y recorrer todas sus columnas (desde J=1 hasta J=4). Posicionarse en la segunda fila (I=2) y volver a recorrer, nuevamente, todas sus columnas (desde J=1 hasta J=4). Repetir estas operaciones para cada valor de I hasta que se hayan realizado para la última fila, es decir para I=12. 7.5 Arreglos 30 31 33 30 29 31 30 30 22 24 24 23 25 23 24 24 Temperatura Máxima 1 Temperatura Máxima 2 Temperatura Máxima 3 Temperatura Máxima 4 01 enero 02 febrero 03 marzo 04 abril ............... ........................ ............................ ...................... 28 26 29 30 12 diciembre
  • 51.
    Computacion - FA.CE.NA. Estructurade datos El Pseudocódigo y diagrama de flujo correspondientes para recorrer e imprimir la matriz T(12,4) sería: Comenzar Para I = 1 a 12 Para J = 1 a 4 Imprimir T(I,J) Fin_para Fin_para Parar 7.5 Arreglos COMENZAR T(I , J) I = 1,12 J = 1,4 I = 1 J = 1 T(I,J) J = 4 No Si J = J + 1 I = 4 No Si I = I + 1 PARAR ciclo de J ciclo de I
  • 52.
    Computacion - FA.CE.NA. Estructurade datos Del mismo modo, si deseamos recorrer una matriz por columna se debe para cada columna recorrer todas sus filas, en este caso 12. El pseudocódigo se transformaría en: Comenzar Para J = 1 a 4 Para I = 1 a 12 Imprimir T(I,J) Fin_para Fin_para Parar 7.5 Arreglos c o m ie n z o T ( I , J ) I = 1 ,1 2 J = 1 ,4 J = 1 I = 1 T ( I,J ) I = 1 2 N o S i I = I + 1 J = 4 N o S i J = J + 1 p a ra r c ic lo d e I c ic lo d e J
  • 53.
    Computacion - FA.CE.NA. Estructurade datos Es importante observar que la única variación entre estas dos resoluciones es el intercambio de los subíndices en las estructuras repetitivas, y lo que permanece invariable, sin embargo, es el orden de los mismos durante la impresión. 7.5 Arreglos c o m ie n z o T ( I , J ) I = 1 ,1 2 J = 1 ,4 J = 1 I = 1 T ( I,J ) I = 1 2 N o S i I = I + 1 J = 4 N o S i J = J + 1 p a ra r c ic lo d e I c ic lo d e J COMENZAR T(I , J) I = 1,12 J = 1,4 I = 1 J = 1 T(I,J) J = 4 No Si J = J + 1 I = 4 No Si I = I + 1 PARAR ciclo de J ciclo de I