• No se han encontrado resultados

Flujos Flujos de entrada y salida

N/A
N/A
Protected

Academic year: 2021

Share "Flujos Flujos de entrada y salida"

Copied!
41
0
0

Texto completo

(1)

Flujos

Flujos de entrada y salida

Jonatan Gom´ez Perdomo, Ph.D.

[email protected]

Arles Rodr´ıguez, Ph.D.(c)

[email protected]

Camilo Cubides, Ph.D.(c)

[email protected]

Grupo de investigaci´on en vida artificial – Research Group on Artificial Life – (Alife) Departamento de Ingenier´ıa de Sistemas e Industrial

Facultad de Ingenier´ıa Universidad Nacional de Colombia

(2)

Definici´on

Agenda

1 Definici´on

2 La jerarqu´ıa del conjunto de los flujos

3 Los flujos en C++

Lectura de datos Escritura de datos

Ejemplo del uso de los flujos de entrada y salida est´andares

4 Flujos de entrada y salida desde y hacia archivos Uso de archivos como flujos de entrada

Uso de archivos como flujos de salida Cierre de los flujos desde y hacia archivos

Ejemplo del uso de archivos como flujos de entrada y salida

(3)

Definici´on

Definici´on flujo

Definici´on

Un flujo es un objeto desde el cual se puede enviar o recibir informaci´on.

Para el caso de una fuente de entrada de informaci´on, ´esta puede ser enviada desde el teclado o desde un archivo o desde una red local de comunicaciones o desde un nodo de internet, entre otros.

Para el caso de una fuente de salida de informaci´on, ´esta t´ıpicamente es enviada a la consola (pantalla) o a un archivo o una impresora u otro nodo de internet.

Los archivos son ejemplos de flujos de doble direcci´on, generalmente se puede recibir y se puede enviar informaci´on desde y hacia ellos.

(4)

Definici´on

Flujos de entrada y salida

En presentaciones anteriores ya se hab´ıa hecho uso de los flujos; con el objeto cin se recib´ıa informaci´on desde el teclado y con el objeto cout se enviaba informaci´on a la consola de salida en la pantalla. En esta

presentaci´on, adem´as de estudiar los flujos cin y cout, se tratar´a el tema de usar archivos como ejemplos de flujos de entrada y salida de

informaci´on distintos al teclado y la consola.

(5)

La jerarqu´ıa del conjunto de los flujos

Agenda

1 Definici´on

2 La jerarqu´ıa del conjunto de los flujos

3 Los flujos en C++

Lectura de datos Escritura de datos

Ejemplo del uso de los flujos de entrada y salida est´andares

4 Flujos de entrada y salida desde y hacia archivos Uso de archivos como flujos de entrada

Uso de archivos como flujos de salida Cierre de los flujos desde y hacia archivos

Ejemplo del uso de archivos como flujos de entrada y salida

(6)

La jerarqu´ıa del conjunto de los flujos

El conjunto de los flujos

El conjunto de todos los flujos se representar´a mediante el s´ımbolo S

el cual es una abreviaci´on de la palabra stream que es flujo en ingl´es.

El conjunto S contiene a el conjunto IOS (input output stream) de los flujos que reciben o env´ıan informaci´on, o que reciben y env´ıan

informaci´on, es decir,

IOS ⊆ S

(7)

La jerarqu´ıa del conjunto de los flujos

El conjunto de los flujos de entrada y salida

El conjunto IOS contiene a los conjuntos IS (input stream) y OS (output stream), es decir,

IS ⊆ IOS y OS ⊆ IOS

El conjunto IS a su vez contiene a el conjunto IF S ⊆ IS (input file stream), y el objeto cin pertenece a ´el (cin ∈ IS).

El conjunto OS a su vez contiene a el conjunto OF S ⊆ OS (output file stream), y el objeto cout pertenece a ´el (cout ∈ OS).

(8)

La jerarqu´ıa del conjunto de los flujos

Jerarqu´ıa de los flujos

En el siguiente ´arbol se muestra la jerarqu´ıa de los flujos descrita anteriormente

S

IOS

IS

IF S

cin

OS

OF S

cout

(9)

Los flujos en C++

Agenda

1 Definici´on

2 La jerarqu´ıa del conjunto de los flujos

3 Los flujos en C++

