SlideShare uma empresa Scribd logo
1 de 54
Procesamiento
de archivos
Clase 12
Procesamiento
de archivos
• El almacenamiento de datos en variables y arreglos es temporal. Los
archivos se utilizan para la persistencia de los datos: datos de retención
permanente. Las computadoras almacenan archivos en dispositivos de
almacenamiento secundario como discos duros, CDs, DVDs, unidades
flash y cintas magnéticas. Explicaremos cómo construir programas en
C++ para crear, actualizar y procesar archivos de datos.
Procesamiento
de archivos
• Consideraremos los archivos secuenciales y los archivos de acceso
aleatorio. Compararemos el procesamiento de archivos de datos con
formato y el procesamiento de archivos de datos puros. Examinaremos
las técnicas para introducir datos de, y enviar datos a f lujos string en
vez de archivos en el capítulo 18, La clase string y el procesamiento de f
lujos de cadena.
Procesamiento
de archivos
• Consideraremos los archivos secuenciales y los archivos de acceso
aleatorio. Compararemos el procesamiento de archivos de datos con
formato y el procesamiento de archivos de datos puros. Examinaremos
las técnicas para introducir datos de, y enviar datos a f lujos string en
vez de archivos en el capítulo 18, La clase string y el procesamiento de f
lujos de cadena.
Jerarquía de datos
• Finalmente, todos los elementos de datos que procesan las computadoras
digitales se reducen a combinaciones de ceros y unos. Esto ocurre debido a que
es simple y económico construir dispositivos electrónicos que puedan asumir
uno de dos estados estables: un estado representa 0 y el otro representa 1. Es
increíble que las impresionantes funciones realizadas por las computadoras
impliquen solamente las manipulaciones más fundamentales de 0s y 1s.
Jerarquía de datos
• El elemento más pequeño de datos que soportan las computadoras se
conoce como bit (abreviatura de “dígito binario”; un dígito que puede
suponer uno de dos valores).. Cada elemento de datos, o bit, puede
asumir el valor 0 o el valor 1Los circuitos de computadora realizan varias
manipulaciones simples de bits, como examinar o establecer el valor de
un bit, o invertir su valor (de 1 a 0 o de 0 a 1).
Jerarquía de datos
• Es muy difícil para los programadores trabajar con datos en el formato de bits
de bajo nivel. Es preferible trabajar con datos en formatos como dígitos
decimales (0-9), letras (A-Z y a-z) y símbolos especiales ( por ejemplo, $, @, %,
&, * y muchos otros). Los dígitos, letras y símbolos especiales se conocen como
caracteres. El conjunto de caracteres de una computadora es el conjunto de
todos los caracteres utilizados para escribir programas y representar elementos
de datos de esa computadora.
Jerarquía de datos
• Las computadoras pueden procesar solamente 1s y 0s, por lo que cada
carácter en el conjunto de caracteres de una computadora se representa
como un patrón de 1s y 0s. Los bytes están compuestos de ocho bits. Los
programadores crean programas y elementos de datos con caracteres;
las computadoras manipulan y procesan estos caracteres como patrones
de bits. Por ejemplo, C++ proporciona el tipo de datos char.
Jerarquía de datos
• Cada char por lo general ocupa un byte. C++ también proporciona
el tipo de datos wchar_t, que puede ocupar más de un byte ( para
soportar conjuntos de caracteres más grandes, como el conjunto
de caracteres Unicode®; para obtener más información acerca de
Unicode®, visite el sitio www.unicode.org).
Jerarquía de datos
• Así como los caracteres están compuestos de bits, los campos están compuestos de
caracteres. Un campo es un grupo de caracteres que transmiten cierto significado. Por
ejemplo, un campo que consiste de letras mayúsculas y minúsculas puede representar el
nombre de una persona.
• Los elementos de datos que son procesados por las computadoras forman una jerarquía de
datos (figura 1), en la cual los elementos de datos se hacen más grandes y complejos en
estructura, a medida que progresamos de bits a caracteres, de caracteres a campos, hacia
agregados de datos más grandes.
Jerarquía de datos
Jerarquía de datos
• Generalmente, un registro (que puede ser representado como una clase en C++)
está compuesto de varios campos (conocidos como miembros de datos en C++).
Por ejemplo, en un sistema de nóminas el registro para un empleado específico
podría incluir los siguientes campos:
• 1. Número de identificación del empleado
• 2. Nombre
• 3. Dirección
Jerarquía de datos
• 4. Sueldo por hora
• 5. Número de exenciones reclamadas
• 6. Ingresos desde inicio de año a la fecha
• 7. Monto de impuestos retenidos
Jerarquía de datos
• Por lo tanto, un registro es un grupo de campos relacionados. En el ejemplo
anterior, cada campo está asociado al mismo empleado. Un archivo es un grupo
de registros relacionados. El archivo de nómina de una compañía generalmente
contiene un registro para cada empleado. Por ejemplo, un archivo de nómina
para una pequeña compañía podría contener sólo 22 registros, mientras que un
archivo de nómina para una compañía grande podría contener 100,000 registros.
Es común para una compañía tener muchos archivos, algunos de ellos
conteniendo miles de millones, o incluso billones de caracteres de información
Jerarquía de datos
• Para facilitar la recuperación de registros específicos de un archivo, debe
seleccionarse cuando menos un campo en cada registro como clave de registro.
Una clave de registro sirve para identificar que un registro pertenece a una
persona o entidad específica, y es única en cada registro. En el registro de
nómina que describimos anteriormente, por lo general se elegiría el número de
identificación de empleado como clave de registro.
Jerarquía de datos
• Existen muchas formas de organizar los registros en un archivo. Un tipo común
de organización se conoce como archivo secuencial, en el cual los registros se
almacenan en orden, con base en el campo que es la clave de registro. En un
archivo de nómina, los registros generalmente se colocan en orden, con base en
el número de identificación de empleado. El registro del primer empleado en el
archivo contiene el número de identificación de empleado más pequeño, y los
registros subsiguientes contienen números cada vez mayores.
Jerarquía de datos
• La mayoría de las empresas utilizan muchos archivos distintos para almacenar datos. Por
ejemplo, una compañía podría tener archivos de nómina, de cuentas por cobrar (listas
del dinero que deben los clientes), de cuentas por pagar (listas del dinero que se debe a
los proveedores), archivos de inventarios (listas de información acerca de los artículos
que maneja la empresa) y muchos otros tipos de archivos. A menudo, un grupo de
archivos relacionados se almacena en una base de datos. A una colección de programas
diseñada para crear y administrar bases de datos se le conoce como sistema de
administración de bases de datos (DBMS).
Archivos y flujos
• C++ considera a cada archivo como una secuencia de bytes (figura 2). Cada archivo
termina con un marcador de fin de archivo o con un número de bytes específico que se
registra en una estructura de datos administrativa, mantenida por el sistema. Cuando se
abre un archivo, se crea un objeto y se asocia un flujo a ese objeto. Vimos que los
objetos cin, cout, cerr y clog se crean cuando se incluye <iostream>. Los flujos asociados
con estos objetos proporcionan canales de comunicación entre un programa y un archivo
o dispositivo específico.
Archivos y flujos
• Por ejemplo, el objeto cin (objeto flujo de entrada estándar) permite a un
programa introducir datos desde el teclado o desde otros dispositivos, el objeto
cout (objeto flujo de salida estándar) permite a un programa enviar datos a la
pantalla o a otros dispositivos, y los objetos cerr y clog (objetos flujo de error
estándar) permiten a un programa enviar mensajes de error a la pantalla o a
otros dispositivos.
Archivos y flujos
Archivos y flujos
• Para llevar a cabo el procesamiento de archivos en C++, se deben incluir los
archivos de encabezado <iostream> y <fstream>. El encabezado <fstream>
incluye las definiciones para las plantillas de clases de flujos basic_ ifstream (
para las operaciones de entrada con archivos), basic_ofstream ( para las
operaciones de salida con archivos) y basic_fstream ( para las operaciones de
entrada y salida con archivos). Cada plantilla de clase tiene una especialización
de plantilla predefi nida que permite las operaciones de E/S con valores char.
Archivos y flujos
• Además, la biblioteca <fstream> proporciona alias typedef para estas
especializaciones de plantilla. Por ejemplo, la definición typedef istream
representa a una especialización de basic_ifstream que permite la entrada de
valores char desde un archivo. De manera similar, typedef ofstream representa
una especialización de basic_ofstream que permite enviar valores char a
archivos. Además, typedf fstream representa una especialización de
basic_fstream que permite introducir valores char desde (y enviarlos hacia)
archivos.
Archivos y flujos
• Para abrir los archivos, se crean objetos de estas especializaciones de plantillas
de flujo. Estas plantillas se “derivan” de las plantillas de clases basic_istream,
basic_ostream y basic_iostream, respectivamente. Por ende, todas las funciones
miembro, operadores y manipuladores que pertenecen a estas plantillas
también se pueden aplicar a los flujos de archivos. En la figura 3 se sintetizan
las relaciones de herencia de las clases de E/S que hemos visto hasta este
punto.
Archivos y flujos
Creación de un archivo secuencial
• C++ no impone una estructura sobre un archivo. Por ende, en un archivo de C++
no existe un concepto tal como el de un “registro”. En consecuencia, el
programador debe estructurar los archivos de manera que cumplan con los
requerimientos de la aplicación. En el siguiente ejemplo veremos cómo se
puede imponer una estructura de registro simple sobre un archivo.
Creación de un archivo secuencial
• La figura 4 crea un archivo secuencial que podría utilizarse en un archivo de
cuentas por cobrar, para ayudar a administrar el dinero que deben los clientes
de crédito a una empresa. Para cada cliente, el programa obtiene su número de
cuenta, nombre y saldo (es decir, el monto que el cliente debe a la empresa por
los bienes y servicios recibidos en el pasado).
Creación de un archivo secuencial
• Los datos que se obtienen para cada cliente constituyen un registro para ese
cliente. El número de cuenta sirve como la clave de registro; es decir, el
programa crea y da mantenimiento al archivo en orden por número de cuenta.
Creación de un archivo secuencial
• Este programa supone que el usuario introduce los registros en orden por
número de cuenta. En un sistema de cuentas por cobrar completo, sería
conveniente contar con una herramienta para ordenar datos, para que el
usuario pueda introducir los registros en cualquier orden; después los registros
se ordenarían y escribirían en el archivo
Creación de un archivo secuencial
Creación de un archivo secuencial
• Vamos a examinar este programa. Como se dijo antes, para abrir los archivos se
crean objetos ifstream, ofstream o fstream. En la figura 4, el archivo se va a
abrir para salida, por lo que se crea un objeto ofstream. Se pasan dos
argumentos al constructor del objeto: el nombre de archivo y el modo de
apertura de archivo (línea 19).
Creación de un archivo secuencial
• Para un objeto ofstream, el modo de apertura de archivo puede ser ios::out
para enviar datos a un archivo, o ios::app para adjuntar datos al final de un
archivo (sin modificar los datos que ya estén en el archivo). Los archivos
existentes que se abren con el modo ios::out se truncan: se descartan todos los
datos en el archivo. Si el archivo especificado no existe todavía, entonces el
objeto ofstream crea el archivo, usando ese nombre de archivo.
Creación de un archivo secuencial
• En la línea 19 se crea un objeto ofstream llamado archivoClientesSalida,
asociado con el archivo clientes.
Creación de un archivo secuencial
• dat que se abre en modo de salida. Los argumentos "clientes.dat" e ios::out se
pasan al constructor de ofstream, el cual abre el archivo (esto establece una
“línea de comunicación” con el archivo). De manera predeterminada, los
objetos ofstream se abren en modo de salida, por lo que en la línea 19 se podría
haber utilizado la instrucción alterna ofstream archivoClientesSalida(
"clientes.dat" ); para abrir clientes.dat en modo de salida.
Creación de un archivo secuencial
Creación de un archivo secuencial
• Después de crear un objeto ofstream y tratar de abrirlo, el programa prueba si la
operación de apertura tuvo éxito.
• La instrucción if en las líneas 22 a 26 utiliza la función miembro operator! sobrecargada
de ios para determinar si la operación open tuvo éxito. La condición devuelve un valor
true si se establece el bit failbit o el bit badbit para el flujo en la operación open.
Ciertos posibles errores son: tratar de abrir un archivo no existente en modo de lectura,
tratar de abrir un archivo en modo de lectura o escritura sin permiso, y abrir un archivo
en modo de escritura cuando no hay espacio disponible en disco.
Creación de un archivo secuencial
• Si la condición indica un intento fallido de abrir el archivo, en la línea 24 se imprime el
mensaje de error "No se pudo abrir el archivo", y en la línea 25 se invoca a la función
exit para terminar el programa. El argumento para exit se devuelve al entorno desde el
que se invocó el programa. El argumento 0 indica que el programa terminó en forma
normal; cualquier otro valor indica que el programa terminó debido a un error. El
entorno de llamada ( probablemente el sistema operativo) utiliza el valor devuelto por
exit para responder al error en forma apropiada.
Creación de un archivo secuencial
• Otra función miembro de operador sobrecargada de ios (operator void*) convierte el f
lujo en un apuntador, para que se pueda evaluar como 0 (es decir, el apuntador nulo) o
un número distinto de cero (es decir, cualquier otro valor de apuntador). Cuando se usa
el valor de un apuntador como una condición, C++ convierte un apuntador nulo en el
valor bool false y un apuntador no nulo en el valor bool true. Si se establecieron los bits
failbit o badbit (vea el capítulo 15) para el f lujo, se devuelve 0 (false).
Creación de un archivo secuencial
• La condición en la instrucción while de las líneas 36 a 40 invoca a la función miembro
operator void* en cin de manera implícita. La condición permanece como true, siempre y
cuando no se haya establecido el bit failbit o el bit badbit para cin. Al introducir el
indicador de fi n de archivo se establece el bit failbit para cin. La función operator void *
se puede utilizar para probar un objeto de entrada para el fi n de archivo, en vez de
llamar a la función miembro eof de manera explícita en el objeto de entrada .
Creación de un archivo secuencial
• Si en la línea 19 se abrió el archivo con éxito, el programa empieza a procesar los datos.
En las líneas 28 y 29 se pide al usuario que introduzca varios campos para cada registro,
o el indicador de fi n de archivo cuando esté completa la entrada de datos. En la figura 6
se listan las combinaciones de teclado para introducir el fin de archivo en varios sistemas
computacionales.
Creación de un archivo secuencial
Creación de un archivo secuencial
• En la línea 36 se extrae cada conjunto de datos y se determina si se introdujo el fi n de
archivo. Al encontrar el fi n de archivo, o cuando se introducen datos incorrectos,
operator void * devuelve el apuntador nulo (que se convierte en el valor bool false) y la
instrucción while termina. El usuario introduce el fin de archivo para informar al
programa que ya no procese más datos. El indicador de fin de archivo se establece
cuando el usuario introduce la combinación de teclas de fin de archivo. La instrucción
while itera hasta que se establece el indicador de fi n de archivo.
Creación de un archivo secuencial
• En la línea 38 se escribe un conjunto de datos en el archivo clientes.dat, usando el
operador de inserción de flujo << y el objeto archivoClientesSalida asociado con el
archivo al principio del programa. Los datos se pueden recuperar mediante un programa
diseñado para leer el archivo.
Creación de un archivo secuencial
• Observe que, debido a que el archivo creado en la figura 4 es simplemente un archivo de
texto, puede verse en cualquier editor de texto. Una vez que el usuario introduce el
indicador de fin de archivo, main termina. Esto invoca de manera implícita a la función
destructor del objeto archivoClientesSalida, que cierra el archivo clientes.dat. También
podemos cerrar el objeto ofstream de manera explícita, usando la función miembro
close en la instrucción archivoClientesSalida.close();
Funciones miembro get y getline
• La función miembro get sin argumentos recibe como entrada un
carácter del flujo designado (incluyendo caracteres de espacio en
blanco y otros caracteres no gráficos, como la secuencia de teclas
que representa el fin de archivo) y lo devuelve como el valor de la
llamada a la función.
Uso de las funciones miembro eof, get y put
• La figura 4 demuestra el uso de las funciones miembro eof y get en el f lujo de
entrada cin, y la función miembro put en el flujo de salida cout. El programa
primero imprime el valor de cin.eof() [es decir, false (0 en la salida)] para
mostrar que no ha ocurrido el fi n de archivo en cin. El usuario introduce una
línea de texto y oprime Intro seguido del fin de archivo (<Ctrl>-z en sistemas
Microsoft Windows, <Ctrl>-d en sistemas UNIX y Macintosh)
Uso de las funciones miembro eof, get y put
Uso de las funciones miembro eof, get y put
Comparación entre cin y cin.get
• La figura 5 compara la entrada mediante el uso de la extracción
de flujo con cin (que lee caracteres hasta que se encuentra un
carácter de espacio en blanco) y la entrada mediante el uso de
cin.get. Observe que la llamada a cin.get (línea 24) no especifica
un delimitador, por lo que se utiliza el carácter predeterminado
'n'.
Comparación entre cin y cin.get
• La figura 5 compara la entrada mediante el uso de la extracción
de flujo con cin (que lee caracteres hasta que se encuentra un
carácter de espacio en blanco) y la entrada mediante el uso de
cin.get. Observe que la llamada a cin.get (línea 24) no especifica
un delimitador, por lo que se utiliza el carácter predeterminado
'n'.
Comparación entre cin y cin.get
Comparación entre cin y cin.get
Uso de la función miembro getline
• La función miembro getline opera de manera similar a la tercera versión de la
función miembro get e inserta un carácter nulo después de la línea en el arreglo
de caracteres. La función getline elimina el delimitador del f lujo (es decir, lee
el carácter y lo descarta), pero no lo almacena en el arreglo de caracteres. El
programa de la fi gura 15.6 demuestra el uso de la función miembro getline
para introducir una línea de texto (línea 15).
Uso de la función miembro getline
Uso de la función miembro getline

