UNIVERSIDAD CENTRAL DE VENEZUELA FACULTAD DE CIENCIAS ESCUELA DE MATEMÁTICA INTRODUCCIÓN A LA COMPUTACIÓN TEMA 7: Registros y Archivos Registros Un registro es un tipo de datos estructurado formado por una colección finita de elementos, no necesariamente del mismo tipo (es heterogénea). Permite almacenar un conjunto de datos relacionados entre sí, bajo un mismo nombre. Los registros pueden generar nuevos tipos de datos ya que a partir de ellos se pueden declarar variables con su misma estructura. Notación: Register <nombre> <tipo_1> <campo_1>; ... <tipo_n> <campo_n>; endRegister Register Fecha integer Dia; integer Mes; integer Año; endRegister Operación de selección: Esta operación permite acceder a un campo particular del registro. Por ejemplo: Para declarar un registro de tipo Fecha: Fecha F; F.Dia = 24; F.Mes = 1; F.Año = 2007; Es posible anidar registros dentro de otros, por ejemplo: Register Fecha_Patria String nombre_fecha_patria; Fecha fecha: endRegister Fecha_Patria f1; Existen dos maneras posibles para acceder a los atributos del campo fecha de la variable f1 perteneciente al registro Fecha_Patria: 1) Navegando a través de los registros: f1.fecha.Dia 2) Por transitividad y de forma directa: f1.Dia (Esto aplica sí y sólo sí en el registro principal NO hay un campo llamado igual al campo del registro más interno). Archivos Un archivo es una estructura de datos heterogénea que reside en memoria secundaria. Características: • Persistencia en el tiempo • Gran capacidad de almacenamiento Notación: File <Identificador>; El archivo debe ser abierto antes de poder usarlo. Para abrir un archivo se debe especificar si se va a abrir para lectura o para escritura: FileOpen(<Identificador>, <NombreArchivo>, <Modo>); En donde: <Identificador> es la variable de tipo archivo. <NombreArchivo> es un string que contiene el nombre del archivo. <Modo> es un string que representa el modo de apertura del archivo. Puede ser “R” o “W”. Por ejemplo: File F; FileOpen(F, "datos.txt", "R"); Al finalizar de usar el archivo, este debe cerrarse para que otros programas puedan utilizarlo, para ello usaremos: FileClose(<Identificador>); En donde Identificador es la variable de tipo archivo que deseamos cerrar. La función EOF(<Identificador>) (End Of File) retorna un lógico que indica si se llegó al final del archivo o no. Para leer de un archivo: FileRead(<IdentificadorArchivo>, <Nombre de Variable>); En donde <IdentificadorArchivo> es una variable de tipo archivo y <Nombre De Variable> es la variable en donde se almacenará el valor leído del archivo. Para escribir en un archivo: FileWrite(<IdentificadorArchivo>, <Nombre de Variable>); Ejemplo: dado un archivo de enteros, hacer un algoritmo que encuentre el mayor valor del archivo Procedure Main() File F; integer max, x; FileOpen(F, "Numeros.txt", "R"); FileRead(F, max); while not EOF(F) do FileRead(F, x); if x >max then max = x; endIf endWhile FileClose(F); Write(max); endProcedure Licenciado Wilson Manyoma, Caracas, Enero 2013