Imparare C++ - Errata Corrige
- (Pagina 4) Qui c'è un errore mio: l'indirizzo di posta elettronica che ho riportato è sbagliato. Per spedirmi un'e-mail o un messaggio, usate gli strumenti della sezione contatto.
- (Pagina 13) La figura 1.4 è sbagliata. L'output di "CiaoMondo" è il seguente:
- (Pagina 17) C'è un riferimento alla variabile cin, che però non è stata mai realmente utilizzata nel codice di 'Ciao Mondo'. È un errore mio: dal momento che CodeBlocks blocca automaticamente il flusso dell'esecuzione ho rimosso un'istruzione di tipo cin.get() che avevo previsto alla fine del codice. Il tutto è diventato più chiaro e compatto, ma mi è sfuggito questo accenno a cin: semplicemente, non fateci caso.
- (Pagina 19) Il titolo del paragrafo 2.1.1 è "Booleano".
-
(Pagina 20) Non è stato riportato il paragrafo 2.1.2. Eccone il contenuto:
2.1.2 Carattere
Variabili: Le variabili carattere (dichiarate con la parola chiave char, pronuncia ciàr), si usano per memorizzare singoli caratteri. L'unità minima stabilita dallo standard è di 1 byte, che permette di rappresentare il raggio dei caratteri ASCII nelle varie estensioni. E' possibile specificare di volere un unsigned char se si vuole essere sicuri che l'intervallo dei valori sia sempre e comunque [0..255], oppure signed char per indicare l'intervallo [-127..127].
Costanti: È possibile specificare una costante char indicando il carattere da rappresentare, racchiuso fra apici. Scrivere '@', ad esempio, è equivalente (nella codifica ASCII, comunemente utilizzata dai compilatori) a scrivere 64. Alcuni caratteri speciali devono essere espressi attraverso delle "sequenze di escape" (la tabella seguente indica quelle più importanti).
\" |
Virgolette |
\\ |
Backslash |
\r |
Carriage Return |
\n |
Newline (a capo) |
\t |
Tabulazione |
\0 |
Carattere nullo (byte 0) |
\a |
Beep! |
- (Pagine 31 e 35). Le tabelle 2.3 e 2.4 riportano alcuni piccoli refusi. Questa è la versione corretta di entrambe:
Tabella 2.3: Operatori logici
| Simbolo |
Nome |
a |
b |
r |
| ! |
Not |
0 |
|
1 |
| 1 |
|
0 |
| && |
And |
0 |
0 |
0 |
| 0 |
1 |
0 |
| 1 |
0 |
0 |
| 1 |
1 |
1 |
| || |
Or |
0 |
0 |
0 |
| 0 |
1 |
1 |
| 1 |
0 |
1 |
| 1 |
1 |
1 |
|
Tabella 2.4: Operatori bit-a-bit
| Simbolo |
Nome |
a |
b |
r |
| ~ |
Complemento |
0 |
|
1 |
| 1 |
|
0 |
| & |
And |
0 |
0 |
0 |
| 0 |
1 |
0 |
| 1 |
0 |
0 |
| 1 |
1 |
1 |
| | |
Or |
0 |
0 |
0 |
| 0 |
1 |
1 |
| 1 |
0 |
1 |
| 1 |
1 |
1 |
| ^ |
Xor |
0 |
0 |
0 |
| 0 |
1 |
1 |
| 1 |
0 |
1 |
| 1 |
1 |
0 |
|
- (Pagina 45) Il diagramma 3.5 illustra il meccanismo dello switch, non di if...else.
- (Pagina 65) L'operatore * (star) è tecnicamente definito "di dereferenziazione", scrittura che si trova comunque riportata correttamente più avanti.
-
(Pagina 69) Il codice relativo ai puntatori a puntatore è scorretto (aggiungete a penna gli operatori &):
int n=0;
int* pn = &n;
int** ppn = &pn;
int*** pppn = &ppn;
- (Pagina 103) Mi sono dimenticato un " << std::endl;" alla fine dell'istruzione "std::cout << scritta.testo;". Il programma funziona lo stesso, ma non va a capo alla fine della frase. La versione scaricabile del codice, ovviamente, è corretta.
- (Pagina 103). Ecco la fantomatica figura 5.1:
- (Pagina 117) In due occasioni ravvicinate, per uno strano lapsus, ho scritto costruttore al posto di distruttore.
- (Pagina 126) (Brutti) scherzi del copia-incolla. Il prototipo dell'operatore d'assegnamento si è fuso con un costruttore; il risultato è un nonsense. La riga esatta è: Vettore operator=(const Vettore &b). Il tutto, ovviamente, è riportato correttamente nella versione scaricabile della classe completa.
- La didascalia corretta della figura 7.2 è "Vincolo di associazione fra un LettoreStereo e il suo Proprietario".
-
Non è stata riportata la figura 7.3 ("Programmatore deriva da persona"; ora capite da dove è saltata fuori la didascalia di 7.2), che è la seguente.