Mais conteúdo relacionado

Mais procurados

Punteros y elementos dinámicos en c++
Punteros y elementos dinámicos en c++Punteros y elementos dinámicos en c++
Punteros y elementos dinámicos en c++Tensor
 
Tipo de variables de PowerDesigner
Tipo de variables de PowerDesignerTipo de variables de PowerDesigner
Tipo de variables de PowerDesignerKlucio
 
Definiciones y ejemplos de los tipos de datos de powerdesigner
Definiciones y ejemplos de los tipos de datos de powerdesignerDefiniciones y ejemplos de los tipos de datos de powerdesigner
Definiciones y ejemplos de los tipos de datos de powerdesigneraula40tics2finanzas
 
Presentacion power designer
Presentacion power designerPresentacion power designer
Presentacion power designerMario Puerres
 
Tipos de datos en power designer
Tipos de datos en power designerTipos de datos en power designer
Tipos de datos en power designerAndreita Bedoya
 
Power designer tipos de datos
Power designer tipos de datosPower designer tipos de datos
Power designer tipos de datosCECT1992
 
Tipos de datos en sql server
Tipos de datos en sql serverTipos de datos en sql server
Tipos de datos en sql serverEmanuel MCastillo
 
Tipos de Variables de Power Designer-
Tipos de Variables de Power Designer-Tipos de Variables de Power Designer-
Tipos de Variables de Power Designer-Aula38TICSII
 
