Sie sind auf Seite 1von 10

ARCHIVOS SECUENCIALES Un archivo organizado secuencialmente es el formado por una sucesin de registro relacionados de manera que su acceso est

determinado por su ordenamiento. Archivo secuencial es la forma ms simple de almacenar y recuperar registros en un archivo. En un archivo secuencial, se almacenan los registros uno tras otro. El primer registro almacenado se coloca al principio del archivo. El segundo se almacena inmediatamente despus (no existen posiciones sin uso), el tercero despus del segundo, etc. Este orden nunca cambia en la organizacin secuencial. Una caracterstica de los archivos secuenciales es que todos los registros se almacenan por posicin: de primer registro, segundo registro, etc. Los archivos secuenciales operan de la misma forma como la cola larga, el primer registro (fsico) es el primer registro escrito. La principal ventaja de la organizacin secuencial es la capacidad para acceder rpidamente al siguiente registro.

ARCHIVO SECUENCIAL INDEXADO Una de las organizaciones de archivos ms ampliamente usada es la secuencial indexada, la cual es posible el acceso a un registro en particular (aleatoria) y el proceso secuencial a partir del inicio del archivo en cualquier otro registro del archivo. Cada registro en el archivo se identifica por medio de un nmero o un grupo de caracteres exclusivos; la llave primaria. Los registros se almacenan segn una secuencia fsica dada, este ordenamiento mas usualmente es de disponerlos en el orden indicado por la llave, con lo cual permite un procesamiento secuencial de los registros precisamente en el orden en que estn distribuidos en el archivo y tambin es posible el procesamiento aleatoria, en el que se llega a los registro en un orden cualquiera. Indexacin: Es una forma de organizar datos de almacenamiento secundario. Tiene como objetivo fundamental organizar de manera efectiva una coleccin de registros para facilitar y agilizar su acceso. ndice: Es un recurso para encontrar informacin. El ndice contiene una lista de temas (llaves) y nmeros de pginas donde encontraremos esos temas (campos de referencia). El tipo de sus registros contiene un campo clave identificador. Los registros estn situados en un soporte direccionable por el orden de los valores indicados por la clave. Existe un ndice con cada una de las posiciones direccionables que almacena la direccin de la posicin y el valor de la clave, es decir, en el ndice encontramos la clave del ltimo registro y la direccin de acceso al primer registro bloque. El ndice puede definirse como una entidad que opera con un procedimiento que acepta informacin acerca de cierto valor de atributo, como entrada, y provee como salida una informacin que permite la rpida localizacin del registro de le llama primario al ndice que utiliza como entrada la llave primaria y da como salida una informacin referente a la ubicacin fsica del registro. Para que la bsqueda sea ms eficiente y reducir el tamao del archivo ndice, los campos referentes a la informacin asociada se almacenan separadamente, con los cual se tendr que considerar una coleccin ante la llave y los datos asociados, esta es a travs de un apuntador

Al tener un apuntador fuera de la estructura califica al archivo como ndice, en cual bsicamente es una coleccin de pares, llaves-direccin. Si este archivo contiene un par llave-direccin para cada registro de la coleccin de datos se le llama ndice denso, de otra manera ndice no denso se le llama ndice disperso.

Una forma sencilla de ver la estructura de un archivo ndice es la de un rbol de bsqueda binaria, el cual es usado para cumplir el requerimiento de acceso particular a un registro, esta es una organizacin no secuencial indexada Areas de un archivo secuencial indexado rea de Datos: contiene registros en forma secuencial, est organizado en secuenciales de claves sin dejar huecos intercalados. rea de ndice: Los niveles de ndice estn contenidos en una tabla, si existieran varios ndices enlazados se denomina nivel de indexacin. rea de Desbordamiento o Excedentes: Esta rea es utilizada para realizar actualizaciones si ello es necesario.

CREACION DE REGISTROS Y CONSULTACION DE REGISTROS EN C Variables simples o escalares pueden almacenar un datum de informacin y arreglos pueden almacenar conjuntos de ellos del mismo tipo y al mismo tiempo, estos dos mecanismos pueden manejar una gran variedad de situaciones pero a menudo se necesita trabajar sobre datos de diversos tipos en este caso ni variables escalares ni arreglos son adecuados. Para resolver este problema C provee de un tipo de dato especial llamado estructura. Los elementos individuales de una variable estructura reciben el nombre de campos. Ej: struct alumno nombre campo1 direccion campo2 edad campo3 etc EL FORMATO GENERAL DE UNA ESTRUCTURA ES: tipo de almacenamiento struct { tipo campo1; tipo campo2; }lista de variables; Es el registro completo quien se declara en cualquiera de los lugares adecuados para ello. Son los campos del registro a quienes se les va a asignar, inicializar, capturar, etc y de esta manera a los campos se les considera como variables normales. Para indicar a C durante cualquier proceso que la variable a utilizar es un campo de una estructura se utiliza el siguiente formato.

