Entrada / Salida Streams Archivos Algoritmos y Estructuras de Datos I Departamento de Computación,...

Post on 24-Jan-2016

218 views 0 download

Transcript of Entrada / Salida Streams Archivos Algoritmos y Estructuras de Datos I Departamento de Computación,...

Entrada / SalidaStreamsArchivos

Algoritmos y Estructuras de Datos I

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

Universidad de Buenos Aires

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

Repaso de tipos

• int

• double

• char

• String

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

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

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

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;}

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

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;}

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

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

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;}

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

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;}

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;}

Salida

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

Un gran poder conlleva una gran responsabilidad ...

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?

Objetos

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

Clases

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

Objetos

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

Atributos- Modelo- Color- Cantidad de ruedas

Métodos- Iguales

bicicleta.h

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

Atributos- Modelo- Color- Cantidad de ruedas

Métodos- Iguales

bicicleta.cpp

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

Atributos- Modelo- Color- Cantidad de ruedas

Métodos- Iguales

main.cpp

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

Atributos- Modelo- Color- Cantidad de ruedas

Métodos- Iguales

main.cpp

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

Atributos- Modelo- Color- Cantidad de ruedas

Métodos- Iguales

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 ...

Salida

¿Qué pasa si utilizo ...

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

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

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

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

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 ...

cout b1 bicicleta.h

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

Salida

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

Salida

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

NUEVO

NUEVO

Salida

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

Salida

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

Callejón sin Salida

bicicleta4.txt

Entrada

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

( cross amarillo 2 )

Salida

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

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” ?

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)

Entrada

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

bicicleta4.txt

( |cross racer| |amarillo patito| 2 )

+ ciclos!!!

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

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

¿Preguntas?

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