Tipos de base de datos de sql server 2008
Tipos de base de datos de sql server 2008Tipos de base de datos de sql server 2008
Tipos de base de datos de sql server 2008Elizabeth Huaraya Apaza
 
Diapositivas curso programación orientada a objetos en Java
Diapositivas curso programación orientada a objetos en JavaDiapositivas curso programación orientada a objetos en Java
Diapositivas curso programación orientada a objetos en JavaJose Perez
 
Arrays - programación 3
Arrays - programación 3Arrays - programación 3
Arrays - programación 3yeimirbeth
 
Estructura de Datos Arreglos
Estructura de Datos ArreglosEstructura de Datos Arreglos
Estructura de Datos Arreglosguestc906c2
 
Introducción a la programación y la informática. Tema 10
Introducción a la programación y la informática. Tema 10Introducción a la programación y la informática. Tema 10
Introducción a la programación y la informática. Tema 10Andres Garcia Garcia
 

Mais procurados (20)

Punteros y elementos dinámicos en c++
Punteros y elementos dinámicos en c++Punteros y elementos dinámicos en c++
Punteros y elementos dinámicos en c++
 
Tipo de variables de PowerDesigner
Tipo de variables de PowerDesignerTipo de variables de PowerDesigner
Tipo de variables de PowerDesigner
 
Definiciones y ejemplos de los tipos de datos de powerdesigner
Definiciones y ejemplos de los tipos de datos de powerdesignerDefiniciones y ejemplos de los tipos de datos de powerdesigner
Definiciones y ejemplos de los tipos de datos de powerdesigner
 
Presentacion power designer
Presentacion power designerPresentacion power designer
Presentacion power designer
 
Tipos de datos en power designer
Tipos de datos en power designerTipos de datos en power designer
Tipos de datos en power designer
 
Tipo de datos
Tipo de datosTipo de datos
Tipo de datos
 
Power designer tipos de datos
Power designer tipos de datosPower designer tipos de datos
Power designer tipos de datos
 
