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

Documentos relacionados
Laboratorio 5 Tema 7. Tipos de Datos Estructurados: Arreglos, Registros y Archivos

Laboratorio 5 Tema 7. Tipos de Datos Estructurados: Arreglos, Registros y Archivos

Índice. Estructuras de datos en Memoria Principal. Vectores. Matrices. Cadenas de caracteres. Estructuras. Estructuras de datos en Memoria Externa

LABORATORIO #1 INTRODUCCIÓN AL LENGUAJE DE PROGRAMACIÓN C++

Programación 1 Tema 5. Instrucciones simples y estructuradas

UNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO.

Programación 1 Tema 4. Diseño de programas elementales

Examen escrito de Programación 1

Examen escrito de Programación 1

Fundamentos de la programación

Examen escrito de Programación 1

Programación 1. Tema II. Diseño de los primeros programas. Lección 4. Diseño de algunos programas elementales

Programación 1 Tema 5. Instrucciones simples y estructuradas

Estructuras y clases. Dept. Ciencias de la Computación e I.A. Universidad de Granada

Manejo de archivos en C++

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

Programación 1 Tema 7. Desarrollo modular y descendente de programas

Macros LENGUAJE DE PROGRAMACIÓN ESTRUCTURADO

UTN FRBA Algoritmos y Estructura de Datos Examen Final 13/02/2015. Apellido y nombre: Legajo: Cursó con Prof:

Prof. Dr. Paul Bustamante

Examen de prácticas de Programación 1

Entrada y salida de datos en C y C++

Examen Principios de Programación Febrero 2012

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

República Bolivariana de Venezuela Aldea Universitaria Liceo Fray Pedro de Agreda Trayecto II Desarrollo de Software

Tema 13: Apuntadores en C

Tema: Plantillas en C++.

Técnicas Informáticas PRÁCTICA 7 Curso PRÁCTICA 7: Cadenas y Estructuras.

