datos de identificación - wordpress.com€¦ · asignación de atributos y comportamientos a cada...

44

Upload: others

Post on 11-Dec-2020

9 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Datos de Identificación - WordPress.com€¦ · Asignación de atributos y comportamientos a cada clase. Construcción del diagrama de clases. Elaboración de soluciones programadas,
Page 2: Datos de Identificación - WordPress.com€¦ · Asignación de atributos y comportamientos a cada clase. Construcción del diagrama de clases. Elaboración de soluciones programadas,

Datos de Identificación

Asignatura Programación I

Código 3154

Semestre Tercero

Área Programación

Programa Ingeniería en Informática

Departamento Sistemas

Fecha de Elaboración 08/03/2012

Fecha Última actualización 30/09/2014

Page 3: Datos de Identificación - WordPress.com€¦ · Asignación de atributos y comportamientos a cada clase. Construcción del diagrama de clases. Elaboración de soluciones programadas,

Primera Parte (Preliminares del Aprendizaje)

Introducción

Objetivos

Objetivo General

Objetivo Específico

Fuentes de Información

Evaluación de los aprendizajes

Page 4: Datos de Identificación - WordPress.com€¦ · Asignación de atributos y comportamientos a cada clase. Construcción del diagrama de clases. Elaboración de soluciones programadas,

Segunda Parte (Desarrollo del Aprendizaje)

Conocimientos Previos

¿Qué es un archivo?

Generalidades de los Archivos

Archivos de texto

Archivos de texto (tipos)

Operaciones asociadas a los archivos

Abrir

Entrada y Salida

Cerrar

Biblioteca para archivos en C++

Page 5: Datos de Identificación - WordPress.com€¦ · Asignación de atributos y comportamientos a cada clase. Construcción del diagrama de clases. Elaboración de soluciones programadas,

Vista General (Manipulación de archivos)

Métodos para Archivos de Texto

Métodos para Archivos de Texto (entrada)

Métodos para Archivos de Texto (salida)

¿Cómo trabajar con Archivos de Entrada?

¿Cómo trabajar con Archivos de Salida?

Page 6: Datos de Identificación - WordPress.com€¦ · Asignación de atributos y comportamientos a cada clase. Construcción del diagrama de clases. Elaboración de soluciones programadas,

Hasta ahora, los datos de entrada requeridos por un programa debían ser introducidos a través del teclado, de tal manera que cada vez que se ejecute el programa, los datos deben ser introducidos nuevamente.

Los datos se mantienen en memoria principal mientras se esta ejecutando el programa, pero se pierden al terminar la ejecución. Esto se debe, a que la memoria principal es una memoria temporal (volátil).

Page 7: Datos de Identificación - WordPress.com€¦ · Asignación de atributos y comportamientos a cada clase. Construcción del diagrama de clases. Elaboración de soluciones programadas,

La solución para no tener que introducir los datos por cada ejecución, además de que los datos no se pierdan, es almacenarlos en memoria secundaria (memoria permanente) haciendo uso de un archivo ó fichero.

Page 8: Datos de Identificación - WordPress.com€¦ · Asignación de atributos y comportamientos a cada clase. Construcción del diagrama de clases. Elaboración de soluciones programadas,

Construir soluciones programadas a problemas planteados, aplicando la metodología para el desarrollo de programas orientados a objetos, haciendo uso de archivos de texto como medio de almacenamiento secundario para entradas y salidas de datos.

1. Aplicar los conceptos de archivos.

2. Construir programas de aplicación haciendo uso de archivos.

3. Valorar las pruebas efectivas en la solución de los programas.

4. Asumir responsabilidades individuales.

Page 9: Datos de Identificación - WordPress.com€¦ · Asignación de atributos y comportamientos a cada clase. Construcción del diagrama de clases. Elaboración de soluciones programadas,

• Joyanes, L. 2006. Programación en C++. Algoritmos, estructuras de datos y objetos. 2a Edición. Mc Graw Hill, Interamericana de España, S.A.U.

En este texto se encuentra de forma detallada casi todo el contenido de la unidad.

• Joyanes, L. 1998. Programación Orientada a Objetos. 2a Edición. Mc Graw Hill, Interamericana de España, S.A.U.

Page 10: Datos de Identificación - WordPress.com€¦ · Asignación de atributos y comportamientos a cada clase. Construcción del diagrama de clases. Elaboración de soluciones programadas,

La evaluación de tu aprendizaje en esta unidad será de la siguiente manera:

Se indicaran algunos planteamientos o ejercicios como actividades. Igualmente estarán disponibles un conjunto de ejemplos y soluciones para profundizar y reforzar el manejo de los archivos de texto.

esta unidad se evaluará en la segunda evaluación práctica de 5 pts

Page 11: Datos de Identificación - WordPress.com€¦ · Asignación de atributos y comportamientos a cada clase. Construcción del diagrama de clases. Elaboración de soluciones programadas,

Para el estudio exitoso de esta unidad requieres tener el dominio de:

Metodología para el desarrollo de programas orientados a objetos.

Análisis del problema.

Comprensión del problema.

Identificación de los objetos involucrados.

Diseño orientado a objetos utilizando el patrón de diseño Modelo Vista Controlador.

Identificación de las clases.

Asignación de atributos y comportamientos a cada clase.

Construcción del diagrama de clases.

Elaboración de soluciones programadas, aplicando la metodología para el desarrollo de programas orientados a objetos y los conceptos de herencia.

Page 12: Datos de Identificación - WordPress.com€¦ · Asignación de atributos y comportamientos a cada clase. Construcción del diagrama de clases. Elaboración de soluciones programadas,

Es una estructura que facilita el lenguaje, para almacenar los datos en forma permanente (memoria secundaria).

La idea es que los datos sean transferidos de la memoria principal a una unidad de almacenamiento secundario (memoria secundaria), para posteriormente recuperarlos y trabajar con ellos.

Page 13: Datos de Identificación - WordPress.com€¦ · Asignación de atributos y comportamientos a cada clase. Construcción del diagrama de clases. Elaboración de soluciones programadas,

Desde el punto de vista informático, un archivo es una colección de datos que están almacenamos en un soporte magnético (disco duro, cd, pen drive,…), para poder manipularlos en cualquier momento.

Page 14: Datos de Identificación - WordPress.com€¦ · Asignación de atributos y comportamientos a cada clase. Construcción del diagrama de clases. Elaboración de soluciones programadas,

Todo archivo tiene dos nombres:

nombre físico nombre lógico

Nombre Físico: Es el nombre con el que se identifica el archivo en el medio de almacenamiento secundario (medio físico). Este nombre es único.

Ejemplo: el nombre de una persona en la partida de nacimiento.

Page 15: Datos de Identificación - WordPress.com€¦ · Asignación de atributos y comportamientos a cada clase. Construcción del diagrama de clases. Elaboración de soluciones programadas,

Nombre Lógico: Es el nombre con el que se identifica el archivo dentro del programa que trabajará con dicho archivo.

Un mismo archivo podría ser utilizado por diferentes programas, y para cada programa su nombre lógico podría ser distinto.

Ejemplo: Una persona puede tener diferentes apodos, depende del sitio donde se encuentre (en su casa, en su trabajo, con los amigos ...)

Desde el punto de vista informático es la declaración de una variable tipo archivo.

Page 16: Datos de Identificación - WordPress.com€¦ · Asignación de atributos y comportamientos a cada clase. Construcción del diagrama de clases. Elaboración de soluciones programadas,

Para C++

ifstream: representa el tipo de dato archivo de entrada (i : input, f: file)

ofstream: representa el tipo de dato archivo de salida (o : output, f: file)

Page 17: Datos de Identificación - WordPress.com€¦ · Asignación de atributos y comportamientos a cada clase. Construcción del diagrama de clases. Elaboración de soluciones programadas,

Uno de los tipos de archivos que soporta C++ es el archivo de texto.

Son aquellos archivos que están expresados en formato ASCII, no contienen caracteres de control, por tanto se puede ver su información utilizando comandos de sistema operativo, cualquier editor o procesador de textos.

Page 18: Datos de Identificación - WordPress.com€¦ · Asignación de atributos y comportamientos a cada clase. Construcción del diagrama de clases. Elaboración de soluciones programadas,

Los archivos de texto pueden utilizarse para almacenamiento de datos que posteriormente pueden ser manipulados por otros programas, o también, salida de resultados producidos por un programa (reporte), que podrían ser enviados a una impresora

Page 19: Datos de Identificación - WordPress.com€¦ · Asignación de atributos y comportamientos a cada clase. Construcción del diagrama de clases. Elaboración de soluciones programadas,

Entrada: Recuperan datos del archivo para el programa (leer datos desde el archivo)

Salida: Envían datos del programa hacia el archivo (escribir ó grabar datos en el archivo)

Page 20: Datos de Identificación - WordPress.com€¦ · Asignación de atributos y comportamientos a cada clase. Construcción del diagrama de clases. Elaboración de soluciones programadas,

Abrir: Para que un programa pueda leer y/o escribir datos en un archivo, este debe ser abierto. Es la operación que relaciona el nombre físico con el nombre lógico.

Operación de Entrada: Leer datos desde el archivo.

Operación de Salida: Grabar datos en el archivo.

Cerrar: Cuando se haya terminado de trabajar con el archivo, este debe ser cerrado. Una vez que se haya cerrado no se podrá seguir trabajando con él.

Page 21: Datos de Identificación - WordPress.com€¦ · Asignación de atributos y comportamientos a cada clase. Construcción del diagrama de clases. Elaboración de soluciones programadas,

# include <fstream>

File stream

(archivo de stream)

Page 22: Datos de Identificación - WordPress.com€¦ · Asignación de atributos y comportamientos a cada clase. Construcción del diagrama de clases. Elaboración de soluciones programadas,

Especificaciones Generales

En el archivo de texto, una línea mantiene un solo dato.

Están implementados los métodos para trabajar con archivos tipo texto de entrada y salida.

Incluye la librería fstream.

Todos los métodos requieren como parámetro el nombre lógico del archivo.

Sólo el método que permite abrir el archivo requiere dos parámetros que son: el nombre físico y el nombre lógico.

Page 23: Datos de Identificación - WordPress.com€¦ · Asignación de atributos y comportamientos a cada clase. Construcción del diagrama de clases. Elaboración de soluciones programadas,

/* Lee el nombre físico del archivo a nivel de teclado y si es necesario se puede incluir la ruta donde se localiza el archivo */

mensaje

void LeerNombreArchivo(string msj, char V[128])

nombre físico

NOTA: Este método se utiliza para cualquier

archivo sea de entrada o de salida

Page 24: Datos de Identificación - WordPress.com€¦ · Asignación de atributos y comportamientos a cada clase. Construcción del diagrama de clases. Elaboración de soluciones programadas,

/* Abre el archivo para entrada de datos. Retorna true si la operación fue exitosa (abrió el archivo), en caso contrario retorna false (hubo error al abrir el archivo) */

nombre lógico

bool AbrirArchivoEntrada(std::ifstream &archivo, char nombarch [128]);

nombre físico

Page 25: Datos de Identificación - WordPress.com€¦ · Asignación de atributos y comportamientos a cada clase. Construcción del diagrama de clases. Elaboración de soluciones programadas,

/* Lee una linea que contiene un dato de tipo alfanumérico (string), el cual es retornado y debe ser asignado a una variable de tipo (string) */

string LeerLineaArchivo (std::ifstream &archivo);

nombre lógico

Page 26: Datos de Identificación - WordPress.com€¦ · Asignación de atributos y comportamientos a cada clase. Construcción del diagrama de clases. Elaboración de soluciones programadas,

/* Lee una linea que contiene un dato de tipo alfanumérico (char), el cual es retornado y debe ser asignado a una variable de tipo (char) */

char LeerDatoCharArchivo(std::ifstream &archivo);

nombre lógico

Page 27: Datos de Identificación - WordPress.com€¦ · Asignación de atributos y comportamientos a cada clase. Construcción del diagrama de clases. Elaboración de soluciones programadas,

/* Lee una linea que contiene un dato de tipo numérico sin decimales, el cual es retornado y debe ser asignado a una variable int ó long */

/* Lee una linea que contiene un dato de tipo numérico con decimales, el cual es retornado y debe ser asignado a una variable de tipo float ó double */

long LeerDatoNroArchivo(std::ifstream &archivo);

double LeerDatoNroDecimalArchivo(std::ifstream &archivo);

Page 28: Datos de Identificación - WordPress.com€¦ · Asignación de atributos y comportamientos a cada clase. Construcción del diagrama de clases. Elaboración de soluciones programadas,

/* Chequea si el apuntador del archivo llego al final, retornando un dato bool. TRUE indica que ya llego al final y FALSE no ha llegado al final */

bool FinArchivo (std::ifstream &archivo);

// Cierra el archivo de entrada

void CerrarArchivoEntrada (std::ifstream &archivo);

Page 29: Datos de Identificación - WordPress.com€¦ · Asignación de atributos y comportamientos a cada clase. Construcción del diagrama de clases. Elaboración de soluciones programadas,

/* Abre el archivo para salida. Retorna true si la operación fue exitosa, en caso contrario retorna false (hubo error al crear el archivo) */

bool AbrirArchivoSalida(std::ofstream &archivo, char nombarch [128]);

nombre lógico

nombre físico

Page 30: Datos de Identificación - WordPress.com€¦ · Asignación de atributos y comportamientos a cada clase. Construcción del diagrama de clases. Elaboración de soluciones programadas,

// Graba en el archivo una linea de caracteres void GrabarLineaArchivo(std::ofstream &archivo, string linea); // Graba en el archivo una línea con un dato char void GrabarDatoCharArchivo(std::ofstream &archivo, char dato);

/* Graba en el archivo una línea con un dato numérico sin decimales (int, long) */ void GrabarDatoNroArchivo(std::ofstream &archivo, long nro);

Page 31: Datos de Identificación - WordPress.com€¦ · Asignación de atributos y comportamientos a cada clase. Construcción del diagrama de clases. Elaboración de soluciones programadas,

/* Graba en el archivo una línea con un dato numérico con decimales (float, double)*/

void GrabarDatoNroDecimalArchivo (std::ofstream &archivo, double nro);

// Cierra el archivo de salida

void CerrarArchivoSalida (std::ofstream &archivo);

Page 32: Datos de Identificación - WordPress.com€¦ · Asignación de atributos y comportamientos a cada clase. Construcción del diagrama de clases. Elaboración de soluciones programadas,

Crear el archivo de texto con los datos haciendo uso de cualquier editor.

En el controlador, específicamente en el método donde se trabajará con el archivo de entrada se debe:

Declarar una variable de tipo ifstream (nombre lógico)

ifstream nombrelogico;

Declarar una variable tipo:

char nombre_de_la_variable [número] (variable que almacena el nombre físico)

char nombrefisico[128];

Page 33: Datos de Identificación - WordPress.com€¦ · Asignación de atributos y comportamientos a cada clase. Construcción del diagrama de clases. Elaboración de soluciones programadas,

…en el método del controlador donde se trabajará con el archivo de entrada se debe…

Leer el nombre físico del archivo