Tipos de datos en sql server
Tipos de datos en sql serverTipos de datos en sql server
Tipos de datos en sql server
 
Tipos de Variables de Power Designer-
Tipos de Variables de Power Designer-Tipos de Variables de Power Designer-
Tipos de Variables de Power Designer-
 
Tipos de base de datos de sql server 2008
Tipos de base de datos de sql server 2008Tipos de base de datos de sql server 2008
Tipos de base de datos de sql server 2008
 
Tablas y tipos de datos
Tablas y tipos de datosTablas y tipos de datos
Tablas y tipos de datos
 
Diapositivas curso programación orientada a objetos en Java
Diapositivas curso programación orientada a objetos en JavaDiapositivas curso programación orientada a objetos en Java
Diapositivas curso programación orientada a objetos en Java
 
Arrays - programación 3
Arrays - programación 3Arrays - programación 3
Arrays - programación 3
 
Tipos de datos_en_java
Tipos de datos_en_javaTipos de datos_en_java
Tipos de datos_en_java
 
arrays
arraysarrays
arrays
 
Estructura de Datos Arreglos
Estructura de Datos ArreglosEstructura de Datos Arreglos
Estructura de Datos Arreglos
 
Datos simples
Datos simples Datos simples
Datos simples
 
Vectores y Matrices
Vectores y MatricesVectores y Matrices
Vectores y Matrices
 
Introducción a la programación y la informática. Tema 10
Introducción a la programación y la informática. Tema 10Introducción a la programación y la informática. Tema 10
Introducción a la programación y la informática. Tema 10
 
Tipos de datos_de_virtual_c_
Tipos de datos_de_virtual_c_Tipos de datos_de_virtual_c_
Tipos de datos_de_virtual_c_
 

Destaque

Tendencias 2016-insecurity-everywhere-eset
Tendencias 2016-insecurity-everywhere-esetTendencias 2016-insecurity-everywhere-eset
Tendencias 2016-insecurity-everywhere-esetTensor
 
Practica 5 2016
Practica 5 2016Practica 5 2016
Practica 5 2016Tensor
 
Disfrazando codigos maliciosos
Disfrazando codigos maliciososDisfrazando codigos maliciosos
Disfrazando codigos maliciososTensor
 
Practica 4 2016
Practica 4 2016Practica 4 2016
Practica 4 2016Tensor
 
Practica 6 2016
Practica 6 2016Practica 6 2016
Practica 6 2016Tensor
 
Ondas em
Ondas emOndas em
Ondas emTensor
 
Practicas 8 2016
Practicas 8 2016Practicas 8 2016
Practicas 8 2016Tensor
 
Raices de ecuaciones en excel
Raices de ecuaciones en excelRaices de ecuaciones en excel
Raices de ecuaciones en excelTensor
 
Practica 7 2016
Practica 7 2016Practica 7 2016
Practica 7 2016Tensor
 
Sentencia, secuencia y bloque
Sentencia, secuencia y bloqueSentencia, secuencia y bloque
Sentencia, secuencia y bloqueTensor
 
Pse int
Pse intPse int
Pse intTensor
 
Clase 0 presentación
Clase 0  presentaciónClase 0  presentación
Clase 0 presentaciónTensor
 
Elementos basicos c++
Elementos basicos c++Elementos basicos c++
Elementos basicos c++Tensor
 
Reduccion de orden
Reduccion de ordenReduccion de orden
Reduccion de ordenTensor
 
Clase 13 PC
Clase 13 PCClase 13 PC
Clase 13 PCTensor
 
Simulación en promodel clase 04
Simulación en promodel clase 04Simulación en promodel clase 04
Simulación en promodel clase 04Tensor
 
Manual de microsft excel avanzado
Manual de microsft excel avanzadoManual de microsft excel avanzado
Manual de microsft excel avanzadoPaola Jimenez
 
Teoria de colas
Teoria de colasTeoria de colas
Teoria de colasTensor
 
Ahora un problema de segundo grado en el que empleamos la formula mencionada
Ahora un problema de segundo grado en el que empleamos la formula  mencionadaAhora un problema de segundo grado en el que empleamos la formula  mencionada
Ahora un problema de segundo grado en el que empleamos la formula mencionadaHector García Cárdenas
 

Destaque (20)

Tendencias 2016-insecurity-everywhere-eset
Tendencias 2016-insecurity-everywhere-esetTendencias 2016-insecurity-everywhere-eset
Tendencias 2016-insecurity-everywhere-eset
 
Practica 5 2016
Practica 5 2016Practica 5 2016
Practica 5 2016
 
Disfrazando codigos maliciosos
Disfrazando codigos maliciososDisfrazando codigos maliciosos
Disfrazando codigos maliciosos
 
Practica 4 2016
Practica 4 2016Practica 4 2016
Practica 4 2016
 
Practica 6 2016
Practica 6 2016Practica 6 2016
Practica 6 2016
 
Ondas em
Ondas emOndas em
Ondas em
 
Practicas 8 2016
Practicas 8 2016Practicas 8 2016
Practicas 8 2016
 
Raices de ecuaciones en excel
Raices de ecuaciones en excelRaices de ecuaciones en excel
Raices de ecuaciones en excel
 
Practica 7 2016
Practica 7 2016Practica 7 2016
Practica 7 2016
 
Sentencia, secuencia y bloque
Sentencia, secuencia y bloqueSentencia, secuencia y bloque
Sentencia, secuencia y bloque
 
Pse int
Pse intPse int
Pse int
 
Clase 0 presentación
Clase 0  presentaciónClase 0  presentación
Clase 0 presentación
 
Elementos basicos c++
Elementos basicos c++Elementos basicos c++
Elementos basicos c++
 
Reduccion de orden
Reduccion de ordenReduccion de orden
Reduccion de orden
 
Clase 13 PC
Clase 13 PCClase 13 PC
Clase 13 PC
 
Simulación en promodel clase 04
Simulación en promodel clase 04Simulación en promodel clase 04
Simulación en promodel clase 04
 
Manual de microsft excel avanzado
Manual de microsft excel avanzadoManual de microsft excel avanzado
Manual de microsft excel avanzado
 
Teoria de colas
Teoria de colasTeoria de colas
Teoria de colas
 
Ahora un problema de segundo grado en el que empleamos la formula mencionada
Ahora un problema de segundo grado en el que empleamos la formula  mencionadaAhora un problema de segundo grado en el que empleamos la formula  mencionada
Ahora un problema de segundo grado en el que empleamos la formula mencionada
 
Correo electronico
Correo electronicoCorreo electronico
Correo electronico
 

Semelhante a Procesamiento de archivos

Semelhante a Procesamiento de archivos (20)

Glosario
GlosarioGlosario
Glosario
 
Flujos y archivo en java
Flujos y archivo en javaFlujos y archivo en java
Flujos y archivo en java
 
Clase06 25-06-12
Clase06 25-06-12Clase06 25-06-12
Clase06 25-06-12
 
Presentacion diseño de archivos
Presentacion diseño de archivosPresentacion diseño de archivos
Presentacion diseño de archivos
 
Glosario base de datos
Glosario base de datos Glosario base de datos
Glosario base de datos
 
