La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Asignatura: Lenguaje de Programación de Sistemas PPT No.05 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya.

Presentaciones similares


Presentación del tema: "Asignatura: Lenguaje de Programación de Sistemas PPT No.05 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya."— Transcripción de la presentación:

1 Asignatura: Lenguaje de Programación de Sistemas PPT No.05 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya Sitio de la asignatura: http://www.jiiea.com/SyPrgLan/ User: sist2014 psw: sist#C10

2 Administración de archivos: FAT NTFS C++ provee de las funciones necesarias para escribir y leer archivos

3 Dispositivos de almacenamiento de datos, en memoria secundaria(discos magnéticos, memorias flash) La administración de archivos se maneja bajo modalidad FAT o NTFS C provee las funciones necesarias para escribir o leer archivos en memoria secundaria

4 E/S de disco (memoria 2aria.) Condiciones de archivos de disco 1El archivo de disco no existe y se quiere crearlo y añadir información 2El archivo de disco existe y se quiere extraer información de él 3El archivo de disco existe y se quiere añadir más información, conservando la información que ya estaba en él. 4El archivo de disco existe y se quiere borrar la información, y agregar información nueva.

5 Distintos métodos de lectura y escritura de datos Un carácter a la vezLee y escribe a memoria 2aria. Un carácter a la vez Leer y escribir cadenas de caracteres Lee y escribe a memoria 2aria. Cadenas de caracteres. Método mixtoE/S de caracteres, cadenas de caracteres, reales y enteros Método de estructura de bloques E/S de vectores y estructuras

6 Distintos métodos de …(cont.) Para todos los casos se usan las siguientes funciones: FILE *puntero fopen(nombre_archivo, modo de operación) fclose(puntero a archivo)

7 Distintos métodos de …(cont.) Un carácter a la vez o cada vez TXT Lee y escribe a memoria 2aria. Un carácter a la vez putc() //para escribir; getche() //para leer Leer y escribir cadenas de caracteres TXT Lee y escribe a memoria 2aria. Cadenas de caracteres. putc() //para escribir; getc() //para leer Método mixto MIX E/S de caracteres, cadenas de caracteres, reales y enteros fprintf(); fscanf() Método de estructura de bloques BIN E/S de vectores y estructuras fread(); fwrite

8 Distintos métodos de …(cont.) Acceso Random Se utiliza la función fseek(p,d,m ) la cual tiene 3 argumentos: p: puntero a archivo, d: desplazamiento, m: modo Modo puede tomar 3 valores SEEK_SET(0)  desplazamiento desde el inicio SEEK_SET(1)  desplazamiento desde posición actual SEEK_SET(2)  desplazamiento desde el final del archivo

9 Archivos de texto frente a binarios Incide en el rendimiento de la transferencia de los datos. Por ejemplo, se tiene el siguiente número entero: 12345678 Si almacenamos el número como texto31 32 33 34 35 36 37 38  8 bytes Si almacenamos binario BC614E  3 bytes Por lo cual el ahorro de espacio es considerable

10 Operaciones sobre archivos “a”Abierto para añadir datos. Los datos se añaden al final del archivo o se crea un archivo nuevo si no existe. “r”Abierto para lectura. El archivo debe existir “w”Abierto para escritura. Los datos son escritos desde el principio, o se crea un nuevo archivo si no existe.

11 “a+” Abierto para lectura y añadir datos. Si el archivo no existe, se crea. “r+” Abierto para lectura y escritura. El archivo debe existir. “w+” Abierto para lectura y escritura. Se escribe desde el principio del archivo Operaciones sobre archivos(Cont)

12 “a+” Abierto para lectura y añadir datos. Si el archivo no existe, se crea. “r+” Abierto para lectura y escritura. El archivo debe existir. “w+” Abierto para lectura y escritura. Se escribe desde el principio del archivo Operaciones sobre archivos(Cont)

