viernes, 16 de marzo de 2012



PSEUDOCÓDIGO PARA LA GESTIÓN DE ARCHIVOS INDEXADOS.

El archivo secuencial indexado es uno de los varios metodos de acceso existentes, mediante este metodo el usuario obtiene acceso secvuenciales a los registros clasifiacdos por llaves y tambien acceso indexado a los mismos registros.

La manera de extraer registros ingresados en secuencia de entrada y no clasificados por llave es mediante un indice es un recurso para encontrar informacion

Los archivos secuenciales indexados consta de tres partes:
*area de datos
*area de indice
*area de desbordamiento



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 las siguientes 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 = aProducto
   registro = 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

   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 creado en 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




No hay comentarios:

Publicar un comentario en la entrada