Introducción a las bases de datos Parte1
Introducción a las bases de datos Parte1Introducción a las bases de datos Parte1
Introducción a las bases de datos Parte1
 
Base de datos
Base de datosBase de datos
Base de datos
 
CONCEPTOS BÁSICOS DE BASE DE DATOS
CONCEPTOS BÁSICOS DE BASE DE DATOSCONCEPTOS BÁSICOS DE BASE DE DATOS
CONCEPTOS BÁSICOS DE BASE DE DATOS
 
LENGUAJE TRANSACT - SQL
LENGUAJE TRANSACT - SQLLENGUAJE TRANSACT - SQL
LENGUAJE TRANSACT - SQL
 
Cei 309 curso básico de fox - pro
Cei 309   curso básico de fox - proCei 309   curso básico de fox - pro
Cei 309 curso básico de fox - pro
 
ARCHIVOS Y CARPETAS.pptx
ARCHIVOS Y CARPETAS.pptxARCHIVOS Y CARPETAS.pptx
ARCHIVOS Y CARPETAS.pptx
 
Programacion no numerica2
Programacion no numerica2Programacion no numerica2
Programacion no numerica2
 
1100947.ppt
1100947.ppt1100947.ppt
1100947.ppt
 
4 4 Bases De Datos
4 4 Bases De Datos4 4 Bases De Datos
4 4 Bases De Datos
 
Administracion De Archivos Vi
Administracion De Archivos ViAdministracion De Archivos Vi
Administracion De Archivos Vi
 
Introduccion a las bases de datos
Introduccion a las bases de datosIntroduccion a las bases de datos
Introduccion a las bases de datos
 
Base de datos
Base de datosBase de datos
Base de datos
 
Jose osorio
Jose osorioJose osorio
Jose osorio
 
Diseño de Archivos y Base de Datos
Diseño de Archivos y Base de DatosDiseño de Archivos y Base de Datos
Diseño de Archivos y Base de Datos
 
Clase 1.pptx
Clase 1.pptxClase 1.pptx
Clase 1.pptx
 

Mais de Tensor

Libertad
LibertadLibertad
LibertadTensor
 
Método de la regla falsa (o metodo de la falsa posición)
Método de la regla falsa (o metodo de la falsa posición)Método de la regla falsa (o metodo de la falsa posición)
Método de la regla falsa (o metodo de la falsa posición)Tensor
 
Metodo de la bisección
Metodo de la bisecciónMetodo de la bisección
Metodo de la bisecciónTensor
 
Transito vehicular
Transito vehicularTransito vehicular
Transito vehicularTensor
 
Game maker
Game makerGame maker
Game makerTensor
 
Variación+de+parametros
Variación+de+parametrosVariación+de+parametros
Variación+de+parametrosTensor
 
Coeficientes indeterminados enfoque de superposición
Coeficientes indeterminados   enfoque de superposiciónCoeficientes indeterminados   enfoque de superposición
Coeficientes indeterminados enfoque de superposiciónTensor
 
Bernoulli y ricatti
Bernoulli y ricattiBernoulli y ricatti
Bernoulli y ricattiTensor
 
Practica no. 3 tiempo de servicio
Practica no. 3 tiempo de servicioPractica no. 3 tiempo de servicio
Practica no. 3 tiempo de servicioTensor
 
Clase 14 ondas reflejadas
Clase 14 ondas reflejadasClase 14 ondas reflejadas
Clase 14 ondas reflejadasTensor
 
Clase 7 ondas electromagneticas
Clase 7 ondas electromagneticasClase 7 ondas electromagneticas
Clase 7 ondas electromagneticasTensor
 
Sentencia, secuencia y bloque
Sentencia, secuencia y bloqueSentencia, secuencia y bloque
Sentencia, secuencia y bloqueTensor
 
Tipos de datos ok
Tipos de datos okTipos de datos ok
Tipos de datos okTensor
 
Practicas 3 2016
Practicas 3 2016Practicas 3 2016
Practicas 3 2016Tensor
 
Practicas 2 2016
Practicas 2 2016Practicas 2 2016
Practicas 2 2016Tensor
 
Práctica nº 1
Práctica nº 1Práctica nº 1
Práctica nº 1Tensor
 
Condicional if en c++
Condicional if en c++Condicional if en c++
Condicional if en c++Tensor
 

Mais de Tensor (17)

Libertad
LibertadLibertad
Libertad
 
Método de la regla falsa (o metodo de la falsa posición)
Método de la regla falsa (o metodo de la falsa posición)Método de la regla falsa (o metodo de la falsa posición)
Método de la regla falsa (o metodo de la falsa posición)
 
Metodo de la bisección
Metodo de la bisecciónMetodo de la bisección
Metodo de la bisección
 
Transito vehicular
Transito vehicularTransito vehicular
Transito vehicular
 
Game maker
Game makerGame maker
Game maker
 
Variación+de+parametros
Variación+de+parametrosVariación+de+parametros
Variación+de+parametros
 
Coeficientes indeterminados enfoque de superposición
Coeficientes indeterminados   enfoque de superposiciónCoeficientes indeterminados   enfoque de superposición
Coeficientes indeterminados enfoque de superposición
 
Bernoulli y ricatti
Bernoulli y ricattiBernoulli y ricatti
Bernoulli y ricatti
 
Practica no. 3 tiempo de servicio
Practica no. 3 tiempo de servicioPractica no. 3 tiempo de servicio
Practica no. 3 tiempo de servicio
 
Clase 14 ondas reflejadas
Clase 14 ondas reflejadasClase 14 ondas reflejadas
Clase 14 ondas reflejadas
 
Clase 7 ondas electromagneticas
Clase 7 ondas electromagneticasClase 7 ondas electromagneticas
Clase 7 ondas electromagneticas
 
Sentencia, secuencia y bloque
Sentencia, secuencia y bloqueSentencia, secuencia y bloque
Sentencia, secuencia y bloque
 
Tipos de datos ok
Tipos de datos okTipos de datos ok
Tipos de datos ok
 
Practicas 3 2016
Practicas 3 2016Practicas 3 2016
Practicas 3 2016
 
Practicas 2 2016
Practicas 2 2016Practicas 2 2016
Practicas 2 2016
 
Práctica nº 1
Práctica nº 1Práctica nº 1
Práctica nº 1
 
Condicional if en c++
Condicional if en c++Condicional if en c++
Condicional if en c++
 

Último

ÉTICA, NATURALEZA Y SOCIEDADES_3RO_3ER TRIMESTRE.pdf
ÉTICA, NATURALEZA Y SOCIEDADES_3RO_3ER TRIMESTRE.pdfÉTICA, NATURALEZA Y SOCIEDADES_3RO_3ER TRIMESTRE.pdf
ÉTICA, NATURALEZA Y SOCIEDADES_3RO_3ER TRIMESTRE.pdfluisantoniocruzcorte1
 
Fundamentos y Principios de Psicopedagogía..pdf
Fundamentos y Principios de Psicopedagogía..pdfFundamentos y Principios de Psicopedagogía..pdf
Fundamentos y Principios de Psicopedagogía..pdfsamyarrocha1
 
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024gharce
 
Día de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialDía de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialpatriciaines1993
 
periodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicasperiodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicas123yudy
 
