SlideShare ist ein Scribd-Unternehmen logo
1 von 36
ARCHIVOS SECUENCIALES
INDEXADOS
Ejemplo:
Cuando buscas un número telefónico no buscas secuencialmente
desde los nombres cuya inicial es “a” hasta la “z” lo cual te llevaría
mucho tiempo, si no que abres la guía por la letra inicial del nombre.
Por ejemplo:
Si desearas buscar “Juan”, abrirías la guía por la letra “j” y
buscarías la cabecera de páginas hasta encontrar la página más
próxima al nombre, buscando nombre a nombre hasta encontrar
“Juan”.
Como veras la guía es un ejemplo típico de archivo secuencial indexado
con dos niveles de índices:
1) El nivel superior, para las letras iniciales.
2) El nivel menor, para las cabeceras de páginas.
Este método contiene dos archivos para almacenar información
relacionada.
- Índice: Contiene un dato que identifica a la información.
- Archivo de datos: Contiene toda la información guardada.
Descripción:
Un archivo de organización secuencial
indexado consta de las siguientes partes las
cuales son:
Área de
índices
Área
principal
Archivo de
desbordamiento
1. Área de índices:
Los registros de esta área están formados por dos campos que
permiten identificar cada registro de forma única:
- El primero contiene una clave del último registro de cada bloque.
- El segundo contiene el apuntador al archivo principal.
Por ejemplo, si se quieren grabar los estudiantes de cierta escuela en un archivo
secuencial indexado, el campo índice que se puede elegir es el nombre del
estudiante (también se puede elegir el número de carnet del estudiante).
2. Área Principal:
Es la parte del fichero donde se guardan los registros
ordenados por el valor del campo “clave”. Contiene un campo que
apunta al archivo de desbordamiento el cual sirve para insertar
registros.
Su acceso se realiza mediante dos operaciones:
- Primero, buscando en el bloque del registro.
- Luego analiza secuencialmente ese bloque hasta localizar el registro
deseado.
3. Área de Desbordamiento u Overflow:
Tras completar el área primaria, los registros añadidos
posteriormente que no pueden ser realizadas en el área primaria,
serán enviados al área de overflow.
En este los registros se presentan como una lista encadenada,
en que el puntero al próximo registro está compuesto por la pista y
el lugar que ocupa el registro dentro de la pista.
Esta lista se mantiene ordenada por clave.
Archivo de Organización
Secuencial Indexado
Ejemplo:
Ventajas
- Búsqueda mas rápidas gracias a la utilización de un
índice.
- Se pueden actualizar los registros en el mismo fichero
nuevo para el proceso de actualización.
Desventajas
- Ocupa más espacio en el disco que los ficheros
secuenciales, debido al uso del área de índices.
- Tiende tendencias a que aumente el tiempo medio de
acceso a los registros, cuando se producen muchas altas
nuevas con claves que hay que intercalar entre las
existencias, ya que aumenta el área de overflow.
Proceso de un Archivo
Secuencial Indexado
Al diseñar un archivo secuencial indexado, lo primero
que hay que decidir es cuál va a ser el campo clave.
Los registros han de ser grabados en orden
secuencial, y simultáneamente a la grabación de los
registros, el sistema crea los índices en orden
secuencial ascendente del contenido del campo clave.
Se desarrollan las operaciones (altas, bajas, consultas…) para un
archivo con esta organización. También es necesario considerar el
inicio y la salida de la aplicación que procesa un archivo indexado,
para cargar y descargar, respectivamente la tabla de índices.
Tipos de datos
Se declaran dos tipos de estructuras para representar el registro de
datos y el índice respectivamente:
struct estudiante {
int carnet;
string nombre; };
struct index{
int carnet;
int posicion;};
Creación
- Esta declaración de la variable para switch contiene la variable para
almacenar datos de la estructura estudiante y la variable para
almacenar indice y almacenar temporalmente (aux), durante la
busqueda.
int main(){
int opcion, bus;
estudiante alumno, auxi;
index indice, aux;
- A continuación se abre un do while para repetir el menú cada vez que sea necesario para realizar
las distintas operaciones del programa.
do{
system("cls");
- Declaramos el archivo para almacenar datos del área principal.
ofstream dat("datos.txt", ios::binary | ios::app);
- Declaramos el archivo para almacenar datos y clave del área de índice.
ofstream ind("index.txt", ios::binary | ios::app);
- Declaramos el archivo para buscar datos .
ifstream indic("index.txt", ios::binary);
remove("datos.txt");
- Se coloca un cout con la intención de colocar un texto de bienvenida a todo usuario que ejecute el
programa.
cout<<"*** BIENVENIDOS ***"<<endl<<endl;
- Se crea los cout respectivos para mostrar un menú de opciones para el switch que hemos declarado
anteriormente asi a la hora de ejecutar el programa, el usuario pueda seleccionar la opción que
necesite.
cout<<"1. Ingresar datos de estudiante"<<endl;
cout<<"2. Buscar datos de estudiante"<<endl;
cout<<"3. Borrar registros"<<endl;
cout<<"4. Salir del programa"<<endl;
- En las siguientes líneas colocamos un cout, con la intención de mostrar en la consola un texto
indicando la selección de una opción. Luego se agrega un cin para indicar donde se almacena la
opción que se escriba o indique.
cout<<endl<<"Seleccione una opcion: ";
cin>>opcion;
cout<<endl;
- Este if es para que entre al switch solo si va a ser usado con la condición que el número de opción
este entre 1 (ingresar) y 3 (borrar).
if(opcion>0 && opcion<4){
Inicio del switch.
switch(opcion){
- Inicia con opción uno en caso de ser seleccionado para ingresar datos.
case 1:
- Esta condición sirve para ver si los archivos a los cuales vamos a escribir se abren correctamente.
if(!dat && !ind){
cout<<"Error al abrir archivo"<<endl;
}else{
- En caso de que se ejecute o se abra el archivo sin ningún problema entraría al
siguiente paso.
- En estas líneas de código se hace uso del cout que muestra en la consola el texto
dando instrucciones sobre el ingreso del carnet y el cin para almacenar la
información en la variable alumno. Esto hace que podamos ingresar datos y
almacenarlos en la variable alumno.
cout<<"Ingrese carnet: ";
cin>>alumno.carnet;
cout<<endl;
- En las siguientes líneas abrimos un while llamando y determinando la cantidad de
bites que ocupa cada bloque de información.
while(!indic.eof()){
indic.read((char*) &aux, sizeof(struct index));
- Creamos un if.
if (alumno.carnet==aux.carnet){
cout<<"El archivo ya existe, Posicion: "<<aux.posicion;
cout<<endl;
bus=10;
- cierra if
}
- cierra while
}
- cierra archivo indc de busqueda
indic.close();
- Abrimos un if .
if(bus!=10){
- A continuación se crean las siguientes líneas de código para poder pedir, ingresar y almacenar la información de cada
alumno.
cout<<"Ingrese nombre: ";
cin>>alumno.nombre;
cout<<endl;
cout<<"Ingrese edad: ";
cin>>alumno.edad;
cout<<endl;
cout<<"Ingrese carrera: ";
cin>>alumno.carrera;
cout<<endl;
- En la siguiente línea persistimos la estructura en el archivo creado para datos.
dat.write((char*) &alumno, sizeof(struct estudiante));
- En esta línea se cumple con la función de colocar el curso al final del archivo para ver la ubicación.
dat.seekp(0, ios::end);
- Se le asigna a la variable indice el valor del campo clave.
indice.carnet=alumno.carnet;
- Se determina la posición dividiendo entre el tamaño del archivo para asi nos da valores desde 1
indice.posicion=dat.tellp()/sizeof(struct estudiante);
- Persistimos la estructura del indice en el archivo.
ind.write((char*) &indice, sizeof(struct index));
- Está línea nos muestra la posición en la que se guarda la estructura.
cout<<"Guardado en posicion: "<<"["<<indice.posicion<<"]"<<endl;
- Así mismo se debe de cerrar ambos archivos al ya haber terminado de ingresar datos y haber
guardado la estructura y esto se logra haciéndolo de la siguiente forma:
dat.close();
ind.close(); }
- La siguiente línea solo detiene el programa y el break finaliza el caso.
system("PAUSE"); break;
- Y cerramos if en case 1.
}
- Empieza el caso 2 el de búsqueda de archivo.
case 2:
- Se coloca una variable que guarda lo que queramos buscar. En este caso la clave va a
ser el carnet.
int buscar;
cout<<"Escriba carnet de alumno a buscar: ";
cin>>buscar;
- Abrimos un while que va a repetir mientras no sea el final del archivo.
while(!indic.eof()){
- La siguiente línea permite que se lea el archivo y guarda en variable aux.
indic.read((char*) &aux, sizeof(struct index));
- Se abre un if comparando si lo que se busca es igual a lo de la variable aux.
if (buscar==aux.carnet){
- Si fuere igual se escribiría lo en la consola lo siguiente y si no fuere así sigue hasta encontrarlo .
cout<<endl<<"POSICION: "<<aux.posicion;
cout<<endl<<endl;
- Colocamos una variable de tipo ifstream para leer el archivo , en el cual se encuentra la información
que buscamos.
ifstream dato("datos.txt", ios::binary);
bus=aux.posicion-1;
dato.seekg(sizeof(struct estudiante)*bus, ios::beg);
dato.read((char*) &auxi, sizeof(struct estudiante));
- En las siguientes líneas llamamos a cada variable de alumno para
poder mostrar la información del alumno que indique el usuario.
cout<<"Carnet: "<<auxi.carnet<<endl;
cout<<"Nombre: "<<auxi.nombre<<endl;
cout<<"Edad: "<<auxi.edad<<endl;
cout<<"Carrera: "<<auxi.carrera<<endl;
dato.close();
- Luego debemos de detener el programa por un momento y eso lo
logramos colocando la siguiente línea.
system("PAUSE");
- Como siguiente paso cerramos if comparación
}
- Cerramos while de final del archivo.
}
- Al finalizar la operación se cierra el archivo para la búsqueda.
indic.close();
- se cierra el casa dos.
break;
- Empieza el caso 3 que nos permitirá eliminar datos.
case 3:
bus=0;
if(bus==0){
- Se crean variables de tipo ifstream para lectura con la intención de
abrir los archivos de datos e índice y poder realizar el proceso de
eliminación de datos.
ifstream eliminar("datos.txt", ios::binary);
ifstream elim_ind("index.txt", ios::binary);
ofstream temporal("temp.txt", ios::binary | ios::out);
ofstream temp_ind("tempi.txt", ios::binary | ios::out);
-Creamos un if el cual nos mostrara dos opciones indicándonos si hay error
al abrir el archivo o de lo contrario pasaría a la búsqueda de la información
que va a eliminarse.
if(!eliminar || !elim_ind){
cout<<"Error al abrir el archivo"<<endl;
}else{
cout<<"Ingrese el numero de carnet del alumno que desea borrar: ";
cin>>opcion;
while(!eliminar.eof()){
eliminar.read((char*) &auxi, sizeof(struct estudiante));
- A continuación creamos un if para mostrar un texto en la consola
indicando la eliminación del archivo del Área Principal..
if(auxi.carnet==opcion){
cout<<"El archivo se ha eliminado de datos"<<endl;
}else{
temporal.write((char*) &auxi, sizeof(struct estudiante));
}
}
- A continuación se realiza el proceso para la eliminación de los datos en el Área de
Índice.
while(!elim_ind.eof()){
elim_ind.read((char*) &aux, sizeof(struct index));
if(aux.carnet==opcion){
cout<<"El archivo se ha eliminado de indice"<<endl;
}else{
temp_ind.write((char*) &aux, sizeof(struct index));
}
}
}
- En las siguientes líneas finalizamos el proceso de eliminación de datos.
eliminar.close();
temporal.close();
elim_ind.close();
temp_ind.close();
}
remove("datos.txt");
remove("index.txt");
rename("temp.txt", "datos.txt");
rename("tempi.txt", "index.txt");
- La siguiente línea detiene el programa un momento.
system("PAUSE"); break;
default: break;
- Cerramos switch.
}
- Cerramos if para entrar a switch
}
} while(opcion>0 && opcion!=4);
- La condición del do while es que se va a repetir el menú mientras la variable opción se mayor a cero(0) y
también sea diferente de 4, en caso sea 0 o cuatro se sale del programa
system("PAUSE");
- Aquí finaliza el programa
}