nomregistro.nombredelcampo Ejemplo. prog16.cpp #include <stdio.h> #include <conio.h> #include <string.h> struct { int matricula; char nombre[30]; int edad;}alumno; void main() { clrscr(); // captura de campos printf("dame matricula :");scanf("%d",&alumno.matricula);getchar(); printf("dame nombre :");gets(alumno.nombre); printf("dame edad :");scanf("%d",&alumno.edad); // area de operaciones alumno.edad = alumno.edad * 12; // area de salida printf("MATRICULA =%d \n",alumno.matricula); printf("NOMBRE =%s \n",alumno.nombre); printf("MESES =%d \n",alumno.edad); getchar();getchar(); }

MODIFICAR REGISTROS Editar registros significa cambiar el contenido de algunos de los campos o columnas por nueva informacn o para corregir algun error de captura original o para agregar alguna columna que no existia por modificacin de la tabla o la base de datos. La solucion es similar a los temas anterior, es decir se ocupan los dos archivos el original y el temporal y ya sea que se modifique una sola clave o se modifiquen todos los registros el ejemplo que se construye va mostrando los registros del archivo y pregunta y modifica o edita el registro pedido. Prog24.cpp #include <stdio.h> #include <stdlib.h> #include <io.h> #include <conio.h> #include <string.h> struct { int matricula; char nombre[30]; int edad;} alumno; void main() { clrscr(); // cargando clave a editar printf("dame matricula editar:"); int clave; scanf("%d",&clave);getchar(); FILE *arch1; FILE *arch2; arch1 = fopen("cpp:\\ac\\alumnos.dat","r+");

arch2 = fopen("cpp:\\ac\\temporal.dat","at+"); // aqui siempre debe empezar el ciclo de lectura // y fread() regresa siempre cuantas estructuras leyo while(fread(&alumno,sizeof(alumno),1,arch1)==1) { if ( clave == alumno.matricula) { printf("dame nuevo nombre :");gets(alumno.nombre); printf("dame nueva edad :");scanf("%d",&alumno.edad); fwrite(&alumno,sizeof(alumno),1,arch2); } else { fwrite(&alumno,sizeof(alumno),1,arch2); }; }; // aqui termina while //cerrando archivos fclose(arch1); fclose(arch2); // removiendo y renombrando archivos // recordar que directorios y archivos de datos no // mas de 8.3 letras remove("cpp:\\AC\\ALUMNOS.DAT "); rename("cpp:\\AC\\TEMPORAL.DAT","cpp:\\AC\\ALUMNOS.DAT "); //avisando

puts("REGISTRO EDITADO"); getchar();getchar(); }

LISTADO POR IMPRESORA IMPRIMIENDO LA PANTALLA. Primero la mayora de los programas no hace el intento de centrar el despliegue en el papel, entonces normalmente aparece en una esquina. Segundo, usualmente no seleccionan los rangos correctos para que la impresora est en una porcin propia. En el despliegue EGA los crculos tambin aparecen como valos en la impresora. Tercero si el fondo del despliegue en EGA esta de color, todo el despliegue usualmente se imprime como una burbuja negra. La funcin de la Fig. 4 corrige estas deficiencias. La funcin primero prepara la impresora para doble espacio de 21/216 por pulgada. Siguiente, 12 lneas son alimentadas para la salida a la impresora para alistar la entrada de la impresora para que est centrado en la pgina en la direccin X. Siguiente, la funcin lee un pxel del despliegue en la locacin (0,0) y asume que los colores que regresan es el color anterior. La impresora solamente imprime pixels cuyos colores son diferentes al color de fondo. Si se asegura que nunca se tiene el pxel (0,0) en cualquier otro color que se usa de fondo, se evita la burbuja negra. Entonces la funcin empieza una vuelta que imprime columnas empezadas con el mximo valor de X y trabaja debajo hasta el ms bajo trmino de la X . La funcin printrow imprime 8 pixels X debajo e incluye el valor que pasa como parmetro X. Adems, la vuelta est puesta para que X nunca reduzca a XMIN, esto ha sido encargado en el paso previo del printrow. Con cada paso hacia la vuelta, la funcin revisa si determina si el keystroke ha sido activado, y si ha entrado entonces restablece la lnea normal de impresin y la salida de la rutina. Al final de la vuelta de impresin, una forma de alimentacin es enviada a la impresora para avanzar a la pgina siguiente. int XMIN = 0, XMAX = 639, YMIN = 0, YMAX = 349; unsigned char background; void printscr(void) { char put_out(char character); int i,x,y; put_out(0x1B); put_out(0x33); put_out(0x15); for (i=0; i<12; i++) put_out(0x0A); background = readPixel(0,0); for (x=Xmax; x<XMIN+7; x - =8) { if (kbhit()) {

put_out(0x1B); put_out(0x32); getch(); break; } printrow(x); } put_out(\x0C); } printrow(int x) { unsigned char savechar, temp; static unsigned char out_buff[434]={\x1bk\xAE\x01}; unsigned int i, j,newy , y; char status(); char put_out(); for (y=YMIN, j=84; y<=YMAX; y++,,j++) { savechar = 0; for (i=0; i<8; i++) { temp = readPixel(x -i,y); if (temp !=background) savechar l = 1; if (i!=7) savechar <<=1; } out_buff[j] = savechar; } for (i=0; i<434; i++) put_out(out_buff[i] ); put_out(\r); put_out(\n);

Das könnte Ihnen auch gefallen