Uses of simple past and time expressions
Uses of simple past and time expressionsUses of simple past and time expressions
Uses of simple past and time expressionsConsueloSantana3
 
Mapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdfMapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdfvictorbeltuce
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADOJosé Luis Palma
 
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdfOswaldoGonzalezCruz
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleJonathanCovena1
 
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptxc3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptxMartín Ramírez
 
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdfTema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdfDaniel Ángel Corral de la Mata, Ph.D.
 
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIA
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIATRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIA
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIAAbelardoVelaAlbrecht1
 
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdf
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdfLA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdf
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdfNataliaMalky1
 
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...JAVIER SOLIS NOYOLA
 
Estrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdfEstrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdfromanmillans
 
La evolucion de la especie humana-primero de secundaria
La evolucion de la especie humana-primero de secundariaLa evolucion de la especie humana-primero de secundaria
La evolucion de la especie humana-primero de secundariamarco carlos cuyo
 
Tarea 5-Selección de herramientas digitales-Carol Eraso.pdf
Tarea 5-Selección de herramientas digitales-Carol Eraso.pdfTarea 5-Selección de herramientas digitales-Carol Eraso.pdf
Tarea 5-Selección de herramientas digitales-Carol Eraso.pdfCarol Andrea Eraso Guerrero
 
Los Nueve Principios del Desempeño de la Sostenibilidad
Los Nueve Principios del Desempeño de la SostenibilidadLos Nueve Principios del Desempeño de la Sostenibilidad
Los Nueve Principios del Desempeño de la SostenibilidadJonathanCovena1
 
Plan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPEPlan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPELaura Chacón
 

Último (20)

ÉTICA, NATURALEZA Y SOCIEDADES_3RO_3ER TRIMESTRE.pdf
ÉTICA, NATURALEZA Y SOCIEDADES_3RO_3ER TRIMESTRE.pdfÉTICA, NATURALEZA Y SOCIEDADES_3RO_3ER TRIMESTRE.pdf
ÉTICA, NATURALEZA Y SOCIEDADES_3RO_3ER TRIMESTRE.pdf
 
Fundamentos y Principios de Psicopedagogía..pdf
Fundamentos y Principios de Psicopedagogía..pdfFundamentos y Principios de Psicopedagogía..pdf
Fundamentos y Principios de Psicopedagogía..pdf
 
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
 
Día de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialDía de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundial
 
periodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicasperiodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicas
 
Uses of simple past and time expressions
Uses of simple past and time expressionsUses of simple past and time expressions
Uses of simple past and time expressions
 
Mapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdfMapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdf
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
 
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo Sostenible
 
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptxc3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
 
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdfTema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
 
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIA
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIATRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIA
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIA
 
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdf
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdfLA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdf
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdf
 
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
 
Estrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdfEstrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdf
 
La evolucion de la especie humana-primero de secundaria
La evolucion de la especie humana-primero de secundariaLa evolucion de la especie humana-primero de secundaria
La evolucion de la especie humana-primero de secundaria
 
Tarea 5-Selección de herramientas digitales-Carol Eraso.pdf
Tarea 5-Selección de herramientas digitales-Carol Eraso.pdfTarea 5-Selección de herramientas digitales-Carol Eraso.pdf
Tarea 5-Selección de herramientas digitales-Carol Eraso.pdf
 
Los Nueve Principios del Desempeño de la Sostenibilidad
Los Nueve Principios del Desempeño de la SostenibilidadLos Nueve Principios del Desempeño de la Sostenibilidad
Los Nueve Principios del Desempeño de la Sostenibilidad
 
Plan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPEPlan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPE
 

