CONTENIDO DE LA LECCIÓN 8
CONTENIDO DE LA LECCIÓN 8 CONTENIDO DE LA LECCIÓN 8
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
- Page 1 and 2: MIGUEL Á. TOLEDO MARTÍNEZ CONTENI
- Page 3 and 4: MIGUEL Á. TOLEDO MARTÍNEZ LECCIÓ
- Page 5 and 6: MIGUEL Á. TOLEDO MARTÍNEZ introdu
- Page 7 and 8: MIGUEL Á. TOLEDO MARTÍNEZ /* El s
- Page 9 and 10: MIGUEL Á. TOLEDO MARTÍNEZ 2, las
- Page 11 and 12: MIGUEL Á. TOLEDO MARTÍNEZ El prog
- Page 13 and 14: MIGUEL Á. TOLEDO MARTÍNEZ caso co
- Page 15 and 16: MIGUEL Á. TOLEDO MARTÍNEZ una fun
- Page 17 and 18: MIGUEL Á. TOLEDO MARTÍNEZ . [30]
- Page 19 and 20: MIGUEL Á. TOLEDO MARTÍNEZ [5] ‘
- Page 21 and 22: MIGUEL Á. TOLEDO MARTÍNEZ Cuándo
- Page 23 and 24: MIGUEL Á. TOLEDO MARTÍNEZ USO DE
- Page 25 and 26: MIGUEL Á. TOLEDO MARTÍNEZ LAS FUN
- Page 27 and 28: MIGUEL Á. TOLEDO MARTÍNEZ Miguel
- Page 29 and 30: MIGUEL Á. TOLEDO MARTÍNEZ CLASES:
- Page 31 and 32: MIGUEL Á. TOLEDO MARTÍNEZ Una vez
- Page 33: MIGUEL Á. TOLEDO MARTÍNEZ Ejemplo
- Page 37 and 38: MIGUEL Á. TOLEDO MARTÍNEZ ofstrea
- Page 39 and 40: MIGUEL Á. TOLEDO MARTÍNEZ LECTURA
- Page 41 and 42: MIGUEL Á. TOLEDO MARTÍNEZ como de
- Page 43 and 44: MIGUEL Á. TOLEDO MARTÍNEZ { int r
- Page 45 and 46: MIGUEL Á. TOLEDO MARTÍNEZ Desplaz
- Page 47 and 48: MIGUEL Á. TOLEDO MARTÍNEZ El prog
- Page 49 and 50: MIGUEL Á. TOLEDO MARTÍNEZ /* El s
- Page 51 and 52: MIGUEL Á. TOLEDO MARTÍNEZ El prog
- Page 53 and 54: MIGUEL Á. TOLEDO MARTÍNEZ int sel
- Page 55 and 56: MIGUEL Á. TOLEDO MARTÍNEZ //Enví
- Page 57 and 58: MIGUEL Á. TOLEDO MARTÍNEZ PRIMER
- Page 59 and 60: MIGUEL Á. TOLEDO MARTÍNEZ LO QUE
- Page 61 and 62: MIGUEL Á. TOLEDO MARTÍNEZ apertur
- Page 63 and 64: MIGUEL Á. TOLEDO MARTÍNEZ b. Asig
- Page 65 and 66: MIGUEL Á. TOLEDO MARTÍNEZ 30. Ind
- Page 67 and 68: MIGUEL Á. TOLEDO MARTÍNEZ Utilice
- Page 69 and 70: MIGUEL Á. TOLEDO MARTÍNEZ double
- Page 71: MIGUEL Á. TOLEDO MARTÍNEZ } 8. #i
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