Вы находитесь на странице: 1из 18

Página 1 de 18

Archivos secuenciales
y directos

Alumno: Ibarra Espinoza Hector

Semestre: II Grupo: G-2

Carrera: Ing. Mecatrónica

Docente: Alberto Velasco Verjan

Institución: Tecnológico Nacional de México Campus


Colima.

25/05/2020
Página 2 de 18

Tabla de contenido
INTRODUCCIÓN...................................................................................................................3

¿Qué es un Archivo?...............................................................................................................4

¿Cómo se escribe un Archivo?...............................................................................................5

¿Cómo se lee un Archivo?......................................................................................................7

Clasificación de archivos por el tipo de datos.......................................................................9

Archivo de texto................................................................................................................9

Archivo binario................................................................................................................10

Clasificación de archivos por el tipo de acceso...................................................................11

Archivos de acceso secuencial.......................................................................................11

Consulta o recorrido secuencial.....................................................................................12

Archivos secuenciales indexado.....................................................................................14

Archivos de acceso directo.............................................................................................15

Consulta directa...............................................................................................................17

¿Qué es la organización directa?...................................................................................18

25/05/2020
Página 3 de 18

INTRODUCCIÓN
Cuando se programa en C++, se usa la memoria principal o memoria
RAM como único medio de almacenamiento (usando variables,
arreglos o estructuras de datos más complejas), con el inconveniente
que esto representa: la volatilidad de la memoria RAM; es decir, si se
apaga la computadora se pierden los datos. Además, algunas
aplicaciones exigen transportar los datos de una computadora a otra.
Es por esto que surge la necesidad de almacenar dichos datos de
forma permanente que permita retenerlos en ciertos dispositivos de
almacenamiento secundario por un período de tiempo largo sin el
suministro de energía, de tal forma que permitan transportarlos y
utilizarlos en otro equipo computacional.
Al desarrollar la programación a través de manejos de archivos, existe
una estrecha relación entre la memoria principal, el microprocesador y
los dispositivos de almacenamiento secundario ya que el
procesamiento que realiza una computadora es tarea absoluta del
microprocesador en conjunción con la memoria principal; es decir, los
dispositivos de almacenamiento secundario (diskettes, discos duros,
CD’s, flash drives, etc.) no procesan datos, sólo los almacenan. En
estos dispositivos sólo 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 posición en la que se encontraba, sin embargo estas
operaciones no se realizan directamente, sino a través de la unidad
aritmética-lógica, la unidad de control y los registros del
microprocesador.
Pero ¿Qué es un archivo?, bueno, esa pregunta la responderemos en
seguida.

25/05/2020
Página 4 de 18

¿Qué es un Archivo?
Un archivo o fichero informático es un conjunto de bits que son
almacenados en un dispositivo. Un archivo es identificado por un
nombre y la descripción de la carpeta o directorio que lo contiene. A
los archivos informáticos se les llama así porque son los equivalentes
digitales de los archivos escritos en expedientes, tarjetas, libretas,
papel o microfichas del entorno de oficina tradicional.
En lo que concierne al sistema operativo un archivo es, en la mayoría
de los casos, simplemente un flujo unidimensional de bits, que es
tratado por el sistema operativo como una única
unidad lógica. Un archivo de datos informático
normalmente tiene un tamaño, que generalmente
se expresa en bytes; en todos los sistemas
operativos modernos, el tamaño puede ser
cualquier número entero no negativo de bytes hasta
un máximo dependiente del sistema. Depende del
software que se ejecuta en la computadora el
interpretar esta estructura básica como por ejemplo
un programa, un texto o una imagen, basándose en
su nombre y contenido. Los tipos especiales de
archivos, como los nodos de dispositivo que
representan simbólicamente partes del hardware, no consisten en un
flujo de bits y no tienen tamaño de archivo.
En pocas palabras “Un fichero o archivo es un conjunto de datos
estructurados que pueden estar almacenados en un soporte de datos
de forma que puedan ser tratados o utilizados de forma individual o
global. Cada fichero se tiene que identificar con un nombre. Los
elementos que forman un fichero se llaman registros y dichos registros
se definen como la unidad mínima de información completa de un
fichero.”

25/05/2020
Página 5 de 18

Existen dos modelos de ficheros:


Fichero Lógico
 Los crea el programador agrupando un conjunto de
datos con características comunes (nombres,
apellidos, dirección, teléfono... etc. ).
Fichero Físico
 Es una determinada cantidad de información que el
sistema operativo es capaz de tratar como una sola
unidad.
Los archivos (o ficheros) tienen 2 clasificaiones
1. Clasificación de archivos por el tipo de acceso
2. Clasificación de archivos por el tipo de datos
Para antes de entrar a ese tema debemos de saber como escribir y
leer un archivo por lo que se enseraña a continuacion.

