entrada / salida streams archivos algoritmos y estructuras de datos i departamento de computación,...

40
Entrada / Salida Streams Archivos Algoritmos y Estructuras de Datos I Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad de Buenos Aires

Upload: arturo-barbero-cordoba

Post on 24-Jan-2016

218 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Entrada / Salida Streams Archivos Algoritmos y Estructuras de Datos I Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad

Entrada / SalidaStreamsArchivos

Algoritmos y Estructuras de Datos I

Departamento de Computación, Facultad de Ciencias Exactas y Naturales,

Universidad de Buenos Aires

Page 2: Entrada / Salida Streams Archivos Algoritmos y Estructuras de Datos I Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad

Introducción

• Repaso de tipos

• Repaso de clases

• Entrada / Salida por consola (cin / cout)

• Entrada / Salida por archivo (librería fstream)

Streams. Manipulación de archivos. Clase viernes 12/06/2009

Page 3: Entrada / Salida Streams Archivos Algoritmos y Estructuras de Datos I Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad

Repaso de tipos

• int

• double

• char

• String

Streams. Manipulación de archivos. Clase viernes 12/06/2009

Page 4: Entrada / Salida Streams Archivos Algoritmos y Estructuras de Datos I Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad

Repaso de tipos

• int: Representa un número entero

• double: Representa un número real

• char: Representa un carácter.

• string: Representa una secuencia de caracteres.

Streams. Manipulación de archivos. Clase viernes 12/06/2009

Page 5: Entrada / Salida Streams Archivos Algoritmos y Estructuras de Datos I Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad

Salida#include <iostream> // Biblioteca Entrada/Salida

using namespace std;

int main(int argc, char *argv[]) cout << “Hola Mundo”; return 0;}

Streams. Manipulación de archivos. Clase viernes 12/06/2009

Page 6: Entrada / Salida Streams Archivos Algoritmos y Estructuras de Datos I Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad

Salida

Streams. Manipulación de archivos. Clase viernes 12/06/2009

#include <iostream> // Biblioteca Entrada/Salida

using namespace std;

int main(int argc, char *argv[]) cout << “Hola Mundo”; return 0;}

Page 7: Entrada / Salida Streams Archivos Algoritmos y Estructuras de Datos I Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad

Salida#include <iostream> // Biblioteca Entrada/Salida

using namespace std;

int main(int argc, char *argv[]){ int i = 4; cout << i; return 0;}

Streams. Manipulación de archivos. Clase viernes 12/06/2009

Page 8: Entrada / Salida Streams Archivos Algoritmos y Estructuras de Datos I Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad

Salida

Streams. Manipulación de archivos. Clase viernes 12/06/2009

#include <iostream> // Biblioteca Entrada/Salida

using namespace std;

int main(int argc, char *argv[]){ int i = 4; cout << i; return 0;}

Page 9: Entrada / Salida Streams Archivos Algoritmos y Estructuras de Datos I Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad

Salida#include <iostream> // Biblioteca Entrada/Salida

using namespace std;

int main(int argc, char *argv[]){ char i = 'c'; int i = 4; double i = 3.4; string i = “Salida de Viernes”; cout << i; return 0;}

Streams. Manipulación de archivos. Clase viernes 12/06/2009

Page 10: Entrada / Salida Streams Archivos Algoritmos y Estructuras de Datos I Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad

Salida#include <iostream> // Biblioteca Entrada/Salida

using namespace std;

int main(int argc, char *argv[]) {

int Argentina = 0;int Ecuador = 2;

cout << “Ecuador gano por “ << (Ecuador – Argentina) << “ goles”; return 0;}

Streams. Manipulación de archivos. Clase viernes 12/06/2009

Page 11: Entrada / Salida Streams Archivos Algoritmos y Estructuras de Datos I Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad

Salida

Streams. Manipulación de archivos. Clase viernes 12/06/2009

#include <iostream> // Biblioteca Entrada/Salida

using namespace std;

int main(int argc, char *argv[]) {

int Argentina = 0;int Ecuador = 2;

cout << “Ecuador gano por “ << (Ecuador – Argentina) << “ goles”; return 0;}

Page 12: Entrada / Salida Streams Archivos Algoritmos y Estructuras de Datos I Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad

Salida#include <iostream> // Biblioteca Entrada/Salida

using namespace std;

