CONTENIDO DE LA LECCIÓN 8

CONTENIDO DE LA LECCIÓN 8 CONTENIDO DE LA LECCIÓN 8

azul2.bnct.ipn.mx
from azul2.bnct.ipn.mx More from this publisher
06.05.2013 Views

MIGUEL Á. TOLEDO MARTÍNEZ El formato general para un ciclo manejando archivos es: while(!entrada.eof()) { // comienza ciclo < proceso de elementos de datos > } Un enunciado debe preceder al ciclo while para leer el primer elemento de datos en el archivo entrada. Entonces el ciclo se codifica para leer los datos restantes en el archivo. El ciclo dice mientras no (!) encuentre la marca de fin de archivo (eof()), procese el actual elemento de datos y lea otro elemento de datos. Así cuando el ciclo se ejecuta, procesará y leerá los elementos de datos del archivo en forma repetida, uno por uno, hasta encontrar el marcador de fin de archivo. Todos los archivos en disco contienen una marca de fin de archivo, llamado EOF. Cuando se lee un archivo en disco, instruimos al compilador para buscar una marca de EOF y terminar las operaciones de lectura cuando lo encuentre. Esto se logra utilizando el ciclo while y la prueba para el marcador EOF usando la función estándar eof() Observe que los enunciados de procesamiento y lectura de archivos se colocan dentro del cuerpo del ciclo, que es enmarcado con las llaves ({ }) Ejemplo 7.22 El siguiente programa DISCO3.CPP, es otra versión del programa DISCO1.CPP, en donde se emplea un ciclo para copiar el archivo entrada.dat al archivo salida.dat. // El siguiente programa: DISCO3.CPP, copia un archivo a otro. #include // Para archivos de E/S const int TAMANO = 25; // Tamaño de la cadena de caracteres void main(void) { // Define la variable de cadena char cadena[TAMANO] = "\0"; // Define los objetos del archivo y los archivos de entrada ifstream entrada; // Define el objeto de entrada ofstream salida; // Define el objeto de salida entrada.open("entrada.dat"); // Abre el archivo de entrada salida.open("salida.dat"); // Abre el archivo de salida // Lee la primera cadena entrada >> cadena; FUNDAMENTOS – LECCIÓN 7 7-34

MIGUEL Á. TOLEDO MARTÍNEZ // Copia los datos del archivo desde un archivo de entrada a un // archivo de salida usando un ciclo while (!entrada.eof()) { // Empieza el ciclo salida cadena; // Lee una cadena desde el archivo entrada } // Cierra los archivos entrada.close(); // Cierra el archivo de entrada salida.close(); // Cierra el archivo de salida } //Fin de main() Note que la operación de lectura y escritura del archivo están colocados dentro del ciclo. Esto es porque simplemente leemos un elemento de datos desde el archivo de entrada y lo repetimos al archivo de salida como nuestra operación de procesamiento. El ciclo leerá una cadena desde el archivo de entrada repetidamente, después escribirá la cadena al archivo de salida hasta que encuentre el marcador de fin de archivo dentro del archivo de entrada. Otra ventaja de usar un ciclo para leer un archivo es que a menudo no se sabe cuántos elementos de datos contiene un archivo. Al utilizar un ciclo y verificar el marcador de EOF, no necesitará saber cuantos elementos de datos están en el archivo, porque el ciclo continuará leyendo el archivo hasta encontrar el final de éste. CREACIÓN DE UN ARCHIVO DE ACCESO SECUENCIAL C++ no impone estructura sobre un archivo. Por lo tanto, en los archivos C++ no existen los conceptos como registro. Debido a esto, el programador debe estructurar los archivos para satisfacer los requerimientos de las aplicaciones. En el siguiente ejemplo vemos cómo el programador puede imponer una estructura de registro simple en un archivo. Primero presentamos el programa y luego lo analizamos a detalle. Ejemplo 7.23 EXAMEN BREVE 18 El siguiente programa: SECUENCIAL.CPP, crea un archivo de acceso secuencial simple que puede utilizarse en un sistema de cuentas por cobrar para ayudar en la administración del dinero que deben los clientes a una compañía. Para cada cliente, el programa obtiene el número de cuenta, el nombre y el saldo del cliente (es decir, la cantidad que el cliente todavía debe a la compañía por bienes y servicios recibidos en el pasado) Los datos obtenidos para cada cliente constituyen un registro para ese cliente. En esta aplicación el número de cuenta se utiliza como clave del registro. Esto es, el archivo será creado y mantenido con relación al número de cuenta. Este programa asume que el usuario introduce registros en orden de número de cuenta. En un sistema de cuentas por cobrar completo se proporcionaría una capacidad de ordenamiento para que el usuario pueda dar los registros en cualquier orden, y éstos se ordenarían y escribirían en el archivo. FUNDAMENTOS – LECCIÓN 7 7-35

MIGUEL Á. TOLEDO MARTÍNEZ<br />

El formato general para un ciclo manejando archivos es:<br />

<br />

while(!entrada.eof())<br />

{ // comienza ciclo<br />

< proceso de elementos de datos ><br />

<br />

}<br />

Un enunciado debe preceder al ciclo while para leer el primer elemento de datos en el<br />

archivo entrada. Entonces el ciclo se codifica para leer los datos restantes en el archivo. El ciclo<br />

dice mientras no (!) encuentre la marca de fin de archivo (eof()), procese el actual elemento de<br />

datos y lea otro elemento de datos. Así cuando el ciclo se ejecuta, procesará y leerá los elementos<br />

de datos del archivo en forma repetida, uno por uno, hasta encontrar el marcador de fin de<br />

archivo. Todos los archivos en disco contienen una marca de fin de archivo, llamado EOF.<br />

Cuando se lee un archivo en disco, instruimos al compilador para buscar una marca de EOF y<br />

terminar las operaciones de lectura cuando lo encuentre. Esto se logra utilizando el ciclo while y<br />

la prueba para el marcador EOF usando la función estándar eof()<br />

Observe que los enunciados de procesamiento y lectura de archivos se colocan dentro del<br />

cuerpo del ciclo, que es enmarcado con las llaves ({ })<br />

Ejemplo 7.22<br />

El siguiente programa DISCO3.CPP, es otra versión del programa DISCO1.CPP, en donde se<br />

emplea un ciclo para copiar el archivo entrada.dat al archivo salida.dat.<br />

// El siguiente programa: DISCO3.CPP, copia un archivo a otro.<br />

#include // Para archivos de E/S<br />

const int TAMANO = 25; // Tamaño de la cadena de caracteres<br />

void main(void)<br />

{<br />

// Define la variable de cadena<br />

char cadena[TAMANO] = "\0";<br />

// Define los objetos del archivo y los archivos de entrada<br />

ifstream entrada; // Define el objeto de entrada<br />

ofstream salida; // Define el objeto de salida<br />

entrada.open("entrada.dat"); // Abre el archivo de entrada<br />

salida.open("salida.dat"); // Abre el archivo de salida<br />

// Lee la primera cadena<br />

entrada >> cadena;<br />

FUNDAMENTOS – <strong>LECCIÓN</strong> 7 7-34

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!