¿Cómo se escribe un
Archivo?
Ahora veremos cómo crear los archivos y cómo escribir datos en ellos,
para que otro programa después pueda abrirlos y leerlos.
Uno puede crear un archivo vacío abriéndolo de la siguiente manera:
archivo = open(nombre, 'w')
El segundo parámetro de la función open indica el uso que se le dará
al archivo. 'w' significa «escribir» (write en inglés).
Si el archivo señalado no existe, entonces será creado. Si ya existe,
entonces será sobreescrito. Hay que tener cuidado entonces, pues
esta operación elimina los datos del archivo que existía previamente.
Una vez abierto el archivo, uno puede escribir datos en él usando el
método write:
a = open('prueba.txt', 'w')

25/05/2020
Página 6 de 18

a.write('Hola ')
a.write('mundo.')
a.close()

Una vez ejecutado este programa, el archivo prueba.txt será creado (o


sobreescrito, si ya existía). Al abrirlo en el Bloc de Notas, veremos este
contenido:
Hola mundo.
Para escribir varias líneas en el archivo, es necesario agregar
explícitamente los saltos de línea en cada string que sea escrito. Por
ejemplo, para crear el archivo himno.txt que usamos más arriba,
podemos hacerlo así:
a = open('himno.txt', 'w')
a.write('Puro Chile\n')
a.write('es tu cielo azulado\n')
a.write('puras brisas\n')
a.write('te cruzan también.\n')
a.close()
Además del modo 'w' (write), también existe el modo 'a' (append), que
permite escribir datos al final de un archivo existente. Por ejemplo, el
siguiente programa abre el archivo prueba.txt que creamos más arriba,
y agrega más texto al final de él:
a = open('prueba.txt', 'a')
a.write('\n')
a.write('Chao ')
a.write('pescao.')
a.close()
Si abrimos el archivo prueba.txt en el Bloc de Notas, veremos esto:
Hola mundo.

Chao pescao.

25/05/2020
Página 7 de 18

De haber abierto el archivo en modo 'w' en vez de 'a', el contenido


anterior (la frase Hola mundo) se habría borrado.

¿Cómo se lee un Archivo?


Para leer datos de un archivo, hay que abrirlo de la siguiente manera:
archivo = open(nombre)
nombre es un string que tiene el nombre del archivo. archivo es el
archivo lógico a través del que se manipulará el archivo.
Si el archivo no existe, ocurrirá un error de entrada y salida (IOError).
Es importante recordar que la variable archivo es una representación
abstracta del archivo, y no los contenidos del mismo.
La manera más simple de leer el contenido es hacerlo línea por línea.
Para esto, basta con poner el archivo lógico en un ciclo for:
for linea in archivo:
# hacer algo
Una vez que los datos han sido leídos del archivo, hay que cerrarlo:
archivo.close()
Por ejemplo, supongamos que tenemos el archivo himno.txt que tiene
el siguiente contenido:
Puro Chile
es tu cielo azulado
puras brisas
te cruzan también.
El archivo tiene cuatro líneas. Cada línea termina con un salto de línea
(\n), que indica que a continuación comienza una línea nueva.
El siguiente programa imprime la primera letra de cada línea del
himno:

25/05/2020
Página 8 de 18

archivo = open('himno.txt')
for linea in archivo:
print linea[0]
archivo.close()
El ciclo for es ejecutado cuatro veces, una por cada línea del archivo.
La salida del programa es:
P
e
p
t
Otro ejemplo: el siguiente programa imprime cuántos símbolos hay en
cada línea:
archivo = open('himno.txt')
for linea in archivo:
print len(linea)
archivo.close()
La salida es:
11
20
13
19
Note que el salto de línea (el “enter”) es considerado en la cuenta:
+---+---+---+---+---+---+---+---+---+---+---+
| P | u | r | o | | C | h | i | l | e | \n| = 11 símbolos
+---+---+---+---+---+---+---+---+---+---+---+

Para obtener el string sin el salto de línea, se puede usar el método


strip, que elimina todos los símbolos de espaciado al principio y al final
del string:
>>> s = ' Hola\n'
>>> s.strip()

25/05/2020
Página 9 de 18

'Hola'
Si modificamos el programa para eliminar el salto de línea:

archivo = open('himno.txt')
for linea in archivo:
print len(linea.strip())
archivo.close()
entonces la salida es:
10
19
12
18
Lo importante es comprender que los archivos son leídos línea por
línea usando el ciclo for.
Listo, una vez teniendo conocimiento de esto podemos proseguir
a ver los tipos de archivos (o ficheros) que hay.

Clasificación de archivos
por el tipo de datos
Este tipo de clasificacion se base en el contenido. Estos se dividen en
dos
1. Archivo de texto
2. Archivo Binario
Archivo de texto
Los archivos de texto son los más sencillos de manejar, pues, como ya
se ha mencionado, para trabajar con ellos se emplean los operadores
de inserción y extracción que ya se conocen de la consola.

