programmazione procedurale in linguaggio c++

42
G. Mecca – Università della Basilicata – G. Mecca – Università della Basilicata – [email protected] [email protected] Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 4 Lettura e Stampa dei Dati versione 2.0 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)

Upload: tamyra

Post on 08-Jan-2016

52 views

Category:

Documents


0 download

DESCRIPTION

Programmazione Procedurale in Linguaggio C++. Elementi di Base Parte 4 Lettura e Stampa dei Dati. versione 2.0. Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina). Elementi di Base: Lettura e Stampa >> Sommario. Sommario. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Programmazione Procedurale in Linguaggio C++

G. Mecca – Università della Basilicata – [email protected] G. Mecca – Università della Basilicata – [email protected]

Programmazione Procedurale in Linguaggio C++

Elementi di Base

Parte 4

Lettura e Stampa dei Dati

versione 2.0Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons

(vedi ultima pagina)

Page 2: Programmazione Procedurale in Linguaggio C++

2G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Sommario

Introduzione Concetto di Flusso (“Stream”) Lettura e Stampa da Console in C++ Stampa su Console in C++ Lettura da Console in C++

Input Formattato Lettura e Stampa da File in C++

Elementi di Base: Lettura e Stampa >> Sommario

Page 3: Programmazione Procedurale in Linguaggio C++

3G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Introduzione

Istruzioni di Stampaservono a rendere visibili all’esterno del

programma i valori delle variabili (“stampare” sui dispositivi di uscita)

Istruzioni di Letturaservono ad acquisire dall’esterno i valori

delle variabili (“leggere” valori provenienti dai dispositivi di ingresso)

Elementi di Base: Lettura e Stampa >> Introduzione

ATTENZIONEalla terminologia

Page 4: Programmazione Procedurale in Linguaggio C++

4G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Introduzione

Lettura e stampa da “console”dati acquisiti dalla tastiera e scritti sullo

schermoutile per l’interazione con l’utente

Lettura e stampa da filedati acquisiti dal disco e scritti sul discoutile per rendere permanenti i risultati delle

elaborazioni Entrambe basate sullo stesso concetto...

Elementi di Base: Lettura e Stampa >> Introduzione

Page 5: Programmazione Procedurale in Linguaggio C++

5G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Concetto di Flusso

Flusso (“Stream”)i dati da stampare vengono visti come una

sequenza di caratteri da inviare al dispositivo di uscita (il dispositivo attinge dal flusso)

i dati da leggere vengono visti come provenienti da un flusso che origina dal dispositivo di ingresso (il programma attinge dal flusso)

Elementi di Base: Lettura e Stampa >> Concetto di Flusso

Page 6: Programmazione Procedurale in Linguaggio C++

6G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Concetto di Flusso

Elementi di Base: Lettura e Stampa >> Concetto di Flusso

Processore(esegue le istr. del programma)

Processore(esegue le istr. del programma)

Dispositivodi uscita

(es: schermo)

Dispositivodi uscita

(es: schermo)abcd 1234 *+-

tende a “riempire”il flusso

tende a “svuotare”il flusso

Stampa dei Dati

Processore(esegue le istr. del programma)

Processore(esegue le istr. del programma)

Dispositivodi ingresso

(es: tastiera)

Dispositivodi ingresso

(es: tastiera)12 xyz 1.345

tende a “svuotare”il flusso

tende a “riempire”il flusso

Lettura dei Dati

Page 7: Programmazione Procedurale in Linguaggio C++

7G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Flussi Standard

I programmi hanno due flussi predefiniti flusso di uscita: “standard output”flusso di ingresso: “standard input”

