Programación Básica| Sesión 18, Manejo de archivo -aplicacion-

Slides:



Advertisements
Presentaciones similares
Manejo de archivos.
Advertisements

FICHEROS.
Programación, Algoritmos y Estructuras de Datos
Archivos Programación.
PROGRAMACION II.  Es un conjunto de datos no necesariamente del mismo tipo, los cuales se podrán manipular o realizar cualquier operación sobre cada.
Archivos.
PROGRAMACION DE ARCHIVOS (MEMORIA SECUNDARIA). Registros y archivos Si bien es cierto que se pueden manejar gran cantidad de datos del mismo y diferente.
Archivos Programación I MC Beatriz Beltrán Martínez.
Visual Basic Prof.: Carol Briones García. Uso de Archivos  Definición  Es un conjunto de información que se almacena en algún medio de escritura que.
Archivos. Introducción Los datos que hemos tratado hasta el momento han residido en la memoria principal. Sin embargo, las grandes cantidades de datos.
Manejo de archivos de texto.  Unidad fundamental de almacenamiento dentro del ámbito de la informática. Alberga un conjunto de datos que es posible leer,
Creación de un Blog… Pues bienvenido al tutorial donde aprenderás como crear un blog en Blogger paso a paso. Te explicaremos cada paso a seguir para la.
Programación II Sesión 3. TABLA DE CONTENIDO  Tipos de Datos en C  Delimitadores  Tipo Char  Tipo Int  Tipo Float  Tipo Double  Constantes  Operadores.
¿Qué es un Diagrama de Flujo? UN DIAGRAMA DE FLUJO, TAMBIÉN LLAMADO FLUJOGRAMA DE PROCESOS O DIAGRAMA DE PROCESOS, REPRESENTA LA SECUENCIA O LOS PASOS.
Flujos de datos Un flujo es un canal por donde fluyen los datos.
Ingreso , proceso y salida de datos
MANEJO DE TEXTO Y OBJETOS AVANZADOS ENCABEZADOS Y PIES DE PÁGINA
Programación en C - manejo de Archivos
Introducción a Base de Datos
Programación en C - manejo de Archivos
Programación Orientada a Eventos
ECLIPSE.
MANEJO DE ARRELOGS EN C Clase 8: Arreglos.
PSEUDOCÓDIGO Prof. Rafael Mourglia.
Usando StreamReader y StreamWriter
Serie: Cómo hacer con EpiInfoTM
UNIVERSIDAD AUTONOMA METROPOLITANA Programación Estructurada
FUNCIONES PREPARATORIAS 1/4
Correo Electrónico *Es un servicio gratuito en el que puedes enviar y recibir mensajes de manera instantánea a través de Internet, incluyendo fotografías.
Tema 6. Conceptos básicos de programación (Clase 2)
Propiedades generales de un campo
Autofiltro en Excel.
MANEJO DE ARCHIVOS DIGITALES
TIPO DE DATOS EN ACCESS 2010 TEXTO, MEMO, NUMERO, FECHA/HORA, MONEDA, AUTONUMERACION, SI/NO, OBJETO OLE, HIPERVINCULO, DATOS ADJUNTADOS, CALCULADO Y ASISTENTES.
Computación 2017 Archivos.
TÓPICOS AVANZADOS DE PROGRAMACIÓN
MANEJO DE VENTANAS El Sistema Operativo Windows basa su interfaz en el uso de ventanas. Es decir, cada aplicación se abre en un recuadro llamado ventana,
Cada maquina tiene un lenguaje ensamblador distinto
Tema 3. Fundamentos para la construcción de código a partir del algoritmo Objetivo: El alumno construirá programas utilizando el lenguaje de programación.
Carpetas y archivos.
LÓGICA DE PROGRAMACIÓN
Unidad 3. Introducción a la programación
Tema: Formato Columnas
Programación Orientada a Objetos
Usando StreamReader y StreamWriter
Usando StreamReader y StreamWriter
Hipervínculos scratch
Estructuras Estructuras En la creación de soluciones para algunos problemas surge la necesidad de agrupar datos de diferente tipo o de manejar datos que.
Excel.
PowerPoint.
Excel.
FLUJOS (Flujos de Bytes-Caracteres)
Una aproximación a Vectores y Matrices
En esta presentación aprenderemos lo siguiente:
Archivos en Java Prof. Ana Isabel Méndez Principios de Informática.
Introducción al Visual Basic  Un programa en sentido informático está constituido en un sentido general por variables que contienen los datos con los.
¿Para qué se utiliza el PSEINT?
CURSO PROGRAMACIÓN BÁSICA SEMANA 3 ¿Qué es un programa?
LISTAS PERSONALIZADAS
Procesamiento de señales Introducción a Matlab 2014
LISTAS PERSONALIZADAS
Empecemos por el principio
MATRICES. ¿QUÉ ES UNA MATRIZ? Una matriz es un espacio bidimensional que se genera en la memoria del computador. Las matrices deben tener un nombre que.
Archivos binarios en C++
EXAMEN RECUPERATORIOP2
UNIVERSIDAD JUÁREZ AUTÓNOMA DE TABASCO Nombres: Isaac Sánchez García Teofilo Martinez Garcia Ricardo Del Carmen Paz López Vanesa Anahí Pérez Lizárraga.
Entrada y Salida en Prolog. Javier Alvarado Camas.
Access Este programa permite manipular datos en forma de tablas, realizar cálculos complejos con fórmulas y funciones, incluso dibujar distintos tipos.
Profesor del curso: UNIVERSIDAD NACIONAL DEL CENTRO DEL PERU 2019-I Facultad de Ingeniería de Sistemas 1.
Transcripción de la presentación:

