Prof. Dr.Paul Bustamante

Documentos relacionados
Prof. Dr. Paul Bustamante

1. Juego del Ahorcado

Prof. Dr. Paul Bustamante

Prof. Dr. Paul Bustamante

Prof. Dr. Paul Bustamante

Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero.

PROGRAMACIÓN ORIENTADA A OBJETOS

TEMA 7: Ficheros. TEMA 7: Ficheros Concepto de fichero

Prof. Dr. Paul Bustamante

Prof. Dr. Paul Bustamante

Prof. Dr. Paul Bustamante

Entrada y salida de datos en C y C++

Prof. Dr. Paul Bustamante

Prof. Dr. Paul Bustamante

Escuela Politécnica Superior de Elche

#include <fstream.h> ifstream descriptor ( nombre.extensión ); ofstream descriptor ( nombre.extensión );

ALMACENAMIENTO PERSISTENTE DE DATOS

Prof. Dr. Paul Bustamante

Prof. Dr. Paul Bustamante

APUNTES PROII 2º PARCIAL.

Tema 3: Ficheros en C++ Índice. Notas. Programación 2. Curso Notas

Examen escrito de Programación 1

Contenidos. Archivos en C++ Archivos en C++ Introducción

Entrada / Salida de Datos en C++

Hoja de ejercicios del Tema 3

Tema 3: Ficheros en C++

1. Gestión de E/S. 2. Clases básicas. 3. E/S estándar. 4. Manejo de ficheros. Entrada/Salida en C++

Ficheros conceptos. Manejo de ficheros en C. Apertura del fichero Función fopen: nombre del fichero. Apertura del fichero Función fopen

Entrada y Salida vía Archivos

1. Introducción. 1.1 Ejercicio 1: Estación Meteorológica (4.0 pts.) Ejercicio 2: Gestión Académica: Alumnos (5.0 pts.)...

Prof. Dr. Paul Bustamante

Vectores y matrices. Fundamentos de Programación Fundamentos de Programación I

Fundamentos de Programción (I)

1. Ejemplo de clase : La clase Cuenta 2. Uso de la clase Cuenta. 3. Métodos y objetos receptores de mensajes (Importante)

Examen Junio- Grupo A Lunes 17 de Junio - Programación en C++ Pág. 1

Programación 1 Tema 3. Información, datos, operaciones y expresiones

El lenguaje de Programación C. Fernando J. Pereda

Programación de Computadores 4 Iteraciones y Decisiones. Prof. Javier Cañas. Universidad Técnica Federico Santa María Departamento de Informática

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática

Prof. Dr. Paul Bustamante

Introducción a las tablas Hash (I)

Introducción a C++ y Code::Blocks

Examen Fundamentos de Programación 15 de enero de 2016 Curso 2015/16

FUNDAMENTOS DE PROGRAMACIÓN. 1º ING. INFORMÁTICA (Plan 2000) 2ª Convocatoria. 21 de junio de 2001

Tema: Arreglos de Objetos en C++.

Tema 6: Memoria dinámica

Programación I Unidad III. Tema: Tipos, estructuras y uniones

Contenidos. Gestión dinámica de memoria. Gestión dinámica de memoria. Introducción. 1. Introducción 2. El operador NEW 3. El operador DELETE

Ficheros: texto y binarios

E/S POR CONSOLA DE C++ Parte I. Elementos Básicos Dr. Oldemar Rodríguez R.

Uso de archivos en C++

En el siguiente ejemplo se declara un registro y luego variables de ese tipo de registro:

Tema ADQUISICIÓN Y TRATAMIENTO DE DATOS. Departamento de Ciencias de la Computación e IA. Subprogramas en C

ARCHIVOS. 1. Introducción. 2. Definición de archivo. 3. Archivos de acceso secuencial. 4. Gestión de un archivo secuencial de estructuras

1 Estructura básica de un programa C++

Programación Estructurada

