OBJETIVOS. Explicar el manejo de archivos de texto. Explicar el manejo de archivos binarios. Desarrollar programas que usen archivos.



Documentos relacionados
FILE *nombre_puntero_fichero; fopen(char_nombre_archivo,char_modo_apertura ); MODOS DE APERTURA. Abre un archivo de texto para lectura.

Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero.

7. Manejo de Archivos en C.

Ejercicio 1 (2 puntos. Tiempo: 25 minutos)

Examen escrito de Programación 1

Paso de Borland Turbo C (bajo DOS) a Anjuta (Linux) 1.

Preliminares. Tipos de variables y Expresiones

Examen Principios de Programación Febrero 2012

1. Cuestiones. Ejercicios resueltos de C. Diego Rodríguez-Losada 1. //a) #include <stdio.h> main( ) { int x = 0, y = 0; //b) #include <stdio.

Vectores y matrices. Fundamentos de Programación Fundamentos de Programación I

Contenidos. Archivos en C++ Archivos en C++ Introducción

Prof. Dr. Paul Bustamante

Laboratorio 7 Motor de búsqueda web basado en el TAD Árbol Binario de Búsqueda GUIÓN DEL LABORATORIO

Programación. Ejercicios Tema 4 Estructuras de Control Repetitivas

QUÉ ES HOMEBASE? Encontrar Libros

Operación de Microsoft Word

MANUAL DE AYUDA MÓDULOS 2011 MACOS

Y por último, si se desea que despliegue un mensaje de confirmar al pagar, cada vez que se presione el botón Aceptar cuando se quiera pagar.

ARCHIVOS. 1. Introducción. 2. Definición de archivo. 3. Archivos de acceso secuencial. 4. Gestión de un archivo secuencial de estructuras

Modulo 1 El lenguaje Java

Problemas de Redes de Computadores. Conjunto de problemas 1

CIERRE DE PERÍODOS DE LIQUIDACIÓN

SISTEMA DE APARTADO DE SALAS PARA EVENTOS

Se guardan en archivos con extencion c y los cabezales con extension h

Informática I. While & do While

TEMA 5. CONTROL DE FLUJO DEL PROGRAMA. Sentencia Instrucción Expresión Operadores + Operandos Sintaxis: Sentencia ;

Introducción a la programación orientada a objetos

GVisualPDA Módulo de Almacén

Aprendiendo a programar Microcontroladores PIC en Lenguaje C con CCS

TEMA 8: ESTRUCTURAS DE DATOS COMPLEJAS 1 VECTORES ESTÁTICOS 2 2 CADENAS O VECTORES DE CARACTERES 6 3 PASO DE CADENAS Y ARRAYS A FUNCIONES 8

3.1. Guardar un libro de trabajo

Adaptación al NPGC. Introducción. NPGC.doc. Qué cambios hay en el NPGC? Telf.: Fax.:

Para crear formularios se utiliza la barra de herramientas Formulario, que se activa a través del comando Ver barra de herramientas.

5.4. Manual de usuario

Sistema electrónico de presentación del informe conforme al artículo 15 del Convenio

Práctica 2: Simón dice

Programa Presupuestos de Sevillana de Informática.

15 CORREO WEB CORREO WEB

PROGRAMA DE GESTIÓN DE USUARIOS, PROYECTOS Y SOLICITUDES DEL SERVICIO GENERAL DE APOYO A LA INVESTIGACIÓN SAI

A continuación se describen cuáles son los elementos principales de las tablas, cómo crear una y cómo modificarla.

Nota: El botón agregar al carrito no aparece en caso que el producto no se encuentre disponible temporalmente en el inventario.

Hoja de problemas Estructuras de Control

Que es Velneo vdataclient V7?

Prof. Dr. Paul Bustamante

Carrito de Compras. Esta opción dentro de Jazz la podremos utilizar como cualquier otro carrito de compras de una página de Internet.

Manual de uso de la Consola de Administración para usuarios Administradores.

SMS Gestión. manual de uso

PRACTICA 6. VECTORES Y MATRICES.

FACULTAD DE INGENIERÍA, U.B.A. Seminario de Sistemas Embebidos TRABAJO PRÁCTICO 0

Tema: Arreglos de Objetos en C++.

FUNDAMENTOS DE INFORMÁTICA 1º Ingeniería Industrial

SIIGO Pyme. Elaboración Documentos Ventas de Inventarios. Cartilla I

