Está en la página 1de 35

MÓDULO I.

ESTRUCTURAS DE DATOS FUNDAMENTALES


La mayoría de los lenguajes de programación
soporta diferentes estructuras de datos, es decir,
posee una sintaxis propia para declararlas y
funciones de biblioteca y operadores para
INTRODUCCIÓN manipularlas.
Algunos lenguajes, además, permiten a los
programadores crear sus propias estructuras de
datos con el objetivo fundamental de resolver de la
forma más eficiente posible, una aplicación.
ESTRUCTUR AS DE DATOS TIPO REGISTROS
INTRODUCCIÓN
Los datos corresponden a
observaciones que
realizamos en el mundo real.
➢ Se recopilan como
hechos o evidencias
➢ Adquieren significado a
partir de su
procesamiento
¿un árbol que cae y hace ruido es un hecho
INTRODUCCIÓN que existe aunque nadie lo perciba?...
INTRODUCCIÓN
INTRODUCCIÓN
En Informática los datos recopilan Atributos
hechos acerca de Entidades y Sucesos.
Cedula

• Entidad: persona, lugar o cosa,


• Suceso: algo que ocurre en un
Entidad
momento determinado. Las
transacciones son los principales Sucesos o transacciones
sucesos que se registran. para esta entidad
➢ Horas trabajadas el 6/6/2019
➢ Incapacidad por enfermedad del
3/5/2019
➢ Vacaciones tomadas
INTRODUCCIÓN
Cuenta
Cedula Atributos
Atributos
Nombre CLIENTE Cedula

Entidad
Dirección

Entidad
Cedula NRO_AS

Sucesos o transacciones
Nombre SOCIO para esta entidad
Atributos ➢ Horas trabajadas el 6/6/2019
Entidad ➢ Incapacidad por enfermedad del
Dirección
3/5/2019
➢ Vacaciones tomadas
INTRODUCCIÓN

Entidades y Sucesos,
se registran a través
de sus atributos.
Los atributos son
hechos que
permiten describir a
una entidad o
registrar un suceso.
INTRODUCCIÓN

otros datos ya existentes


JERARQUÍA DE LOS DATOS

Archivo o tabla
Base de Datos
Registro

Campos (Campos de la tabla CURSO)

Datos (Valores de datos de un estudiante en la tabla CURSO)


JERARQUÍA DE LOS DATOS
JERARQUÍA DE LOS DATOS
JERARQUÍA DE LOS DATOS
JERARQUÍA DE LOS DATOS
JERARQUÍA DE LOS DATOS
Claves: 0023, 0056, 0067, 0098, 7214

Acceso directo
Tabla 0001 …. 0023 … 0056 … 0067 … 0098 7214
1 …. 23 … 56 … 67 … 98 … 7214

Tabla 0067 0023 0098 0056 7214


Desordenada1 2 3 4 5 Búsqueda secuencial

Tabla 0023 0056 0067 0098 7214


Ordenada
1 2 3 4 5
Búsqueda binaria
Claves: 0023, 0056, 0067, 0098, 7214 N=5 K mod primo + 1 1 primo
K mod primo 0 primo - 1
Acceso directo
Tabla 0001 …. 0023 … 0056 … 0067 … 0098 7214
1 …. 23 … 56 … 67 … 98 … 7214

Hashing por residuo M = primo superior o igual a n


Tabla 0056 0098 0023 0067 7214
Hashing
1 2 3 4 5 6 7

0098
0023 f(H) posición relativa en la tabla hashing
colisión
JERARQUÍA DE LOS DATOS
Relaciones entre tablas
Las tablas de una base de datos,
sueles estar relacionadas.
Se conectan mediante un
campo común que ambas
poseen; es decir, el identificador
de una tabla (o campo llave),
puede ser un atributo en otra,
con la finalidad de proveer un
vínculo entre ambas.
REGISTROS
Declaración de registros
Cuando se requiera trabajar con
registros en nuestro algoritmos
nos referiremos a ellos con
independencia de su
organización previa, es decir, de
a qué base de datos
pertenecen.
Lo relevante será el nombre de
la tabla o archivo.
REGISTROS

EJEMPLOS:
REGISTROS
Acceso a los datos del registro
Como un registro es un tipo de dato estructurado no se puede tener acceso a él
como un único dato, a menos que se referencie el nombre del registro y el nombre
del campo, separados por un punto.
REGISTROS

EJEMPLOS:
REGISTROS
Diferencias entre registros y arreglos
1. Un arreglo, como estructura homogénea puede almacenar N datos
de un mismo tipo, mientras que un registro puede almacenar N
elementos de diferentes tipos, es decir, es una estructura
heterogénea.
2. A los componentes de un arreglo se tiene acceso mediante índices
que indican la posición del elemento correspondiente en el arreglo,
mientras que a los componentes de un registro, los campos, se tiene
acceso por medio de su nombre, que es único.
REGISTROS
Combinaciones entre registros y arreglos
Combinaciones
entre arreglos y
registros:

Arreglos de Registros Registros con


registros anidados arreglos

Cada elemento del Al menos un campo del Al menos un campo del


arreglo es un registro. registro es de tipo registro es de tipo
registro. arreglo.
REGISTROS
Combinaciones entre registros y arreglos
Arreglos de registros
Cada elemento del arreglo es
un registro.
Para tener acceso a los
elementos del arreglo A de tipo
CLIENTE, se usa:
PARA I = 1, N, 1 REPETIR
LEER (A[I].NOMBRE)
LEER (A[I].TEL)
LEER (A[I].SALDO)
LEER (A[I].MOROSO)
FIN-PARA-I
REGISTROS
Combinaciones entre registros y arreglos