Tema 2: La clase string

Programación En Lenguaje C

Vectores. 27/05/05 Programación Digital I 1

Examen Septiembre Curso Programación en C++ Pág. 1

= RETURN =3 7-. ELSE K

8.1 Un primer bucle FOR Varias formas de utilizar el bucle FOR Calcular el factorial de un número mediante un bucle FOR...

Capítulo 1. Introducción al C Mi primer programa

Plantillas: un mecanismo de polimorfismo

Tema: Sobrecarga de Operadores.

En este artículo vamos a conocer los tipos de datos que podemos manejar programando en C.

Entrada y Salida en C++

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática

Índice ÍNDICE EJERCICIO 1: CÁLCULO FINANCIERO (5 PTOS.) EJERCICIO 2: AGENCIA DE COLOCACIONES (5 PTOS.)...4

Prof. Dr. Paul Bustamante

LA ESTRUCTURA DE DATOS PILA EN JAVA. CLASE STACK DEL API JAVA. EJEMPLO Y EJERCICIOS RESUELTOS. (CU00923C)

TEMA 8: Gestión dinámica de memoria

Elementos de un programa en C

MyOpenLab. Versión Manejo de datos en Matrices y Tablas.

Funciones. Parámetros por valor

Sistemas Operativos: Programación de Sistemas. Curso Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J.

Actividad colaborativa Ejercicios de programación Programación básica C++

Apuntadores en C y C++

Constantes. Las constantes no cambian durante la ejecucion de un programa en C++, en C++ existen 4 tipos de constantes:

UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE CIENCIAS PRACTICA DE PROCESOS HERRAMIENTAS

Práctica 3. Paso de parámetros entre subrutinas. 3. Consideraciones sobre el paso de parámetros

Se guardan en archivos con extencion c y los cabezales con extension h

Introducción al tipo de dato ARRAY

1. Sobrecarga de operadores. 2. Métodos operadores unarios Operador de incremento (prefijo)

FACULTAD DE INGENIERÍA

LEER Y ESCRIBIR ARCHIVOS DE TEXTO CON PHP. FUNCIONES FOPEN (MODOS), FGETS, FPUTS, FCLOSE Y FEOF. EJEMPLOS (CU00836B)

EQUIVALENCIAS EN C DE CONSTRUCCIONES SECUENICIALES EN PSEUDOCÓDIGO

Estructuras de Datos Declaraciones Tipos de Datos

Transcripción:

Prácticas de C++ Practica Nº 14 Informática II Fundamentos de Programación Prof. Dr.Paul Bustamante

Practica Nº 14 Programación en C++ Pág. 2 ÍNDICE ÍNDICE... 2 1. Introducción... 2 1.1 Ejercicio 1: Grabando a disco ficheros de texto con formatos... 2 1.2 Ejercicio 2: Agregando más cosas al fichero.... 3 1.3 Ejercicio 3: Leyendo mis ficheros... 3 1.4 Ejercicio 4: Lectura y escritura de ficheros Binarios.... 3 1.5 Ejercicio 5: Grabando datos de una gráfica en formato binario... 4 1.6 Ejercicio 6: Escribiendo y Leyendo Objetos de disco... 5 1. Introducción. Hemos llegado al final de la asignatura y no podemos terminar el curso sin poder escribir todos los datos de nuestros programas en un fichero. En esta práctica va a hacer ejercicios de formatos (para escribir en ficheros de texto, leerlos con cualquier editor de texto, ejemplo Notepad) y escribir y leer objetos a disco, utilizando el formato binario. 1.1 Ejercicio 1: Grabando a disco ficheros de texto con formatos. Este ejercicio consiste en hacer un programa que vaya pidiendo al usuario un nombre y la edad para ir generando un fichero que los escriba con el siguiente formato: Rafael...38 Juan...22 Ricardo...25 Carla...5 El nombre del fichero en el que desea guardar los datos también se le pide al usuario. A continuación se muestra el código del programa. Debes crear el proyecto Ejer1 y el fichero DiscoOut.cpp, en el que vas a copiar el siguiente código: // DiscoOut.cpp // #include <string.h> int main(int argc, char* argv[]) char nombre[80],filename[80]; int edad; cout << "Nombre del fichero a grabar:"; cin >> filename; ofstream fout(filename); //abrir el fichero if (!fout) cerr << "Error.."; return -1; fout.fill('.'); while(true) cout << "Nombre (salir-termina):"; cin >> nombre; if ( strcmp(nombre,"salir") == 0) break; cout << "Edad:"; cin >> edad; fout.width(15); fout.setf(ios::left); fout << nombre; fout.unsetf(ios::left); fout.width(4); fout << edad << endl; fout.close(); //escribe datos a disco //escribe datos a disco