25/05/2020
Página 10 de 18

Son aquellos que pueden contener cualquier clase de datos y de tal


manera que son “entendibles” por la gente. Los datos en un archivo de
texto se almacenan usando el código ASCII, en el cual cada carácter
es representado por un simple byte. Debido a que los archivos de texto
utilizan el código ASCII, se pueden desplegar o imprimir. En este tipo
de archivos, todos sus datos se almacenan como cadenas de
caracteres, es decir, los números se almacenan con su representación
ASCII y no su representación numérica, por lo tanto, no se pueden
realizar operaciones matemáticas directamente con ellos. Pr ejemplo:
Si se guarda el dato 3.141592 en un archivo de texto, se almacena
como “3.141592” y nótese que 3.141592 ≠ “3.14159”.
Archivo binario
Los archivos binarios se tratan con la clase fstream. En este caso,
debemos especificar si se desea entrada y salida, o sólo entrada o
sólo salida. Uno de los usos más típicos es utilizar el archivo como una
pequeña base de datos, utilizando un registro (struct) como referencia.
Recordemos que los registros deben tener todos el mismo tamaño.
Este tipo de archivos almacenan los datos numéricos con su
representación binaria. Pueden ser archivos que contienen
instrucciones en lenguaje máquina 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 compilación y ejecución
nuestro programa lo trasladamos a un programa ejecutable (en
lenguaje máquina), que es directamente entendido por la computadora
y se crea un archivo binario. En este tipo de archivos también se
pueden almacenar diferentes tipos de datos incluyendo datos
numéricos; sin embargo, cabe destacar que los datos numéricos se
graban con su representación binaria (no con su representación
ASCII), por tal razón, 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”.

25/05/2020
Página 11 de 18

Clasificación de archivos
por el tipo de acceso
De acuerdo a la forma de acceder los datos de los archivos, éstos se
clasifican en secuenciales o directos (también conocidos como de
acceso directo, relativos o aleatorios).
Archivos de acceso secuencial
Es aquel fichero cuyos registros pueden ser tratados en secuencia,
unos datos detrás de otros. Después de haber leído un registro el
dispositivo de lectura se posiciona al principio del siguiente registro.
Este tipo de ficheros son muy convenientes cuando tenemos que leer
todos los datos del fichero. No podemos añadir datos a un fichero
secuencial, se copia todo en un fichero nuevo.
Como su nombre lo indica, en este tipo de archivos los registros se
graban en secuencia o consecutivamente y deben accesarse de ese
mismo modo, es decir, conforme se van insertando nuevos registros,
éstos se almacenan al final del último registro almacenado; por lo
tanto, cuando se desea consultar un registro almacenado es necesario
recorrer completamente el archivo leyendo cada registro y
comparándolo con el que se busca. En este tipo de archivo se utiliza
una marca invisible que el sistema operativo coloca al final de los
archivos: EOF (End of File), la cual sirve para identificar dónde termina
el archivo.

25/05/2020
Página 12 de 18

La forma más común de estructura de archivo es el archivo secuencial.


En este tipo de archivo, un formato fijo es usado para los registros.
Todos los registros tienen el mismo tamaño, constan del mismo
número de campos de tamaño fijo en un orden particular. Como se
conocen la longitud y la posición de cada campo, solamente los
valores de los campos se necesitan almacenarse; el nombre del
campo y longitud de cada campo son atributos de la estructura de
archivos.

Consulta o recorrido secuencial


A continuación, se muestra un diagrama de flujo de una rutina de
consulta de un registro en particular mediante un recorrido secuencial.
En esta rutina se maneja un archivo que almacena datos de productos
(PRODUCTO.SEC) según el registro declarado y lo recorre
completamente en forma secuencial (registro por registro) hasta
encontrar el producto solicitado.

25/05/2020
Página 13 de 18

25/05/2020
Página 14 de 18

Archivos secuenciales indexado


Mediante este tipo de ficheros podemos solucionar el problema de los
ficheros secuenciales respecto a la actualización y acceso a un
registro, haciéndolo de forma casi directa, así como la realización de
altas y bajas.
Este tipo de ficheros tiene que estar almacenado en un soporte físico
de acceso directo.
Todos los registros del fichero tendrán un campo clave para
identificarlo de forma única, no pudiendo existir dos registros con el
mismo campo clave. Será por este campo por el cual se graben en
orden ascendente y se localicen los registros del fichero.
Los archivos secuenciales indexados retienen la limitación del archivo
secuencial: la eficacia en el procesamiento se limita al basado en un
único campo del archivo. Cuando es necesario buscar un registro
basándose en algún otro atributo distinto del campo clave ambas
formas de archivo secuencial no son adecuadas. En algunas
aplicaciones esta flexibilidad es deseable.
Para alcanzar esta flexibilidad, se necesita una estructura que utilice
múltiples índices, uno para cada tipo de campo que pueda ser objeto
de la búsqueda.
Se suelen utilizar dos tipos de índices. Uno índice exhaustivo contiene
una entrada para cada registro del archivo principal. Otro índice parcial
contendrá entradas a los registros donde este el campo de interés.
Con registros de longitud variable, algunos registros no contendrán
todos los campos.
Los archivos indexados son muy utilizados en aplicaciones donde es
critica la oportunidad de la información y donde los datos son rara vez
procesados de forma exhaustiva.