Cómo ingresar a la Sucursal Electrónica?

Introducción al tipo de dato ARRAY

Access Control. Manual de Usuario

EJERCICIOS DE PROGRAMACIÓN RELACIÓN VII (EJERCICIOS DE REPASO)

SIIGO Pyme. Elaboración Factura de Venta de Productos y Servicios. Cartilla I

Guía Práctica para el Uso del Servicio de Software Zoho CRM

Guía de usuario. Docentes. Autoservicio de PowerCAMPUS

Proceso de Compra de Avisos Clasificados desde Internet

SIIGO Pyme. Elaboración Recibos de Caja. Cartilla I

TPV Táctil. Configuración y Uso. Rev /01/09

Árboles AVL. Laboratorio de Programación II

GESTINLIB GESTIÓN PARA LIBRERÍAS, PAPELERÍAS Y KIOSCOS DESCRIPCIÓN DEL MÓDULO DE KIOSCOS

CONFIDENCIAL. Sistema (software) de Gestión de Compras, Ventas, Inventario y producción.

2. Doctores 2.1. Dar de alta un doctor 2.2. Buscar un doctor 2.3. Editar un doctor 2.4. Borrar un doctor

Las propiedades de la clase en java es el equivalente a las variables globales en lenguajes estructurados como el C.

Guía Indico del Usuario Administrador CERN

Mi primer proyecto en Dev-C++

PS.Vending Almacén Pocket PC

Estimado usuario. Tabla de Contenidos

Tema 7 Vectores y cadenas de caracteres. Fundamentos de Informática

TABLA DE DECISION. Consideremos la siguiente tabla, expresada en forma genérica, como ejemplo y establezcamos la manera en que debe leerse.

TeleMenú. TeleMenú. Gestión de restaurantes, bares y pizzerías vía radio

Una vez que tengamos el padrón de un determinado tributo con todos sus datos actualizados, podemos generar los recibos de ese padrón.

SIIGO Pyme. Elaboración Documentos Compras de Inventarios y Activos Fijos. Cartilla I

