La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Departamento de Informática Universidad Técnica Federico Santa María Programación de Computadores (IWI-131) Luis Pizarro Q.

Presentaciones similares


Presentación del tema: "Departamento de Informática Universidad Técnica Federico Santa María Programación de Computadores (IWI-131) Luis Pizarro Q."— Transcripción de la presentación:

1 Departamento de Informática Universidad Técnica Federico Santa María Programación de Computadores (IWI-131) Luis Pizarro Q. Luis.Pizarro@inf.utfsm.cl www.labmc.inf.utfsm.cl/~lpizarro/IWI-131 Tema 10: Archivos

2 Luis Pizarro Q. ©2003 2 1. Introducción n Los programas utilizan archivos para comunicarse con el mundo exterior y con otros programas. n Por ejemplo, es posible leer datos desde un archivo, así como también los resultados de un procesamiento pueden ser guardados en otro archivo.

3 Luis Pizarro Q. ©2003 3 1. Introducción n Es posible crear un archivo para almacenar variables de un solo tipo: CHAR/TEXT, INTEGER, REAL, ARRAY, BOOLEAN, etc. n Pero también podemos almacenar variables del tipo RECORD, permitiéndonos guardar valores de distinto tipo.

4 Luis Pizarro Q. ©2003 4 2. Archivos n Según el tipo de datos que almacenarán, existen 2 tipos de archivo: –Archivo de texto: Aquel que almacena caracteres (CHAR) o líneas de texto (TEXT). Estos archivos puden ser modificados con cualquier editor de texto. –Archivo binario: Aquel que almacena INTEGER, REAL, BOOLEAN, ARRAY, RECORD, etc. Estos archivos no pueden ser modificados con un editor de texto.

5 Luis Pizarro Q. ©2003 5 2. Archivos n Definición de un archivo. TYPE {archivos de texto} Arch_caracteres = FILE OF CHAR; Arch_lineas = TEXT; {archivos binarios} Arch_enteros = FILE OF INTEGER; Arch_arreglos = FILE OF ARRAY[1..10] OF REAL; persona = RECORD nombre: STRING[30]; rut: STRING[9] END; Arch_registros = FILE OF persona;

6 Luis Pizarro Q. ©2003 6 2. Archivos n Los tipos definidos anteriormente se utilizan para declarar variables de archivo, con las cuales manipularemos los archivos: VAR caracteres: Arch_caracteres; lineas: Arch_lineas; enteros: Arch_enteros; arreglos: Arch_arreglos; registros: Arch_registros;

7 Luis Pizarro Q. ©2003 7 2. Archivos n Una variable de archivo debe estar asociada con un archivo físico almacenado en el disco duro. Para ello utilizamos la sentencia: –ASSIGN(nombre_lógico, nombre_físico) variable dirección en disco duro n Ejemplos –ASSIGN(caracteres, ‘c:\caracteres.dat’); –ASSIGN(arreglos, ‘c:\arreglos.dat’); –ASSIGN(registros, ‘c:\registros.dat’);

8 Luis Pizarro Q. ©2003 8 2. Archivos n ¿ Leer o Escribir en un archivo ? Debemos tener claro si necesitamos un archivo para leer o para escribir datos en él, según sea el caso empleamos: RESET(nombre_lógico); Para leer un archivo. REWRITE(nombre_lógico); Para escribir un archivo. n Ejemplos – RESET(caracteres); se leen los datos del archivo físico asociado con el nombre lógico caracteres. – REWRITE(registros); se crea el archivo físico asociado con el nombre lógico registros para escribir datos tipo RECORD.

9 Luis Pizarro Q. ©2003 9 2. Archivos n ¿ Cómo Leer y Escribir ? Una vez abiertos los archivos para lectura o escritura (lámina anterior), utilizamos: – READ(nombre_lógico, v1, v2,...., vN); Se leen N datos desde el archivo y se almacenan en las variables v1,...,vN. – WRITE(nombre_lógico, v1, v2,...., vN); Se escriben en el archivo los N datos contenidos en las variables v1,...,vN.