Weitere ähnliche Inhalte

Was ist angesagt?

Archivos secuenciales indexados
Archivos secuenciales indexadosArchivos secuenciales indexados
Archivos secuenciales indexadosJose Marroquin
 
Capitulo 22 windows XP
Capitulo 22 windows XPCapitulo 22 windows XP
Capitulo 22 windows XPJorge Alberto
 
77949106 seleccion-del-equipo-de-computo
77949106 seleccion-del-equipo-de-computo77949106 seleccion-del-equipo-de-computo
77949106 seleccion-del-equipo-de-computodjelektro
 
Exposicion organización directa
Exposicion organización directaExposicion organización directa
Exposicion organización directaTiFoN87
 
Base de datos propiedades acid
Base de datos propiedades acidBase de datos propiedades acid
Base de datos propiedades acidJefer Lee Parra
 
Sistemas Operativos Distribuidos.
Sistemas Operativos Distribuidos.Sistemas Operativos Distribuidos.
Sistemas Operativos Distribuidos.argentm
 
Archivos Secuenciales Indexados
Archivos Secuenciales IndexadosArchivos Secuenciales Indexados
Archivos Secuenciales Indexadosjennifergu17
 
Problemas de sincronizacion de procesos
Problemas de sincronizacion de procesosProblemas de sincronizacion de procesos
Problemas de sincronizacion de procesosAbimael hernandez
 