INFORMÁTICA. Práctica 5. Programación en C. Grado en Ingeniería en Electrónica y Automática Industrial. Curso v1.0 (05.03.

Árboles. Cursos Propedéuticos Dr. René Cumplido M. en C. Luis Rodríguez Flores

SIIGO WINDOWS. Parámetros Modulo de Seriales. Cartilla

FAQ'S. Generales. Gestión Contable. Gestión Comercial. Actualizado el 19/05/2004. Inicio

Sesión No. 4. Contextualización INFORMÁTICA 1. Nombre: Procesador de Texto

Operación de Microsoft Excel. Guía del Usuario Página 79. Centro de Capacitación en Informática

Inventario Físico Capítulo 1 INVENTARIO DacEasy Contabilidad Versión 11

Manual de usuario. Modulo De Ventas V.1.0.1

Introducción a la Programación en MATLAB

Manual de Procedimientos Punto de Venta -SmartBIT POS-

INTRODUCCIÓN AL TIPO COMPUESTO CADENA CONTENIDOS

Cuadernillo de Autoaprendizaje Correo Electrónico Microsoft Outlook Express

Presione esté botón. De click aquí para consultar sus solicitudes. De click aquí para generar una solicitud. De click aquí para cerrar la sesión

ISTP CIDET COMPUTACION E INFORMATICA ARREGLOS EN JAVA

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

Programación: QBASIC

Tema 2: La clase string

Guía para la Creación y Uso del Correo Electrónico en EducarChile

ARREGLOS DEFINICION GENERAL DE ARREGLO

PROCEDIMIENTO PARA INGRESAR AL CORREO DE REDP POR MEDIO DEL OWA (OUTLOOK WEB ACCESS) El procedimiento ingresar al correo de RedP es el siguiente:

Tema 5 Sentencias de control de flujo. Fundamentos de Informática

Contabilidad. 1. Precondiciones. 2. Proceso Estándar. Tener la estructura contable. Estructura de la Cuenta Contable

Cierre y Apertura de ejercicio. Gestión - Contabilidad

Transcripción:

/ OBJETIVOS Explicar el manejo de archivos de texto. Explicar el manejo de archivos binarios. Desarrollar programas que usen archivos. LABORATORIO 6 MANEJO DE ARCHIVOS DE TEXTO Y BINARIOS Msc. Walter Fernandez Toglio. 1

/ TEMAS Archivos de texto. Archivos binarios. SOFTWARE NECESARIO Dev-C++ 4.9.9.2 http://sourceforge.net/projects/dev-cpp/files/binaries/ NetBeans IDE C/C++ http://netbeans.org/features/cpp/ Code::Blocks http://www.codeblocks.org/downloads/26 Eclipse C++ http://www.eclipse.org/downloads/packages/eclipse-ide-ccdevelopers-includes-incubating-components/indigosr1 Visual C++ http://www.microsoft.com/visualstudio/eng/products/visual-studioexpress-products Borland C++ http://edn.embarcadero.com/article/20633 Msc. Walter Fernandez Toglio. 2

/ MARCO TEÓRICO Documentación y ejercicios del documento de teoría. Msc. Walter Fernandez Toglio. 3

/ ACTIVIDADES Analizar y explicar el funcionamiento de.cada uno de los ejemplos. EJEMPLO 1 Implementar programa que permita leer y buscar en un archivo de texto SOLUCIÓN /* lee y busca */ #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct char nombre[50]; float precio; TDAT; int Buscar(char nom[], TDAT *pplato); int main(void) char nom[50]; TDAT pl_bus; int enc; printf("plato a buscar: "); scanf(" %[^\n]",nom); enc =0; enc = Buscar(nom, &pl_bus); if (enc==1) printf("\n%s",pl_bus.nombre); printf("\n%f",pl_bus.precio); else printf("\nplato no encontrado"); int Buscar(char nom[], TDAT *pplato) FILE *pf; int encontrado; int n; int lg; char *r; pf = fopen("datos.txt", "r"); if (pf==null) Msc. Walter Fernandez Toglio. 4

/ printf("\nerror en la apertura"); encontrado = 0; r = fgets(pplato->nombre,50,pf); while(r!=null && encontrado==0) lg = strlen(pplato->nombre); pplato->nombre[lg-1]= '\0'; n = fscanf(pf,"%f\n", &pplato->precio); if (strcmp(pplato->nombre,nom)==0) encontrado = 1; else r = fgets(pplato->nombre,50,pf); if(fclose(pf)!=0) printf("\nerror en el cierre"); return encontrado; Msc. Walter Fernandez Toglio. 5

/ EJEMPLO 2 Lectura de estructuras en archivos de binarios SOLUCIÓN #include <stdio.h> #include <stdlib.h> #include <string.h> typedef char T_Cadena30[30]; typedef struct char nombre[30]; int edad; T_Ficha; typedef T_Ficha T_Lista[10]; void introducir_datos(t_lista lista); void pinta_datos(t_lista lista); void guardar_fichero(t_lista lista); void cargar_fichero(t_lista lista); void modificar(void); int main(void) T_Lista lista,lista2; introducir_datos(lista); guardar_fichero(lista); modificar(); cargar_fichero(lista2); pinta_datos(lista2); system("pause"); return 0; void introducir_datos(t_lista lista) int cont; printf("introduzca los nombres y edades de 5 personas: \n"); for (cont=0;cont<5;cont++) fflush(stdin); printf("introduzca el nombre de la persona:\n"); gets(lista[cont].nombre); printf("introduzca la edad de la persona:\n"); scanf("%d",&lista[cont].edad); void pinta_datos(t_lista lista) int cont; printf("\n:::::los datos del fichero leido son:\n"); for (cont=0;cont<5;cont++) printf("nombre: "); puts(lista[cont].nombre); printf("edad: "); Msc. Walter Fernandez Toglio. 6

/ printf("%d\n",lista[cont].edad); void guardar_fichero(t_lista lista) FILE *punt; int cont; printf("\nguardando FICHERO...\n"); punt=fopen("c:\\tmp\\datos.dat","wb"); if (punt==null) printf("\nerror"); for(cont=0;cont<5;cont++) fwrite(&lista[cont],sizeof(t_ficha),1,punt); /* Otra opción en vez del bucle anterior fwrite(lista,sizeof(t_ficha),5,punt); */ if (fclose(punt)!= 0) printf("error al cerrar el archivo"); printf("\n:::::fichero GUARDADO:::::\n"); void cargar_fichero(t_lista lista) FILE *punt; int cont=0; printf("\nleyendo FICHERO...\n"); punt=fopen("c:\\tmp\\datos.dat","rb"); if (punt==null) printf("\n Error al abrir el fichero"); while ( fread(&lista[cont],sizeof(t_ficha),1,punt) == 1) cont++; if (fclose(punt)!= 0) printf("error cerrando el fichero "); printf("\n:::::fichero LEIDO:::::\n"); void modificar(void) FILE *punt; T_Ficha registro; int cont=0; T_Cadena30 cadena; fflush(stdin); printf("\nintroduzca nombre a buscar:\n"); Msc. Walter Fernandez Toglio. 7

/ gets(cadena); printf("\nleyendo FICHERO Y BUSCANDO NOMBRE SOLICITADO...\n"); punt=fopen("c:\\tmp\\datos.dat","rb+"); if (punt==null) printf("\nerror"); do fread(&registro,sizeof(t_ficha),1,punt); cont++; while ((strcmp(registro.nombre,cadena)!=0)&&(cont<5)); if (strcmp(registro.nombre,cadena)==0) printf("\n...individuo ENCONTRADO...\n"); printf("\n...datos ACTUALES:\n"); printf("nombre: %s\n",registro.nombre); printf("edad: %d\n",registro.edad); printf("\n:::::introduzca NUEVOS DATOS:::::::::\n"); fflush(stdin); printf("introduzca el nombre de la persona:\n"); gets(registro.nombre); printf("introduzca la edad de la persona:\n"); scanf("%d",&registro.edad); printf("\n...modificando LOS DATOS EN EL FICHERO...\n"); fseek(punt,(cont-1)*sizeof(t_ficha),seek_set); fwrite(&registro,sizeof(t_ficha),1,punt); printf("\n...datos MODIFICADOS EN EL FICHERO...\n"); else printf("\n::::el NOMBRE SOLICITADO NO SE ENCUENTRA EN EL FICHERO::::\n"); if (fclose(punt)!= 0) printf("\n:::::fichero GUARDADO:::::\n"); Msc. Walter Fernandez Toglio. 8

/ Msc. Walter Fernandez Toglio. 9

/ EJERCICIOS 1 Escribir un programa que cree un archivo BINARIO que contenga los siguientes datos: Nombre. Dirección. Número de telefono. Edad. El programa debe permitir: Leer registros. Escribir registros. Buscar registros. 2 Almacenar el alfabeto en un archivo BINARIO, a continucación leer dos letras(por ejemplo las posiciones 9 y 17) de ese archivo y cambiar esas letras por una z 3 En un instituto de investigación se ha realizado el registro de los datos relacionados con una gran cantidad de experimentos para determinar los efectos de una droga. Estos datos se han almacenado en un único archivo BINARIO con el siguiente formato: A. Una cabecera con los datos básicos del voluntario: Número de historia clínica: entero de 32 bits sin signo Nombre: cadena de 50 caracteres Apellido: cadena de 50 caracteres Edad: entero de 8 bits Sexo: caracter (M o F) Fecha de ingreso: cadena de 8 caracteres (aaaammdd) B. Temperaturas en cada día del tratamiento: Cantidad de mediciones: entero de 32 bits sin signo Mediciones: flotantes de 32 bits C. Presión arterial máxima en cada día del tratamiento: Cantidad de mediciones: entero de 32 bits sin signo Mediciones: flotantes de 32 bits. Se requiere la implementación de métodos independientes para: a) Listar los apellidos de todos los voluntarios b) Calcular la edad promedio de los voluntarios c) Listar las temperaturas o presiones de un voluntario a solicitud del investigador d) Encontrar al voluntario que tuvo la presión más alta. Msc. Walter Fernandez Toglio. 10