Programación Básica| Sesión 18, Manejo de archivo -aplicacion- Luis Infante

INTRODUCCION En sesiones anteriores se introdujo el manejo de archivos usando la clase fstream de C++ y la estructura FILE de C, en esta sesión se reforzara lo aprendido mediante ejemplos, ademas de introducir nuevos conceptos

Escribir y leer Archivos numericos Los archivos se manejan como una cadena, cada dato guardado es un eslabon de esta cadena (Fig. 1) , estos eslabones tienen un elemento que los separa uno de otros, en el siguiente ejemplo se guardan 10 números reales, se utiliza el objeto fstream y se abre el archivo como ios::out (escritura desde el inicio) 1 Modo escritura 3 Fig.1 No olvidar cerrar

Escribir y leer Archivos numericos Si abrimos el archivo creado en bloc de notas se podría ver de esta forma ¿Podremos a partir de este archivo recuperar los datos? Nota : El archivo es generado y guardado en la carpeta del proyecto de la aplicación, a menos que se especifique otra ruta, si se corre desde el archivo ejecutable (aplicacion_nombre.exe) el archivo se genera en la carpeta donde este este

Escribir y leer Archivos numericos El modo ios::out ,genera un archivo de texto, pero como no se escribió ningún separador entre los valores para un objeto fstream será difícil leerlo, por eso es común agregar un separador, en el caso de valores numéricos un espacio bastara El espacio Nota: los modos ios::xxx son enumeraciones, no solo existen ios::in y ios::out, estan también el modo ios::app que abre el archivo para escritura desde el final, el ios::binary y el ios::ate

Escribir y leer Archivos numericos Al agregar el espacio se hace que el puntero de lectura pueda moverse entre los eslabones de la cadena de datos, colocándose justo donde comienza cada eslabón. cursor espacio dato1 dato2 dato3 dato4 Situándose al principio cursor dato1 dato2 dato3 dato4 Moviéndose al siguiente dato

Escribir y leer Archivos numericos Espacios y saltos de línea pueden bastar para escribir y leer archivos correctamente pero también los espacios y saltos de línea son útiles para darle formato al archivo, leer resulta sencillo ya que es casi igual a escribir, para leer debe utilizarse el enumerador ios::in Modo Lectura