Introducción a Voldemort - Innova4j
Introducción a Voldemort - Innova4jIntroducción a Voldemort - Innova4j
Introducción a Voldemort - Innova4jInnova4j
 
Isam (método de acceso secuencial indexado)
Isam (método de acceso secuencial indexado)Isam (método de acceso secuencial indexado)
Isam (método de acceso secuencial indexado)David Rodríguez Gómez
 
Archivo secuencial-indexado
Archivo secuencial-indexadoArchivo secuencial-indexado
Archivo secuencial-indexadoAleizapata
 
Introduccion a la administracion de los procesos y el procesador (S.O)
Introduccion a la administracion de los procesos y el procesador (S.O)Introduccion a la administracion de los procesos y el procesador (S.O)
Introduccion a la administracion de los procesos y el procesador (S.O)Javier Alvarez
 
Programación Orientada a Aspectos (POA)
Programación Orientada a Aspectos (POA)Programación Orientada a Aspectos (POA)
Programación Orientada a Aspectos (POA)Walter Javier Franck
 

Was ist angesagt? (20)

Aplicaciones n capas en visual net
Aplicaciones n capas en visual netAplicaciones n capas en visual net
Aplicaciones n capas en visual net
 
Archivos secuenciales indexados
Archivos secuenciales indexadosArchivos secuenciales indexados
Archivos secuenciales indexados
 
Estructuras de datos
Estructuras de datosEstructuras de datos
Estructuras de datos
 
Capitulo 22 windows XP
Capitulo 22 windows XPCapitulo 22 windows XP
Capitulo 22 windows XP
 