Lectura de datos Escritura de datos

Ejemplo del uso de los flujos de entrada y salida est´andares

4 Flujos de entrada y salida desde y hacia archivos Uso de archivos como flujos de entrada

Uso de archivos como flujos de salida Cierre de los flujos desde y hacia archivos

Ejemplo del uso de archivos como flujos de entrada y salida

(10)

Los flujos en C++

Flujos en C++

Los flujos de entrada IS en C++ se codifican con la palabra istream.

Los flujos de entrada desde un archivo IF S en C++ se codifican con la palabra ifstream.

Los flujos de salida OS en C++ se codifican con la palabra ostream.

Los flujos de salida a un archivo OF S en C++ se codifican con la palabra ofstream.

Los flujos de entrada o salida de datos IOS en C++ se codifican con la palabra iostream.

El objeto cin pertenece al conjunto IS que es un subconjunto de IOS.

El objeto cout pertenece al conjunto OS que es un subconjunto de IOS.

(11)

Los flujos en C++

Definici´on de flujos en C++

La definici´on de flujos de entrada y salida simultanea de datos se

encuentra en C++ en la librer´ıa iostream, por esto es necesario incluir al principio de las funciones que manejan flujos esta librer´ıa, as´ı como se muestra en el siguiente encabezado de un archivo de un programa en C++

#include<iostream>

#include<cstdlib>

using namespace std;

(12)

Los flujos en C++ Lectura de datos

Agenda

1 Definici´on

2 La jerarqu´ıa del conjunto de los flujos

3 Los flujos en C++

Lectura de datos Escritura de datos

Ejemplo del uso de los flujos de entrada y salida est´andares

4 Flujos de entrada y salida desde y hacia archivos Uso de archivos como flujos de entrada

Uso de archivos como flujos de salida Cierre de los flujos desde y hacia archivos

Ejemplo del uso de archivos como flujos de entrada y salida

(13)

Los flujos en C++ Lectura de datos

Lectura de datos I

Si se quiere leer un dato de un tipo primitivo T desde un flujo de entrada IS, entonces una funci´on que representa este procedimiento se puede escribir de la siguiente forma

leer T : IS → T

(is) 7→ a, donde a = leer (is)

La traducci´on de esta funci´on en C++ se escribe de la siguiente manera T leer_T(istream& is){

T a;

is >> a;

return a;

};

(14)

Los flujos en C++ Lectura de datos

Lectura de datos II

La funci´on leer (is) que en C++ se escribe como >>, ´esta retorna el dato siguiente que se encuentre almacenado en el flujo is.

Cuando un flujo se utiliza como par´ametro, este se pasa por referencia, es decir, que f´ısicamente no se pasa un valor como par´ametro, como en el caso de los tipos primitivos, sino que se pasa su direcci´on de memoria.

Para pasar la direcci´on de memoria de un flujo se coloca el s´ımbolo &

inmediatamente despu´es del tipo de flujo; como en el caso anterior que se escribio istream&.

(15)

Los flujos en C++ Lectura de datos

Lectura de datos III

Ejemplo

En C++ para leer un dato de tipo entero desde un flujo se utiliza la siguiente funci´on

int leer_int(istream& is){

int a;

is >> a;

return a;

};

(16)

Los flujos en C++ Lectura de datos

Lectura de datos IV

Ejemplo (continuaci´on)

1

-5

a

2

−5 -5

a

3

−5 a

(17)

Los flujos en C++ Escritura de datos

Agenda

1 Definici´on

2 La jerarqu´ıa del conjunto de los flujos

3 Los flujos en C++

Lectura de datos Escritura de datos

Ejemplo del uso de los flujos de entrada y salida est´andares

4 Flujos de entrada y salida desde y hacia archivos Uso de archivos como flujos de entrada

Uso de archivos como flujos de salida Cierre de los flujos desde y hacia archivos

Ejemplo del uso de archivos como flujos de entrada y salida

(18)

Los flujos en C++ Escritura de datos

Escritura de datos I

Si se quiere escribir un dato de un tipo de primitivo T en un flujo de salida OS, entonces una funci´on que representa este procedimiento se puede escribir de la siguiente forma

escribir T : T × OS → OS

(a, os) 7→ os, donde escribir (a, os)