int main(int argc, char *argv[]){

int Argentina = 0;

int Ecuador = 2; cout << “Argentina: “ << Argentina << “ goles” << endl;

cout << “Ecuador : “ << Ecuador << “ goles”; return 0;}

Streams. Manipulación de archivos. Clase viernes 12/06/2009

Page 13: Entrada / Salida Streams Archivos Algoritmos y Estructuras de Datos I Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad

Salida

Streams. Manipulación de archivos. Clase viernes 12/06/2009

#include <iostream> // Biblioteca Entrada/Salida

using namespace std;

int main(int argc, char *argv[]){

int Argentina = 0;

int Ecuador = 2; cout << “Argentina: “ << Argentina << “ goles” << endl;

cout << “Ecuador : “ << Ecuador << “ goles”; return 0;}

Page 14: Entrada / Salida Streams Archivos Algoritmos y Estructuras de Datos I Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad

Salida

Streams. Manipulación de archivos. Clase viernes 12/06/2009

#include <iostream> // Biblioteca Entrada/Salida

using namespace std;

int main(int argc, char *argv[]){

int Argentina = 0;

int Ecuador = 2; cout << “Argentina: “ << Argentina << “ goles” << endl;

cout << “Ecuador : “ << Ecuador << “ goles”; return 0;}

Page 15: Entrada / Salida Streams Archivos Algoritmos y Estructuras de Datos I Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad

Salida

Streams. Manipulación de archivos. Clase viernes 12/06/2009

Un gran poder conlleva una gran responsabilidad ...

Page 16: Entrada / Salida Streams Archivos Algoritmos y Estructuras de Datos I Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad

Salida

Ejercicio: Hacer un programa que muestre por pantalla los primeros mil números naturales.

... tienen 5 min. por reloj.

Streams. Manipulación de archivos. Clase viernes 12/06/2009

Tipear los 1000 número me va a llevar más de 5 min. ... qué era eso de los ciclos?

Page 17: Entrada / Salida Streams Archivos Algoritmos y Estructuras de Datos I Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad

Objetos

Streams. Manipulación de archivos. Clase viernes 12/06/2009

Page 18: Entrada / Salida Streams Archivos Algoritmos y Estructuras de Datos I Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad

Clases

Streams. Manipulación de archivos. Clase viernes 12/06/2009

Page 19: Entrada / Salida Streams Archivos Algoritmos y Estructuras de Datos I Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad

Objetos

Streams. Manipulación de archivos. Clase viernes 12/06/2009

Atributos- Modelo- Color- Cantidad de ruedas

Métodos- Iguales

Page 20: Entrada / Salida Streams Archivos Algoritmos y Estructuras de Datos I Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad

bicicleta.h

Streams. Manipulación de archivos. Clase viernes 12/06/2009

Atributos- Modelo- Color- Cantidad de ruedas

Métodos- Iguales

Page 21: Entrada / Salida Streams Archivos Algoritmos y Estructuras de Datos I Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad

bicicleta.cpp

Streams. Manipulación de archivos. Clase viernes 12/06/2009

Atributos- Modelo- Color- Cantidad de ruedas

Métodos- Iguales

Page 22: Entrada / Salida Streams Archivos Algoritmos y Estructuras de Datos I Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad

main.cpp

Streams. Manipulación de archivos. Clase viernes 12/06/2009

Atributos- Modelo- Color- Cantidad de ruedas

Métodos- Iguales

Page 23: Entrada / Salida Streams Archivos Algoritmos y Estructuras de Datos I Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad

main.cpp

Streams. Manipulación de archivos. Clase viernes 12/06/2009

Atributos- Modelo- Color- Cantidad de ruedas

Métodos- Iguales

Page 24: Entrada / Salida Streams Archivos Algoritmos y Estructuras de Datos I Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad

Salida

Ejercicio: Agregar al tipo Bicicleta los métodos públicos

string modelo() const;string color() const;int ruedas()

void mostrarsePorPantalla();

... tienen 7 min. por reloj.

Streams. Manipulación de archivos. Clase viernes 12/06/2009

No se me cae una idea ...

Page 25: Entrada / Salida Streams Archivos Algoritmos y Estructuras de Datos I Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad

Salida

¿Qué pasa si utilizo ...

Bicicleta b1(“paseo”,”rojo”,2);cout << b1;

Streams. Manipulación de archivos. Clase viernes 12/06/2009