Escribir y leer Archivos con texto Lectura y escritura de Cadenas de texto Si se manejan cadenas de texto el procedimiento es casi igual, pero las cadenas de texto tienen que ser sin espacios ESCRIBIR LEER

Escribir y leer Archivos con texto Los espacios causan que el cursor se mueve a la cadena después del espacio creyendo que es otro eslabon como se ve en la figura de abajo Cadena con espacio uno dos cinco tres cuatro ESCRIBIR uno dos cinco tres cuatro Nada mas se escribe hasta el tres

Escribir y leer Archivos con texto Los espacios causan que el cursor se mueve a la cadena después del espacio creyendo que es otro eslabón como se ve en la figura de abajo Cadena con espacio ESCRIBIR uno dos cinco tres cuatro uno dos cinco tres cuatro

Escribir y leer Archivos con texto Esto resultaría en una lectura errónea, ya que el cursor de lectura no llega hasta el final del archivo Imprimiendo en pantalla 1 2 3 1 uno dos cinco tres cuatro

Escribir y leer Archivos con texto Para escribir texto o números y texto en un mismo archivo no basta entonces utilizar espacios o salto de linea, un separador adicional es necesario, es practica común utilizar la coma como un separador mas fuerte (aunque es posible usar otros), la lectura debe entonces reconocer a la coma como un separador cursor uno dos cinco tres cuatro ESCRIBIR Coma(,)

Escribir y leer Archivos con texto Para escribir texto separado por comas en un archivo no resulta muy complicado La coma Pero para leer texto separado por comas no es posible utilizar el operador sobrecargado >> de lectura, se necesita la función getline(…)

Escribir y leer Archivos con texto Lectura y escritura de Cadenas de texto con espacio la función getline(…) La función getline es una función de entrada de datos, utilizada para leer líneas de texto, aunque estas incluyan espacios Funciones de entrada y salida ya sea de terminal o de archivo, requieren conocer que “objeto” les esta suministrando los datos o hacia que objeto están mandando estos datos, funciones como printf o scanf saben que se están tratando con el objeto consola pero getline puede utilizarse con objetos tipo archivo y la consola

Escribir y leer Archivos con texto El objeto del que se va leer (objeto-lectura) es el primer parámetro de getline(…), el segundo es cadena de texto donde se colocara lo leído (string-destino), un tercer parámetro “opcional” indica con que símbolo separador detenerse la lectura(carácter- separador) en caso de no existir se lee la línea completa que venga del objeto-lectura getline(objeto-lectura ,string-destino, carácter-separador) getline(objeto-lectura ,string-destino) //Línea completa

Escribir y leer Archivos con texto Para leer el archivo con espacios vacios y separado por comas del ejemplo anterior, podemos usar entonces getline(…) El tercer parámetro indicara que símbolo se usa como separador El primer parámetro es de donde se lee, en este caso de un archivo variable donde se guardaran los elementos del archivo Nota : No olvidar cerrar - archivo.close() -

Escribir y leer Archivos con texto Si se imprime en pantalla la lectura de el archivo con getline(…) se puede entonces leer el archivo integro

Leyendo una tabla en un archivo El archivo se llama subservicios.txt En el siguiente ejemplo leeremos una tabla que esta dentro de un archivo, los elementos de la tabla pueden ser tanto números como cadenas de texto con o sin espacio, se debe leer el archivo y mostrarlo en la pantalla

Leyendo una tabla en un archivo El archivo contiene una tabla, cada columna separada con una coma , cada renglón por un salto de línea renglon columna separador

Leyendo una tabla en un archivo El código para la lectura podría ser Imprimiendo en pantalla lo que se va leyendo Imprimiendo salto de línea por renglón leido