77949106 seleccion-del-equipo-de-computo
77949106 seleccion-del-equipo-de-computo77949106 seleccion-del-equipo-de-computo
77949106 seleccion-del-equipo-de-computo
 
Exposicion organización directa
Exposicion organización directaExposicion organización directa
Exposicion organización directa
 
Base de datos propiedades acid
Base de datos propiedades acidBase de datos propiedades acid
Base de datos propiedades acid
 
Oracle
OracleOracle
Oracle
 
Sistemas Operativos Distribuidos.
Sistemas Operativos Distribuidos.Sistemas Operativos Distribuidos.
Sistemas Operativos Distribuidos.
 
Sistema de Archivos
Sistema de ArchivosSistema de Archivos
Sistema de Archivos
 
Archivos Secuenciales Indexados
Archivos Secuenciales IndexadosArchivos Secuenciales Indexados
Archivos Secuenciales Indexados
 
Problemas de sincronizacion de procesos
Problemas de sincronizacion de procesosProblemas de sincronizacion de procesos
Problemas de sincronizacion de procesos
 
Introducción a Voldemort - Innova4j
Introducción a Voldemort - Innova4jIntroducción a Voldemort - Innova4j
Introducción a Voldemort - Innova4j
 
Isam (método de acceso secuencial indexado)
Isam (método de acceso secuencial indexado)Isam (método de acceso secuencial indexado)
Isam (método de acceso secuencial indexado)
 
Arquitectura sql
Arquitectura sqlArquitectura sql
Arquitectura sql
 
Archivo secuencial-indexado
Archivo secuencial-indexadoArchivo secuencial-indexado
Archivo secuencial-indexado
 
Algoritmos de Ordenamiento externo
Algoritmos de Ordenamiento externoAlgoritmos de Ordenamiento externo
Algoritmos de Ordenamiento externo
 
Sistemas operativos distribuidos
Sistemas operativos distribuidosSistemas operativos distribuidos
Sistemas operativos distribuidos
 
Introduccion a la administracion de los procesos y el procesador (S.O)
Introduccion a la administracion de los procesos y el procesador (S.O)Introduccion a la administracion de los procesos y el procesador (S.O)
Introduccion a la administracion de los procesos y el procesador (S.O)
 
Programación Orientada a Aspectos (POA)
Programación Orientada a Aspectos (POA)Programación Orientada a Aspectos (POA)
Programación Orientada a Aspectos (POA)
 

Ähnlich wie Archivos secuenciales indexados

Ähnlich wie Archivos secuenciales indexados (20)

Archivossin
ArchivossinArchivossin
Archivossin
 
funcion de archivo secuencial
funcion de archivo secuencial funcion de archivo secuencial
funcion de archivo secuencial
 
Archivos secuenciales-indexados C++
Archivos secuenciales-indexados C++Archivos secuenciales-indexados C++
Archivos secuenciales-indexados C++
 
Archivos secuenciales indexados UMG grupo 3
Archivos secuenciales indexados UMG grupo 3Archivos secuenciales indexados UMG grupo 3
Archivos secuenciales indexados UMG grupo 3
 
Fichero c y c++
Fichero c y c++Fichero c y c++
Fichero c y c++
 
Temas programacion java_3
Temas programacion java_3Temas programacion java_3
Temas programacion java_3
 
Grupo nro4ficheros
Grupo nro4ficherosGrupo nro4ficheros
Grupo nro4ficheros
 
Archivos secuenciales indexados
Archivos secuenciales indexadosArchivos secuenciales indexados
Archivos secuenciales indexados
 
Gestion de archivos
Gestion de archivosGestion de archivos
Gestion de archivos
 
Archivos en c clase unsam
Archivos en c clase unsamArchivos en c clase unsam
Archivos en c clase unsam
 
(86)resumen visual basic
(86)resumen visual basic(86)resumen visual basic
(86)resumen visual basic
 
Lectura y Grabacion de los campos de un Archivo
Lectura y Grabacion de los campos de un ArchivoLectura y Grabacion de los campos de un Archivo
Lectura y Grabacion de los campos de un Archivo
 
Lab archivos
Lab archivosLab archivos
Lab archivos
 
Objetivo 01 Archivos de Texto
Objetivo 01 Archivos de TextoObjetivo 01 Archivos de Texto
Objetivo 01 Archivos de Texto
 
Acceso a datos
Acceso a datosAcceso a datos
Acceso a datos
 
PERSISTENCIA BASADA EN ARCHIVOS
PERSISTENCIA BASADA EN ARCHIVOSPERSISTENCIA BASADA EN ARCHIVOS
PERSISTENCIA BASADA EN ARCHIVOS
 
Desarrollo android - 5 - almacenamiento de datos
Desarrollo android  -  5 - almacenamiento de datosDesarrollo android  -  5 - almacenamiento de datos
Desarrollo android - 5 - almacenamiento de datos
 
Archivos en C++
Archivos en C++Archivos en C++
Archivos en C++
 
Archivos C++
Archivos C++Archivos C++
Archivos C++
 
Archivos de Registros
Archivos de RegistrosArchivos de Registros
Archivos de Registros
 

Kürzlich hochgeladen

