Tema 1: FICHEROS

Anuncio
Tema 1: FICHEROS
Laboratorio de Programación II
Elena García Barriocanal
Registros (I)
• Colección de información heterogénea.
• Se compone de campos:
unRegistro[=|:] RECORD
campo1: tipo;
campo2: tipo;
……
END;
• El acceso a cada campo se realiza con
notación punto: vbleRegistro.campo1
Elena García Barriocanal
Registros (II)
• El acceso a los campos también se puede realizar mediante
una sentencia with
WITH vbleRegistro [,vbleRegistro,…] DO
instrucción
– El uso de más de un identificador de resgistro equivale a
tener with anidados.
• Registros con campos variantes:
– Parte fija
– Parte variante (en función del valor de campo
discriminante)
unReg[=|:]RECORD
campoFijo1: tipo;
campoFijo2: tipo;
……
CASE campoDiscriminante: tipo OF
valor:(cVnte1:tipo;cVnte2:tipo;…);
valor:(cVnte1:tipo;cVnte2:tipo;…);
……
END;
Elena García Barriocanal
Ficheros
• Colección secuencial de elementos del
mismo tipo almacenados en un dispositivo
de almacenamiento externo permanente
(físico).
• Tipos de ficheros:
– Ficheros de Texto (organización secuencial).
Para tener acceso a la posición n hay que
acceder primero a la n-1.
– Ficheros de definidos por el usuario (acceso
directo). Se accede directamente al dato
mediante un índice o dirección.
Elena García Barriocanal
Archivos de Texto (I)
• Responden a una organización secuencial.
• Están formados por cadenas de caracteres
separadas unas de otras por los códigos retorno
de carro/avance de línea (13/10 código ASCII).
• El final del archivo se indica mediante el
carácter ASCII 26, que también se expresa
como EOF.
• Para utilizarlos:
– Declarar una variable de tipo texto y asociarla al
nombre de un archivo.
– Abrir el archivo ya sea para lectura o escritura.
– Leer o escribir datos en el archivo.
– Cerrar el archivo
Elena García Barriocanal
Archivos de Texto (II)
• Declaración:
VAR
varArch : Text;
• Asociación a nombre de archivo:
Assign (varArch, nomArchivo);
• Apertura:
Reset|Append|Rewrite (varArch);
• Escritura:
Write|WriteLn (varArch, varBase);
• Lectura:
Read|ReadLn (varArch, varBase);
Elena García Barriocanal
Archivos de Texto (III)
• Detección marca fin archivo:
EOF (varArch);
En Pascal no es necesaria la lectura
anticipada.
• Detección marca fin de línea:
EOL (varArch);
• Cierre:
Close (varArch);
Elena García Barriocanal
Archivos de Texto (y IV)
• Renombrado:
Rename (varArch, nombre);
El fichero debe estar cerrado
• Eliminación:
Erase (varArch);
El fichero debe estar cerrado
Elena García Barriocanal
Fichero Acceso Directo (I)
• Un archivo de acceso directo esta formado
por un conjunto de partes individuales que
pertenecen al mismo tipo de datos.
• Cada uno de los componentes del archivo
es llamado registro.
• Cada uno de los componentes de este tipo
de archivos es accesible directamente.
• Las funciones Hash o de conversión
permiten obtener la posición de un registro
en el archivo (según clave).
Elena García Barriocanal
Ficheros Acceso Directo (II)
• Cuando a dos registros les “corresponde”
la misma posición, se produce una colisión.
• Tratamiento de colisiones:
– El registro que colisiona se sitúa en la zona de
colisiones.
– La zona de colisiones se maneja
secuencialmente.
– Cuando se quiere recuperar un registro, se ha
de comprobar que no colisionó, en cuyo caso se
debe buscar en la zona de colisiones.
Elena García Barriocanal
Ficheros Acceso Directo (III)
• Declaración:
TYPE
tipofichero = FILE OF varBase;
VAR
varFich : tipofichero;
• Asignación:
Assign (varFich, nomFich);
• Apertura:
Rewrite|Reset (varFich);
• Posicionamiento:
Seek (varFich, posición);
Elena García Barriocanal
Ficheros Acceso Directo (IV)
• Lectura:
Read (varFich, varBase);
• Escritura:
Write (varFich, varBase);
• Cierre:
Close (varFich);
• Número de registro actual:
FilePos (varFich);
Elena García Barriocanal
Ficheros Acceso Directo (y V)
• Tamaño en bytes de un archivo:
FileSize (varFich);
• Longitud en bytes de una variable:
SizeOf (varBase);
Elena García Barriocanal
Descargar