ESTRUCTURAS. Struct Identificador_ tipo_estructura { Tipo miembro_1; /*Declaración de los miembros*/

Fundamentos de la programación

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

Introducción a c++ Introducción a la programación EIS Informática III

ALMACENAMIENTO PERSISTENTE DE DATOS

Programación 1. Tema II. Diseño de programas elementales. Lección 7. Diseño modular y descendente de programas

Tema 1. Programación modular. Programación Avanzada Ingeniería Técnica en Informática de Gestión Jorge Badenas

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

Teoría 8: Segunda Parte. Estructuras de Datos y Funciones de Entrada en Lenguaje C

Tema 3. Estructuras de control

República Bolivariana de Venezuela Aldea Universitaria Fray Pedro de Agreda PNFSI. Introducción a lenguaje C++. Parte IV Ciclos iterativos

Funciones Propias con C++ (funciones definidas por el usuario)

Objetivos. El alumno conocerá y aplicará el concepto de archivo para el almacenamiento y recuperación de datos persistentes.

Subrutinas o Funciones

Tema 10: Arreglos estáticos en C

Cadenas y Estructuras

Archivos en lenguaje C

Tema: Punteros a Objetos. Puntero this.

Objetivo N 2. Conocer la Estructura General de un Programa en C++ Estructura de Datos Prof. Egilde Márquez

Algorítmica y Lenguajes de Programación. Ficheros

Tema 5 Archivos o Ficheros

Cálculo del histograma de una imagen

Elementos de un programa en C

Cadenas (strings) y Estructuras

Tema 5 Archivos o Ficheros

Programación I Teoría : Entrada/Salida - Archivos.

Lenguaje C. República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS ESCUELA DE COMPUTACION

PROGRAMACIÓN ORIENTADA A OBJETOS

Estructura de Datos L I S T A

La Herencia. La primera línea de cada declaración debe incluir la sintaxis siguiente:

Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C++ Sesión 2

Programación 1. Tema II. Diseño de programas elementales. Lección 7. Diseño modular y descendente de programas

UNIDAD 4 ESTRUCTURAS Y UNIONES

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

Cátedra I Informática Autor I Carlos Bartó

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

Tema 3: Ficheros en C++

Tema 14: Arreglos estáticos en C

Programación 1. Tema I. Conceptos y elementos básicos de Programación. Lección 2. Lenguaje de programación y ejecución de un programa

Objetivos. El alumno conocerá y aplicará el concepto de apuntador para la realización de programas de manejo eficiente de memoria.

Tema 16: Tipos de datos estructurados en lenguaje C

Fundamentos de programación

// el módulo tiempo // el módulo subtitulo // el módulo herramientas

PROGRAMACIÓN ORIENTADA A OBJETOS

Unidad IV Arreglos y estructuras. M.C. Juan Carlos Olivares Rojas

Programación 1. Tema V Clase de problemas. Desarrollo de un módulo de biblioteca C++ para trabajar con conjuntos de letras

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

Informática PRÀCTICA 2 Curs

Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C++ Sesión 1

Formatos para prácticas de laboratorio

Sintaxis de los aspectos generales de un lenguaje de programación

PROGRAMACIÓN N C++ CONSTRUCTORES PROG.C++ L11 CONSTRUCTORES DEL LENGUAJE

Programación 2. Grado en Estadística Aplicada. Curso Generación de números pseudoaleatorios. Manejo de ficheros de texto.

Unidad 2. La lógica de programación. Tema 4. Arreglos y estructuras de repetición

1. Presentación del lenguaje C Creado en 1972 por D. Ritchie Lenguaje de propósito general Portátil o transportable (generalmente) Inicialmente de niv

Estructuras. //identificador del cliente

Apuntadores en C/C++ INTRODUCTION TO PROGRAMMING

República Bolivariana de Venezuela Aldea Universitaria Liceo Fray Pedro de Agreda. Lenguaje C++ Contadores y Acumuladores

Universidad Don Bosco (UDB) Facultad de Ingeniería / Escuela de Computación

Lenguaje de Programación

Apuntadores en C y C++

Estructuras Enlazadas AyED UTN-BA

Tema: Arreglos de Objetos en C++.

Tema: Funciones Virtuales y Polimorfismo.

Tema: Funciones Virtuales y Polimorfismo.

Objetivo El alumno conocerá y aplicará los conceptos de arreglo y estructura en la realización de programas que resuelvan problemas de tipo numérico.

Transcripción:

LABORATORIO #6 (Parte I y II) REGISTROS Y ARCHIVOS Parte I: Registros Un registro es una estructura de datos formado por un conjunto de elementos llamados campos, no necesariamente del mismo tipo y que permiten almacenar una serie de datos relacionados entre sí bajo un nombre común. Declaración Un registro se declara de la siguiente manera: Tipo Registro <identificador> = <Tipo de dato> 1 <Identificador> 1 ; <Tipo de dato> 2 <Identificador> 2 ;... <Tipo de dato> N <Identificador> N ; Fregistro; struct <identificador> { <tipo de dato> 1 <Identificador> 1 ; <tipo de dato> 2 <Identificador> 2 ;... <tipo de dato> N <Identificador> N ; ; En el siguiente ejemplo se declara un registro y luego variables de ese tipo de registro: //Se declara un tipo registro Tipo Registro Producto = String nombre; Entero cantidad; Real precio; Real peso; Fregistro; //Se declaran las variables de tipo producto Producto prod1, prod2; //Se declara un tipo registro struct producto { string nombre; int cantidad; float precio; float peso; ; //Se declaran las variables de tipo producto producto prod1, prod2; Operaciones A los registros se le pueden aplicar varias operaciones, como aplicar la operación constructora para inicializarlos o la operación selectora para cambiar los valores de los campos. Utilizando el registro y las variables declaradas en ejemplo anterior, se pueden aplicar las siguientes operaciones: 1

y //Se inicializa prod1 utilizando la operación constructora prod1 = { Cámara digital, 5, 800.0, 0.5; //Se inicializa prod2 utilizando la operación selectora para cada campo prod2.nombre = Impresora inalámbrica ; prod2.cantidad = 2; prod2.precio = 580.0; prod2.peso = 7.0; //Se incrementa el campo cantidad de prod1 prod1.cantidad = prod1.cantidad + 1; Pase de parámetros Para pasar un registro como parámetro a una acción o función se puede hacer de la siguiente manera: //AL DEFINIR LA ACCIÓN O FUNCIÓN: void proc(producto p){ //p es el registro de tipo producto previamente declarado //Cuerpo de la acción //AL INVOCAR A LA ACCIÓN: //se debe tener el arreglo declarado producto p3; //se invoca a la acción proc(p3); Ejemplo: A continuación se presenta un ejemplo donde se define un registro el cual representa cartas, indicando el número o cara de las cartas, así como también la pinta o palo. Este algoritmo permite definir un arreglo del tipo carta, para manejar así las cartas que forman parte de un mazo. 2

#include <iostream> using namespace ::std; /* definición de la estrcutura carta */ struct carta { string cara; /* define el campo cara */ string palo; /* define el campo palo */ ; /* fin de la estructura carta */ void llenacarta( carta wcarta[],string wcara[], string wpalo[] ); int main(){ carta mazo[52]; /* define el arreglo carta */ int i,j; /* inicializa el arreglo de cadena de caracteres */ string cara[] = { "As", "Dos", "Tres", "Cuatro", "Cinco", "Seis", "Siete", "Ocho", "Nueve", "Diez", "Joto", "Quina", "Rey"; /* inicializa el arreglo de apuntadores */ string palo[] = { "Corazones", "Diamantes", "Treboles", "Espadas"; llenacarta( mazo, cara, palo ); /* carga el mazo con las cartas */ /* Mostrar las primeras 3 cartas de cada palo */ for(i=0;i<4;i++){ for(j=0;j<3;j++){ cout << mazo[j+i*13].cara << " de " << mazo[j+i*13].palo << endl; return 0; /* fin de main */ /* coloca cadenas dentro de las estructuras Carta */ void llenacarta( carta wcarta[], string wcara[], string wpalo[] ){ int i; /* ciclo a través de wcarta */ for ( i = 0; i <= 51; i++ ) { wcarta[i].cara = wcara[ i % 13 ]; wcarta[i].palo = wpalo[ i / 13 ]; /* fin de for */ /* fin de la función llenacarta */ Ejercicios 1. Proporcione la definición de los registros para cada uno de los siguientes casos: a. El registro fecha que contiene tres enteros dia, mes y año (anio). b. El registro persona que contiene dos cadenas de caracteres nombre y apellido, un campo del tipo fecha (definido previamente) fecha_de_nacimiento. 3

2. Partiendo de los registros definidos previamente, desarrolle un algoritmo en el cual se definan dos variables correspondientes a dos personas, solicite la información necesaria al usuario para asignarle los valores de nombre, apellido y fecha de nacimiento de cada uno y luego muestre la información por pantalla. Haga uso de procedimientos. Parte II: Archivos Un archivo es una secuencia de elementos del mismo tipo, que residen generalmente en memoria auxiliar. Los archivos son utilizados cuando se desea que los datos puedan recuperarse aún después de haber apagado la máquina y también cuando se manejan grandes volúmenes de información. Declaración Antes de empezar a utilizar un archivo se debe declarar una variable que haga referencia al archivo con el que se va a trabajar. A continuación se muestra como se puede hacer: //Declaración de dos archivos Archivo archivoentrada, archivosalida; //Inclusión de bibliotecas #include <fstream> using namespace std;... //Declaración de dos archivos fstream archivoentrada, archivosalida; Operaciones Al trabajar con archivos secuenciales se pueden realizar diversas operaciones tales como: Abrir el archivo: se debe hacer antes de hacer otras operaciones en le archivo. Cerrar el archivo: se debe hacer cuando se termina de utilizar el archivo. Verificar el fin del archivo (FDA o EOF). Leer del archivo. Escribir en el archivo. A continuación se muestran ejemplos de estas operaciones utilizando los archivos declarados anteriormente. 4

Ejemplo de abrir archivos: //Abrir archivo de texto para lectura AbrirArchivo(archivoEntrada, prueba1.txt, Lectura y Texto); //Abrir archivo de texto para escritura AbrirArchivo(archivoSalida, prueba2.txt, Escritura y Texto); //Abrir archivo de texto para lectura archivoentrada.open( prueba1.txt, ios::in); //Abrir archivo de texto para escritura archivosalida.open( prueba2.txt, ios::out); Ejemplo de lectura de un archivo caracter por caracter (asumiendo que el archivo está abierto y es de lectura): //Se declara un caracter Caracter c; //Mientras no sea el fin del archivo Mientras NO FDA(archivoEntrada) //se lee una línea y se guarda en c LeerArchivo(archivoEntrada, c); //se muestra el caracter leído Escribir(c); Fmientras //Se cierra el archivo CerrarArchivo(archivoEntrada); //Se declara un caracter char c; //Mientras no sea el fin del archivo while(!archivoentrada.eof()){ //se lee una línea y se guarda en c archivoentrada >> c; //se muestra el caracter leído cout << c; //Se cierra el archivo archivoentrada.close(); Ejemplo de escritura en un archivo (asumiendo que el archivo está abierto y es de escritura): //Se declara un String y se inicializa String cad; cad = segunda línea de escritura ; //Se escribe la primera línea EscribirArchivo(archivoSalida, primera escritura ); //Se escribe la segunda línea EscribirArchivo(archivoSalida, cad); //Se cierra el archivo CerrarArchivo(archivoSalida); //Se declara un string y se inicializa string cad; cad = segunda línea de escritura ; //Se escribe la primera línea archivosalida << primera escritura << endl; //Se escribe la segunda línea archivosalida << cad << endl; //Se cierra el archivo archivosalida.close(); 5

Ejemplos: 1.- El siguiente ejemplo permite leer la información almacenada en un archivo info.dat : #include <iostream> #include <fstream> using namespace ::std; int main(){ string nombre; float monto; fstream archivo; // Declaración para el archivo clientes.dat archivo.open( "info.dat", ios::in ); if (!archivo.is_open()){//se verifica si el archivo se ha abierto o no cout << "No se pudo abrir el archivo" << endl; else { while (!archivo.eof()){ archivo >> nombre; archivo >> monto; cout << nombre << ": " << monto << endl; archivo.close(); // cierra el archivo return 0; /* fin de main */ Toma en consideración que para ejecutar este ejemplo debes contar con un archivo info.dat, el cual puede tener inicialmente los siguientes valores: Maria 20.4 Jose 17.4 Pedro 56.7 Carlos 67.1 6

2.- El siguiente ejemplo permite crear un archivo e ingresar la información en un archivo info.dat. #include <iostream> #include <fstream> #include <stdio.h> #include <stdlib.h> using namespace ::std; int main(){ int i; string nombres[]={"maria","jose","victor","manuel"; float montos[]={323.2,643.5,231.6,784.7; fstream archivo; // Declaración para el archivo clientes.dat archivo.open( "info.dat", ios::out ); if (!archivo.is_open()){//se verifica que el archivo se haya abierto o no cout << "No se pudo abrir el archivo" << endl; else { for(i=0;i<4;i++){ archivo << nombres[i] << " " << montos[i] << endl; //Escribe la información en el archivo archivo.close(); // cierra el archivo return 0; /* fin de main */ Ejercicios: 1.- Considere que usted es el dueño de una tienda de herramientas y necesita mantener un inventario que le permita llevar un control mínimo de cuáles herramientas tiene, cuántas tiene y el costo de cada una. Escriba un programa que: a.- le permita listar todas sus herramientas b.- le permita introducir nuevas herramientas. c.- le permita actualizar la información de la cantidad de una herramienta en particular. Almacene la información en un archivo identificado como inventario.txt y considere que el mismo tiene la siguiente información inicialmente: #Registro Descripción Cantidad Costo 1 Martillo 5 55.0 2 Llave 10 73.5 3 Serrucho 14 24.4 4 Destornillador 4 56.7 7

Fuentes: Tema 7. Tipos de datos estructurados. Profa. Yusneyi Carballo. http://www.ciens.ucv.ve/algoritmosyprogramacion/documentos/profayusneyi_tema7_tiposdatosestructurad os.doc Language Tutorial: Data Structures. Juan Soulie. http://www.cplusplus.com/doc/tutorial/structures/ Language Tutorial: Input / Output with files. Juan Soulie. http://www.cplusplus.com/doc/tutorial/files/ Prep. Daniel Romero. GDAP, Nov. 2010 Rev. Prof. Adriana Liendo, Jun. 2010 8