Registros
anidados

Al menos un campo del


registro es de tipo
registro.

AC.NOMBRE
Para tener acceso a los campos de la AC.DIRECCIÓN.CALLE
variable AC de tipo ACREEDOR, se usa: AC.DIRECCIÓN.CIUDAD
AC.SALDO
REGISTROS
Combinaciones entre registros y arreglos
Registros con arreglos
Al menos un campo del
registro es de tipo arreglo.
Para tener acceso a los
campos de la variable CLI de
tipo CLIENTE, se usa:
LEER (CLI.NOMBRE)
LEER (CLI.TEL)
PARA I = 1, 12, 1 REPETIR
LEER (CLI.SALDOS[I])
FIN-PARA-I
LEER (CLI.MOROSO)
REGISTROS
Representación en memoria
Asumiremos que la representación interna de un registro será similar a
los elementos de un arreglo bidimensional almacenado fila a fila, es decir,
los campos del primer registro (primera fila) se colocarán primero; luego
los campos del segundo registro y así sucesivamente.
Cuando un lenguaje no permita definir la estructura de un registro, se
utilizarán arreglos paralelos.
Por arreglos paralelos se entiende, dos o más arreglos cuyos elementos se
corresponden.
Suponiendo una dirección inicial para el archivo en 2000, y que el archivo contiene 500 registros, cada
uno de los cuales contiene los siguientes datos: nombre(30), Teléfono (10), un arreglos de saldos de 12
elementos (reales) y un campo que indica si tiene saldos morosos (1).

Longitud de registro =  de las longitudes


Longitudes individuales de campo
de cada campo
= 30 + 10 + 48 + 1
= 89 bytes
30 bytes 10 bytes 48 bytes 1 byte

2000 2030 2040 2088 2089 2178

R1 R2 R3
Para calcular la dirección de un campo, se suma a
la dirección base del archivo, la longitud (número
de bytes) de los campos previos.
Suponiendo una dirección base para el archivo en 2000, y que el archivo contiene 500 registros, cada
uno de los cuales contiene los siguientes datos: nombre(30), Teléfono (10), un arreglos de saldos de 12
elementos (reales) y un campo que indica si tiene saldos morosos (1).

Longitud de registro =  de las longitudes


Longitudes individuales de campo
de cada campo
= 30 + 10 + 48 + 1
= 89
30 bytes 10 bytes 48 bytes 1 byte

2000 2030 2040 2088 2089 2178 2267

R1 R2 R3 R4

Para calcular la dirección de un registro, se suma


a la dirección base del archivo, el número de = 2000 + 89 * 3 = 2267
bytes que corresponden a los registros previos
Suponiendo una dirección inicial para el archivo en 2000, y que el
archivo contiene 500 registros, cada uno de los cuales contiene los
siguientes datos: nombre(30), Teléfono (10), un arreglos de saldos de
12 elementos y un campo que indica si tiene saldos morosos (1).

Obtenga la dirección el elemento Saldos [6], del registro 1.

Loc(A[K])= dirBase(A) + w (K-LimInf)


= 2040 + 4 (6-1)
Longitudes individuales de campo = 2040 + 4 (5)
= 2040 + 20
= 2060
30 bytes 10 bytes 48 bytes 1 byte

2000 2030 2040 2088 2089 2178

R1 R2 R3
Longitud de registro =  de las longitudes
de campo
= 30 + 10 + 48 + 1
= 89
Obtenga la dirección el elemento Saldos [11], del registro 345

Hay 344 registros previos, cada uno ocupa 89 bytes, por tanto la dirección
inicial del reg 345 sería: Así, la Loc(Saldos[11]) del registro
dirección inicial del archivo + bytes que ocupan los 344 registro previos 345 se obtiene como:
Entonces
2000 + 344 * 89 = 2000 + 30616 = 32616 (dirección del reg 345) Loc(A[K])= dirBase(A) + w (K-LimInf)
Como el arreglo saldo es el tercer campo del registro, debemos sumar a = 32656 + 4 (11-1)
esta dirección el desplazamiento de los campos previos (40 bytes), = 32656 + 4 (10)
obteniendo como dirBase del arreglo 32616 + 40 = 32656 = 32656 + 40
= 32696
Longitudes individuales de campo

30 bytes 10 bytes 48 bytes 1 byte

2000 2030 2040 2088 2089 2178 2267

R1 R2 R3
89*3= 267
Obtenga la dirección el elemento Saldos [7], del registro 285

Hay 284 registros previos, cada uno ocupa 89 bytes, por tanto la dirección
inicial del reg 285 sería: Así, la Loc(Saldos[7]) del registro 285
dirección inicial del archivo + bytes que ocupan los 2844 registro previos se obtiene como:
Entonces
2000 + 284 * 89 = 2000 + 25276 = 27276 (dirección del reg 285) Loc(A[K])= dirBase(A) + w (K-LimInf)
Como el arreglo saldo es el tercer campo del registro, debemos sumar a = 27316 + 4 (7-1)
esta dirección el desplazamiento de los campos previos (40 bytes), = 27316 + 4 (6)
obteniendo como dirBase del arreglo 27276 + 40 = 27316 = 27316 + 24
= 27340
Longitudes individuales de campo

30 bytes 10 bytes 48 bytes 1 byte

2000 2030 2040 2088 2089 2178

R1 R2 R3
Esto es todo ...terminamos con el módulo...

También podría gustarte