Practica Nº 14 Programación en C++ Pág. 3 cout << "Datos grabados en: " << filename << endl; return 0; El fichero generado puedes abrirlo con el Notepad o con el mismo Visual Studio y verificar que obtienes los datos con el formato establecido. 1.2 Ejercicio 2: Agregando más cosas al fichero. Modificar el programa anterior para que pida además del nombre y de la edad, la dirección y el número de teléfono y que escriba en el fichero con el siguiente formato: Carla...5..Aizkorri 84...943215678 Juan...28..Manuel Lardizabal 15...943212800 Reservar para la dirección 30 caracteres (en la escritura, no en la variable) y para el teléfono 10 caracteres. Usar como variable para el teléfono un long. Para pedir la dirección, no se puede hacer con cin, ya que éste no acepta espacios. Hay que utilizar la función getline de cin: cin.getline(char *,int n): char dir[80]; long telefono;... cout << "Direccion:"; char ch; //sacar el enter cin.get(ch); cin.getline(dir,80);... Antes de usar getline, hay que usar la función get para atrapar el enter que se queda en el buffer de entrada. Puedes compilar el programa y crear tus nuevos ficheros, los cuales puedes ver con un editor de texto. 1.3 Ejercicio 3: Leyendo mis ficheros. Este ejercicio consiste en crear un programa que te permita leer un fichero del disco, cuyo nombre lo debes pedir al usuario, y sacarlo por la consola. Para esto debes usar la función getline(..), para que puedas leer una línea completa. char tmp[120]; char filename[80]; cout << "Nombre del fichero a leer:"; cin >> filename; ifstream fin(filename,ios::in ios::nocreate);//abrir fichero if (!fin) cerr << "Error.."; return -1; while(true) fin.getline(tmp,120); if ( fin.eof() ) break; //termina la lectura cout << tmp << endl; //escribir en la consola fin.close(); Crea un proyecto Ejer3 y el fichero DiscoIn.cpp, en el cual copiarás el código anterior. Para ejecutarlo, puedes darle como nombre del fichero a leer el mismo DiscoIn.cpp. 1.4 Ejercicio 4: Lectura y escritura de ficheros Binarios. En los ejercicios anteriores hemos escrito y leído de ficheros de texto. En este ejercicio vamos a escribir ficheros en binario, esto quiere decir que no se podrán leer desde un editor de texto,