vista.ImprimirMensaje(" \n\n Nombre

del archivo de datos: ");

cin >> nombrefisico;

NOTA: Si el archivo de datos NO se encuentra en

la misma carpeta donde se esta ejecutando el

programa (carpeta Debug), DEBE indicarse la ruta

de su ubicación por ejemplo C:\proy\datos.txt en

caso contrario no hace falta.

Page 34: Datos de Identificación - WordPress.com€¦ · Asignación de atributos y comportamientos a cada clase. Construcción del diagrama de clases. Elaboración de soluciones programadas,

…en el método del controlador donde se trabajará con el archivo de entrada se debe…

Abrir el archivo, para ello debe invocar el método de vista general que realiza esa tarea. Ese método retorna un bool que sirve para saber si la operación de apertura fue exitosa o no.

if (!vista.AbrirArchivoEntrada(nombrelogico,nombrefisico)) { vista.ImprimirMensaje("\n ERROR: No existe el archivo \n"); vista.Pausa (); return; }

Page 35: Datos de Identificación - WordPress.com€¦ · Asignación de atributos y comportamientos a cada clase. Construcción del diagrama de clases. Elaboración de soluciones programadas,

…en el método del controlador donde se trabajará con el archivo de entrada se debe…

Leer el dato que se encuentra en la primera línea del archivo y verificar inmediatamente si el archivo llegó a su fin, para ello debe invocar los métodos de vista general que realicen esas tareas respectivamente. El propósito es determinar que hayan datos para procesar

variable1= vista.LeerLineaArchivo(nombrelógico);

if (vista.FinArchivo(nombrelógico)) { vista.ImprimirMensaje("\n ERROR: El archivo no tiene datos\n\n"); vista.Pausa (); return; }

Page 36: Datos de Identificación - WordPress.com€¦ · Asignación de atributos y comportamientos a cada clase. Construcción del diagrama de clases. Elaboración de soluciones programadas,

…en el método del controlador donde se trabajará con el archivo de entrada se debe…

Crear un ciclo que leerá los datos del archivo, la condición de fin la ejecuta el método

FinArchivo(nombrelogico)

de VGeneral.

while (!vista.FinArchivo (nombrelógico))

NOTA: Debemos declarar las variables que

recibirán los datos del archivo.

Page 37: Datos de Identificación - WordPress.com€¦ · Asignación de atributos y comportamientos a cada clase. Construcción del diagrama de clases. Elaboración de soluciones programadas,

…en el método del controlador donde se trabajará con el archivo de entrada en el ciclo…

while (!vista.FinArchivo (nombrelógico))

{ /* Leer los datos del archivo que se corresponde con la

instancia del objeto */

variable2=vista.LeerDatoNroArchivo(nombrelogico); ::::::::::

variablen=vista.LeerDatoNroArchivo(nombrelogico);

/* … proceso que se requiere con los datos del archivo*/

variable1= vista.LeerLineaArchivo(nombrelógico);

} // fin del ciclo

NOTA: Ya adentro del ciclo, se comienza a leer el dato que se

encuentra en la segunda línea del archivo y así

sucesivamente hasta llegar al último. Luego, antes de

salir del ciclo, nuevamente se debe leer el dato que de

primero comenzó la secuencia en el archivo.

Page 38: Datos de Identificación - WordPress.com€¦ · Asignación de atributos y comportamientos a cada clase. Construcción del diagrama de clases. Elaboración de soluciones programadas,

…en el método del controlador donde se trabajará con el archivo de entrada se debe…

Al finalizar el ciclo debemos cerrar el archivo. La operación de cerrar la ejecuta el método

CerrarArchivoEntrada(nombrelogico)

de VGeneral.

vista.CerrarArchivoEntrada(nombrelogico);

En este momento hemos culminado el trabajo con el archivo de entrada.

Page 39: Datos de Identificación - WordPress.com€¦ · Asignación de atributos y comportamientos a cada clase. Construcción del diagrama de clases. Elaboración de soluciones programadas,

En el controlador, específicamente en el método donde se trabajará con el archivo de salida se debe:

Declarar una variable de tipo ofstream, que representa el (nombre lógico)

ofstream nombrelogico;

Declarar una variable tipo:

char nombre_de_la_variable [número] (variable que almacena el nombre físico)

char nombrefisico[128];

Page 40: Datos de Identificación - WordPress.com€¦ · Asignación de atributos y comportamientos a cada clase. Construcción del diagrama de clases. Elaboración de soluciones programadas,

…en el método del controlador donde se trabajará con el archivo de salida se debe…

Leer el nombre físico del archivo

vista.ImprimirMensaje(" \n\n Nombre

del archivo: ");

cin >> nombrefisico;

NOTA: Si se requiere que el archivo se grabe en un

sitio distinto de donde se encuentra el ejecutable del

programa (carpeta Debug), se DEBE indicar la ruta,

por ejemplo: C:\proy\salida.txt, en caso contrario, no

hace falta.

Page 41: Datos de Identificación - WordPress.com€¦ · Asignación de atributos y comportamientos a cada clase. Construcción del diagrama de clases. Elaboración de soluciones programadas,

…en el método del controlador donde se trabajará con el archivo de salida se debe…

Abrir el archivo, para ello debe invocar el método de vista general que realiza esa tarea. Ese método retorna un bool que sirve para saber si la operación de apertura fue exitosa o no.

if (!vista.AbrirArchivoSalida(nombrelogico,nombrefisico)) { vista.ImprimirMensaje("\n ERROR: No se puede crear el archivo \n"); vista.Pausa (); return; }

Page 42: Datos de Identificación - WordPress.com€¦ · Asignación de atributos y comportamientos a cada clase. Construcción del diagrama de clases. Elaboración de soluciones programadas,

…en el método del controlador donde se trabajará con el archivo de salida se debe…

Crear un ciclo donde se grabarán los datos en el archivo.

do { /*proceso para obtener los datos que se grabarán en el archivo */ :::::::::: vista.GrabarLineaArchivo(nombrelogico,variable1); :::::::::: vista.GrabarDatoNroArchivo….. } while (….);

Page 43: Datos de Identificación - WordPress.com€¦ · Asignación de atributos y comportamientos a cada clase. Construcción del diagrama de clases. Elaboración de soluciones programadas,

…en el método del controlador donde se trabajará con el archivo de salida se debe…

Al finalizar el ciclo debemos cerrar el archivo. La operación de cerrar la ejecuta el método

CerrarArchivoSalida(nombrelogico)

de VGeneral.

vista.CerrarArchivoSalida(nombrelogico);

En este momento hemos culminado el trabajo con el archivo de salida.

Page 44: Datos de Identificación - WordPress.com€¦ · Asignación de atributos y comportamientos a cada clase. Construcción del diagrama de clases. Elaboración de soluciones programadas,

Debes revisar en la Zona de Recursos de esta Unidad, el directorio Material Didáctico, en donde se presenta un planteamiento (Ejercicio Aplicación Unidad VI Planteamiento Vacaciones Empleados), del cual se hace el análisis del problema para finalmente desarrollar el programa en el lenguaje de programación.

Este proyecto lo puedes encontrar desarrollado en la Zona de Recursos, directorio Ejercicios Demostrativos.