La traducci´on de esta funci´on en C++ se escribe de la siguiente manera ostream& escribir_T(T a, ostream& os){

os << a;

os << ’\t’;

return os;

};

(19)

Los flujos en C++ Escritura de datos

Escritura de datos II

La funci´on escribir (a, os) que en C++ se escribe como <<, ´esta escribe el dato a en el flujo os. En la funci´on escribir_T se env´ıa adicionalmente el s´ımbolo ’\t’ para separar el s´ımbolo a del siguiente dato que sea almacenado en el flujo os.

Ejemplo

En C++ para escribir un dato de tipo entero en un flujo se utiliza la siguiente funci´on

ostream& escribir_int(int a, ostream& os){

os << a;

os << ’\t’;

return os;

};

(20)

Los flujos en C++ Escritura de datos

Escritura de datos III

Ejemplo (continuaci´on)

1

−5 a

2

−5

−5 a

(21)

Los flujos en C++ Escritura de datos

Escritura de datos III

Ejemplo (continuaci´on)

3

−5

−5 a

4

-5

-5

(22)

Los flujos en C++ Ejemplo del uso de los flujos de entrada y salida est´andares

Agenda

1 Definici´on

2 La jerarqu´ıa del conjunto de los flujos

3 Los flujos en C++

Lectura de datos Escritura de datos

Ejemplo del uso de los flujos de entrada y salida est´andares

4 Flujos de entrada y salida desde y hacia archivos Uso de archivos como flujos de entrada

Uso de archivos como flujos de salida Cierre de los flujos desde y hacia archivos

Ejemplo del uso de archivos como flujos de entrada y salida

(23)

Los flujos en C++ Ejemplo del uso de los flujos de entrada y salida est´andares

Uso de los flujos de entrada y salida est´andares I

Ejemplo

Para utilizar las funciones anteriores, que leen desde el teclado y escriben en la consola se pueden llamar de la siguiente forma

int main(){

cout << "Digite un entero: ";

int a = leer_int(cin);

cout << "El entero leido es: ";

escribir_int(a, cout);

cout << endl;

system("pause");

return EXIT_SUCCESS;

};

(24)

Los flujos en C++ Ejemplo del uso de los flujos de entrada y salida est´andares

Uso de los flujos de entrada y salida est´andares II

Ejemplo (continuaci´on)

Para el programa anterior se tiene como salida en la consola el siguiente texto

Digite un entero: -5 El entero leido es: -5

Presione una tecla para continuar . . .

(25)

Flujos de entrada y salida desde y hacia archivos

Agenda

1 Definici´on

2 La jerarqu´ıa del conjunto de los flujos

3 Los flujos en C++

Lectura de datos Escritura de datos

Ejemplo del uso de los flujos de entrada y salida est´andares

4 Flujos de entrada y salida desde y hacia archivos Uso de archivos como flujos de entrada

Uso de archivos como flujos de salida Cierre de los flujos desde y hacia archivos

Ejemplo del uso de archivos como flujos de entrada y salida

(26)

Flujos de entrada y salida desde y hacia archivos

Flujos de entrada y salida desde y hacia archivos I

Para poder usar archivos como flujos de entrada o salida es necesario en primera instancia incluir la librer´ıa

#include<fstream>

con lo cual el encabezado de un archivo fuente de un programa en C++

que haga uso de archivos como flujos tendr´a el siguiente aspecto

#include<iostream>

#include<cstdlib>

#include<fstream>

using namespace std;

(27)

Flujos de entrada y salida desde y hacia archivos Uso de archivos como flujos de entrada

Agenda

1 Definici´on

2 La jerarqu´ıa del conjunto de los flujos

3 Los flujos en C++

Lectura de datos Escritura de datos

Ejemplo del uso de los flujos de entrada y salida est´andares

4 Flujos de entrada y salida desde y hacia archivos Uso de archivos como flujos de entrada

Uso de archivos como flujos de salida Cierre de los flujos desde y hacia archivos

Ejemplo del uso de archivos como flujos de entrada y salida

(28)

Flujos de entrada y salida desde y hacia archivos Uso de archivos como flujos de entrada

Archivos como flujos de entrada I

Para declarar que un archivo f pertenece al flujo fuente de entrada IF S (f ∈ IF S), en C++ se especifica que f pertenece al conjunto ifstream y se debe proporcionar la ubicaci´on del archivo en el computador donde se ejecute el programa, es necesario que el archivo exista previamente.

Para crear un flujo de entrada en C++ y especificar la ruta de localizaci´on del archivo que sirve de flujo de entrada se utiliza la siguiente sintaxis

ifstream f("<path>");

el par´ametro de la ruta <path> donde se ubica el archivo fuente de entrada depende del sistema operativo.

(29)

Flujos de entrada y salida desde y hacia archivos Uso de archivos como flujos de entrada

Archivos como flujos de entrada II

Si se proporciona como localizaci´on "archivo.txt", se abrir´a el archivo llamado "archivo.txt" que se encuentra en la misma carpeta (en la misma ruta) del archivo ejecutable.

Para proporcionar una ruta especifica de un archivo en Windows es necesario especificar la unidad y el directorio.

Ejemplo

Un ejemplo de la ruta de la ubicaci´on de un archivo en Windows es C:\\mis documentos\\archivo.txt

(30)

Flujos de entrada y salida desde y hacia archivos Uso de archivos como flujos de entrada

Archivos como flujos de entrada II

Para proporcionar una ruta especifica de un archivo en Linux es necesario especificarla desde el directorio raiz.

Ejemplo

Un ejemplo de la ruta de la ubicaci´on de un archivo en Linux es /home/user/archivo.txt

(31)

Flujos de entrada y salida desde y hacia archivos Uso de archivos como flujos de salida

Agenda

1 Definici´on

2 La jerarqu´ıa del conjunto de los flujos

3 Los flujos en C++

Lectura de datos Escritura de datos

Ejemplo del uso de los flujos de entrada y salida est´andares

4 Flujos de entrada y salida desde y hacia archivos Uso de archivos como flujos de entrada

Uso de archivos como flujos de salida Cierre de los flujos desde y hacia archivos

Ejemplo del uso de archivos como flujos de entrada y salida

(32)

Flujos de entrada y salida desde y hacia archivos Uso de archivos como flujos de salida

Archivos como flujos de salida I

Para declarar que un archivo f pertenece al flujo de salida OF S

(f ∈ OF S), en C++ se especifica que f pertenece al conjunto ofstream y se debe proporcionar la ubicaci´on del archivo en el computador donde se ejecute el programa, en este caso no es necesario que el archivo exista previamente.

Para crear un flujo de salida en C++ y especificar la ruta de localizaci´on del archivo que sirve de flujo de salida se utiliza la siguiente sintaxis

ofstream f("<path>");

Las reglas para la especificaci´on de la ruta de localizaci´on son las mismas que se describieron para los archivos como flujos de entrada.

(33)

Flujos de entrada y salida desde y hacia archivos Cierre de los flujos desde y hacia archivos

Agenda

1 Definici´on

2 La jerarqu´ıa del conjunto de los flujos

3 Los flujos en C++

Lectura de datos Escritura de datos

Ejemplo del uso de los flujos de entrada y salida est´andares

4 Flujos de entrada y salida desde y hacia archivos Uso de archivos como flujos de entrada

Uso de archivos como flujos de salida Cierre de los flujos desde y hacia archivos

Ejemplo del uso de archivos como flujos de entrada y salida

(34)

Flujos de entrada y salida desde y hacia archivos Cierre de los flujos desde y hacia archivos

Cierre de los flujos

Un paso necesario cuando se utilizan archivos como flujos de entrada o salida es que es necesario cerrar los archivos despu´es de utilizarlos para evitar que al ser abiertos queden bloqueados para ser usados por otras aplicaciones o que al escribir la informaci´on no se escriba completamente en el archivo. Para hacer esto se llama la funci´on close() con la sintaxis

f.close();

donde f es el flujo que se creo con el archivo especificado.

(35)

Flujos de entrada y salida desde y hacia archivos Ejemplo del uso de archivos como flujos de entrada y salida

Agenda

1 Definici´on

2 La jerarqu´ıa del conjunto de los flujos

3 Los flujos en C++

Lectura de datos Escritura de datos

Ejemplo del uso de los flujos de entrada y salida est´andares

4 Flujos de entrada y salida desde y hacia archivos Uso de archivos como flujos de entrada

Uso de archivos como flujos de salida Cierre de los flujos desde y hacia archivos

Ejemplo del uso de archivos como flujos de entrada y salida

(36)

Flujos de entrada y salida desde y hacia archivos Ejemplo del uso de archivos como flujos de entrada y salida

Ejemplo

Suponga que se dispone del archivo de texto plano entrada.txt con las siguiente informaci´on

0 1 2 3 4 5

y se quieren leer algunos datos con el fin de copiar los primeros 4 enteros del archivo al archivo salida.txt, esto se podr´ıa hacer utilizando el siguiente programa

(37)

Flujos de entrada y salida desde y hacia archivos Ejemplo del uso de archivos como flujos de entrada y salida

Ejemplo (continuaci´on)

#include<iostream>

#include<cstdlib>

#include<fstream>

using namespace std;

(38)

Flujos de entrada y salida desde y hacia archivos Ejemplo del uso de archivos como flujos de entrada y salida

Ejemplo (continuaci´on)

int leer_int(istream& is){

int a;

is >> a;

return a;

};

ostream& escribir_int(int a, ostream& os){

os << a;

os << ’\t’;

return os;

};

(39)

Flujos de entrada y salida desde y hacia archivos Ejemplo del uso de archivos como flujos de entrada y salida

Ejemplo (continuaci´on) int main(){

ifstream ifs("entrada.txt");

ofstream ofs("salida.txt");

escribir_int(leer_int(ifs), ofs);

escribir_int(leer_int(ifs), ofs);

escribir_int(leer_int(ifs), ofs);

escribir_int(leer_int(ifs), ofs);

ofs.close();

ifs.close();

cout << endl;

system("pause");

return EXIT_SUCCESS;

};

(40)

Flujos de entrada y salida desde y hacia archivos Ejemplo del uso de archivos como flujos de entrada y salida

Ejemplo (continuaci´on)

La salida de dicho programa ser´a:

Presione una tecla para continuar . . .

y se generar´a el archivo salida.txt con el siguiente contenido:

0 1 2 3

(41)

Flujos de entrada y salida desde y hacia archivos Ejemplo del uso de archivos como flujos de entrada y salida

Ejemplo (continuaci´on)

Esta declaraci´on de flujo sobreescribe el archivo cada vez que se ejecuta el programa. N´otese que cada dato con esta sintaxis se lee hasta encontrar uno de los siguientes caracteres especiales: ’\t’, ’\n’, ’ ’. En la tercera l´ınea de la funci´on main se lee el entero 0, y se imprime en el flujo de salida junto con un s´ımbolo ’\t’, a partir de la cuarta l´ınea hasta la sexta l´ınea se realizan id´enticas operaciones, pero con los valores 1, 2 y 3, respectivamente. A continuaci´on se proceden a cerrar los flujos.

Referencias

Documento similar

Será condición indispensable para poder ser participante del Banco de Libros durante el curso 2021-2022, la entrega por parte del alumnado del lote completo de libros de texto

Será condición indispensable para poder ser participante del Banco de Libros durante el curso 2020-2021, la entrega por parte del alumnado del lote completo de libros de texto

SI SE UTILIZA LIBRO DE TEXTO (ya sea de elaboración propia o no, digital o no) como material elegido para impartir la asignatura, NO FORMARÁN PARTE DEL BANCO DE LIBROS, los

La Normativa de evaluación del rendimiento académico de los estudiantes y de revisión de calificaciones de la Universidad de Santiago de Compostela, aprobada por el Pleno or-

- Fase Visual: Color rojo cereza. Puede presentar un pequeño precipitado de sales tartáricas o de polifenoles polimerizados. - Fase Olfativa: Aroma limpio y complejo, donde destaca

El an´ alisis autom´ atico de la opini´ on que los pa- cientes tienen sobre determinados f´ armacos no s´ olo puede proporcionar una visi´ on sobre el grado de satisfacci´ on que

adjunta al presente y forma parte integral del mismo, para que sean utilizados Unica y exclusivamente para el funcionamiento y operacion de la Estrategia MENUTRE( Modelo Estatal

La ratificación de la calificación para la Línea de Crédito 1 otorgada por Scotiabank 2 al Fideicomiso F/1355, constituido por UNIFIN 3 como Fideicomitente, se basa