Practica Nº 14 Programación en C++ Pág. 4 ya que por ejemplo el número 1298.456 se puede representar en una variable tipo float que ocupa 4 bytes. Si este número lo escribo en formato texto, voy a ocupar 8 bytes, incluido el punto decimal; en cambio si escribo los 4 bytes que representan la variable, ocuparé la mitad. Y esto multiplicado por las muchas variables que se manejan en un programa, se ahorra bastante espacio en el disco. #include <math.h> int main(int argc, char* argv[]) float val, PI=(float)3.141592; fstream foutt("datos.txt",ios::out); //fichero Texto fstream foutb("datos.dat",ios::out ios::binary); //fiche. Binario if (!foutt!foutb) cerr << "Error..." << endl; return -1; // generar datos (una grafica del seno, 4 ciclos y amplitud 5v.) //en incrementos de PI/10 foutt.precision(6); foutt.setf(ios::fixed); for (float i=0;i<8*pi;i+=pi/10) val = (float)(5.0*sin(i)); foutb.write((char*)&val,sizeof(float)); foutt << val << endl; foutb.close(); //cierra fichero Binario foutt.close(); //cierra fichero Texto cout << "He terminado.."; return 0; Este programa genera dos ficheros: datos.txt y datos.dat. Si ves las propiedades de cada uno, verás que datos.dat ocupa menos de la mitad que datos.txt. Trata de ver estos ficheros con un editor de texto qué ocurrirá? podrás ver bien los datos en ambos ficheros? El fichero datos.dat ocupa menos espacio en el disco porque está escrito en formato binario, es decir que se han escrito los cuatro bytes de cada valor. Crea un proyecto Ejer4 y el fichero BinarioOut.cpp para que copies el código que te he dado. Ahora tú debes hacer un programa para que lea del fichero datos.dat y saque por consola los valores obtenidos. Para ello puedes abrir el fichero de la siguiente forma: fstream finb("datos.dat",ios::in ios::binary); //fichero Binario Para leer puedes usar la función read(..) y la función eof() para detectar cuando has llegado al final del fichero. Puedes mirar los apuntes de clase para que te ayuden a hacerlo. 1.5 Ejercicio 5: Grabando datos de una gráfica en formato binario. El siguiente ejercicio consiste en hacer un programa que pida datos de Temperatura a lo largo del día (1 por cada hora) y que sea capaz de calcular la media de dichos datos y grabarlos al disco en formato binario, de tal forma que se puedan volver a leer y hacer el cálculo de la media nuevamente sin necesidad de volver a introducir los datos.

Practica Nº 14 Programación en C++ Pág. 5 1.6 Ejercicio 6: Escribiendo y Leyendo Objetos de disco Este ejercicio consiste en hacer un programa que permita grabar los objetos tipo Fecha. Para ello, hemos creado un array estático de objetos tipo Fecha, con lo cual no es necesario crear los objetos con el operador new. A continuación podemos ver el código: //Escribir y leer objetos #include <iostream.h> #include <iomanip.h> class Fecha short dia,mes,anyo; public: Fecha(short d=1, short m=1, short a=99): dia(d),mes(m),anyo(a) ; friend ostream &operator<<(ostream& co, Fecha &f) co.fill('0'); co <<setw(2)<<f.dia <<"/"<<setw(2)<<f.mes<<"/"<<f.anyo; return co; friend fstream& operator<<( fstream& fo, Fecha &f) fo.write( (char*)&f, sizeof(fecha)); return fo; friend fstream& operator>>( fstream &fi, Fecha &f) fi.read((char*)&f,sizeof(fecha)); return fi; ; #define NUM 30 void Leer(char *); void main() char name[80]; Fecha fechas[num]; //array estático de NUM objetos int num=0,opc; cout << "Leer(1) o Escribir(2):"; cin >> opc;... //pedir nombre del fichero if (opc==1) Leer(name); return; while(true) int d,m,a; cout << "Introd. Fecha (d m a):"; cin >> d >> m >> a; if (d==-1) break; fechas[num++] = Fecha(d,m,a); //asignar objeto Anónimo if (num >= NUM) break; for (int i=0;i<num;i++) cout << fechas[i] << endl; //escribir a disco fstream fout(name, ios::app ios::binary); //para agregar fechas for (int i=0;i<num;i++) fout << fechas[i]; fout.close(); void Leer(char *name) fstream fin("name,ios::in ios::nocreate ios::binary); if (!fin) cerr << "Error"; return; Fecha f; while(true) fin >> f; if (fin.eof())break; cout << f << endl;