Ficha Tecnica de Ladrillos de Tabique de diferentes modelos
Ficha Tecnica de Ladrillos de Tabique de diferentes modelosFicha Tecnica de Ladrillos de Tabique de diferentes modelos
Ficha Tecnica de Ladrillos de Tabique de diferentes modelosRamiroCruzSalazar
 
Desigualdades e inecuaciones-convertido.pdf
Desigualdades e inecuaciones-convertido.pdfDesigualdades e inecuaciones-convertido.pdf
Desigualdades e inecuaciones-convertido.pdfRonaldLozano11
 
Clasificación de Equipos e Instrumentos en Electricidad.docx
Clasificación de Equipos e Instrumentos en Electricidad.docxClasificación de Equipos e Instrumentos en Electricidad.docx
Clasificación de Equipos e Instrumentos en Electricidad.docxwilliam801689
 
CALCULO SISTEMA DE PUESTA A TIERRA PARA BAJA TENSION Y MEDIA TENSION
CALCULO SISTEMA DE PUESTA A TIERRA PARA BAJA TENSION Y MEDIA TENSIONCALCULO SISTEMA DE PUESTA A TIERRA PARA BAJA TENSION Y MEDIA TENSION
CALCULO SISTEMA DE PUESTA A TIERRA PARA BAJA TENSION Y MEDIA TENSIONJuan Carlos Meza Molina
 
Sistema de lubricación para motores de combustión interna
Sistema de lubricación para motores de combustión internaSistema de lubricación para motores de combustión interna
Sistema de lubricación para motores de combustión internamengual57
 
ingenieria grafica para la carrera de ingeniera .pptx
ingenieria grafica para la carrera de ingeniera .pptxingenieria grafica para la carrera de ingeniera .pptx
ingenieria grafica para la carrera de ingeniera .pptxjhorbycoralsanchez
 
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptxNTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptxBRAYANJOSEPTSANJINEZ
 
4º Clase Laboratorio (2024) Completo Mezclas Asfalticas Caliente (1).pdf
4º Clase Laboratorio (2024) Completo Mezclas Asfalticas Caliente (1).pdf4º Clase Laboratorio (2024) Completo Mezclas Asfalticas Caliente (1).pdf
4º Clase Laboratorio (2024) Completo Mezclas Asfalticas Caliente (1).pdfnicolascastaneda8
 
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdfLA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdfbcondort
 
Lineamientos del Plan Oferta y Demanda sesión 5
Lineamientos del Plan Oferta y Demanda sesión 5Lineamientos del Plan Oferta y Demanda sesión 5
Lineamientos del Plan Oferta y Demanda sesión 5juanjoelaytegonzales2
 
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADOPERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADOFritz Rebaza Latoche
 
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNATINSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNATevercoyla
 
Tinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiologíaTinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiologíaAlexanderimanolLencr
 
Gestion de proyectos para el control y seguimiento
Gestion de proyectos para el control  y seguimientoGestion de proyectos para el control  y seguimiento
Gestion de proyectos para el control y seguimientoMaxanMonplesi
 
MODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdf
MODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdfMODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdf
MODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdfvladimirpaucarmontes
 
QUIMICA GENERAL UNIVERSIDAD TECNOLOGICA DEL PERU
QUIMICA GENERAL UNIVERSIDAD TECNOLOGICA DEL PERUQUIMICA GENERAL UNIVERSIDAD TECNOLOGICA DEL PERU
QUIMICA GENERAL UNIVERSIDAD TECNOLOGICA DEL PERUManuelSosa83
 
Tippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.ppt
Tippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.pptTippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.ppt
Tippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.pptNombre Apellidos
 
Maquinaria Agricola utilizada en la produccion de Piña.pdf
Maquinaria Agricola utilizada en la produccion de Piña.pdfMaquinaria Agricola utilizada en la produccion de Piña.pdf
Maquinaria Agricola utilizada en la produccion de Piña.pdfdanielJAlejosC
 
Sesion 6 _ Curso Integrador II_TSZVQJ.pdf
Sesion 6 _ Curso Integrador II_TSZVQJ.pdfSesion 6 _ Curso Integrador II_TSZVQJ.pdf
Sesion 6 _ Curso Integrador II_TSZVQJ.pdfOmarPadillaGarcia
 
Aportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
Aportes a la Arquitectura de Le Corbusier y Mies Van der RoheAportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
Aportes a la Arquitectura de Le Corbusier y Mies Van der RoheElisaLen4
 

Kürzlich hochgeladen (20)

Ficha Tecnica de Ladrillos de Tabique de diferentes modelos
Ficha Tecnica de Ladrillos de Tabique de diferentes modelosFicha Tecnica de Ladrillos de Tabique de diferentes modelos
Ficha Tecnica de Ladrillos de Tabique de diferentes modelos
 
Desigualdades e inecuaciones-convertido.pdf
Desigualdades e inecuaciones-convertido.pdfDesigualdades e inecuaciones-convertido.pdf
Desigualdades e inecuaciones-convertido.pdf
 
Clasificación de Equipos e Instrumentos en Electricidad.docx
Clasificación de Equipos e Instrumentos en Electricidad.docxClasificación de Equipos e Instrumentos en Electricidad.docx
Clasificación de Equipos e Instrumentos en Electricidad.docx
 