/ 4 En el procesamiento de datos comerciales es común tener varios archivos en cada sistema de aplicación. Por ejemplo, en un sistema de cuentas por cobrar hay generalmente un sistema de archivo maestro que contiene información detallada acerca de cada cliente, tal como el nombre, dirección, número telefónico, saldo pendiente, límite de crédito, condiciones de descuento, acuerdos contractuales y, posiblemente, una historia condensada de las compras recientes y sus pagos realizados. Conforme suceden transacciones (es decir, se hacen ventas y llegan por correo los pagos en efectivo), éstas se introducen en un archivo. Al final de cada periodo de negocios se aplica el archivo de transacciones (llamado trans.dat) al archivo maestro (llamado oldmast.dat) y, por lo tanto, se actualiza el registro de compras y pagos de cada cuenta. Durante una ejecución de actualización se vuelve a escribir el archivo maestro como un nuevo archivo (newmast.dat), el cual luego se utiliza al final del siguiente periodo de negocios para iniciar nuevamente el proceso de actualización. Los programas de concordancia de archivo deben manejar determinados problemas que no existen en los programas de un solo archivo. Por ejemplo, no siempre sucede una concordancia. Puede ser que un cliente que esté en el archivo maestro no haya hecho ninguna compra o pago en efectivo en el periodo actual del negocio y, por lo tanto, no aparecerá ningún registro para este cliente en un archivo de transacciones. En forma similar, un cliente que hizo alguna compra o pago en efectivo puede haberse cambiado a esta comunidad, y puede ser que la compañía todavía no haya tenido oportunidad de crear un registro maestro para este cliente. Escriba un programa completo de concordancia de archivo de cuentas por cobrar. Utilice el número de cuenta de cada archivo como clave de registro para efectos de concordancia. Suponga que cada archivo es un archivo secuencial con los registros almacenados en orden ascendente por número de cuenta. Cuando suceda una concordancia (es decir, cuando aparezcan registros con el mismo número de cuenta en el archivo maestro y en el archivo de transacciones) súmele el importe en pesos que está en el archivo de transacciones al saldo actual, que está en el archivo maestro, y escriba el registro del newmast.dat. (Suponga que las compras están indicadas por cantidades positivas en el archivo de transacciones y que los pagos están indicados por cantidades negativas). Cuando hay un registro maestro para una cuenta particular, pero no hay registro de transacciones correspondiente, escriba simplemente el registro maestro a newmast.dat. Cuando haya un registro de transacción, pero no hay registro maestro correspondiente, imprima el mensaje registro de transacción no concuerda con uno maestro (llene el número de cuenta a partir del registro de transacciones) Msc. Walter Fernandez Toglio. 11