Leyendo una tabla en un archivo En el código anterior, se utiliza un objeto llamado sline del tipo stringstream para guardar la línea leida del archivo y guardada en objeto llamado line, getline(…) es usado nuevamente para leer cada línea y descomponerla en campos, cada campo esta encerrado entre comas, necesita un objeto tipo dispositivo (podemos pensar en una maquina), el objeto line es insuficiente para funcionar con getline, por ser una simple cadena de caracteres, pero sline si funciona como dispositivo de entrada separador (,) Guarda en: getline(…) Guarda en: line (string) Guarda en: getline(…) Lee de: Lee de: Archivo s[] (array de string) sline (stringstream)

Leyendo una tabla en un archivo Impresión en pantalla Impresión con formato Nota: Todos los campos son string Lectura de línea vacía

Leyendo una tabla en un archivo La impresión se hizo correctamente, pero la ultima línea del archivo esta vacia pero existe como tal, puede eliminarse manualmente , pero también puede omitirse , puede haber varias formas para hacer esto, si se espera por ejemplo una línea se espera que contenga “algo” Si la longitud de la nueva línea es cero o menor de lo esperado, puede no realizarse su lectura

Leyendo una tabla en un archivo Impresión “corregida“ de tabla

Creando una tabla en un archivo Otra forma de leer de un archivo que contenga una tabla es utilizando fgets(…), el uso de fgets(…) evitaría la creación de un objeto del tipo stringstream e incluso de la separación por comas Pero se requeriría usar la estructura FILE de manejo de archivos para C y sus funciones fopen_s(…) y fclose(…) El archivo puede contener campos sin ninguna separación entre ellos

Creando una tabla en un archivo El código para leer el archivo podría ser el siguiente Estructura FILE (manejo de archivos C) fopen_s(…) abierto para lectura Usando fgets(…) 1er parámetro: cadena de texto destino 2do parámetro:tamaño cadena 3er estructura de archivo

Creando una tabla en un archivo El resultado seria el siguiente, una observación interesante es que el código leyó los saltos de línea como caracteres y en la impresión volvieron a ser saltos de linea

Creando una tabla en un archivo Otra observación interesante es que la lectura funciona moviendo el cursor de lectura dentro del archivo Inicio 1111101---------------blusa--100.00 Moviendose entre campos 2+5+20+10 2 2+5 2+5+20 1111101---------------blusa--100.00/n 2+5+2

Leyendo una tabla en un archivo Con lo anterior ya podemos saber como se lee una tabla que este dentro de un archivo y que este separada por comas, pero como se podría generar una tabla como esta, la tabla del archivo es una tabla con texto formateado, esto es que las columnas tienen un ancho preestablecida, también existe una cantidad de columnas fija

Creando una tabla en un archivo Crearemos una tabla simple en un archivo, sin ocuparnos por el momento del formato, agregaremos tres renglones a la tabla Tabla ejemplo para guardar Separador entre campos Salto de línea entre renglones

Creando una tabla en un archivo El resultado del código anterior seria: El resultado no es del todo incorrecto, pero la cuarta columna no se ve correctamente, necesita establecerse el ancho de este campo como fijo, pero es mejor establecer los anchos de cada columna

Creando una tabla en un archivo Corregir la impresión, puede ser hecho de varias formas, aquí se muestra una de ellas Podemos agregar un arreglo con los anchos de las columnas int w[5]{1,4,2,20,8} Podemos hacer uso de la función sprintf_s(…), esta función proviene de C puro, esta función nos permite guardar en una cadena de texto, un texto formateado, en este caso el formato consistirá en que todos los campos tengan el mismo tamaño, la función necesita un primer parámetro que es la cadena de texto donde se guardara el texto formateado, un segundo parametro que indique el tamaño de la cadena, un tercer parámetro que es la cadena de texto original sprintf( destino , tamaño, origen ) //las cadenas son del tipo char cadena[] o char *cadena Cada texto formateado se guardan en un objeto string y se recortan con substring al tamaño deseado y desde el punto que nose necesario

