Archivos Indexados

Páginas: 5 (1034 palabras) Publicado: 22 de noviembre de 2012
Tema 1. Archivos.
Ejemplo: creación del archivo indexado
Se desea indexar el archivo directo de almacén. Para ello se debe leer secuencialmente el archivo de organización directa e incluir el código de producto y la posición de todas las ranuras ocupadas en un array de índices. Al acabar el proceso se debe ordenar el array y almacenarlo de forma temporal en un archivo secuencial para lassiguientes ocasiones en que se desee gestionar el índice. //Creación del archivo indexado a partir del archivo de productos algoritmo CreaciónIndexado const MaxReg = 120 //El índice sólo tiene 100 posiciones ya que sólo hay 100 productos distintos numElemIndice = 100 tipos registro = rProducto entero : código cadena: desc entero : stock entero : estado fin_registro archivo_d de rProducto = aProductoregistro = RIndice entero : clave entero : NRR fin_registro array[0..numElemIndice] de RIndice = vIndice var aProducto : A rProducto : R vIndice : Ind entero : n, NRR inicio abrir(A,lectura/escritura,'PRODUCTOS.DAT') n  0 NRR  0 leer(A,R) mientras no fda(A) hacer NRR  NRR + 1 si R.estado = 1 entonces n  n + 1 ind[n].clave  R.código ind[n].NRR  NRR fin_si leer(A,R) fin_mientras cerrar(A)Ordenar(Ind,n) GuardarIndice(Ind,n) fin //Para no perder el array de índices, el procedimiento GuardarIndice //lo vuelca en un archivo secuencial procedimiento GuardarIndice(valor vIndice : v; valor entero : n) var archivo_s de RIndice : A entero : i inicio abrir(A,escritura,'CODIGO.IDX') desde i  1 hasta n hacer escribir(A,v[i]) fin_si
UPSAM, Escuela superior de Ingeniería y Arquitectura, LuísRodríguez Baena, 2012 1

cerrar(A) fin_procedimiento

Ejemplo: Gestión del archivo indexado de productos
Programa principal
Para los algoritmos que aparecen a continuación, se suponen las siguientes declaraciones en el cuerpo del programa. En el programa principal, la variable entera n guarda el total de elementos ocupados del índice. El procedimiento CargarIndice, coge el archivo secuencial creadoen el ejemplo anterior y lo vuelca sobre un array. algoritmo GestiónArchivoIndexado const MaxReg = 120 //El índice sólo tiene 100 posiciones ya que sólo hay 100 productos distintos numElemIndice = 100 tipos registro = rProducto … fin_registro archivo_d de rProducto = aProducto registro = RIndice … fin_registro array[0.. numElemIndice] de RIndice = vIndice var aProducto : A rProducto : R vIndice :Ind entero : n inicio abrir(A,lectura/escritura,'PRODUCTOS.DAT') CargarIndice(Ind,n) … GuardarIndice(Ind,n) cerrar(A) fin //Carga el archivo secuencial con el índice en un array //Devuelve el número de elementos ocupados del índice (n) procedimiento CargarIndice(ref vIndice : v; ref entero : n) var archivo_s de RIndice : A RIndice : R inicio abrir(A,escritura,'CODIGO.IDX') n  0 leer(A,R)mientras no fda(A) hacer n  n + 1 v[n]  R leer(A,R) fin_mientras cerrar(A) fin_procedimiento

Mantenimiento del archivo
El mantenimiento incluirá los procedimientos para dar altas, bajas y modificaciones en al archivo //El procedimiento Alta añade el registro R en una posición libre del área de datos //e inserta de forma ordenada la clave y la posición en el área de índices procedimiento Alta(refAProductos:A;valor RProducto:R; ref vIndice:Ind; ref entero:n) var RProducto : RAux
UPSAM, Escuela superior de Ingeniería y Arquitectura, Luís Rodríguez Baena, 2012 2

entero : NRR,i inicio //La función buscar realiza una búsqueda binaria entre los n //primeros elementos del array Ind y devuelve la posición o 0 si (buscar(Ind,R,n) 0) o (numElemIndice = n) entonces //Ya está o índice lleno si_no//Alta en área de datos //Buscar hueco libre mediante una función HASH NRR  hash(R.código) leer(A, RAux, NRR) mientras RAux.estado = 1 hacer NRR  NRR mod MaxReg + 1 leer(A, RAux, NRR) fin_mientras //Graba el registro en el área de datos, //marcándolo como ocupado (R.estado = 1) R.estado  1 escribir(A, NRR,R,) //Alta en el índice Ind[0].clave  R.código Ind[0].NRR  NRR i  n mientras...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Archivos secuenciales indexados
  • Index
  • Index
  • Index
  • Index
  • Index
  • Index
  • INDEX

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS