Académique Documents
Professionnel Documents
Culture Documents
1. Flujos.
Introduccin:
Todos los programas realizados a lo largo de esta unidad de aprendizaje, obtienen la informacin
(datos) necesaria para su ejecucin de la entrada estndar de la computadora (teclado) y muestran
el o los resultados de dicha ejecucin en la salida estndar de la computadora (pantalla). No
obstante, hay situaciones en las que es necesario que el programa reciba o envi informacin desde
o hacia un archivo, el cual puede ser almacenado en el disco duro de la computadora. Para hacer
esta tarea posible, el Lenguaje de programacin C++ prove al programador una herramienta eficaz
y sencilla de utilizar llamada Flujos.
Nota: Antes de empezar este apartado es importante que se te recuerde que tienes que realizar,
editar y compilara todos los cdigos fuente que se te vayan explicando.
La comunicacin entre un programa escrito en Lenguaje C++ y el origen o el destino de la
informacin con que este programa realiza su trabajo se realiza mediante un flujo de informacin.
Se le llama flujo de informacin (stream) a un objeto cuyo trabajo es servir como intermediario entre
el programa y el origen o el destino de la informacin es por medio de este objeto que el programa
puede leer o escribir informacin sin importar hacia donde se dirige o el lugar de donde proviene
El Lenguaje de programacin C++ define, en su espacio de nombres std ofrece -varias clases de
objetos, mismas que poseen atributos y mtodos que permiten escribir en un archivo o leer desde un
archivo. Enseguida se muestran los nombres y una breve descripcin de dos de estas clases de
objetos con que cuenta el Lenguaje de programacin C++.
a) Clase ofstream
La clase de objetos ofstream es una clase derivada a partir de la clase de objetos llamada ostream.
ofstream se especializa en crear y abrir un archivo y escribir dentro de l, esta clase de objetos
posee varios mtodos, uno de los ms importantes es el siguiente:
Nombre
Sintxis
Descripcin
voidopen(constchar*,int=ios::out,
Open
Permite crear y abrir un
int=filebuf::openprot);
archivo, para escritura.
Para poder utilizar el mtodo Open es necesario declarar un objeto que pertenezca a la clase de
objetos ofstream, como se muestra enseguida:
ofstream objeto;
Un objeto perteneciente a la clase de objetos ofstream acta como intermediario entre el programa y
el destino de la informacin, en el caso de un objeto creado a partir de la clase ofstream el destino de
la informacin es un archivo que se almacenar en el mismo directorio que el archivo con extincin
.cpp que contiene el cdigo fuente del programa.
Para crear un flujo de informacin hacia un archivo por medio de un objeto de la clase ostream se
deben escribir las siguientes lneas de cdigo:
objeto.open("ARCHIVO.doc",ios::app);
objeto<<" Tu primer archivo"<<endl;
Como puedes observar por medio del operador punto (.) se invoca al mtodo llamado open(),
perteneciente a un objeto, como argumento de este mtodo se escribe el nombre del archivo y su
extensin en medio del operador comilla doble (), separado por medio del operador coma (,) se
accedi al objeto llamado app de la clase de objetos llamada ios, por medio del operador resolucin
de mbito (::), es muy importante acceder a dicho objeto ya que de esta forma se crear un archivo
llamado ARCHIVO con extensin .doc (este archivo se abrir con la aplicacin Microsoft Word), y
abrir el archivo creado, el programa buscar el final del archivo y enseguida por medio de objeto y
el operador de insercin se escribir la cadena de texto: Tu primer archivo (sin la comilla doble).
Observa que para escribir dentro del archivo con extensin .doc creado no se utiliz al objeto cout
pero si al operador de insercin (<<).
Depus de escribir dentro del archivo creado es necesario cerrar el archivo, para realizar esta accin
se utiliza al mtodo close() de esta forma:
objeto.close();
El mtodo close() es invocado por medio del operador punto (.) y su trabajo es cerrar el archivo
llamado ARCHIVO con extensin .doc
El cdigo fuente del programa descrito anteriormente es el siguiente:
Video 1
Como puedes observar, es muy sencillo crear archivos y almacenar informacin dentro de los
mismos utilizando el Lenguaje de programacin C++.
b) Clase fstream
La clase de objetos fstream es una clase derivada a partir de la clase de objetos llamada iostream,
esta clase de objetos se especializa en leer dentro de un archivo abierto para este propsito. Esta
clase de objetos posee varios mtodos, uno de los ms importantes es el siguiente:
Nombre Sintais
Descripcin
Open
Permite
abrir
un
archivo, para lectura.
Para poder utilizar el mtodo Open , es necesario declarar un objeto que pertenezca a la clase de
objetos fstream, como se muestra a continuacin:
fstream objeto2;
Recuerda que la clase de objetos fstream permite implementar un flujo (stream) para abrir un archivo
y leer dentro el contenido del mimo. Un objeto perteneciente a la clase de objetos fstream acta
como intermediario entre el programa y el origen de la informacin, en el caso de un objeto creado a
partir de esta clase fstream el origen de la informacin es un archivo almacenado en el mismo
directorio que el archivo con extensin .cpp que contiene el cdigo fuente del programa.
Para crear, abrir y leer un archivo por medio de un objeto de la clase fstream se deben escribir las
siguientes lneas de cdigo:
char cadena[81];
objeto2.open("ARCHIVO.doc",ios::in);
while(objeto2.getline(cadena, 81) != NULL)
{ cout << cadena << endl; }
Explicacion:
La primera lnea e cdigo declara un arreglo de caracteres de tamao igual a ochenta y uno llamado
cadena, este arreglo de caracteres recibir y almacenar la informacin (caracteres) proveniente de
un archivo ya existente.
En la segunda lnea de cdigo puedes observar que por medio del operador punto ( .) se invoca al
mtodo llamado open(), perteneciente a objeto2, como argumento de este mtodo se escribe el
nombre del archivo y su extensin en medio del operador comilla doble (), este es el archivo que se
abrir con el objetivo de que el programa escrito en Lenguaje C++ lea su contenido, separado por
medio del operador coma (,) se accedi al objeto llamado in de la clase de objetos llamada ios, por
medio del operador resolucin de mbito (::), es muy importante acceder a dicho objeto ya que de
esta forma el archivo llamado ARCHIVO con extensin .doc se abrir en modo de solo lectura.
Hasta este momento el programa nicamente ha abierto el archivo llamado ARCHIVO.doc, las lneas
de cdigo implementadas para leer el contenido de este archivo son las escritas en la tercera y
cuarta lnea de cdigo, estas son implementadas por medio de la sentencia de control while, misma
que invoca al mtodo llamado getline() de objeto2 a travs del operador punto (.), este mtodo leer
el contenido de ARCHIVO.doc y lo almacenar dentro del arreglo de caracteres llamado cadena,
mientras el mtodo getline() no encuentre el final del archivo se estar imprimiendo en la salida
estndar de la computadora el contenido de ARHIVO.doc.
Despus de que el programa escrito en Lenguaje C++ lea el archivo es necesario cerrar el archivo,
para realizar esta accin se utiliza al mtodo close() de la siguiente forma:
objeto2.close();
El mtodo close() es invocado por medio del operador punto (.) y su trabajo es cerrar el archivo
llamado ARCHIVO con extensin .doc
El cdigo fuente del programa descrito anteriormente es el siguiente:
Video 2
Como puedes observar, es muy sencillo crear archivos y almacenar informacin dentro de estos y
posteriormente leer esta informacin en el Lenguaje de programacin C++, con lo cual los programas
escritos en este lenguaje pueden tener otra fuente de de entrada de informacin diferente al teclado
de la computadora.
Si deseas saber ms acerca de todos los mtodos de la clase de objetos ofsream, puedes revisar el
siguiente material, da clic en el siguiente hipervnculo para lo puedas ver: Biblioteca de c++
Ejercicio: AGENDA:
Para ejemplificar lo anteriormente explicado se har el programa de una agenda personal, dicha
agenda guardar en un archivo (que a su vez se almacenar en el disco duro de la computadora con
extensin .doc) la siguiente informacin indicada en pasos:
Nota: La realizacin de esta agenda ser compartida, es decir, una parte se explicar y otra la
tendrs que elaborar t, por lo que es necesario que sigas realizando, editando y compilando cada
cdigo que se vaya mostrando, revisa y toma en cuenta los 8 pasos que se te presentan ya que
estos van a servir de base para realizar el cdigo fuente, cabe mencionar que la realizacin de estos
pasos no va a ser consecutiva, es decir, no tendr la continuidad que se muestra a continuacin,
ahora s, estos son los pasos:.
Paso 1. Datos personales:
Son los datos que se van a necesitar para hacer el programa, y son:
Nombre.
Apellido paterno.
Apellido materno.
Telfono.
Fecha de nacimiento:
Da.
Mes.
Ao.
Paso 4. Despus de que el usuario del programa ingrese el ao de nacimiento, el programa volver
a mostrar el men de opciones, es decir la primera interface, de esta forma:
Paso 5. En caso de que el usuario del programa escoja la opcin B, el programa debe desplegar la
interface que se muestra enseguida. Esta pantalla mostrar el contenido del archivo llamado
AGENDA.doc. el programa leer el contenido del archivo antes mencionado, este archivo debe ser
generado por el programa, toda vez que se ejecut la opcin A del men de opciones.
Paso 7. En el caso de que el usuario del programa escoja la opcin C. El programa desplegara la
siguiente interface:
Esta interface indicar que el usuario decidi salir de la aplicacin. Y despus de presionar cualquier
tecla desde la entrada estndar de la computadora, el programa terminara.
Paso 8. En el caso de que el usuario del programa introduzca una opcin que no est disponible en
el men de opciones, el programa desplegara el siguiente mensaje en la pantalla de la computadora:
En este caso el usuario del programa deber presionar cualquier tecla en la entrada estndar de la
computadora y enseguida el programa volver a desplegar la primer interface, as el usuario tendr
la posibilidad de escoger una opcin nuevamente.
Nota: Recuerda que el programa, al ejecutar la opcin A debe generar un archivo con extensin .doc
llamado AGENDA, este archivo se almacenar en el disco duro de la computadora, dentro de este
archivo el programa escribir toda la informacin que el usuario del programa introduzca desde la
entrada estndar de la computadora tantas veces como se ejecute la opcin A del men de
opciones. Enseguida se muestra una imagen que ejemplifica esto:
Realizando la AgEnDa
Una alternativa realizar la captura de los datos personales y la fecha de nacimiento (paso 1) es
declarar dos estructuras, una que almacene los datos personales, y la otra para almacenar los datos
referentes a la fecha de nacimiento. Enseguida se muestra el cdigo fuente necesario para que se
pueda declarar y definir estas dos estructuras y posteriormente se dar la explicacin del mismo:
Explicacin:
Declarar dos estructuras permitir almacenar en sus miembros (recuerda que estos son pblicos por
default) la informacin requerida. La primer estructura que se declar se llama fecha, posee tres
miembros de tipo int, dia, mes y anyo respectivamente, estos tres miembros almacenarn la
informacin referente a la fecha de nacimiento solicitada. Esta estructura tambin desempear el
trabajo de ser miembro de la segunda estructura declarada.
La segunda estructura que se declar se llama ficha, esta posee tres miembros de tipo string,
llamados nombre, apellido1 y apellido2 respectivamente, dichos miembros almacenarn la
informacin referente a: nombre, apellido paterno y apellido materno requeridos. Adems posee un
miembros de tipo unsigned long llamado telfono, el cual almacenar la informacin referente al
telfono, adems posee un miembro llamado fecha_nacimiento de tipo fecha (la estructura fecha es
a su vez miembro de ficha) evidentemente este miembro almacenara la informacin referente a la
fecha de nacimiento.
Muy bien, ahora es tu turno para continuar realizando la Agenda personal, por favor realiza la
siguiente actividad, no olvides que se va a retomar el cdigo fuente explicado hasta este momento
de la agenda.
Foro 1. AgEnDa.
Este foro es para que dialogues con tus compaeros y se apoyen en la
solucin de los problemas que surjan a lo largo del desarrollo de las
actividades de aprendizaje 9 y 10.
Instrucciones:
1. Si tienes alguna duda o problema plantala en este foro para que los
compaeros que puedan y sepan la respuesta te ayuden en su
solucin.
2. Por otro lado, si t conoces la forma de apoyar a alguno de tus
compaeros para resolver algn problema que presente en la
realizacin de su actividad, apyalo para que pueda seguir avanzando
en la construccin de su conocimiento, recuerda que las respuestas y
ayuda que des deben ser siempre de manera respetuosa.
3. Si hay alguna cuestin que nadie sepa, puedes acudir a tu asesor, l te
va a orientar para lograr tu cometido.
4. Es muy importante mencionarte que debes esperar a que tu asesor
abra el foro, despus de que l lo haga puedes empezar la actividad, si
Explicacin:
Para dar solucin a las necesidades planteadas en
los pasos 7 y 8 se propone declarar el caso C (case
'C':) y el caso default (default:). En el primero caso (case C:) se invoca a la funcin system(cls)
cuyo trabajo es limpiar la pantalla de la computadora, es decir borrar el texto que previamente se
imprimi en la salida estndar. Enseguida se muestra en la pantalla de la computadora la cadena de
caracteres Decidiste salir, por medio del objeto cout y su operador de incisin (cour <<). Por ltimo
se escribi la sentencia de control break; cuyo trabajo es romper la ejecucin de la sentencia de
control switch y terminar as la ejecucin del programa.
En el segundo caso (default:) se muestra en la pantalla de la computadora la cadena de caracteres
Es una opcin no valida, por medio del objeto cout y su operador de incisin (cour <<). En seguida
se invoca a la funcin system (PAUSE) cuyo trabajo es realizar una pausa en la ejecucin del
programa, hasta que se presione cualquier tecla en la entrada estndar de la computadora.
Enseguida se escribi la sentencia de control goto INICIO; cuyo trabajo es el de redireccionar el flujo
de ejecucin del programa hacia el comienzo del programa donde se debi escribir la etiqueta
INICIO:, Enseguida se muestra una sugerencia del lugar en donde se debe escribir la etiqueta
INICIO y la forma de escribirla.:
esta actividad, tambin puedes acudir con tu asesor(a), el(ella) te apoyar con mucho
gusto y aclarar tus dudas.
Conclusin.
Se le llama flujo de informacin a un objeto cuyo trabajo es servir como intermediario entre el
programa y el origen o el destino de la informacin, es decir, por medio de este objeto es que el
programa puede leer o escribir informacin desde o hacia un archivo.
Las clases de objetos ofstream y fstream, poseen atributos y mtodos que permiten escribir en un
archivo o leer desde un archivo.
2. Liberia winbgim.h
Introduccin
Hasta este momento la apariencia de todas las aplicaciones que has desarrollado a lo largo de esta
unidad de aprendizaje, es muy austera, nicamente muestran instrucciones o informacin en forma
de texto, en la pantalla de la computadora, pero es posible crear grficos que hagan ms interactiva
y atractiva la apariencia de un programa escrito en Lenguaje C++, para hacer esto posible es
necesario instalarle una nueva librera al IDE Dev C++, el nombre de esta librera es winbgim.h.
Explicacin:
En la primer lnea de cdigo se incluye la librera winbgim.h a travs de la directiva del preprocesador
#include<>. Con esta accin se logra que las funciones declaradas y definidas dentro de esta librera
se incluyan en el cdigo fuente, antes de que este sea compilado.
Enseguida se encuentra la declaracin y definicin de la funcin principal del programa, es decir la
funcin main(), la cual define el trabajo que realizara la aplicacin grfica.
Despus de la llave de apertura que delimita las lneas de cdigo que pertenecen a la funcin main()
se invoc a la funcin initwindow() (recuerda que esta funcin fue declarada y definida dentro de la
librera winbgim.h,), que se encarga de abrir (desplegar) una ventana grfica.
initwindow() acepta dos argumentos de tipo entero, los cuales indican el tamao en pixeles de la
ventana grfica, en este ejemplo se indico que se abrir una ventana de 400 x 300 pixeles.
En la siguiente lnea, en el cdigo fuente se invoco a la funcin moveto() (a la cual se le dieron los
parmetros 0,0), esta funcin se encarga de mover el cursor de la ventana grfica, es decir,
posicionar el cursos en los parmetros indicados, los cuales indicarn la coordenada a donde se
mover el cursos de la ventana grfica.
Nota: El origen del eje coordenado de la ventana grafica se encuentra en la esquina superior
izquierda de la misma.
En este ejemplo se indic que el cursor de la pantalla grafica se movi a la coordenada (0,0), es
decir a la esquina superior izquierda de la ventana grafica.
En la siguiente lnea de cdigo, se invoc a la funcin lineto(), la cual se encarga de dibujar una lnea
recta, desde la posicin actual del cursor hasta la coordenada que se le indique por medio de los dos
argumentos que posee, estos argumentos son de tipo entero.
En este ejemplo se indic que se dibujara una lnea recta desde la posicin (0,0) que es la posicin
actual del cursor de la ventana grfica, hasta la coordenada (50,50).
La sentencia de control while escrita en la siguiente lnea de cdigo, se ejecutar continuamente
mientras no se presiona una tecla desde la entrada estndar de la computadora, si en algn
momento se presiona cualquier tecla dejar de ejecutarse y enseguida se invocara la ltima funcin
escrita en este cdigo fuente.
closegraph(), se encarga de cerrar la ventana grfica y al no existir ninguna otra instruccin escrita
antes de la llave de cierre de la funcin main() el programa termina.
El resultado de editar, depurar y compilar este cdigo fuente es el siguiente:
Estas son algunas de las funciones con que cuenta la librera winbgim.h:
Niombre de la funcin
Trabajo desarrollado
Borra la pantalla
void line (int x1, int y1, int x2, int y2);
Traza una lnea desde la posicin actual de cursor hasta la coordenada (x,y)
Dibuja un pixel en la coordenada (x,y) de color dado por elnombre en ingles del
color.
void rectangle (int left, int top, int right, int bottom);
int mousex(void)
int mousey(void)
Instrucciones:
1.
Edita, depura y compila el cdigo fuente que a continuacin se te
muestra:
2.
Como una forma de ayuda se te presenta el resultado de editar, depurar y compilar este cdigo
fuente es el siguiente:
3.
3.
Explicacion:
En el cdigo fuente se incluy la librera grafica llamada winbghim.h, a travs de la directiva del
preprocesador #include<> enseguida se encuentra la declaracin y definicin de la funcin principal
del programa (main()), la cual define la accin que realizara este programa.
Despus de la llave que delimita las lneas de cdigo que pertenecen a la funcin principal del
programa se declararon cuatro variables de tipo entero llamadas x.y.b y c, a la variable llamada b se
le asigno el valor inicial de 400 y a la variable llamada c se le asigno el valor inicial de b es decir
cuatrocientos. Las variables: x e y no fueron iniciadas con ningn valor.
En la siguiente lnea de cdigo se invoc a la funcin initwindow(), cuya explicacin ya se menciono
anteriormente, a esta funcin se le pasan como argumento las dos variables de tipo entero llamadas
b y c respectivamente, por lo anterior, despus de compilar el cdigo fuente se abrir una ventana
grafica de 400x400 pixeles.
Enseguida se encuentra escrita la sentencia de control while(), la cual permitir que se ejecuten las
siguientes lneas de cdigo, siempre y cuando no se presione ninguna tecla en la entrada estndar
de la computadora:
Como puedes observar se dibujo una lnea recta en la ventana grafica (por default siempre
comenzar una aplicacin por primera vez en las coordenadas (0,0), es decir, desde la esquina
superior izquierda de la ventana grafica), hasta la coordenada actual del puntero del mouse, (esto
depende de la posicin del puntero), si llegaras a mover el puntero del mouse mientras se est
ejecutando la aplicacin, podrs ver que se dibujar una lnea siguiendo la trayectoria que realices,
un ejemplo se muestra a continuacin:
Antes de continuar, contesta las siguientes preguntas relacionadas a la explicacin anterior, si tienes
alguna duda, interacta con tus compaeros y tu asesor en el chat 1 para resolverla:
1.- Por qu se dibuja una lnea recta desde la coordenada (0,0), hasta la posicin actual que tenga
el puntero del mouse?.
2.- qu pasa con la posicin del cursor de la ventana grafica si despus de que se realiz una lnea
tu mueves el puntero del mouse.
3.- Cmo se modificara el funcionamiento del programa anterior si se aumenta el retardo o pausa
realizado por la funcin delay(): de la siguiente forma:
delay(50);
El archivo que debes subir a la plataforma es el cdigo fuente, es decir el archivo con
extensin .cpp que se realiz.
6. Como una ayuda para la realizacin de este cdigo fuente se te presentan las frmulas
para calcular las coordenadas de un mvil en tiro parablico:
Donde
proyectil,
del
la gravedad.
7. Si tienes problemas para la realizacin de esta actividad ingresa al foro Tiro parablico,
comparte con tus compaeros tus dudas y si puedes, aydalos a resolver las preguntas que
tengan, recuerda que trabajar en equipo puede ayudarte para aprender mejor, tambin
puedes acudir con tu asesor(a), el(ella) te apoyar con mucho gusto.
8. Cuando tengas listo el archivo gurdalo en tu PC y envalo con tus datos en el siguiente
formato: aellidopaterno_materno_nombre_actividadnumero
Conclusiones:
En esta unidad de aprendizaje aprendiste, entre otras cosas que:
Una clase de objetos se conceptualiza como una plantilla que sirve para crear mltiples
objetos con caractersticas similares.
Una estructura al igual que una clase de objetos representa una plantilla, a partir de la cual se
pueden generar objetos, a las variables que definen las caractersticas de los objetos se les
llama miembros en lugar de atributos y estos son pblicos por default, por lo anterior cualquier
mtodo o funcin puede acceder al contenido que almacenan las estructuras e incluso
modificarlo, como consecuencia de esto ya no es necesario declarar y definir mtodos para
acceder o modificar a los miembros de una estructura.
La amistad (friend) es un mecanismo que prob el Lenguaje C++ por medio del cual el
programador puede otorgar un permiso o privilegio a un mtodo (funcin) que no pertenezca a
una clase de objetos, con esto, el mtodo tendr la capacidad de acceder (leer y modificar) a
los atributos de la clase de objetos, aun cuando los atributos de la clase de objetos hayan sido
declarados como privados.
Has llegado al final de esta unidad de aprendizaje, en la que adems de reconocer tu esfuerzo,
dedicacin y compromiso, es muy grato comentarte que muy seguramente ahora eres capaz de
desarrollar aplicaciones y programas informticos a travs del paradigma de la programacin