13 Ejemplo: escritura de un archivo binario #include "stdafx.h" #include typedef struct { char nombre_pieza[15]; /* Tipo de pieza. */ int cantidad; /* Número de piezas. */ float precio_unitario; /* Precio de cada pieza. */ } tipo_pieza; int _tmain(int argc, _TCHAR* argv[]) { tipo_pieza pieza; /* Variable de tipo tipo_pieza. */ FILE *puntero_a_archivo; /* Puntero a archivo. */ /* Abrir un archivo para escritura. */ puntero_a_archivo = fopen("Piezas00.DAT","wb"); /* Leer datos del usuario. */

14 do { fflush(stdin); printf("\nNombre de la pieza => "); gets(pieza.nombre_pieza); fflush(stdin); printf("Numero de piezas => "); scanf("%d", &pieza.cantidad); fflush(stdin); printf("Precio de cada pieza => "); scanf("%f", &pieza.precio_unitario); fflush(stdin); /* Escribir la estructura al archivo. */ fwrite(&pieza, sizeof(pieza), 1, puntero_a_archivo); printf("Quiere introducir mas piezas (s/n)? => "); } while (getche() == 's'); /* Cerrar el archivo abierto. */ fclose(puntero_a_archivo); return 0;

15 Ejemplo: lectura de un archivo binario #include "stdafx.h" #include typedef struct { char nombre_pieza[15]; /* Tipo de pieza. */ int cantidad; /* Número de piezas. */ float precio_unitario; /* Precio de cada pieza. */ } tipo_pieza; int _tmain(int argc, _TCHAR* argv[]) { tipo_pieza pieza; /* Variable de tipo tipo_pieza. */ FILE *puntero_a_archivo; /* Puntero a archivo. */ /* Abrir un archivo para lectura. */ puntero_a_archivo = fopen("Piezas00.DAT","rb");

16 /* Leer datos del archivo y mostrarlos por pantalla */ while(fread(&pieza, sizeof(pieza), 1, puntero_a_archivo)==1) { printf("\nNombre de la pieza => %s\n", pieza.nombre_pieza); printf("Numero de piezas => %d\n", pieza.cantidad); printf("Precio de cada pieza => %f\n", pieza.precio_unitario); } /* Cerrar el archivo abierto. */ fclose(puntero_a_archivo); getch(); return 0; }

17 Ejemplo: lectura Random #include typedef struct { char nombre_pieza[15]; /* Tipo de pieza. */ int cantidad; /* Número de piezas. */ float precio_unitario; /* Precio de cada pieza. */ } tipo_pieza; void main() { tipo_pieza pieza; /* Variable de tipo tipo_pieza. */ FILE *puntero_a_archivo; /* Puntero a archivo. */ int num_registro; /* Número de registro. */ long int desplazamiento; /* Desplazamiento del registro. */ clrscr(); /* Abrir el archivo para lectura. */ if ((puntero_a_archivo = fopen("PIEZAS00.DAT","r")) == NULL) { printf("No puedo abrir el archivo PIEZAS00.DAT\n"); exit(-1); }

18 Lectura Random (Cont) /* Leer el número de registro...starts at zro */ printf("Introduzca el numero de registro => "); scanf("%d", &num_registro); /* Calcular el desplazamiento del registro seleccionado. */ desplazamiento = num_registro * sizeof(pieza); /* Situarse en el lugar requerido */ if (fseek(puntero_a_archivo, desplazamiento, 0) != 0) { printf("El puntero ha superado el limite del archivo."); exit(-1); } /* Leer del archivo los datos seleccionados. */ fread(&pieza, sizeof(pieza), 1, puntero_a_archivo); /* Mostrar los datos del archivo. */ printf("\nNombre de la pieza => %s\n", pieza.nombre_pieza); printf("Numero de piezas => %d\n", pieza.cantidad); printf("Precio de cada pieza => %f\n", pieza. precio_unitario); getch(); /* Cerrar el archivo abierto. */ fclose(puntero_a_archivo);

19 Fin C_Fund05.pptx


Descargar ppt "Asignatura: Lenguaje de Programación de Sistemas PPT No.05 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya."

Presentaciones similares


Anuncios Google