10 Luis Pizarro Q. ©2003 10 2. Archivos n ¿Hasta cuándo debemos leer un archivo? Cuando estamos leyendo un archivo debemos detenernos cuando llegamos al final del archivo. Para eso utilizamos: – EOF(nombre_lógico); End Of File Función que entrega TRUE si estamos en el final del archivo. Entrega FALSE en caso contrario. n Ejemplo WHILE NOT EOF(enteros) DO BEGIN READ(enteros, x); WRITELN(x) END; Se leen todos los números enteros que contiene el archivo físico asociado con el nombre lógico enteros y se muestran por pantalla.

11 Luis Pizarro Q. ©2003 11 2. Archivos n Algunas consideraciones sobre los archivos TEXT: Sólo en archivos TEXT es posible detectar el final de una línea, para ello utilizamos: – EOLN(nombre_lógico); End Of LiNe Función que entrega TRUE si el próximo caracter a leer indica el final de la línea. Entrega FALSE en caso contrario. n Ejemplo nro_lineas := 0; WHILE NOT EOF(lineas) DO BEGIN IF EOLN(lineas) THEN nro_lineas := nro_lineas + 1; READ(lineas, x); WRITELN(x) END; WRITELN(‘Nro. de líneas: ’, nro_lineas); Uno por uno en la variable x: CHAR se leen todos los caracteres que contiene el archivo físico asociado con el nombre lógico lineas, se muestran por pantalla y se cuenta el número de líneas del archivo.

12 Luis Pizarro Q. ©2003 12 2. Archivos n...consideraciones: Sólo en archivos TEXT es posible leer o escribir una línea de caracteres (STRING) con una sola sentencia, evitando leer o escribir carácter por carácter. Para ello utilizamos: – READLN(nombre_lógico, variable_string); – WRITELN(nombre_lógico, variable_string); n Ejemplo WHILE NOT EOF(lineas) DO BEGIN READLN(lineas, str); WRITELN(str) END; Una por una en la variable str: STRING se leen todas las líneas que contiene el archivo físico asociado con el nombre lógico lineas, y se muestran por pantalla.

13 Luis Pizarro Q. ©2003 13 3. Ejercicios 3.1 Escriba un programa para calcular el promedio de los números que contiene el archivo de enteros numeros.dat. PROGRAM promedio; TYPE Arch_enteros = FILE OF INTEGER; VAR enteros: Arch_enteros; num, total, cont: INTEGER; BEGIN ASSIGN(enteros, ‘numeros.dat’); RESET(enteros); total := 0; cont := 0; WHILE NOT EOF(enteros) DO BEGIN READ(enteros, num); total := total + num; cont := cont + 1 END; WRITELN(‘Promedio: ’, total/cont); CLOSE(enteros) END.

14 Luis Pizarro Q. ©2003 14 3.2 Escriba un programa para contar la cantidad de letras minúsculas que hay en cada línea en el archivo datos.dat. PROGRAM contar_caracteres_por_linea; TYPE Arch_lineas = TEXT; VAR lineas: Arch_lineas; i, cont: INTEGER; letra: CHAR; BEGIN ASSIGN(lineas, ‘datos.dat’); RESET(lineas); i := 0; cont := 0; WHILE NOT EOF(lineas) DO BEGIN IF EOLN(lineas) THEN BEGIN i := i + 1; WRITELN(‘Caracteres en línea ‘, i, ‘ : ‘, cont); cont := 0 END; READ(lineas, letra); IF (ORD(letra) >= ORD(‘a’)) AND (ORD(letra) <= ORD(‘z’)) THEN cont := cont + 1 END; CLOSE(lineas) END. 3. Ejercicios

15 Departamento de Informática Universidad Técnica Federico Santa María Programación de Computadores (IWI-131) Luis Pizarro Q. Luis.Pizarro@inf.utfsm.cl www.labmc.inf.utfsm.cl/~lpizarro/IWI-131 Tema 10: Archivos


Descargar ppt "Departamento de Informática Universidad Técnica Federico Santa María Programación de Computadores (IWI-131) Luis Pizarro Q."

Presentaciones similares


Anuncios Google