Sezione 1.4 Comunicazione da console. |
||
![]() |
La console è l'interfaccia base del calcolatore, essa è di solito composta da una tastiera ed un video. La tastiera viene usata come unità di input standard e il video come unità di output output standard.
Nalla libreria standard iostream del C++ le operazioni di input ed output di un programma vengono gestite da due flussi di dati ( stream): cin per l'input e cout per l'output. Sono definiti inoltre altri due flussi - cerr e clog - il cui scopo è quello di segnalare eventuali messaggi di errore. Tali flussi possono essere mandati anch'essi sul video oppure inviati in un file di log .
Dunque cout (il flusso di output standard) è normalmente diretto al video e cin (il flusso di input standard) è normalmente assegnato alla tastiera.
Usando questi due flussi un programma può interagire con un utente mostrando messaggi sullo schermo e ricevendo l'input da parte dell'utente dalla tastiera.
L'operatore << è noto come operatore di inserimento in quanto esso inserisce il valore alla sua destra nel flusso di dati indicato alla sua sinistra. Negli esempi precedenti esso inserisce nel flusso di output standard cout la stringa costante Frase di output, la costante numerica 120 e il valore della variabile x. Osserviamo che nella prima riga la frase da stampare è racchiusa tra doppi apici ( "), questo perché essa è una stringa di caratteri. Quando vogliamo usare una stringa costante di caratteri dobbiamo racchiuderla tra doppi apici ( ") per distinguerla da un identificatore di variabile. Ad esempio, le due frasi seguenti hanno un significato molto diverso:cout << "Frase di output"; // stampa Frase di output sullo schermo
cout << 120; // stampa il numero 120 sullo schermo
cout << x; // stampa il valore della variabile x sullo schermo
L'operatore di inserzione (<<) può essere usato più di una volta nella stessa frase. Ad esempio:cout << "Salve"; // stampa Salve sullo schermo
cout << Salve; // stampa il valore della variabile Salve sullo schermo
stampa sullo schermo Salve, io sono una frase C++ . L'utilità di poter usare più volte l'operatore di inserzione nella stessa frase si vede quando dobbiamo stampare una combinazione di costanti e variabili o anche semplicemente più di una variabile:cout << "Salve, " << "io sono " << "una frase C++";
Se assumiamo che la variabile eta abbia il valore 24 e che la variabile cap abbia valore 65064 l'output che si ottiene è:cout << "Salve, io ho " << eta << " anni e il mio CAP e' " << cap;
Salve, io ho 24 anni e il mio CAP e' 65064Attenzione: cout non va a capo dopo aver stampato a meno che non glielo si dica esplicitamente. Pertanto, con le due seguenti frasi:
cout << "Questa e' una frase.";otteniamo:
cout << "Questa e' un'altra frase.";
Questa e' una frase.Questa e' un'altra frase.anche se sono state scritte con due distinte chiamate a cout . Per andare a capo bisogna inserire esplicitamente nel flusso un carattere speciale di nuove-linea che, in C++, si indica con \n :
cout << "Prima frase.\n ";produce:
cout << "Seconda frase.\nTerza frase.";
Prima frase.Per andare a capo possiamo anche usare il manipolatore endl . Ad esempio:
Seconda frase.
Terza frase.
cout << "Prima frase." << endl;stampa:
cout << "Seconda frase." << endl;
Prima frase.
Seconda frase.
int eta;dichiara la variabile age di tipo int e quindi aspetta un input da cin (tastiera) per poter memorizzare un valore intero in tale variabile.
cin >> eta;
Attenzione: cin elabora l'input ricevuto da tastiera soltanto dopo che è stato premuto il tasto di invio ENTER. Quindi, anche se viene richiesto di leggere un singolo carattere, cin non elabora l'input fino a quando, dopo aver premuto il tasto del carattere da leggere, non viene premuto anche il tasto ENTER.
Quando si usa l'estrattore (>> ) su cin bisogna tener presente il tipo della variabile che si usa per memorizzare il valore letto. Se viene richiesto un intero deve essere introdotto un intero, se viene richiesto un carattere deve essere introdotto un carattere e se viene richiesta una stringa deve essere introdotta una stringa.
// esempio di i/o |
Dammi un intero: 702 Il valore che mi hai dato e' 702 e il suo doppio e' 1404. |
Un utente malaccorto può essere una delle cause che provocano un errore nell'esecuzione di semplici programmi che usano cin (come quello appena visto). La ragione è che se viene richiesto un intero e l'utente introduce il suo nome (che è una stringa di caratterei) il programma non funziona correttamente perché una stringa non è ciò che esso si aspetta dall'utente. Per ora, nei nostri programmi di esempio, assumeremo che l'utente sia perfettamente cooperativo ed introduca sempre dati del tipo richiesto dal programma. Vedremo in seguito come sia possibile scrivere programmi più robusti che accettano qualsisi input e, qualora esso non sia del tipo appropriato, chiedono all'utente di riimmettere un valore corretto.
Si può anche usare cin per richiedere più di un dato alla volta:
cin >> a >> b;è equivalente a:
cin >> a;In entrambi i casi l'utente deve fornire due valori dei tipi appropriati, uno per la variabile a ed uno per la variabile b . Tali valori possono essere separati da uno o più caratteri spazio o tabulazione o nuova-linea .
cin >> b;
![]() |
![]() 1-3. Operatori. |
![]() indice |
![]() 2-1. Strutture di controllo. |