Lezione VIII

15
Lezione VIII Laboratorio di Programmazione

description

Laboratorio di Programmazione. Lezione VIII. In C è sfruttata l’informazione riguardo al tipo di un certo dato per impostare la formattazione sullo stream. Es. Il char ‘A’ e l’ int 65 in memoria sono rappresentati allo stesso modo, ma vengono convertiti diversamente sullo stream!. - PowerPoint PPT Presentation

Transcript of Lezione VIII

Page 1: Lezione VIII

Lezione VIII

Laboratorio di Programmazione

Page 2: Lezione VIII

Streams formattati

In C è sfruttata l’informazione riguardo al

tipo di un certo dato per impostare la formattazione sullo stream.

Es. Il char ‘A’ e l’int 65 in memoria sono rappresentati allo stesso modo, ma vengono convertiti diversamente sullo stream!

Page 3: Lezione VIII

Lettura di uno stream

>> operatore di estrazione per operazioni di lettura (input)

(contenuto nella libreria di funzioni <iostream>)

Sintassi: stream_utilizzato >> variabile_tipata

Semantica: legge da stream_utilizzato (o attende finchè arrivano dati)

assegna la lettura alla variabile_tipata

Esempio: int x;

cin >> x;

cin è lo stream standard di input (tastiera)

Page 4: Lezione VIII

Lettura di uno streamEsempio: int x,y;

cin >> x >> y;

Cascata di letture in ordine da Sinistra a Destra

Stream cin: 3 5 1 …

x = ?

y = ?

Page 5: Lezione VIII

Lettura di uno streamEsempio: int x,y;

cin >> x >> y;

Cascata di letture in ordine da Sinistra a Destra

Stream cin: 33 5 1 …

x = 3

y = ?

x

Il numero 3 è consumato dallo stream

Page 6: Lezione VIII

Lettura di uno streamEsempio: int x,y;

cin >> x >> y;

Cascata di letture in ordine da Sinistra a Destra

Stream cin: 3 5 1 …

x = 3

y = 5

x

Le prossime letture partiranno dal numero 1.

x

Page 7: Lezione VIII

Tipo di dato letto

Esempio: int x;

cin >> x;

cin = -1

x = -1

Esempio: char x,y;

cin >> x >> y;

x = ‘-’

y = ‘1’

cin = -1

Page 8: Lezione VIII

Scrittura di uno stream

<< operatore di inserimento per operazioni di scrittura (output)

(contenuto nella libreria di funzioni <iostream>)

Sintassi: stream_utilizzato << espressione_tipata

Semantica: immette sullo stream_utilizzato la valutazione della

espressione_tipata

Esempio: int x=1;

cout << x;

cout è lo stream standard di output (monitor)

Page 9: Lezione VIII

Scrittura di uno streamEsempio: int x=1;

int y=2;

cout << x + y;

Stream cout: 3

Esempio con cascata di scritture (associativo a sinistra): int x=1;

int y=2;

cout << x << ‘ ’ << y << endl << x + y << endl;

Stream cout: 1 2

3

endl dà il comando di inviare un “a capo” sullo stream

Page 10: Lezione VIII

I Files in C++

I files sono modellati come streams.

fstream

iostream

La classe fstream conprende la iostream basta #include fstream

Page 11: Lezione VIII

I Files in C++

Nella classe fstream ci sono due classi interessanti:

ifstream = input file stream

ofstream = output file stream.

La prima classe è usata per leggere, mentre la seconda per scrivere.

Molti metodi e attributi sono comuni, altri specifici della classe.

Page 12: Lezione VIII

Ifstream:Apertura e chiusura files

char nomefile []=“prova.txt”;

ifstream filein (nomefile); // apre il file in lettura

if (filein.fail( ) ) { …} // controllo errori di apertura

……… // operazioni con l’oggetto filein

filein.close ( ); // chiude il file

Page 13: Lezione VIII

Ifstream: lettura dati

* filein >> variabile_tipata; (cfr. cin >> var)

* char ch; ch = filein.get (); (cfr. ch = cin.get( ) )

** filein.eof ( ) : funzione booleana vera se si è letto l’ultimo carattere del file (End Of File)

Page 14: Lezione VIII

Ofstream:Apertura e chiusura files

char nomefile []=“prova.txt”;

ofstream fileout (nomefile); // apre il file in scrittura // e CANCELLA l’eventuale file con // lo stesso nome

if (fileout.fail( ) ) { …} // controllo errori di apertura

……… // operazioni con l’oggetto fileout

fileout.close ( ); // chiude il file

Page 15: Lezione VIII

Ofstream: scrittura dati

* fileout << variabile_tipata; (cfr. cout << ‘a’)

* fileout.put (‘a’); (cfr. cin.put(‘a’))

** fileout.eof ( ) è sempre falso (si possono sempre aggiungere bytes)