CALCULO SISTEMA DE PUESTA A TIERRA PARA BAJA TENSION Y MEDIA TENSION
CALCULO SISTEMA DE PUESTA A TIERRA PARA BAJA TENSION Y MEDIA TENSIONCALCULO SISTEMA DE PUESTA A TIERRA PARA BAJA TENSION Y MEDIA TENSION
CALCULO SISTEMA DE PUESTA A TIERRA PARA BAJA TENSION Y MEDIA TENSION
 
Sistema de lubricación para motores de combustión interna
Sistema de lubricación para motores de combustión internaSistema de lubricación para motores de combustión interna
Sistema de lubricación para motores de combustión interna
 
ingenieria grafica para la carrera de ingeniera .pptx
ingenieria grafica para la carrera de ingeniera .pptxingenieria grafica para la carrera de ingeniera .pptx
ingenieria grafica para la carrera de ingeniera .pptx
 
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptxNTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
 
4º Clase Laboratorio (2024) Completo Mezclas Asfalticas Caliente (1).pdf
4º Clase Laboratorio (2024) Completo Mezclas Asfalticas Caliente (1).pdf4º Clase Laboratorio (2024) Completo Mezclas Asfalticas Caliente (1).pdf
4º Clase Laboratorio (2024) Completo Mezclas Asfalticas Caliente (1).pdf
 
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdfLA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
 
Lineamientos del Plan Oferta y Demanda sesión 5
Lineamientos del Plan Oferta y Demanda sesión 5Lineamientos del Plan Oferta y Demanda sesión 5
Lineamientos del Plan Oferta y Demanda sesión 5
 
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADOPERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
 
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNATINSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
 
Tinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiologíaTinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiología
 
Gestion de proyectos para el control y seguimiento
Gestion de proyectos para el control  y seguimientoGestion de proyectos para el control  y seguimiento
Gestion de proyectos para el control y seguimiento
 
MODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdf
MODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdfMODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdf
MODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdf
 
QUIMICA GENERAL UNIVERSIDAD TECNOLOGICA DEL PERU
QUIMICA GENERAL UNIVERSIDAD TECNOLOGICA DEL PERUQUIMICA GENERAL UNIVERSIDAD TECNOLOGICA DEL PERU
QUIMICA GENERAL UNIVERSIDAD TECNOLOGICA DEL PERU
 
Tippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.ppt
Tippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.pptTippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.ppt
Tippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.ppt
 
Maquinaria Agricola utilizada en la produccion de Piña.pdf
Maquinaria Agricola utilizada en la produccion de Piña.pdfMaquinaria Agricola utilizada en la produccion de Piña.pdf
Maquinaria Agricola utilizada en la produccion de Piña.pdf
 
Sesion 6 _ Curso Integrador II_TSZVQJ.pdf
Sesion 6 _ Curso Integrador II_TSZVQJ.pdfSesion 6 _ Curso Integrador II_TSZVQJ.pdf
Sesion 6 _ Curso Integrador II_TSZVQJ.pdf
 
Aportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
Aportes a la Arquitectura de Le Corbusier y Mies Van der RoheAportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
Aportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
 