Normalmente: operazioni su console“standard output” -> schermo “standard input” -> tastieraè possibile redirigere i flussi (es: standard

output su stampanteè possibile definire ulteriori flussi

Elementi di Base: Lettura e Stampa >> Concetto di Flusso

Page 8: Programmazione Procedurale in Linguaggio C++

8G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Concetto di Flusso

Elementi di Base: Lettura e Stampa >> Concetto di Flusso

SchermoSchermo

Flusso di uscita

File su discoFile su disco

StampanteStampante

File su discoFile su disco

TastieraTastiera

Pro

cess

ore

Ese

gu

e le

istr

uzi

oni

del

Pro

gra

mm

a

Flusso di uscita

Flusso di uscita

Flusso di ingresso

Flusso di ingresso

StandardInput

StandardOutput

Page 9: Programmazione Procedurale in Linguaggio C++

9G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Concetto di Flusso

Questi concetti sono comuni a tutti i linguaggi proceduraliogni linguaggio ha una istruzione di stampa

dei dati e una istruzione di lettura dei datiEs: write e read in Pascal e FORTRANIn C++ la sintassi è leggermente diversa,

(>> e <<)in tutti i linguaggi la semantica è basata sul

concetto di flusso

Elementi di Base: Lettura e Stampa >> Concetto di Flusso

Page 10: Programmazione Procedurale in Linguaggio C++

10G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Lettura e Stampa da Console in C++ Stampa sullo schermo

es: cout << “La lunghezza vale: “ << cerchio;cout << “La lunghezza vale: “ << cerchio;

Intuitivamentecout rappresenta il flusso diretto allo

schermo (“standard output”)i valori degli argomenti vengono stampati

sullo schermo

Elementi di Base: Lettura e Stampa >> Lettura e Stampa da Console

cerchio: 22.75RAM SchermoLa lunghezza vale: 22.75

Page 11: Programmazione Procedurale in Linguaggio C++

11G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Lettura e Stampa da Console in C++ Lettura dalla tastiera

es: cin >> raggio;cin >> raggio;

Intuitivamentecin rappresenta il flusso proveniente dalla

tastiera (“standard input”)il valore prelevato viene assegnato alla

variabile

Elementi di Base: Lettura e Stampa >> Istruzioni di Lettura da Console

raggio:RAM12↓ 12

Schermo

Page 12: Programmazione Procedurale in Linguaggio C++

12G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Stampa su Console in C++

Sintassicout << cout << <argomento><argomento>;;

cout << cout << <argomento1><argomento1> << << <argomento2><argomento2> ... ; ... ;

Dovecout è un oggetto riservato del linguaggio<< è l’operatore di inviogli argomenti sono espressioni (costanti,

variabili, o espressioni complesse)

Elementi di Base: Lettura e Stampa >> Istruzioni di Stampa su Console

Page 13: Programmazione Procedurale in Linguaggio C++

13G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Stampa su Console

Semanticagli argomenti sono considerati da sinistra a

destraviene calcolato il valore di ciascun

argomentoil valore viene inserito nel flusso diretto allo

schermo sotto forma di sequenza di caratterila scheda grafica visualizza il contenuto sullo

schermo come sequenza di caratteri

Elementi di Base: Lettura e Stampa >> Istruzioni di Stampa su Console

Page 14: Programmazione Procedurale in Linguaggio C++

14G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Visualizzazione sullo Schermo

Spazio visibile sullo schermoorganizzato in righenumero di righe virtualmente infinito

(scorrimento verticale)ogni riga è divisa in caratteri

Cursoretiene traccia della posizione correnteinizialmente: primo carattere della prima rigapoi si sposta per via delle stampe

Elementi di Base: Lettura e Stampa >> Istruzioni di Stampa su Console

Page 15: Programmazione Procedurale in Linguaggio C++

15G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Visualizzazione sullo Schermo

Andare a capocursore sul primo carattere della riga

successivaequivale a stampare un carattere di fine-rigail carattere di fine riga è indicato con la

parola chiave endl oppure ‘\n’ Esempi

cout << “Vado a capo” << endl;cout << “Vado a capo” << endl;cout << “Vado a capo\n”;cout << “Vado a capo\n”;

Elementi di Base: Lettura e Stampa >> Istruzioni di Stampa su Console

Page 16: Programmazione Procedurale in Linguaggio C++

16G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Visualizzazione sullo Schermo

E’ un esempio di “spazio bianco” Caratteri per Spazi Bianchi

non producono la stampa di simboli sullo schermo, servono a organizzare le stampe

In C++spazio: ‘ ’fine-riga: endl, ‘\n’tabulatore: ‘\t’

Elementi di Base: Lettura e Stampa >> Istruzioni di Stampa su Console

Page 17: Programmazione Procedurale in Linguaggio C++

17G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

↓77.21oizinI

↓3

↓eniF

↓321laV

321.0erolaV

Esempi

cout << “Inizio”;cout << “Inizio”;

cout << “ “;cout << “ “;

cout << cerchio;cout << cerchio;

cout << endl;cout << endl;

cout << 2+1 << endl;cout << 2+1 << endl;

cout << “\n”;cout << “\n”;

cout << “Fine\n” << ‘\n’;cout << “Fine\n” << ‘\n’;

cout << “Val\t123\n”;cout << “Val\t123\n”;

cout << “Valore\t0.123”;cout << “Valore\t0.123”;

Elementi di Base: Lettura e Stampa >> Istruzioni di Stampa su Console

posizione finaledel cursore

ATTENZIONE alla differenza

Page 18: Programmazione Procedurale in Linguaggio C++

18G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Lettura da Console in C++

Sintassicin >> cin >> <variabile><variabile>;;

cin >> cin >> <variabile1><variabile1> >> >> <variabile2><variabile2> ... ; ... ;

Dovecin è un oggetto riservato del linguaggio>> è l’operatore di prelevamentogli argomenti sono variabili (devono essere

state preliminarmente dichiarate)

Elementi di Base: Lettura e Stampa >> Istruzioni di Lettura da Console

Page 19: Programmazione Procedurale in Linguaggio C++

19G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Lettura da Console

Semanticaviene effettuato un “input formattato”su un “flusso tamponato”

Input formattatogli “spazi bianchi” vengono trattati in modo

particolare (‘ ‘, ‘\n’, ‘\t’) Flusso tamponato

il flusso viene analizzato “per righe”

Elementi di Base: Lettura e Stampa >> Istruzioni di Lettura da Console

Page 20: Programmazione Procedurale in Linguaggio C++

20G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Input Formattato

Flusso tamponato (“buffered”)i dati digitati dall’utente non sono immediatamente

inseriti nel flussosono “tamponati” in un’area di memoria temporanea,

detta “buffer”solo quando l’utente digita il carattere di fine riga il

contenuto del buffer viene copiato nel flusso Inoltre

i caratteri digitati sulla tastiera vengono mostrati sullo schermo (e spostano il cursore)

obiettivo: consentire correzioni

Elementi di Base: Lettura e Stampa >> Istruzioni di Lettura da Console

Page 21: Programmazione Procedurale in Linguaggio C++

21G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Input Formattato

Input formattato appena nel flusso è presente almeno una

riga, il processore analizza il flusso per “leggere” il valore da assegnare alla variabile

nell’analisi del flusso ignora eventuali spazi bianchi iniziali

gli spazi bianchi vengono utilizzati anche come separatori tra i valori

Elementi di Base: Lettura e Stampa >> Istruzioni di Lettura da Console

Page 22: Programmazione Procedurale in Linguaggio C++

22G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Semantica dell’Input Formattato

Supponiamo int x; cin >> x;int x; cin >> x;il processore analizza il flusso di ingresso cercando

un valore di tipo intero (cioè una sequenza di cifre)estrae e scarta tutti gli spazi bianchi iniziali che

incontra quando incontra la prima cifra, comincia a leggere il

numero considerando tutte le cifre successivesi ferma non appena incontra uno spazio bianco assegna il numero letto alla variabile x

Elementi di Base: Lettura e Stampa >> Istruzioni di Lettura da Console

Page 23: Programmazione Procedurale in Linguaggio C++

23G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Input Formattato

Elementi di Base: Lettura e Stampa >> Istruzioni di Lettura da Console

ProcessoreProcessoreDispositivodi ingresso

(es: tastiera)

Dispositivodi ingresso

(es: tastiera)□ □ 12 \n

int x; cin >> x;int x; cin >> x;

x: 31456859

RAM

ProcessoreProcessoreDispositivodi ingresso

(es: tastiera)

Dispositivodi ingresso

(es: tastiera)\n

x: 12

RAM

Page 24: Programmazione Procedurale in Linguaggio C++

24G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Input Formattato

Elementi di Base: Lettura e Stampa >> Istruzioni di Lettura da Console

ProcessoreProcessoreDispositivodi ingresso

(es: tastiera)

Dispositivodi ingresso

(es: tastiera)24.3 □ 4 \n

float y; cin >> y;float y; cin >> y;

y: .123.E+23

RAM

ProcessoreProcessoreDispositivodi ingresso

(es: tastiera)

Dispositivodi ingresso

(es: tastiera)□ 4 \n

y: 24.3

RAM

Page 25: Programmazione Procedurale in Linguaggio C++

25G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Input Formattato

Elementi di Base: Lettura e Stampa >> Istruzioni di Lettura da Console

ProcessoreProcessoreDispositivodi ingresso

(es: tastiera)

Dispositivodi ingresso

(es: tastiera)□ □ A B C \n

char z; cin >> z;char z; cin >> z;

z: *

RAM

ProcessoreProcessoreDispositivodi ingresso

(es: tastiera)

Dispositivodi ingresso

(es: tastiera)B C \n

z: A

RAM

Page 26: Programmazione Procedurale in Linguaggio C++

26G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Input Formattato

Elementi di Base: Lettura e Stampa >> Istruzioni di Lettura da Console

ProcessoreProcessoreDispositivodi ingresso

(es: tastiera)

Dispositivodi ingresso

(es: tastiera)12 \n \n .23 \n A \n

int x; float y; char z; int x; float y; char z;

cin >> x; cin >> y; cin >> z:cin >> x; cin >> y; cin >> z:

x: 2341456

y: .2234e+1

z: +

RAM

ProcessoreProcessoreDispositivodi ingresso

(es: tastiera)

Dispositivodi ingresso

(es: tastiera)\n

x: 12

y: 0.23

z: A

RAM

Page 27: Programmazione Procedurale in Linguaggio C++

27G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Semantica dell’Input Formattato

Condizioni di erroresi verificano quando la lettura del valore è

interrotta da un carattere inaspettato Esempio

lettera o simbolo per gli interilettera o simbolo (meno il punto ‘.’) per i reali

Possono verificarsi condizioni inaspettate

Elementi di Base: Lettura e Stampa >> Istruzioni di Lettura da Console

Page 28: Programmazione Procedurale in Linguaggio C++

28G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Semantica dell’Input Formattato

Normalmenteil processore cerca di eseguire comunque la

lettura producendo risultati scorrettiin altri casi la lettura si interrompe del tutto e

i valori delle variabili restano inalterati In ogni caso

non viene segnalato un errore esplicito, per cui è necessario fare attenzione

Elementi di Base: Lettura e Stampa >> Istruzioni di Lettura da Console

Page 29: Programmazione Procedurale in Linguaggio C++

29G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Condizioni Inaspettate

Elementi di Base: Lettura e Stampa >> Istruzioni di Lettura da Console

ProcessoreProcessoreDispositivodi ingresso

(es: tastiera)

Dispositivodi ingresso

(es: tastiera)12.4 \n \n .23 \n A \n

int x; float y; char z; int x; float y; char z;

cin >> x; cin >> y; cin >> z;cin >> x; cin >> y; cin >> z;

x: 2341456

y: .2234e+1

z: +

RAM

ProcessoreProcessoreDispositivodi ingresso

(es: tastiera)

Dispositivodi ingresso

(es: tastiera)23 \n A \n

x: 12

y: 0.4

z: .

RAM

la lettura vieneeseguita comunque

Page 30: Programmazione Procedurale in Linguaggio C++

30G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Situazione di Errore

Elementi di Base: Lettura e Stampa >> Istruzioni di Lettura da Console

ProcessoreProcessoreDispositivodi ingresso

(es: tastiera)

Dispositivodi ingresso

(es: tastiera)xxx \n

int x; float y; char z; int x; float y; char z;

cin >> x; cin >> y; cin >> z:cin >> x; cin >> y; cin >> z:

x: 2341456

y: .2234e+1

z: +

RAM

ProcessoreProcessoreDispositivodi ingresso

(es: tastiera)

Dispositivodi ingresso

(es: tastiera)xxx \n

x: 2341456

y: .2234e+1

z: +

RAM

la lettura siinterrompe del tutto(il flusso “va in errore”)

Page 31: Programmazione Procedurale in Linguaggio C++

31G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Lettura e Stampa su File in C++

I dati prodotti sullo standard output sono volatilia volte è necessario salvare

permanentemente i dati di un programma Memorizzazione permanente su disco

è possibile scrivere dati in un file su discoè possibile leggere dati da un file su disco

Elementi di Base: Lettura e Stampa >> Lettura e Stampa su File

Page 32: Programmazione Procedurale in Linguaggio C++

32G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Lettura e Stampa su File

Il meccanismo è del tutto analogobasato su flussi (“stream”) che vengono

associati ai file I linguaggi consentono di

creare nuovi flussi oltre a quelli standard associandoli a file sul disco

utilizzare le istruzioni ordinarie di lettura e stampa per lavorare con questi flussi

Elementi di Base: Lettura e Stampa >> Lettura e Stampa su File

Page 33: Programmazione Procedurale in Linguaggio C++

33G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Lettura e Stampa su File

In C++ofstream: flusso associato ad un file in cui si

stampano dei dati

es: ofstream flussoSuFile (“fileDati.txt”);ofstream flussoSuFile (“fileDati.txt”);

ifstream: flusso associato ad un file da cui si leggono dei dati

es: ifstream flussoDaFile (“fileDati.txt”);ifstream flussoDaFile (“fileDati.txt”);

Per utilizzarli è necessario specificare#include <fstream.h>#include <fstream.h>

Elementi di Base: Lettura e Stampa >> Lettura e Stampa su File

Page 34: Programmazione Procedurale in Linguaggio C++

34G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Stampa su File

Sintassidichiarazione di flusso di stampa su file

ofstream <nomeFlusso> (“<nomeFileSuDisco>”);ofstream <nomeFlusso> (“<nomeFileSuDisco>”);

Dove<nomeFlusso> è un identificatore<nomeFileSuDisco> è il nome fisico di un file sul

disco Esempi

ofstream flussoDaFile (“fileDati.txt”);ofstream flussoDaFile (“fileDati.txt”);

ofstream altroFlusso (“c:\prova.txt”);ofstream altroFlusso (“c:\prova.txt”);

Elementi di Base: Lettura e Stampa >> Istruzioni di Stampa su File

Page 35: Programmazione Procedurale in Linguaggio C++

35G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Stampa su File

Semanticaviene creato un nuovo flusso associato al filese il file non esiste viene creatose esiste, il suo contenuto viene cancellato

Da quel momentoil flusso creato può essere utilizzato esattamente

come cout (operatore <<)nel file vengono scritti caratteri (file di testo)

ATTENZIONEal termine delle operazioni il flusso deve essere

chiuso

Elementi di Base: Lettura e Stampa >> Istruzioni di Stampa su File

Page 36: Programmazione Procedurale in Linguaggio C++

36G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Stampa su File: Esempio#include <iostream.h>#include <iostream.h>#include <fstream.h>#include <fstream.h>

void main() {void main() { int x;int x; float y;float y; ofstream flussoSuDisco (“prova.txt”);ofstream flussoSuDisco (“prova.txt”); cout << "Immetti due numeri" << endl;cout << "Immetti due numeri" << endl; cin >> x;cin >> x; cin >> y;cin >> y; flussoSuDisco << x << " " << y << endl;flussoSuDisco << x << " " << y << endl; flussoSuDisco.close(); flussoSuDisco.close(); }}

Elementi di Base: Lettura e Stampa >> Istruzioni di Stampa su File

>> fileUscita.cpp

Page 37: Programmazione Procedurale in Linguaggio C++

37G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Flusso di Lettura da File

Sintassidichiarazione di un flusso di lettura da file

ifstream <nomeFlusso> (“<nomeFileSuDisco>”);ifstream <nomeFlusso> (“<nomeFileSuDisco>”);

Dove<nomeFlusso> è un identificatore<nomeFileSuDisco> è il nome fisico di un file sul

disco Esempi

ifstream flussoDaFile (“fileDati.txt”);ifstream flussoDaFile (“fileDati.txt”);

ifstream altroFlusso (“c:\prova.txt”);ifstream altroFlusso (“c:\prova.txt”);

Elementi di Base: Lettura e Stampa >> Istruzioni di Lettura da File

Page 38: Programmazione Procedurale in Linguaggio C++

38G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Lettura da File

Semanticaviene creato un nuovo flusso di lettura associato al

file Da quel momento

il flusso creato può essere utilizzato esattamente come cin (operatore >>)

Attenzioneil file deve esistere su discoaltrimenti comportamenti scorrettianche in questo caso il flusso deve essere chiuso

Elementi di Base: Lettura e Stampa >> Istruzioni di Lettura da File

Page 39: Programmazione Procedurale in Linguaggio C++

39G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Lettura da File: Esempio#include <iostream.h>#include <iostream.h>#include <fstream.h>#include <fstream.h>

void main() {void main() { int x;int x; float y;float y; ifstream flussoDiLettura (“prova.txt”);ifstream flussoDiLettura (“prova.txt”); flussoDiLettura >> x;flussoDiLettura >> x; flussoDiLettura >> y;flussoDiLettura >> y; cout << "I due numeri sono" << endl;cout << "I due numeri sono" << endl; cout << x << " " << y;cout << x << " " << y; flussoDiLettura.close();flussoDiLettura.close();}}

Elementi di Base: Lettura e Stampa >> Istruzioni di Lettura da File

>> fileIngresso.cpp

Page 40: Programmazione Procedurale in Linguaggio C++

40G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Riassumendo

Concetto di Flusso (“Stream”) Stampa su Console Lettura da Console

input formattato (ATTENZIONE) Lettura e Stampa da File

#include <fstream.h>creazione di un flusso di stampa su filecreazione di un flusso di lettura da file

Elementi di Base: Lettura e Stampa >> Sommario

Page 41: Programmazione Procedurale in Linguaggio C++

41G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Elementi di Base: Lettura e Stampa >> Un Semplice Programma

// Calcolo della superficie del cerchio// Calcolo della superficie del cerchio#include <iostream.h>#include <iostream.h>void main() {void main() { // Dichiarazioni// Dichiarazioni const float pigreco=3.14;const float pigreco=3.14; int raggio;int raggio; float cerchio, circonf;float cerchio, circonf; // Operazioni// Operazioni cout << “Immetti la lungh. del raggio” << endl;cout << “Immetti la lungh. del raggio” << endl; cout << “(deve essere un numero intero)” << endl;cout << “(deve essere un numero intero)” << endl; cin >> raggio;cin >> raggio; cerchio = raggio*raggio*pigreco;cerchio = raggio*raggio*pigreco; circonf = 2*pigreco*raggio;circonf = 2*pigreco*raggio; cout << “La circonferenza misura: “ << circonf << endl;cout << “La circonferenza misura: “ << circonf << endl; cout << “Il cerchio ha superficie: “ << cerchio << endl;cout << “Il cerchio ha superficie: “ << cerchio << endl;}}

Un Semplice Programma

>>

Page 42: Programmazione Procedurale in Linguaggio C++

42G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Termini della Licenza

This work is licensed under the Creative Commons Attribution-ShareAlike License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/1.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Termini della Licenza

Questo lavoro viene concesso in uso secondo i termini della licenza “Attribution-ShareAlike” di Creative Commons. Per ottenere una copia della licenza, è possibile visitare http://creativecommons.org/licenses/by-sa/1.0/ oppure inviare una lettera all’indirizzo Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.