Procesamiento de archivos

  • 2. Procesamiento de archivos • El almacenamiento de datos en variables y arreglos es temporal. Los archivos se utilizan para la persistencia de los datos: datos de retención permanente. Las computadoras almacenan archivos en dispositivos de almacenamiento secundario como discos duros, CDs, DVDs, unidades flash y cintas magnéticas. Explicaremos cómo construir programas en C++ para crear, actualizar y procesar archivos de datos.
  • 3. Procesamiento de archivos • Consideraremos los archivos secuenciales y los archivos de acceso aleatorio. Compararemos el procesamiento de archivos de datos con formato y el procesamiento de archivos de datos puros. Examinaremos las técnicas para introducir datos de, y enviar datos a f lujos string en vez de archivos en el capítulo 18, La clase string y el procesamiento de f lujos de cadena.
  • 4. Procesamiento de archivos • Consideraremos los archivos secuenciales y los archivos de acceso aleatorio. Compararemos el procesamiento de archivos de datos con formato y el procesamiento de archivos de datos puros. Examinaremos las técnicas para introducir datos de, y enviar datos a f lujos string en vez de archivos en el capítulo 18, La clase string y el procesamiento de f lujos de cadena.
  • 5. Jerarquía de datos • Finalmente, todos los elementos de datos que procesan las computadoras digitales se reducen a combinaciones de ceros y unos. Esto ocurre debido a que es simple y económico construir dispositivos electrónicos que puedan asumir uno de dos estados estables: un estado representa 0 y el otro representa 1. Es increíble que las impresionantes funciones realizadas por las computadoras impliquen solamente las manipulaciones más fundamentales de 0s y 1s.
  • 6. Jerarquía de datos • El elemento más pequeño de datos que soportan las computadoras se conoce como bit (abreviatura de “dígito binario”; un dígito que puede suponer uno de dos valores).. Cada elemento de datos, o bit, puede asumir el valor 0 o el valor 1Los circuitos de computadora realizan varias manipulaciones simples de bits, como examinar o establecer el valor de un bit, o invertir su valor (de 1 a 0 o de 0 a 1).
  • 7. Jerarquía de datos • Es muy difícil para los programadores trabajar con datos en el formato de bits de bajo nivel. Es preferible trabajar con datos en formatos como dígitos decimales (0-9), letras (A-Z y a-z) y símbolos especiales ( por ejemplo, $, @, %, &, * y muchos otros). Los dígitos, letras y símbolos especiales se conocen como caracteres. El conjunto de caracteres de una computadora es el conjunto de todos los caracteres utilizados para escribir programas y representar elementos de datos de esa computadora.
  • 8. Jerarquía de datos • Las computadoras pueden procesar solamente 1s y 0s, por lo que cada carácter en el conjunto de caracteres de una computadora se representa como un patrón de 1s y 0s. Los bytes están compuestos de ocho bits. Los programadores crean programas y elementos de datos con caracteres; las computadoras manipulan y procesan estos caracteres como patrones de bits. Por ejemplo, C++ proporciona el tipo de datos char.
  • 9. Jerarquía de datos • Cada char por lo general ocupa un byte. C++ también proporciona el tipo de datos wchar_t, que puede ocupar más de un byte ( para soportar conjuntos de caracteres más grandes, como el conjunto de caracteres Unicode®; para obtener más información acerca de Unicode®, visite el sitio www.unicode.org).
  • 10. Jerarquía de datos • Así como los caracteres están compuestos de bits, los campos están compuestos de caracteres. Un campo es un grupo de caracteres que transmiten cierto significado. Por ejemplo, un campo que consiste de letras mayúsculas y minúsculas puede representar el nombre de una persona. • Los elementos de datos que son procesados por las computadoras forman una jerarquía de datos (figura 1), en la cual los elementos de datos se hacen más grandes y complejos en estructura, a medida que progresamos de bits a caracteres, de caracteres a campos, hacia agregados de datos más grandes.
  • 12. Jerarquía de datos • Generalmente, un registro (que puede ser representado como una clase en C++) está compuesto de varios campos (conocidos como miembros de datos en C++). Por ejemplo, en un sistema de nóminas el registro para un empleado específico podría incluir los siguientes campos: • 1. Número de identificación del empleado • 2. Nombre • 3. Dirección
  • 13. Jerarquía de datos • 4. Sueldo por hora • 5. Número de exenciones reclamadas • 6. Ingresos desde inicio de año a la fecha • 7. Monto de impuestos retenidos
  • 14. Jerarquía de datos • Por lo tanto, un registro es un grupo de campos relacionados. En el ejemplo anterior, cada campo está asociado al mismo empleado. Un archivo es un grupo de registros relacionados. El archivo de nómina de una compañía generalmente contiene un registro para cada empleado. Por ejemplo, un archivo de nómina para una pequeña compañía podría contener sólo 22 registros, mientras que un archivo de nómina para una compañía grande podría contener 100,000 registros. Es común para una compañía tener muchos archivos, algunos de ellos conteniendo miles de millones, o incluso billones de caracteres de información
  • 15. Jerarquía de datos • Para facilitar la recuperación de registros específicos de un archivo, debe seleccionarse cuando menos un campo en cada registro como clave de registro. Una clave de registro sirve para identificar que un registro pertenece a una persona o entidad específica, y es única en cada registro. En el registro de nómina que describimos anteriormente, por lo general se elegiría el número de identificación de empleado como clave de registro.
  • 16. Jerarquía de datos • Existen muchas formas de organizar los registros en un archivo. Un tipo común de organización se conoce como archivo secuencial, en el cual los registros se almacenan en orden, con base en el campo que es la clave de registro. En un archivo de nómina, los registros generalmente se colocan en orden, con base en el número de identificación de empleado. El registro del primer empleado en el archivo contiene el número de identificación de empleado más pequeño, y los registros subsiguientes contienen números cada vez mayores.
  • 17. Jerarquía de datos • La mayoría de las empresas utilizan muchos archivos distintos para almacenar datos. Por ejemplo, una compañía podría tener archivos de nómina, de cuentas por cobrar (listas del dinero que deben los clientes), de cuentas por pagar (listas del dinero que se debe a los proveedores), archivos de inventarios (listas de información acerca de los artículos que maneja la empresa) y muchos otros tipos de archivos. A menudo, un grupo de archivos relacionados se almacena en una base de datos. A una colección de programas diseñada para crear y administrar bases de datos se le conoce como sistema de administración de bases de datos (DBMS).
  • 18. Archivos y flujos • C++ considera a cada archivo como una secuencia de bytes (figura 2). Cada archivo termina con un marcador de fin de archivo o con un número de bytes específico que se registra en una estructura de datos administrativa, mantenida por el sistema. Cuando se abre un archivo, se crea un objeto y se asocia un flujo a ese objeto. Vimos que los objetos cin, cout, cerr y clog se crean cuando se incluye <iostream>. Los flujos asociados con estos objetos proporcionan canales de comunicación entre un programa y un archivo o dispositivo específico.
  • 19. Archivos y flujos • Por ejemplo, el objeto cin (objeto flujo de entrada estándar) permite a un programa introducir datos desde el teclado o desde otros dispositivos, el objeto cout (objeto flujo de salida estándar) permite a un programa enviar datos a la pantalla o a otros dispositivos, y los objetos cerr y clog (objetos flujo de error estándar) permiten a un programa enviar mensajes de error a la pantalla o a otros dispositivos.
  • 21. Archivos y flujos • Para llevar a cabo el procesamiento de archivos en C++, se deben incluir los archivos de encabezado <iostream> y <fstream>. El encabezado <fstream> incluye las definiciones para las plantillas de clases de flujos basic_ ifstream ( para las operaciones de entrada con archivos), basic_ofstream ( para las operaciones de salida con archivos) y basic_fstream ( para las operaciones de entrada y salida con archivos). Cada plantilla de clase tiene una especialización de plantilla predefi nida que permite las operaciones de E/S con valores char.
  • 22. Archivos y flujos • Además, la biblioteca <fstream> proporciona alias typedef para estas especializaciones de plantilla. Por ejemplo, la definición typedef istream representa a una especialización de basic_ifstream que permite la entrada de valores char desde un archivo. De manera similar, typedef ofstream representa una especialización de basic_ofstream que permite enviar valores char a archivos. Además, typedf fstream representa una especialización de basic_fstream que permite introducir valores char desde (y enviarlos hacia) archivos.
  • 23. Archivos y flujos • Para abrir los archivos, se crean objetos de estas especializaciones de plantillas de flujo. Estas plantillas se “derivan” de las plantillas de clases basic_istream, basic_ostream y basic_iostream, respectivamente. Por ende, todas las funciones miembro, operadores y manipuladores que pertenecen a estas plantillas también se pueden aplicar a los flujos de archivos. En la figura 3 se sintetizan las relaciones de herencia de las clases de E/S que hemos visto hasta este punto.
  • 25. Creación de un archivo secuencial • C++ no impone una estructura sobre un archivo. Por ende, en un archivo de C++ no existe un concepto tal como el de un “registro”. En consecuencia, el programador debe estructurar los archivos de manera que cumplan con los requerimientos de la aplicación. En el siguiente ejemplo veremos cómo se puede imponer una estructura de registro simple sobre un archivo.
  • 26. Creación de un archivo secuencial • La figura 4 crea un archivo secuencial que podría utilizarse en un archivo de cuentas por cobrar, para ayudar a administrar el dinero que deben los clientes de crédito a una empresa. Para cada cliente, el programa obtiene su número de cuenta, nombre y saldo (es decir, el monto que el cliente debe a la empresa por los bienes y servicios recibidos en el pasado).
  • 27. Creación de un archivo secuencial • Los datos que se obtienen para cada cliente constituyen un registro para ese cliente. El número de cuenta sirve como la clave de registro; es decir, el programa crea y da mantenimiento al archivo en orden por número de cuenta.
  • 28. Creación de un archivo secuencial • Este programa supone que el usuario introduce los registros en orden por número de cuenta. En un sistema de cuentas por cobrar completo, sería conveniente contar con una herramienta para ordenar datos, para que el usuario pueda introducir los registros en cualquier orden; después los registros se ordenarían y escribirían en el archivo
  • 29. Creación de un archivo secuencial
  • 30. Creación de un archivo secuencial • Vamos a examinar este programa. Como se dijo antes, para abrir los archivos se crean objetos ifstream, ofstream o fstream. En la figura 4, el archivo se va a abrir para salida, por lo que se crea un objeto ofstream. Se pasan dos argumentos al constructor del objeto: el nombre de archivo y el modo de apertura de archivo (línea 19).
  • 31. Creación de un archivo secuencial • Para un objeto ofstream, el modo de apertura de archivo puede ser ios::out para enviar datos a un archivo, o ios::app para adjuntar datos al final de un archivo (sin modificar los datos que ya estén en el archivo). Los archivos existentes que se abren con el modo ios::out se truncan: se descartan todos los datos en el archivo. Si el archivo especificado no existe todavía, entonces el objeto ofstream crea el archivo, usando ese nombre de archivo.
  • 32. Creación de un archivo secuencial • En la línea 19 se crea un objeto ofstream llamado archivoClientesSalida, asociado con el archivo clientes.
  • 33. Creación de un archivo secuencial • dat que se abre en modo de salida. Los argumentos "clientes.dat" e ios::out se pasan al constructor de ofstream, el cual abre el archivo (esto establece una “línea de comunicación” con el archivo). De manera predeterminada, los objetos ofstream se abren en modo de salida, por lo que en la línea 19 se podría haber utilizado la instrucción alterna ofstream archivoClientesSalida( "clientes.dat" ); para abrir clientes.dat en modo de salida.
  • 34. Creación de un archivo secuencial
  • 35. Creación de un archivo secuencial • Después de crear un objeto ofstream y tratar de abrirlo, el programa prueba si la operación de apertura tuvo éxito. • La instrucción if en las líneas 22 a 26 utiliza la función miembro operator! sobrecargada de ios para determinar si la operación open tuvo éxito. La condición devuelve un valor true si se establece el bit failbit o el bit badbit para el flujo en la operación open. Ciertos posibles errores son: tratar de abrir un archivo no existente en modo de lectura, tratar de abrir un archivo en modo de lectura o escritura sin permiso, y abrir un archivo en modo de escritura cuando no hay espacio disponible en disco.
  • 36. Creación de un archivo secuencial • Si la condición indica un intento fallido de abrir el archivo, en la línea 24 se imprime el mensaje de error "No se pudo abrir el archivo", y en la línea 25 se invoca a la función exit para terminar el programa. El argumento para exit se devuelve al entorno desde el que se invocó el programa. El argumento 0 indica que el programa terminó en forma normal; cualquier otro valor indica que el programa terminó debido a un error. El entorno de llamada ( probablemente el sistema operativo) utiliza el valor devuelto por exit para responder al error en forma apropiada.
  • 37. Creación de un archivo secuencial • Otra función miembro de operador sobrecargada de ios (operator void*) convierte el f lujo en un apuntador, para que se pueda evaluar como 0 (es decir, el apuntador nulo) o un número distinto de cero (es decir, cualquier otro valor de apuntador). Cuando se usa el valor de un apuntador como una condición, C++ convierte un apuntador nulo en el valor bool false y un apuntador no nulo en el valor bool true. Si se establecieron los bits failbit o badbit (vea el capítulo 15) para el f lujo, se devuelve 0 (false).
  • 38. Creación de un archivo secuencial • La condición en la instrucción while de las líneas 36 a 40 invoca a la función miembro operator void* en cin de manera implícita. La condición permanece como true, siempre y cuando no se haya establecido el bit failbit o el bit badbit para cin. Al introducir el indicador de fi n de archivo se establece el bit failbit para cin. La función operator void * se puede utilizar para probar un objeto de entrada para el fi n de archivo, en vez de llamar a la función miembro eof de manera explícita en el objeto de entrada .
  • 39. Creación de un archivo secuencial • Si en la línea 19 se abrió el archivo con éxito, el programa empieza a procesar los datos. En las líneas 28 y 29 se pide al usuario que introduzca varios campos para cada registro, o el indicador de fi n de archivo cuando esté completa la entrada de datos. En la figura 6 se listan las combinaciones de teclado para introducir el fin de archivo en varios sistemas computacionales.
  • 40. Creación de un archivo secuencial
  • 41. Creación de un archivo secuencial • En la línea 36 se extrae cada conjunto de datos y se determina si se introdujo el fi n de archivo. Al encontrar el fi n de archivo, o cuando se introducen datos incorrectos, operator void * devuelve el apuntador nulo (que se convierte en el valor bool false) y la instrucción while termina. El usuario introduce el fin de archivo para informar al programa que ya no procese más datos. El indicador de fin de archivo se establece cuando el usuario introduce la combinación de teclas de fin de archivo. La instrucción while itera hasta que se establece el indicador de fi n de archivo.
  • 42. Creación de un archivo secuencial • En la línea 38 se escribe un conjunto de datos en el archivo clientes.dat, usando el operador de inserción de flujo << y el objeto archivoClientesSalida asociado con el archivo al principio del programa. Los datos se pueden recuperar mediante un programa diseñado para leer el archivo.
  • 43. Creación de un archivo secuencial • Observe que, debido a que el archivo creado en la figura 4 es simplemente un archivo de texto, puede verse en cualquier editor de texto. Una vez que el usuario introduce el indicador de fin de archivo, main termina. Esto invoca de manera implícita a la función destructor del objeto archivoClientesSalida, que cierra el archivo clientes.dat. También podemos cerrar el objeto ofstream de manera explícita, usando la función miembro close en la instrucción archivoClientesSalida.close();
  • 44. Funciones miembro get y getline • La función miembro get sin argumentos recibe como entrada un carácter del flujo designado (incluyendo caracteres de espacio en blanco y otros caracteres no gráficos, como la secuencia de teclas que representa el fin de archivo) y lo devuelve como el valor de la llamada a la función.
  • 45. Uso de las funciones miembro eof, get y put • La figura 4 demuestra el uso de las funciones miembro eof y get en el f lujo de entrada cin, y la función miembro put en el flujo de salida cout. El programa primero imprime el valor de cin.eof() [es decir, false (0 en la salida)] para mostrar que no ha ocurrido el fi n de archivo en cin. El usuario introduce una línea de texto y oprime Intro seguido del fin de archivo (<Ctrl>-z en sistemas Microsoft Windows, <Ctrl>-d en sistemas UNIX y Macintosh)
  • 46. Uso de las funciones miembro eof, get y put
  • 47. Uso de las funciones miembro eof, get y put
  • 48. Comparación entre cin y cin.get • La figura 5 compara la entrada mediante el uso de la extracción de flujo con cin (que lee caracteres hasta que se encuentra un carácter de espacio en blanco) y la entrada mediante el uso de cin.get. Observe que la llamada a cin.get (línea 24) no especifica un delimitador, por lo que se utiliza el carácter predeterminado 'n'.
  • 49. Comparación entre cin y cin.get • La figura 5 compara la entrada mediante el uso de la extracción de flujo con cin (que lee caracteres hasta que se encuentra un carácter de espacio en blanco) y la entrada mediante el uso de cin.get. Observe que la llamada a cin.get (línea 24) no especifica un delimitador, por lo que se utiliza el carácter predeterminado 'n'.
  • 52. Uso de la función miembro getline • La función miembro getline opera de manera similar a la tercera versión de la función miembro get e inserta un carácter nulo después de la línea en el arreglo de caracteres. La función getline elimina el delimitador del f lujo (es decir, lee el carácter y lo descarta), pero no lo almacena en el arreglo de caracteres. El programa de la fi gura 15.6 demuestra el uso de la función miembro getline para introducir una línea de texto (línea 15).
  • 53. Uso de la función miembro getline
  • 54. Uso de la función miembro getline