Creando una tabla en un archivo El uso de sprintf_s(…) hace que todos los campos tengan el mismo tamaño, insertando espacios en la posición izquierda de la cadena original, el campo mas largo que es de 20 caracteres no requiere ningún recorte, pero el resto si string inicial _ _ _ _ _ _ _ _ _ _ _ _ b l u s a substr(…) _ _ _ _ _ _ _ _ _ _ _ _ b l u s a string final 20-w[j] string inicial _ _ _ _ _ _ _ _ _ _ _ _ _ 1 1 1 1 w[j] 1 1 1 1 substr(…) string final

Creando una tabla en un archivo Anchos de campos Formateando campos Recortando campos

Modificando un archivo La lectura es el proceso mas difícil en cuanto al manejo de archivos Imaginemos que necesitamos modificar algún campo de una tabla, el situado en “x” renglón, necesitamos el llamado cursor, que puede ser tanto de escritura como de lectura Renglón a modificar Numero 2 Campo a modificar Num. de renglón

Modificando un archivo Como primer paso necesitamos abrir el archivo tanto en modo lectura como en modo escritura, el operador “|” actua como un “or” Se necesita también tener la posición del cursor para eso se usa la función tellg(), que obtiene la posición del cursor de lectura Necesitamos establecer el momento en que se alcanzo el segundo renglón, necesitamos entonces tener un arreglo (s) para los campos donde el primero sabemos que es el numero de renglón

Modificando un archivo Y en el momento en que estamos en el renglón a modificar debemos establer el cursor de escritura y hacer inserciones desde esa posición, insertamos valores nuevos en los campos donde sea necesario, donde no cambien debemos conservar los mismos que se tenían Conservando la coma conservando valor de campo Modificando campo

Modificando un archivo El código completo seria: (establecer posición de cursor ) (varias líneas de código compactadas) (posición de cursor en nueva linea)

Modificando un archivo El archivo modificado queda :

Ficheros binarios Normalmente hemos creado y utilizado archivos que se pueden leer en una aplicación tipo bloc de notas, los conocemos como archivos de texto, pero C/C++ no solo pueden generar archivos de este tipo, también pueden generar archivos binarios, se pueden abrir archivos en un objeto del tipo fstream con el modo ios::binary Los archivos binarios parecen archivos de texto, pueden verse parcialmente en un bloc de notas sin embargo, hay algunas diferencias y también aplicaciones que pueden tener uno y otro modo

Ficheros binarios Código para generar un archivo binario: abrir archivo para escritura en modo binario Resultado en bloc de notas Resultado en Wordpad En bloc de notas no se ve el salto de línea en wordpad si

Ficheros binarios Un archivo binario no solo escribe caracteres simples en un archivo, también agrega caracteres que un bloc de notas no es capaz de leer y es capaz de guardar información mejor que un archivo de texto, puede guardar mejor un numero real que un archivo de texto simple En el código a la izquierda se escribe y lee un valor real en los dos modos (texto y binario)

Ficheros binarios El resultado del código muestra la diferencia entre guardar valores numéricos en un archivo binario, es evidente la superioridad del modo binario Sin embargo el modo binario exige que lo que se vaya a guardar se traduzca al modo “binario” , que es básicamente hacer que el valor ocupe todo el espacio de memoria que necesita para no perder precisión, esto hace que los archivo pueden quedar en este caso de diferente tamaño (archivo txt quedo en 6 bytes el binario en 8 bytes)

Ficheros binarios El modo binario puede resultar en archivos ilegibles para el bloc de notas Y también para el bloc de notas

Ficheros binarios Crear archivos binarios puede también facilitar la extracción de datos, pero obliga a conocer el origen y tamaño de los datos en memoria que queremos guardar en archivo, si tenemos dos números float y una cadena de caracteres de tamaño 20 hay que extraerlos en el orden en que se introdujeron, respetando los tamaños, si estos forman una tabla seria mas útil saber cuantos campos por línea, no siendo necesario introducir un salto de linea Sin embargo hay que considerar que requerirá mas código, o cambiar el código que se tenga para hacer escrituras “binarias”

Programación Fin de la sesión