Guia Laboratorio 10 algoritm

download Guia Laboratorio 10 algoritm

of 12

description

algoritmo y esturictura

Transcript of Guia Laboratorio 10 algoritm

  • 1/12

    Profesor: Ing. Felix Huari Curso: Algoritmos y Programacin

    GUIA DE LABORATORIO N 10

    EENNTTRRAADDAA//SSAALLIIDDAA DDEE AARRCCHHIIVVOOSS EENN CC++++ OBJETIVOS 1. Conocer y aplicar las funciones de entrada/salida de archivos en C++ 2. Aplicar el acceso secuencial y el acceso directo a los archivos

    Entrada/Salida en C++ Uno de los conceptos bsicos de C++ es el de stream o flujo, el cual puede definirse como un dispositivo que produce o consume informacin. Un flujo esta ligado a un dispositivo fsico(memoria, disco, monitor, etc). Cada vez que se ejecuta un programa C++ se abren automticamente tres flujos:

    cin : entrada estndar (teclado) cout: salida estndar (pantalla) cerr: salida de mensajes de error (pantalla)

    C++ dispone de dos jerarquas de clases para las operaciones de entrada/salida: una de bajo nivel, streambuf, que es utilizada por programadores expertos, y otra de alto nivel con las clases: istream, ostream e iostream, que derivan de la clase ios. En estas clases se disponen de variables y mtodos para controlar los flujos de entrada y de salida. Manipuladores de entrada/salida Las funciones width(), precision(), y fill(), estn declaradas en ios y definidas en las clases istream, ostream e iostream. La funcin miembro width() establece el ancho de salida de un dato. Cuando es necesario el sistema la aumenta de modo automtico. La funcin miembro precision() establece el nmero de cifras para un dato de salida. Cuando no se indica la precision por default es 6 dgitos. La funcin miembro fill() establece el carcter de relleno para un dato de salida. Por default el caracter de relleno es un blanco . Los manipuladores pueden tener argumentos o no tenerlos. Los manipuladores sin argumentos (endl, flush, etc.) estn definidos en iostream.h. Los que tienen argumentos estn definidos en iomanip.h. Un manipulador solo afecta al flujo (cin, cout, etc.) al que se aplica. Ver la tabla 1.

  • 2/12

    Profesor: Ing. Felix Huari Curso: Algoritmos y Programacin

    Tabla 1: Manipuladores de entrada/salida Manipulador Descripcin dec, hex, oct ws; endl; flush; setw(int w); setprecision(int p); setfill(char c); setios(long i) unsetios(int i)

    Establecer base para enteros Saltar los blancos iniciales Imprimir un \n y vaciar el buffer de salida Se vaca el buffer de salida Establecer ancho mnimo de campo Establecer numero de cifras Establecer un carcter de relleno Equivalente a setf() Equivalente a unsetf()

    Entrada/Salida de archivos Para almacenar y recuperar datos de un archivo creado en C++ se requieren tres elementos: Un archivo Un objeto en el flujo de archivos Un modo Un Archivo es un conjunto de datos relacionados que se guardan fsicamente bajo un nombre nico(nombre externo) en un dispositivo de memoria secundaria como discos, cintas CD ROM y similares.

    Un Objeto del flujo de archivos permite trabajar con el archivo externo. C++ permite trabajar con objetos de las clases ifstream y ofstream. Un objeto ifstream implica a los procedimientos de entrada de datos; mientras que un objeto de la clase ofstream implica a los procedimientos de salida de datos. Los objetos de flujo de archivo son el nombre interno del objeto archivo. Los objetos de estas clases se declaran como sigue, ifstream F1; // F1 es el objeto de flujo de archivo para entrada ofstream F2; //F2 es el objeto de flujo de archivo para salida Las clases ifstream y ofstream son derivadas de la clase fstream. Los objetos de flujo de archivo tienen acceso a funciones predeterminadas o mtodos definidos en sus respectivas clases. As; se tienen open() para abrir archivo, fail() averiguar si se realizo con xito la conexin al archivo y close() para cerrar el archivo entre otras que vera mas adelante. Todas estas funciones conectan el nombre externo del archivo con el nombre interno del archivo. Al respecto pruebe los siguientes programas Ejem 1. #include #include int main() {

    ifstream F1; //abrir archivo con un nombre externo

  • 3/12

    Profesor: Ing. Felix Huari Curso: Algoritmos y Programacin

    F1.open("Prueba.dat"); if (F1.fail()) //verificar si se abrio con exito {

    cout

  • 4/12

    Profesor: Ing. Felix Huari Curso: Algoritmos y Programacin

    Tabla 2: Indicadores de modo Indicador de modo Descripcin ios :: in ios :: out ios :: app ios :: ate ios :: binary ios :: trunc ios :: nocreate ios :: noreplace

    Abrir en modo de entrada de datos Abrir en modo salida de datos Abrir en modo agregar Ir al final de un archivo abierto Abrir en modo binario Elimina el contenido de un archivo si este existe Si el archivo no existe, fall abrirlo Si el archivo existe, fallo para abrir la salida de datos

    Lectura y escritura de archivos Los datos enviados al flujo de archivo de salida de datos pueden formatearse de la misma manera que se hace con el flujo estndar de salida de datos cout. Por ejemplo, si un flujo de salida de datos llamado F1 fue previamente declarado, se puede usar la siguiente instruccin F1

  • 5/12

    Profesor: Ing. Felix Huari Curso: Algoritmos y Programacin

    //establecer los formatos del flujo de archivo de salida de datos Fich

  • 6/12

    Profesor: Ing. Felix Huari Curso: Algoritmos y Programacin

    } //cerrar archivo mFile.close(); cout

  • 7/12

    Profesor: Ing. Felix Huari Curso: Algoritmos y Programacin

    if (F1.fail()) //verificar si se abrio con exito { cout

  • 8/12

    Profesor: Ing. Felix Huari Curso: Algoritmos y Programacin

    for(;strlen(cod)!=0;) { cout

  • 9/12

    Profesor: Ing. Felix Huari Curso: Algoritmos y Programacin

    int main() { char mFile[M]="Notas.txt"; char cod[8],ApePat[N],ApeMat[N],Nom[N],obs[11];

    char registro[T]; float n1,n2,n3,prom;

    ifstream F2; // Crea el objeto Archi para Lectura ofstream F1; // Crea el objeto Archi para Escritura F1.open(mFile); // Abre un archivo con un nombre externo if(F1.fail()) { cout

  • 10/12

    Profesor: Ing. Felix Huari Curso: Algoritmos y Programacin

    ACCESO DIRECTO (ALEATORIO) DE ARCHIVOS

    En el acceso aleatorio se puede leer directamente un carcter del archivo sin tener todos los caracteres almacenados antes que l. Para proporcionar acceso directo los objetos de la clase ifstream establecen un marcador de posicin de archivo, que es un entero largo que representa un desplazamiento desde el principio del archivo y guarda el rastro del sitio donde se debe leer o escribir el siguiente carcter. Tabla 4: Funciones del marcador de posicin de archivo Nombre Descripcin seekg(offset, modo) seekp(offset, modo) tellg(void) tellp(void)

    Para archivos de insumo de datos, se mueve a la posicin del desplazamiento como se indica en el modo. Para archivos de salida de datos, se mueve a la posicin del desplazamiento como se indica en el modo. Para archivos de insumo de datos, devuelve el valor actual del marcador de posicin en el archivo. Para archivos de salida de datos, devuelve el valor actual del marcador de posicin en el archivo.

    Ejem 8. /* Acceso Directo o aleatorio de archivos Paso de objeto flujo de archivos a funciones */ #include #include const int M = 13; //maximo de caracteres para el nombre const int L = 80; // linea de texto: 80 caracteres const int N = 5; // numero de lineas de texto en el archivo void Grabar(ofstream &); //pasar un objeto de la clase ofstream //programa principal int main() {

    char archi1[M]="texto.txt"; ofstream F1; F1.open(archi1); //abrir archivo para escritura if (F1.fail()) //verificar si se abrio con exito {

    cout

  • 11/12

    Profesor: Ing. Felix Huari Curso: Algoritmos y Programacin

    exit(1); } Grabar(F1); //llamar a la funcion

    system("PAUSE"); } void Grabar(ofstream& Fs) {

    int cont; // contador de lineas char linea[L]; cout

  • 12/12

    Profesor: Ing. Felix Huari Curso: Algoritmos y Programacin

    void Grabar(ofstream &mFile) {

    int cont; // contador de lineas char linea[L]; cout