Archivos secuenciales indexados

  • 2. Ejemplo: Cuando buscas un número telefónico no buscas secuencialmente desde los nombres cuya inicial es “a” hasta la “z” lo cual te llevaría mucho tiempo, si no que abres la guía por la letra inicial del nombre.
  • 3. Por ejemplo: Si desearas buscar “Juan”, abrirías la guía por la letra “j” y buscarías la cabecera de páginas hasta encontrar la página más próxima al nombre, buscando nombre a nombre hasta encontrar “Juan”.
  • 4. Como veras la guía es un ejemplo típico de archivo secuencial indexado con dos niveles de índices: 1) El nivel superior, para las letras iniciales. 2) El nivel menor, para las cabeceras de páginas.
  • 5. Este método contiene dos archivos para almacenar información relacionada. - Índice: Contiene un dato que identifica a la información. - Archivo de datos: Contiene toda la información guardada. Descripción:
  • 6. Un archivo de organización secuencial indexado consta de las siguientes partes las cuales son: Área de índices Área principal Archivo de desbordamiento
  • 7. 1. Área de índices: Los registros de esta área están formados por dos campos que permiten identificar cada registro de forma única: - El primero contiene una clave del último registro de cada bloque. - El segundo contiene el apuntador al archivo principal. Por ejemplo, si se quieren grabar los estudiantes de cierta escuela en un archivo secuencial indexado, el campo índice que se puede elegir es el nombre del estudiante (también se puede elegir el número de carnet del estudiante).
  • 8. 2. Área Principal: Es la parte del fichero donde se guardan los registros ordenados por el valor del campo “clave”. Contiene un campo que apunta al archivo de desbordamiento el cual sirve para insertar registros. Su acceso se realiza mediante dos operaciones: - Primero, buscando en el bloque del registro. - Luego analiza secuencialmente ese bloque hasta localizar el registro deseado.
  • 9.
  • 10. 3. Área de Desbordamiento u Overflow: Tras completar el área primaria, los registros añadidos posteriormente que no pueden ser realizadas en el área primaria, serán enviados al área de overflow. En este los registros se presentan como una lista encadenada, en que el puntero al próximo registro está compuesto por la pista y el lugar que ocupa el registro dentro de la pista. Esta lista se mantiene ordenada por clave.
  • 13. Ventajas - Búsqueda mas rápidas gracias a la utilización de un índice. - Se pueden actualizar los registros en el mismo fichero nuevo para el proceso de actualización.
  • 14. Desventajas - Ocupa más espacio en el disco que los ficheros secuenciales, debido al uso del área de índices. - Tiende tendencias a que aumente el tiempo medio de acceso a los registros, cuando se producen muchas altas nuevas con claves que hay que intercalar entre las existencias, ya que aumenta el área de overflow.
  • 15. Proceso de un Archivo Secuencial Indexado Al diseñar un archivo secuencial indexado, lo primero que hay que decidir es cuál va a ser el campo clave. Los registros han de ser grabados en orden secuencial, y simultáneamente a la grabación de los registros, el sistema crea los índices en orden secuencial ascendente del contenido del campo clave.
  • 16. Se desarrollan las operaciones (altas, bajas, consultas…) para un archivo con esta organización. También es necesario considerar el inicio y la salida de la aplicación que procesa un archivo indexado, para cargar y descargar, respectivamente la tabla de índices.
  • 17. Tipos de datos Se declaran dos tipos de estructuras para representar el registro de datos y el índice respectivamente: struct estudiante { int carnet; string nombre; }; struct index{ int carnet; int posicion;};
  • 18. Creación - Esta declaración de la variable para switch contiene la variable para almacenar datos de la estructura estudiante y la variable para almacenar indice y almacenar temporalmente (aux), durante la busqueda. int main(){ int opcion, bus; estudiante alumno, auxi; index indice, aux;
  • 19. - A continuación se abre un do while para repetir el menú cada vez que sea necesario para realizar las distintas operaciones del programa. do{ system("cls"); - Declaramos el archivo para almacenar datos del área principal. ofstream dat("datos.txt", ios::binary | ios::app); - Declaramos el archivo para almacenar datos y clave del área de índice. ofstream ind("index.txt", ios::binary | ios::app); - Declaramos el archivo para buscar datos . ifstream indic("index.txt", ios::binary); remove("datos.txt");
  • 20. - Se coloca un cout con la intención de colocar un texto de bienvenida a todo usuario que ejecute el programa. cout<<"*** BIENVENIDOS ***"<<endl<<endl; - Se crea los cout respectivos para mostrar un menú de opciones para el switch que hemos declarado anteriormente asi a la hora de ejecutar el programa, el usuario pueda seleccionar la opción que necesite. cout<<"1. Ingresar datos de estudiante"<<endl; cout<<"2. Buscar datos de estudiante"<<endl; cout<<"3. Borrar registros"<<endl; cout<<"4. Salir del programa"<<endl; - En las siguientes líneas colocamos un cout, con la intención de mostrar en la consola un texto indicando la selección de una opción. Luego se agrega un cin para indicar donde se almacena la opción que se escriba o indique. cout<<endl<<"Seleccione una opcion: "; cin>>opcion; cout<<endl;
  • 21. - Este if es para que entre al switch solo si va a ser usado con la condición que el número de opción este entre 1 (ingresar) y 3 (borrar). if(opcion>0 && opcion<4){ Inicio del switch. switch(opcion){ - Inicia con opción uno en caso de ser seleccionado para ingresar datos. case 1: - Esta condición sirve para ver si los archivos a los cuales vamos a escribir se abren correctamente. if(!dat && !ind){ cout<<"Error al abrir archivo"<<endl; }else{
  • 22. - En caso de que se ejecute o se abra el archivo sin ningún problema entraría al siguiente paso. - En estas líneas de código se hace uso del cout que muestra en la consola el texto dando instrucciones sobre el ingreso del carnet y el cin para almacenar la información en la variable alumno. Esto hace que podamos ingresar datos y almacenarlos en la variable alumno. cout<<"Ingrese carnet: "; cin>>alumno.carnet; cout<<endl; - En las siguientes líneas abrimos un while llamando y determinando la cantidad de bites que ocupa cada bloque de información. while(!indic.eof()){ indic.read((char*) &aux, sizeof(struct index));
  • 23. - Creamos un if. if (alumno.carnet==aux.carnet){ cout<<"El archivo ya existe, Posicion: "<<aux.posicion; cout<<endl; bus=10; - cierra if } - cierra while } - cierra archivo indc de busqueda indic.close();
  • 24. - Abrimos un if . if(bus!=10){ - A continuación se crean las siguientes líneas de código para poder pedir, ingresar y almacenar la información de cada alumno. cout<<"Ingrese nombre: "; cin>>alumno.nombre; cout<<endl; cout<<"Ingrese edad: "; cin>>alumno.edad; cout<<endl; cout<<"Ingrese carrera: "; cin>>alumno.carrera; cout<<endl;
  • 25. - En la siguiente línea persistimos la estructura en el archivo creado para datos. dat.write((char*) &alumno, sizeof(struct estudiante)); - En esta línea se cumple con la función de colocar el curso al final del archivo para ver la ubicación. dat.seekp(0, ios::end); - Se le asigna a la variable indice el valor del campo clave. indice.carnet=alumno.carnet; - Se determina la posición dividiendo entre el tamaño del archivo para asi nos da valores desde 1 indice.posicion=dat.tellp()/sizeof(struct estudiante); - Persistimos la estructura del indice en el archivo. ind.write((char*) &indice, sizeof(struct index));
  • 26. - Está línea nos muestra la posición en la que se guarda la estructura. cout<<"Guardado en posicion: "<<"["<<indice.posicion<<"]"<<endl; - Así mismo se debe de cerrar ambos archivos al ya haber terminado de ingresar datos y haber guardado la estructura y esto se logra haciéndolo de la siguiente forma: dat.close(); ind.close(); } - La siguiente línea solo detiene el programa y el break finaliza el caso. system("PAUSE"); break; - Y cerramos if en case 1. }
  • 27. - Empieza el caso 2 el de búsqueda de archivo. case 2: - Se coloca una variable que guarda lo que queramos buscar. En este caso la clave va a ser el carnet. int buscar; cout<<"Escriba carnet de alumno a buscar: "; cin>>buscar; - Abrimos un while que va a repetir mientras no sea el final del archivo. while(!indic.eof()){ - La siguiente línea permite que se lea el archivo y guarda en variable aux. indic.read((char*) &aux, sizeof(struct index));
  • 28. - Se abre un if comparando si lo que se busca es igual a lo de la variable aux. if (buscar==aux.carnet){ - Si fuere igual se escribiría lo en la consola lo siguiente y si no fuere así sigue hasta encontrarlo . cout<<endl<<"POSICION: "<<aux.posicion; cout<<endl<<endl; - Colocamos una variable de tipo ifstream para leer el archivo , en el cual se encuentra la información que buscamos. ifstream dato("datos.txt", ios::binary); bus=aux.posicion-1; dato.seekg(sizeof(struct estudiante)*bus, ios::beg); dato.read((char*) &auxi, sizeof(struct estudiante));
  • 29. - En las siguientes líneas llamamos a cada variable de alumno para poder mostrar la información del alumno que indique el usuario. cout<<"Carnet: "<<auxi.carnet<<endl; cout<<"Nombre: "<<auxi.nombre<<endl; cout<<"Edad: "<<auxi.edad<<endl; cout<<"Carrera: "<<auxi.carrera<<endl; dato.close(); - Luego debemos de detener el programa por un momento y eso lo logramos colocando la siguiente línea. system("PAUSE");
  • 30. - Como siguiente paso cerramos if comparación } - Cerramos while de final del archivo. } - Al finalizar la operación se cierra el archivo para la búsqueda. indic.close(); - se cierra el casa dos. break;
  • 31. - Empieza el caso 3 que nos permitirá eliminar datos. case 3: bus=0; if(bus==0){ - Se crean variables de tipo ifstream para lectura con la intención de abrir los archivos de datos e índice y poder realizar el proceso de eliminación de datos. ifstream eliminar("datos.txt", ios::binary); ifstream elim_ind("index.txt", ios::binary); ofstream temporal("temp.txt", ios::binary | ios::out); ofstream temp_ind("tempi.txt", ios::binary | ios::out);
  • 32. -Creamos un if el cual nos mostrara dos opciones indicándonos si hay error al abrir el archivo o de lo contrario pasaría a la búsqueda de la información que va a eliminarse. if(!eliminar || !elim_ind){ cout<<"Error al abrir el archivo"<<endl; }else{ cout<<"Ingrese el numero de carnet del alumno que desea borrar: "; cin>>opcion; while(!eliminar.eof()){ eliminar.read((char*) &auxi, sizeof(struct estudiante));
  • 33. - A continuación creamos un if para mostrar un texto en la consola indicando la eliminación del archivo del Área Principal.. if(auxi.carnet==opcion){ cout<<"El archivo se ha eliminado de datos"<<endl; }else{ temporal.write((char*) &auxi, sizeof(struct estudiante)); } }
  • 34. - A continuación se realiza el proceso para la eliminación de los datos en el Área de Índice. while(!elim_ind.eof()){ elim_ind.read((char*) &aux, sizeof(struct index)); if(aux.carnet==opcion){ cout<<"El archivo se ha eliminado de indice"<<endl; }else{ temp_ind.write((char*) &aux, sizeof(struct index)); } } }
  • 35. - En las siguientes líneas finalizamos el proceso de eliminación de datos. eliminar.close(); temporal.close(); elim_ind.close(); temp_ind.close(); } remove("datos.txt"); remove("index.txt"); rename("temp.txt", "datos.txt"); rename("tempi.txt", "index.txt"); - La siguiente línea detiene el programa un momento. system("PAUSE"); break;
  • 36. default: break; - Cerramos switch. } - Cerramos if para entrar a switch } } while(opcion>0 && opcion!=4); - La condición del do while es que se va a repetir el menú mientras la variable opción se mayor a cero(0) y también sea diferente de 4, en caso sea 0 o cuatro se sale del programa system("PAUSE"); - Aquí finaliza el programa }