Professional Documents
Culture Documents
SEIT
DGIT
TABLA DE CONTENIDO
Pg.
5 7 8 8 9 10 12 16 17 18 18 19 20 20 22 22 23 24
26 26 26 27 28 29 29 31 31 31 34 35 35 36 38 2
Manejo de Archivos en Pascal 3.1. Declaraciones globales............. 3.2. Archivos secuenciales en Pascal. 3.2.1. ALTAS secuenciales... 3.2.1.1. Diagrama de flujo de la rutina de ALTAS secuenciales.............................................................. 3.2.1.2. Codificacin de la rutina de ALTAS secuenciales... 3.2.2. CONSULTAS secuenciales... 3.2.2.1. Diagrama de flujo de la rutina de CONSULTAS secuenciales.............................................................. 3.2.2.2. Codificacin de la rutina de CONSULTAS secuenciales.......................................................... 3.2.3. LISTADO secuencial.............. 3.2.3.1. Diagrama de flujo de la rutina de LISTADO secuencial................................................................. 3.2.3.2. Codificacin de la rutina de LISTADO secuencial...... 3.2.4. MODIFICACIONES de datos en un archivo secuencial........... 3.2.4.1. Diagrama de flujo de la rutina de MODIFICACION secuencial................................................................. 3.2.4.2. Codificacin de la rutina de MODIFICACIN secuencial................................................................. 3.2.5. BAJAS de registros en un archivo secuencial (bajas gicas y bajas fsicas)............................................................................ 3.2.5.1. Diagrama de flujo de la rutina de BAJAS lgicas en un archivo secuencial................................................ 3.2.5.2. Codificacin de la rutina de BAJAS lgicas en un archivo secuencial..................................................... 3.2.5.3. Diagrama de flujo de la rutina de BAJAS fsicas en un archivo secuencial (compactar)............................ 3.2.5.4. Codificacin de la rutina de BAJAS fsicas en un archivo secuencial (compactar)................................. 3.3. Archivos directos en Pascal.................... 3.3.1. ALTAS directas........... 3.3.1.1. Diagrama de flujo de la rutina de ALTAS directas...... 3.3.1.2. Codificacin de la rutina de ALTAS directas........... 3.3.2. CONSULTAS directas............ 3.3.2.1. Diagrama de flujo de la rutina de CONSULTAS directas...................................................................... 3.3.2.2. Codificacin de la rutina de CONSULTAS directas.... 3.3.3. MODIFICACIONES directas................. 3.3.3.1. Diagrama de flujo de la rutina de MODIFICACIONES directas..................................... 3.3.3.2. Codificacin de la rutina de MODIFICACIONES directas...................................................................... 3.3.4. BAJAS de registros en un archivo de acceso directo (bajas lgicas).................................................................................... 3.3.4.1. Diagrama de flujo de la rutina de BAJAS lgicas directas...................................................................... Ing. Bruno Lpez Takeyas, M.C. 3 38 39 40 40 42 43 43 43 44 44 46 47 47 49 50 51 53 54 56 57 57 57 59 60 60 62 63 63 65 66 67
TABLA DE FIGURAS
No. Descripcin
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
Interaccin entre la memoria, microprocesador y archivos.. Formato del registro de Productos Declaracin del registro de Productos.. Declaracin del registro de Productos.. Cuadro comparativo de archivos y archiveros Apertura de archivos Clasificacin de archivos por contenido... Clasificacin de archivos por tipo de acceso.. Diagrama de flujo de rutina de consulta secuencial... Ejemplo de clculo del espacio ocupado por un registro.. El lenguaje Pascal maneja archivos con direcciones lgicas... Direcciones lgicas y fsicas de un archivo. Clculo de la direccin fsica a partir de la direccin lgica.. Diagrama de flujo de rutina de consulta directa.. Las funciones Assign y Reset Validar la apertura de un archivo.. La funcin Write La funcin SEC La funcin FilePos La funcin Rename.. La funcin Erase.. Declaraciones globales de las aplicaciones Diagrama de flujo de rutina de alta secuencial... Codificacin de la rutina de altas secuenciales.. Codificacin de la rutina de consultas secuenciales. Diagrama de flujo de rutina de listado secuencial.. Codificacin de la rutina de listado secuencial Diagrama de flujo de rutina de modificacin secuencial.. Codificacin de rutina de modificacin secuencial Diagrama de flujo de rutina de baja lgica secuencial.. Codificacin de rutina de baja lgica secuencial Diagrama de flujo de rutina de baja fsica secuencial (compactar). Codificacin de rutina de baja fsica secuencial (compactar)... Insercin de registros en blanco desde el final del archivo.. Diagrama de flujo de rutina de altas directas.. Codificacin de rutina de altas directas Diagrama de flujo de rutina de consultas directas.. Codificacin de rutina de consultas directas... Diagrama de flujo de rutina de modificacin directa. Codificacin de rutina de modificaciones directas.. Diagrama de flujo de rutina de baja lgica directa. Codificacin de rutina de baja lgica directa...
8 10 10 11 12 16 17 19 20 21 22 23 23 24 26 27 28 30 31 32 32 34 36 37 38 40 41 43 44 47 48 51 52 54 56 57 59 60 62 63 66 67
PREFACIO
Durante el tiempo que he impartido la materia de Administracin de Archivos en la carrera de Ingeniera en Sistemas Computacionales (ISC) en el Instituto Tecnolgico de Nuevo Laredo (ITNL), me he percatado de las deficiencias de los alumnos para programar archivos y, aunque es necesario dominar este aspecto de programacin para aplicarlo en la materia, no es limitante o requisito estricto para cursarla, ya que la retcula as lo seala. Adems estoy enterado que los temas de archivos pertenecen a la ltima unidad programtica de las materias previas de Programacin I y II y que debido a lo extenso de esos programas de estudio, no se comprenden completamente los temas relacionados con archivos. Debido a lo anterior, presento este documento basado en un cmulo de experiencias y dudas planteadas por alumnos que tiene como finalidad reforzar los conocimientos de programacin de archivos en Pascal para aplicarlos a necesidades especficas de la materia Administracin de Archivos.
RAM
Recuerde: Los archivos NO procesan datos, slo los almacenan !!!
ALU
Manejo de Archivos en Pascal la memoria principal; es decir, los dispositivos de almacenamiento secundario (diskettes, discos duros, CDs, flash drives, etc.) no procesan datos, slo los almacenan. En estos dispositivos slo se reflejan los datos previamente procesados y funcionan exclusivamente como una bodega. Esto repercute de manera significativa al momento de programar archivos, ya que para hacerle modificaciones a los datos de un registro previamente almacenado es necesario primero cargarlo en la memoria principal, es decir, localizar el registro en el archivo y leerlo para colocar sus datos en la memoria RAM, ah modificarlo y posteriormente grabarlo en la misma posicin en la que se encontraba, sin embargo estas operaciones no se realizan directamente, sino a travs de la unidad aritmtica-lgica, la unidad de control y los registros del microprocesador (Fig. 1).
No_prod Descrip
Entero Cadena [30]
Cantidad
Entero
Precio
Real
Garantia
Caracter
Type Tipo_registro = Record no_prod : integer; descrip : string[30]; cantidad: integer; precio : real; garantia: char; End; Var Registro : Tipo_registro;
Declaracin del tipo de dato (en este caso del tipo de registro)
10
Archivo: PRODUCTO.SEC
No_prod 0 1 2 3 Descrip Camisa de vestir Pantaln para dama Radiograbadora Gabinete para sala Cantidad 100 234 36 54 Precio 65.80 115.50 895.75 1532.60 Garantia N N
Registros
S N
Entero
Cadena [30]
Entero
Real
Caracter
Campos
11
Localizando el archivero Identificando la base de Identificar la localizacin de la informacin en particular que contiene datos correspondiente a las carpetas ya con que que la la informacin que se se solicita. Una base de una datos es una coleccin archivos informacin solicita, archiveros clasificados identificados Regularmente donde se encuentra la informacin
debidamente relacionados. P. Ejem. e Profesores, alumnos y materias correlacionados. un Se recomienda que los contengan estn
cajones, cada uno con datos relacionados con informacin debidamente un objeto de inters en clasificada y ordenada. particular y no de varios. P. Ejem. Slo datos de ALUMNOS.
12
Manejo de Archivos en Pascal Se Nombres los pueden archiveros colocar Los nombres de los
etiquetas a los cajones de archivos estn regidos para por el sistema operativo, regularmente se identificar su contenido de pero contenido clasificacin o de
tal forma que indique el componen del nombre la principal y su extensin, las la cual puede ser de cualquier tipo, es decir, el usuario la puede extensin colocarle
que desee ya sea DAT, TXT, BIN, JK8, etc. Sin embargo se recomienda que tanto el nombre como la extensin sean relevantes al contenido del archivo. P. Ejem. ALUMNOS.DAT, ARCHIVO.TXT En Operaciones un archivero se Bsicamente un archivo se Lectura Escritura realizan como pueden agregar, extraer o solo tiene 2 operaciones: cambiar documentos de las carpetas.
13
Manejo de Archivos en Pascal Obviamente cuando se Para accesar los datos Apertura requiere consultar agregar carpetas o de un archivo modos de que es de las se del necesario abrirlo. Existen
separadores o pequeas formas diferentes en los pestaas para identificar archivos las la carpetas. insercin o Estas depende la facilidad (o la muestre A estas para ciertas de les del como
facilitan el acceso, ya sea dificultad) que el archivo extraccin de un carpeta operaciones de acceso. en particular. formas almacenamiento se conoce organizacin archivo.
14
Manejo de Archivos en Pascal Cuando ya no se desea Cuando se termina de Cierre utilizar un cajn de un utilizar un archivo es archivero es necesario necesario cerrarlo. De cach y se y cerrarlo, ya que de no esa forma se vaca la hacerlo, se corre el riego memoria de daar o perder la asegura informacin. almacenar
Algunos Seguridad
del se de aplicar
deseadas por personal no seguridad y acceso a los archivos dependiendo de los usuarios; es decir, se establecen polticas de acceso a usuarios.
Manejo de Archivos en Pascal reas es una estructura que controla el archivo (alias del archivo), de esta forma cuando se solicita una operacin del archivo, se recibe una respuesta que informa el resultado mediante un apuntador. Cada archivo abierto requiere un alias para poder realizar operaciones en l (Fig.6). La estructura del archivo contiene informacin del archivo que se est usando, su tamao actual y la localizacin de los buffers de datos.
Programa de archivos
Nombre de archivo Lectura / Escritura Sistema Operativo Apuntador a estruct. de archivo (alias)
Archivo
16
3.141592 3.141592
Manejo de Archivos en Pascal listas para ser ejecutadas. Por ejemplo, cuando escribimos un programa en un lenguaje en particular (como C++, Pascal, Fortran, etc), tenemos las instrucciones almacenadas en un archivo de texto llamado programa fuente, pero una vez que lo sometemos a un proceso de compilacin y ejecucin nuestro programa lo trasladamos a un programa ejecutable (en lenguaje mquina), que es directamente entendido por la computadora y se crea un archivo binario. En este tipo de archivos tambin se pueden almacenar diferentes tipos de datos incluyendo datos numricos; sin embargo, cabe destacar que los datos numricos se graban con su representacin binaria (no con su representacin ASCII), por tal razn, cuando se despliegan con un editor de textos o por medio de comandos del sistema operativo, aparecen caracteres raros que no se interpretan. P. ejem. Si se guarda el dato 27 en un archivo binario, se almacena como 00001111 y no como 27.
18
19
El archivo no existe
return
CLOSE (alias)
21
Los archivos en Pascal usan principalmente C++ direcciones lgicas y no fsicas como en
En Pascal no es necesario calcular la dir. fsica antes de reposicionar el apuntador del archivo
Sin embargo, si se desea convertir direcciones lgicas en direcciones fsicas se utiliza la frmula mostrada en la Fig. 13. Var dir_fisica, dir_logica : long int; La funcin SizeOf calcula el tamao en bytes de una variable o estructura
23
CONSULTA DIRECTA alias=OPEN (PRODUCTO.SEC) READ Apertura del archivo en modo slo lectura y asignacin del alias
El archivo no existe
return
Validacin de la existencia del archivo En este ejemplo la dir. Lgica es la misma que el no_prod Posicionarse en la direccin lgica
Manejo de Archivos en Pascal un nombre corto conocido como alias. Una vez establecida esta relacin, se realizan todas las operaciones en el archivo por medio de este. Para abrir un archivo en Pascal en modo de lectura y escritura se utiliza la funcin Reset y para crear un archivo se usa la funcin Rewrite.
Assign(alias,PRODUCTO.SEC); {$I-} Reset(alias); {$I+} Apertura del archivo en modo de Lectura/Escritura Asignacin del alias del archivo
26
Manejo de Archivos en Pascal tuvo xito. La Fig. 16 muestra un ejemplo de la manera de detectar la apertura de un archivo.
Asignacin del alias del archivo Directivas para deshabilitar los mensajes de error del sistema operativo Apertura del archivo en modo de Lectura/Escritura
If IoResult<>0 Then Write (Error en apertura del archivo !!!); Validacin de apertura del archivo
27
Manejo de Archivos en Pascal argumentos: el alias del archivo donde se desea almacenar y la variable que se desea grabar (Fig. 17). Type Tipo_registro = Record no_prod : integer; descrip : string[30]; cantidad: integer; precio : real; garantia: char; End; Var Registro : Tipo_registro; Var alias : FILE OF Tipo_registro;
Declaracin de la variable alias que controla un archivo que almacena registros de Tipo_registro
Write(alias, Registro);
28
Manejo de Archivos en Pascal mediante una operacin de lectura cada vez que se necesita, sino que el sistema operativo controla y mantiene este dato en los buffers de memoria y de ah lo toma cuando lo requiera. Slo hay una consideracin importante al utilizar los buffers, los datos escritos en ellos no se reflejan exactamente en los archivos de disco en forma inmediata, sino hasta que se vaca el buffer. Para ello se utiliza la funcin Flush y basta enviarle el alias del archivo como argumento. Los buffers tambin se vacan cuando se cierra el archivo.
29
Manejo de Archivos en Pascal reposicionar el apuntador del archivo en la direccin deseada mediante dos argumentos: el alias del archivo y la direccin lgica. Para poder reposicionar el apuntador del archivo es necesario que ste se encuentre abierto y se le haya asignado el alias correspondiente. Es muy importante destacar que debe asegurarse que la direccin lgica tenga un valor dentro del rango permitido, es decir, que no exceda el lmite del archivo. La Fig. 18 ilustra el uso de esta funcin.
Seek(alias, dir_logica);
Direccin fsica del registro donde se desea posicionar (indicada en bytes)
2.2.6.1. Conociendo la posicin del apuntador del archivo con la funcin FilePos
Se usa la funcin FilePos para conocer la posicin actual del apuntador de un archivo abierto. La posicin se expresa mediante un valor entero que representa los renglones (direccin lgica) contados desde el principio del archivo (Fig. 19).
30
dir_logica = FilePos(alias);
La variable dir_logica debe ser declarada como integer
31
Rename(alias, NUEVO.NEW);
Erase(alias);
32
33
34
Manejo de Archivos en Pascal invoque esta rutina porque debe tenerse presente que si se crea un archivo existente, se pierde su contenido anterior.
35
F
Registro.descrip, Registro.cantidad, Registro.precio Registro.garantia Registro.no_prod = no_prod
V READ (Registro,alias)
V
Registro.no_prod = no_prod
Registro duplicado
CLOSE (alias)
return
37
38
39
El archivo no existe
return
CLOSE (alias)
V R READ (Registro,alias) Ciclo mientras no se encuentre el final del archivo Lectura del siguiente registro completo
40
41
42
MODIFICACION SECUENCIAL
El archivo no existe
return
F
No se encontr el registro
CLOSE (alias)
V READ (Registro,alias) R
V
Registro.no_prod = no_prod
SEEK (FilePos(alias)1,alias)
WRITE (Registro,alias)
44
el
45
46
BAJA_LOGICA_SECUENCIAL
El archivo no existe
return
CLOSE (alias)
V READ (Registro,alias) R
V
Registro.no_prod = no_prod
WRITE (Registro,alias)
48
Repeat write('Esta seguro que desea borrarlo? '); readln(op); op:=Upcase(op); Until(op='S') OR (op='N'); { Es necesario reposicionar el apuntador del archivo al principio del registro que desea modificar, ya que al leer un registro, el apuntador se posiciona en el registro siguiente La funcion FilePos(alias) devuelve la posicion donde se encuentra el apuntador } If (op='S') Then Begin Seek(alias,FilePos(alias)-1); Write(alias,Registro); { Graba el registro con los nuevos campos} Close(alias); { Cierra el archivo } writeln('Registro eliminado logicamente !!!'); End; writeln('<<< Oprima cualquier tecla para continuar >>>'); Readkey; Exit; End; End; writeln('No se encuentra ese registro !!!'); Close(alias); { Cierra el archivo } writeln('<<< Oprima cualquier tecla para continuar >>>'); Readkey; End;
49
Manejo de Archivos en Pascal para posteriormente eliminar el archivo original y renombrar este archivo auxiliar como el archivo original. La Fig. 32 muestra este diagrama de flujo.
50
V alias=N ULL F
El archivo no existe
return
READ(Registro,alias)
DELETE (PRODUCTO.SEC)
V V
Registro.no_prod <> 0 WRITE (Registro,temporal)
52
53
no_prod
Registro.no_prod=0 F I=FileSize(alias)+1 I<=no_prod I=I+1 V Seek(I,alias) Ciclo para agregar registros vacos desde el final del archivo
Write(Registro,alias)
54
Manejo de Archivos en Pascal reposicionar el apuntador del archivo fuera del mismo (no exceder el tamao del archivo).
55
SEEK (dir_logica,alias)
CLOSE (alias)
F
Registro.descrip, Registro.cantidad, Registro.precio Registro.garantia
WRITE (Registro,alias)
Registro.no_prod = no_prod
SEEK (dir_logica,alias)
57
58
Apertura del archivo y asignacin del alias Valida la existencia del archivo
V
Registro.no_prod = no_prod
F
No existe ese registro
60
61
MODIFICACION DIRECTA
El archivo no existe
return
dir logica=no prod SEEK (dir_logica,alias) READ (Registro,alias) Posicionar el apuntador del archivo Lectura del registro completo del archivo controlado por alias V
Registro.no_prod = no_prod
F
No existe ese registro SEEK (FilePos(alias)1) ,alias)
CLOSE (alias)
63
el
Manejo de Archivos en Pascal especial en alguno de sus campos que lo identifique como registro borrado, sin embargo, el registro sigue existiendo en el archivo y por lo tanto ocupa espacio.
65
El archivo no existe
return
dir logica=no prod SEEK (dir_logica,alias) READ (Registro,alias) Lectura del registro del archivo completo controlado por alias V
Registro.no prod=0 Registro.descrip= Registro.cantidad=0 Registro.preci=0.0 Registro.garantia=
Registro.no_prod = no_prod
F
No existe ese registro SEEK (FilePos(alias)-1 ,alias)
CLOSE (alias)
WRITE (Registro,alias)
67
el
68
4. CONCLUSIONES
Aunque existe una gran diversidad de aplicaciones que se pueden desarrollar con manejo de archivos que pueden ser sumamente completas y complejas, estos apuntes presentan, de una forma sencilla y comprensible, los aspectos bsicos de programacin de archivos usando Pascal. De tal forma, que no presenta lgica abrumadora de control de detalles, sino la base fundamental del material es entender y utilizar las funciones bsicas de manejo de archivos en este lenguaje para posteriormente usarlas en el curso de Administracin de Archivos y en cursos posteriores. Cabe destacar que la codificacin de las rutinas que se muestran se pueden obtener en forma ntegra en el sitio http://www.itnuevolaredo.edu.mx/takeyas y ejecutarse para reafirmar el contenido.
69
5. BIBLIOGRAFIA
Dale, Nell. Pascal y estructuras de datos. McGraw Hill. USA Joyanes Aguilar, Luis. "Problemas de Metodologa de la Programacin". McGraw Hill. 1990. Joyanes Aguilar, Luis. Programacin en Turbo Pascal 7.0. Osborne. Loomis, Mary E.S. Estructura de Datos y Organizacin de Archivos. Prentice Hall. Mxico. 1991. Martin, James. Organizacin de las bases de datos. Prentice Hall. 1993. Nyhoff, Larry R. Data Structures and Program Design in Pascal. Macmillan. USA O'brien, Stephen K. Turbo pascal 7.0. : Manual de referencia. McGrawHill . USA Rose, Cesar E. Archivos. Organizacin y Procedimientos. Computec. 1993. Sedgewick, Robert. "Algorithms". Second edition. Addison Wesley. USA. 1988. Swan, Tom. Mastering Turbo Pascal 5.5. Third Edition. Hayden Books. USA. Tenenbaum Aaron M. Data Structures Using Pascal. Prentice-Hall . USA Tsai, Alice Y. H. "Sistemas de bases de datos. Administracin y uso". Prentice Hall. 1988.
70