/ 5 Después de escribir el programa del problema anterior escriba un programa simple para crear algunos datos de prueba para la revisión del programa. Utilice los siguientes datos de cuentas como ejemplo: EN ARCHIVO MAESTRO NÚMERO DE CUENTA NOMBRE SALDO 100 Juan Pérez 348.17 300 María Candelaria 27.19 500 Samuel Hernández 0.00 700 Susana Dosamantes -14.22 EN ARCHIVO DE TRANSACCIONES NÚMERO DE CUENTA CANTIDAD DE LA TRANSACCIÓN 100 27.14 300 62.11 400 100.56 900 82.17 Ejecute el programa del problema utilizando estos archivos de datos de prueba y muestre el nuevo archivo maestro. Revise que las cuentas se hayan actualizado correctamente. 6 Es posible (y de hecho es común) tener varios registros de transacciones que tengan la misma clave de registro. Esto sucede debido a que un cliente particular puede hacer varias compras y pagos en efectivo durante un periodo del negocio. Vuelva a escribir el programa de concordancia de archivos de cuentas por cobrar para tomar en cuenta la posibilidad de manejar varios registros de transacciones que tengan la misma clave de registro. Modifique los datos de prueba para incluir los registros de transacciones adicionales siguientes: EN ARCHIVO DE TRANSACCIONES NÚMERO DE CUENTA CANTIDAD DE LA TRANSACCIÓN 300 83.79 700 80.78 700 1.53 Msc. Walter Fernandez Toglio. 12

/ 7 Suponga que se ha definido la estructura: struct persona char apellido[15]; char nombre[15]; char edad[2]; ; Escriba un programa para: A. Inicializar archivo nombreedad.dat con 100 registros que contengan apellido = no asignado, nombre = y edad = 0. B. Agregar 10 apellidos, nombres y edades. C. Actualizar un registro a pedido del usuario y si el registro está vacío muestre un mensaje Registro sin información!. D. Borrar la información de un registro volviendo a inicializar sus campos. 8 Usted ha sido empleado en un hospital y necesita llevar un inventario que pueda decirle qué materiales descartables se pueden tener disponibles, cuandos hay en existencia y el costo de cada uno. Escriba un programa que: E. Inicialice el archivo de acceso aleatorio descartables.dat con 100 registros vacíos F. Permita que se introduzcan los datos relacionados con cada material G. Liste todos los materiales H. Se borre un registro para un material que ya no se utilice I. Actualice cualquier información que haya en el archivo. El número de identificación de cada material descartable deberá ser el número de registro. Msc. Walter Fernandez Toglio. 13