Rappresentazione di interi
Rappresentazione di reali
Rappresentazione di reali
Rappresentazione di reali
In C++ (come in C) sono definiti i seguenti dispositivi standard di I/O:
stdout
standard output (di default associato al video);stderr
standard output per i messaggi (associato al video);stdin
standard input (di default associato alla tastiera).In C++ i dispositivi standard di I/O sono “collegati” rispettivamente agli oggetti globali di I/O:
cout cerr cin
Per definire gli oggetti globali di I/O bisogna includere l’header-file <iostream>
.
In C++ sono definiti gli operatori di flusso di I/O:
cout << (inserimento) (oppure cerr)
cin >> (estrazione)
In C++ un’operazione di input si identifica con una operazione di estrazione dall’oggetto cin:
cin >> dato;
cin
e memorizzato nella variabile dato;Le operazioni di estrazione possono essere “impilate” una di seguito all’altra in un’unica istruzione.
cin >> dato1 >> dato2 >> dato3;
Il programma interpreta la lettura di un dato come terminata se incontra uno spazio vuoto (blank), un carattere di tabulazione (tab) o un ritorno a capo (CR).
Casi particolari:
char
, legge un solo carattere.Esempio:
cin >> base >> altezza;
Suggerimento
Le operazioni di estrazione non restituiscono mai espliciti messaggi di errore, tuttavia:
Per accorgersi di un errore (e per porvi rimedio) bisogna utilizzare alcune proprietà dell’oggetto cin
(… più avanti).
In C++ un’operazione di output si identifica con una operazione di inserimento nell’oggetto cout:
cout << dato;
cout
(e da questo automaticamente trasferito su stdout);Le operazioni di inserimento possono essere “impilate” una di seguito all’altra in un’unica istruzione.
Esempio:
cout << dato1 << dato2 << dato3;
(equivale a:
cout << dato1;
cout << dato2;
cout << dato3;).
Il tipo delle variabili è riconosciuto automaticamente.
Esempio:
cout
<<”Base triangolo: “<<base<<endl;
cout
<<”Altezza triangolo: “<<altezza<< endl;
cin
>> base >> altezza
Esempio:
cout << “Salve! \n”; cout << “Come va? \n”; → Salve! Come va?
\n è un carattere speciale di fine riga.
Il carattere \ (backslash) non è trasferito sullo schermo, ma usato in combinazione con i caratteri successivi:
l’insieme di caratteri viene detto sequenza di escape, e viene interpretato come un unico carattere.
Le sequenze di escape sono usate tipicamente per specificare caratteri speciali che non hanno il loro equivalente stampabile:
E’ opportuno che al termine di una istruzione di stampa il cursore sia situato all’inizio della linea successiva.
Le sequenze di escape sono utili anche per scrivere sul monitor dei caratteri particolari quali la stessa barra inversa (\) o le doppie virgolette (“).
Per esempio, per far scrivere sul monitor la frase seguente,
Stampiamo questi due simboli \ e “
contenente la barra inversa e le doppie virgolette dobbiamo assegnare la seguente istruzione:
cout<<"Stampiamo questi due simboli \\ e \"
“
Ricordiamo che le costanti stringa devono essere racchiuse tra doppi apici mentre le costanti carattere tra apici semplici.
Per l’output formattato abbiamo due metodi fondamentali di cout:
cout.width(ampiezza);
cout.precision(cifre);
dove ampiezza e cifre sono due interi che rappresentano,
Queste istruzioni di formattazione devono precedere ogni ordine di stampa.
Vedere l’esempio in figura a lato.
printf
formatta e scrive una serie di caratteri e valori sul dispositivo standard di output (stdout
);printf
bisogna prima includere il file header <stdio.h>
.La funzione printf
riceve dal programma chiamante uno o più argomenti.
Solo il primo è obbligatorio e deve essere una stringa, che si chiama control string
(stringa di controllo).
La stringa di controllo viene trasferita sullo schermo, carattere per carattere (compresi gli spazi bianchi), salvo quando sono incontrati i seguenti caratteri particolari:
Altri argomenti successivi alla stringa di controllo, nella chiamata a printf
, rappresentano i dati da formattare e scrivere, e possono essere costituiti da:
Ad ogni argomento successivo alla stringa di controllo, deve corrispondere, all’interno di essa e nello stesso ordine, uno specificatore di formato, costituito da un gruppo di caratteri introdotto dal carattere %.
%[flags][ampiezza][.precisione]
tipo
Si veda l’esempio nella figura a lato.
Osserviamo che cout.width(ampiezza) cout.precision(cifre) possono utilizzare anche delle variabili mentre printf può servirsi soltanto di numeri per formattare un dato;
printf("%.5f"
, dato)
se il numero di cifre è inferiore al numero di cifre significative, allora il dato viene espresso in notazione esponenziale;
Esempio
cout.precision
(3);
cout<<123456;
→ 1.23 e05
cout possiede molte altre istruzioni che consentono una gestione completa della formattazione a scapito della semplicità.
In C++ non esiste il concetto di tastiera, disco, monitor, stampante; questi dispositivi sono raggruppati secondo due tipologie:
In generale avremo
dispositivo di input >>x1>>...>>xn;
che va inteso come:
i valori estratti dal dispositivo di input sono immessi come valore nelle variabili che seguono l’operatore >>
mentre
dispositivo di output << espr1<<...<
va letto come: i valori delle singole espressioni sono inseriti successivamente nel dispositivo di output.
Ad esempio se si intende inviare dei dati sulla stampante occorre scrivere la seguente dichiarazione di tipo:
ofstream stampante(“prn”);
ed adoperare stampante al posto di cout. Ad esempio:
stampante<<”Area= “<
Occorre però includere il file <fstream>
in cui il tipo ofstream è definito.
Scrivere un programma che chiede all’utente di digitare tre interi sulla stessa riga, e ne visualizza la somma, il prodotto e la media.
1. Prime nozioni di Programmazione
2. C++ elementi di un programma
3. Le istruzioni di I/O standard
5. C++ funzioni matematiche ed espressioni booleane
6. Le strutture di controllo - parte seconda
8. Array di caratteri e tipi astratti
9. Astrazione procedurale: Procedure e Funzioni
10. Astrazione procedurale: Procedure e Funzioni -parte seconda
11. Astrazione procedurale: Procedure e Funzioni - parte terza
12. Librerie
13. Le strutture di controllo - parte terza
14. Algoritmi
16. I File di testo
17. La classe string