25/05/2020
Página 15 de 18

Archivos de acceso directo


Los archivos de acceso directo (también llamado aleatorio) son más
versátiles, permiten acceder a cualquier parte del fichero en cualquier
momento, como si fueran arrays en memoria. Las operaciones de
lectura y/o escritura pueden hacerse en cualquier punto del archivo.
A diferencia de los archivos secuenciales, en los archivos directos no
es necesario recorrerlo completamente para acceder un registro en
particular, sino se puede colocar el apuntador interno del archivo
directamente en el registro deseado, permitiendo con esto mayor
rapidez de acceso. Cabe destacar que para reposicionar este
apuntador se utiliza el comando SEEK indicándole la dirección del
registro que se desea.
En general se suelen establecer ciertas normas para la creación,
aunque no todas son obligatorias:
1. Abrir el archivo en un modo que te permita leer y escribir. Esto
no es imprescindible, es posible usar archivos de acceso
aleatorio sólo de lectura o de escritura.
2. Abrirlo en modo binario, ya que algunos o todos los campos de
la estructura pueden no ser caracteres.
3. Usar funciones como fread y fwrite, que permiten leer y escribir
registros de longitud constante desde y hacia un fichero.
4. Usar la función fseek para situar el puntero de lectura/escritura
en el lugar apropiado de tu archivo.

25/05/2020
Página 16 de 18

Permiten situarse en cualquier punto del archivo para actualizar ciertos


valores.
La distinción, por tanto, entre archivos de acceso secuencial y archivos
de acceso aleatorio no es sino una distinción entre qué operaciones se
utilizan para acceder a los datos. Con el uso del acceso directo se
puede acceder de forma directa a la posición que se requiera sin tener
que pasar por las posiciones anteriores, como si fueran arreglos en la
memoria. Lo cual permitirá tomar modifica e insertar información en la
posición que se desee. Las operaciones de lectura y/o escritura
pueden hacerse en cualquier punto del archivo.
Muchas veces se desea acceder un dato concreto de un archivo en
una posición relativa conocida de antemano. Por ejemplo, queremos
leer o escribir en el registro 713 de un archivo. El acceso directo está
pensado para resolver fácilmente estas operaciones. Un archivo de
acceso directo permite leer o escribir bloques de información en un
punto cualquiera del archivo, que se pasa como parámetro en la
llamada del sistema correspondiente. Hay total libertad en el orden en
que se accede a los registros. Por ejemplo, el 15, luego 713, luego 9…
este modo de acceso es muy útil en sistema de base de datos.

25/05/2020
Página 17 de 18

Consulta directa
A continuación, se muestra un diagrama de flujo de una rutina de
consulta directa de un registro en particular. En esta rutina se maneja
el archivo PRODUCTO.SEC según el registro declarado. A diferencia
del recorrido secuencial, en el que es necesario leer cada registro del
archivo, en la consulta directa se calcula la dirección física del registro
solicitado y se posiciona el apuntador del archivo directamente en ese
registro para leerlo.

25/05/2020
Página 18 de 18

¿Qué es la organización directa?


Un archivo está organizado en modo directo cuando el orden físico no
corresponde con el orden lógico. Los datos se sitúan en el archivo y se
accede a ellos directa aleatoriamente mediante su posición, es decir,
el lugar relativo que ocupan.
Esta organización tiene la ventaja que se pueden leer y escribir
registros en cualquier orden y posición. Son muy rápidos de acceso a
la información que contiene.
La organización directa tiene el inconveniente de que se necesita
programar la relación existente entre el contenido de un registro y la
posición que ocupa. El acceso a los registros en modo directo implica
la posible existencia de espacios libres dentro del soporte, y por
consecuencia pueden existir espacios libres entre registros.

La correspondencia entre clave y dirección debe poder ser


programada y la determinación de la relación entre un registro y su
posición física se obtiene mediante una formula.
Las condiciones para que un archivo sea de organización directa son:
- Almacenado en un soporte direccionable.
- Los registros deben contener un campo especifico denominado clave
que identifica cada registro de modo único; es decir, dos registros
distintos no pueden tener un mismo valor de clave.

25/05/2020

Вам также может понравиться