Page 26: Entrada / Salida Streams Archivos Algoritmos y Estructuras de Datos I Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad

Salida

¿Qué pasa si utilizo ...

Bicicleta b1(“paseo”,”rojo”,2);cout << b1;

error: no match for ‘operator<<’ in .....

Streams. Manipulación de archivos. Clase viernes 12/06/2009

Page 27: Entrada / Salida Streams Archivos Algoritmos y Estructuras de Datos I Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad

Salida

¿Solución: Implementar el operador << para el tipo Bicicleta ...

cout b1 bicicleta.h

std::ostream & operator<<(std::ostream & os,const Bicicleta & b);

bicicleta.cpp

std::ostream & operator<<(std::ostream & os,const Bicicleta & b){ os << "Modelo: " << b.modelo() << " Color: " << b.color() << " Cant. Ruedas: " << b.ruedas(); return os;}

Streams. Manipulación de archivos. Clase viernes 12/06/2009

Page 28: Entrada / Salida Streams Archivos Algoritmos y Estructuras de Datos I Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad

Salida

Ejercicio: implementar operator << en Bicicleta

... tienen 3 min. por reloj.

Streams. Manipulación de archivos. Clase viernes 12/06/2009

No se me cae una idea ...

Page 29: Entrada / Salida Streams Archivos Algoritmos y Estructuras de Datos I Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad

cout b1 bicicleta.h

std::ostream & operator<<(std::ostream & os,const Bicicleta & b);

Salida

Streams. Manipulación de archivos. Clase viernes 12/06/2009

Page 30: Entrada / Salida Streams Archivos Algoritmos y Estructuras de Datos I Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad

Salida

Streams. Manipulación de archivos. Clase viernes 12/06/2009

NUEVO

NUEVO

Page 31: Entrada / Salida Streams Archivos Algoritmos y Estructuras de Datos I Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad

Salida

Streams. Manipulación de archivos. Clase viernes 12/06/2009

Page 32: Entrada / Salida Streams Archivos Algoritmos y Estructuras de Datos I Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad

Salida

Streams. Manipulación de archivos. Clase viernes 12/06/2009

Callejón sin Salida

Page 33: Entrada / Salida Streams Archivos Algoritmos y Estructuras de Datos I Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad

bicicleta4.txt

Entrada

Streams. Manipulación de archivos. Clase viernes 12/06/2009

( cross amarillo 2 )

Page 34: Entrada / Salida Streams Archivos Algoritmos y Estructuras de Datos I Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad

Salida

Streams. Manipulación de archivos. Clase viernes 12/06/2009

Page 35: Entrada / Salida Streams Archivos Algoritmos y Estructuras de Datos I Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad

bicicleta4.txt

Entrada

Streams. Manipulación de archivos. Clase viernes 12/06/2009

( cross amarillo 2 )

Por qué levanta “cross” y no levanta “cross amarillo” ?

Page 36: Entrada / Salida Streams Archivos Algoritmos y Estructuras de Datos I Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad

bicicleta4.txt

Entrada

Streams. Manipulación de archivos. Clase viernes 12/06/2009

( cross amarillo 2 )

Por qué levanta “cross” y no levanta “cross amarillo” ?Y si el archivo tiene:

o tiene:

(cross racer amarillo 2)

(cross racer amarillo patito 2)

Page 37: Entrada / Salida Streams Archivos Algoritmos y Estructuras de Datos I Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad

Entrada

Streams. Manipulación de archivos. Clase viernes 12/06/2009

bicicleta4.txt

( |cross racer| |amarillo patito| 2 )

+ ciclos!!!

Page 38: Entrada / Salida Streams Archivos Algoritmos y Estructuras de Datos I Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad

bicicleta4.txt

Entrada

Streams. Manipulación de archivos. Clase viernes 12/06/2009

( |cross racer| |amarillo patito| 2 )

Si no ponemos separador, toma por defecto fin de línea

Page 39: Entrada / Salida Streams Archivos Algoritmos y Estructuras de Datos I Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad

Y nos faltó ...

Y no vimos ... pero pueden investigar:

cin

archivo.good()

archivo.peek()

archivo.MASOPCIONES

Streams. Manipulación de archivos. Clase viernes 12/06/2009

Page 40: Entrada / Salida Streams Archivos Algoritmos y Estructuras de Datos I Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad

¿Preguntas?

Streams. Manipulación de archivos. Clase viernes 12/06/2009