Vai al contenuto

Lezione 01 · Concetti introduttivi

Cosa impari

  • che cos'è l'informatica e che cos'è un'informazione (tipo, valore, attributo);
  • la differenza tra rappresentazione analogica e digitale;
  • che cosa sono codifica, codice, alfabeto e parole codice, e quante parole si ottengono con n simboli e lunghezza L;
  • perché i computer usano il bit, che cosa sono byte e word e le unità KB, MB, GB;
  • che cosa vuol dire lavorare con numeri a precisione finita e che cos'è l'overflow.

Oggi quasi tutto passa da un computer: documenti, acquisti online, servizi pubblici, identità digitale, medicina. Per un ingegnere l'informatica serve ad analizzare grandi quantità di dati, automatizzare calcoli complessi, simulare processi e usare tecnologie nuove come il machine learning o i digital twin. Prima di programmare, però, bisogna capire come un computer rappresenta le informazioni.

Che cos'è l'informatica

La parola informatica nasce dall'unione di informazione e automatica. Una definizione semplice: è la scienza della rappresentazione, della gestione e dell'elaborazione automatica delle informazioni.

Si occupa di due aspetti:

  • tecnologico: progettare le macchine (gli elaboratori) che manipolano l'informazione;
  • metodologico: definire i metodi per gestire le informazioni.

Le domande a cui rispondono queste lezioni sono tre: come rappresentare le informazioni perché un computer le capisca? Com'è fatto un computer? Come si programma un computer per automatizzare il trattamento delle informazioni?

L'informazione

Informazione deriva da informare, cioè "dare forma". È qualcosa che viene comunicato, in forma scritta o orale. Un messaggio serve a rappresentare e trasportare l'informazione. Il messaggio è interpretato correttamente solo se mittente e destinatario condividono le stesse regole per scriverlo e per leggerlo.

L'informazione è legata alla scelta: identifica un elemento fra tanti possibili e ci permette di prendere decisioni. Ogni informazione è descritta da tre elementi, la tripla {tipo, valore, attributo}:

Elemento Che cos'è
Tipo l'insieme degli elementi tra cui si sceglie
Valore l'elemento scelto
Attributo ciò che dà significato al valore

Il semaforo all'ingresso di una galleria

  • Tipo: {"Rosso fisso", "Giallo fisso", "Verde fisso", "Giallo lampeggiante", "Spento"}.
  • Valore: "Rosso fisso".
  • Attributo: "Stato del semaforo di ingresso in galleria".
  • Informazione: "Il semaforo di ingresso in galleria è rosso".

Il conducente elabora questa informazione e decide: si ferma e non entra in galleria.

Rappresentazione analogica e digitale

Per usare un'informazione bisogna rappresentarla con un codice concordato, come accade con la scrittura. Ci sono due modi di farlo.

Analogica (continua) Digitale (discreta)
Come funziona la rappresentazione varia in modo continuo, come la grandezza reale usa un insieme finito di valori distinti, cioè numeri
Esempi termometro a mercurio, tachimetro a lancetta orologio digitale, bilancia digitale
Limite infinite rappresentazioni possibili, difficile da elaborare è un'approssimazione: due valori reali diversi possono avere la stessa rappresentazione

La bilancia digitale

Ieri pesavi 70,43 kg, oggi 70,40 kg. Una bilancia che mostra un solo decimale segna 70,4 kg in tutti e due i giorni: per lei non sei dimagrito, anche se in realtà hai perso 0,03 kg. La rappresentazione digitale di grandezze continue introduce errori che vanno gestiti nei calcoli.

Codifica e codice

La codifica è l'insieme di regole che trasforma un'informazione nella sua rappresentazione, detta dato. La decodifica è l'operazione inversa. La stessa informazione si può codificare in modi diversi: 1 e I rappresentano lo stesso numero, in cifre arabe e in cifre romane.

Un codice è definito da:

  • i simboli, gli elementi più piccoli della rappresentazione;
  • l'alfabeto, l'insieme dei simboli possibili; il numero di simboli è la cardinalità n;
  • le parole codice (o stringhe), le sequenze di simboli ammesse; il numero di simboli di una parola è la sua lunghezza L;
  • il linguaggio, le regole per costruire parole codice che abbiano significato.

Quante parole codice?

Con un alfabeto di n simboli e parole di lunghezza L ottieni:

L Parole codice diverse
1 n¹ = n
2 n²
3 n³
L nᴸ

Ogni posizione può contenere uno qualsiasi degli n simboli, quindi le scelte si moltiplicano: n × n × … × n, L volte.

Il codice Morse

Il codice Morse (1840 circa) trasmette lettere, cifre e punteggiatura con un segnale a intermittenza. L'alfabeto ha n = 2 simboli: la linea - e il punto ..

L nᴸ Parole codice
1 2 - .
2 4 .. .- -. --
3 8 ... ..- .-. .-- -.. -.- --. ---
4 16 da .... a ----

Il Morse usa parole di lunghezza variabile. Con le parole lunghe da 1 a 4 simboli si hanno 2 + 4 + 8 + 16 = 30 parole: bastano per le 26 lettere. Le 32 parole di lunghezza 5 servono anche per le cifre da 0 a 9. Le 64 parole di lunghezza 6 sono utili per i segni di punteggiatura.

Quanto deve essere lunga una parola codice?

Supponi di dover codificare m valori diversi (ad esempio m = 7 giorni della settimana). La codifica deve essere biunivoca: a ogni valore corrisponde una e una sola parola codice, e viceversa. Serve quindi:

nᴸ ≥ m, cioè L ≥ logₙ m

Se nᴸ > m alcune parole codice restano inutilizzate: la codifica si dice ridondante.

Una codifica può essere a lunghezza fissa (tutte le parole hanno la stessa lunghezza) o a lunghezza variabile (come la scrittura o il Morse). I calcolatori usano quasi sempre la lunghezza fissa.

Tool · Quanti bit servono?

Scrivi quanti valori vuoi codificare (m) e quanti simboli ha l'alfabeto (n): il tool trova la lunghezza minima L con nᴸ ≥ m. Prova con i 7 giorni della settimana, poi con le 26 lettere dell'alfabeto.

Il bit e il codice binario

La rappresentazione più importante in informatica usa un alfabeto di due soli simboli, 0 e 1. Ciascuno si chiama bit (binary digit, cifra binaria): è l'unità minima di informazione e di memoria.

Perché proprio due simboli?

  1. Memorizzazione semplice. I componenti elementari della memoria (i flip-flop) hanno due soli stati. Molti fenomeni fisici hanno due stati naturali: tensione presente/assente, polarità magnetica positiva/negativa, interruttore acceso/spento.
  2. Memorizzazione affidabile. Con due soli stati puoi tenerli molto distanti tra loro. Un piccolo disturbo elettrico non basta a scambiare uno 0 con un 1.

Con l'alfabeto {0, 1} (n = 2):

  • L bit producono 2ᴸ parole codice diverse;
  • per rappresentare K informazioni diverse servono ⌈log₂ K⌉ bit.

Il simbolo ⌈ ⌉ indica la funzione ceiling (parte intera superiore): il più piccolo intero maggiore o uguale al numero. Ad esempio ⌈log₂ 7⌉ = ⌈2,81⌉ = 3.

Quanti bit per i 7 giorni della settimana?

2² = 4 non basta, 2³ = 8 sì: servono 3 bit. Una delle 8 configurazioni resta libera, quindi la codifica è ridondante.

Verifica con Python (facoltativo). Il programma cerca il più piccolo L per cui nᴸ ≥ m, provando L = 1, 2, 3, … Prova con n = 2 e m = 7, poi con n = 2 e m = 26 (le lettere dell'alfabeto inglese).

n = int(input("Numero di simboli dell'alfabeto (n): "))
m = int(input('Numero di valori da codificare (m): '))
L = 1
while n ** L < m:
    L = L + 1
print('Servono parole lunghe', L, 'simboli')
print('Parole disponibili:', n ** L, '- inutilizzate:', n ** L - m)

Byte e word

I bit si raggruppano in potenze di due, perché così le operazioni sono più semplici.

  • Il byte è una stringa di 8 bit: 2⁸ = 256 configurazioni. Storicamente era la più piccola potenza di due capace di contenere un carattere del codice ASCII.
  • La word (parola) è una sequenza più lunga di un byte: 16, 32, 64 o 128 bit, a seconda del calcolatore.
Byte Bit Parole codice
1 8 2⁸ = 256
2 16 2¹⁶ = 65.536
3 24 2²⁴ = 16.777.216
4 32 2³² = 4.294.967.296

Il sistema di numerazione binario

In un byte ogni bit ha un peso, cioè una potenza di 2. Il bit più a destra ha peso 2⁰ = 1 ed è il LSB (Least Significant Bit, bit meno significativo). Il bit più a sinistra ha peso 2⁷ = 128 ed è il MSB (Most Significant Bit, bit più significativo). Il valore del numero è la somma dei pesi dei bit che valgono 1.

Peso 7 6 5 4 3 2 1 0 Valore
2ᵖᵉˢᵒ 128 64 32 16 8 4 2 1
1 0 1 0 0 1 0 1 128 + 32 + 4 + 1 = 165
1 1 1 1 1 1 1 1 255
0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 128

Le conversioni tra basi diverse sono l'argomento della lezione 02.

Le unità di misura

Sigla Nome Byte Bit
B Byte 1 8
KB KiloByte 2¹⁰ = 1.024 8.192
MB MegaByte 2²⁰ = 1.048.576 8.388.608
GB GigaByte 2³⁰ = 1.073.741.824 8.589.934.592
TB TeraByte 2⁴⁰ = 1.099.511.627.776 8.796.093.022.208

Ogni unità è 1024 volte la precedente, non 1000.

KB o KiB?

In queste pagine, come in molti testi di informatica, 1 KB = 1024 byte. Le norme internazionali chiamano questo valore KiB (kibibyte) e usano kB per 1000 byte. Per l'esame segui la tabella qui sopra.

Tool · Unità di misura

Converti un valore tra bit, byte, KB, MB, GB e TB (con 1 KB = 1024 byte).

Precisione finita e overflow

Un calcolatore usa parole codice di lunghezza fissata. Quindi i numeri che può rappresentare sono a precisione finita: hanno un numero limitato di cifre e stanno in un intervallo [min, max].

Succede anche nella vita reale. Gli angoli e le ore sono periodici: dopo 359° viene 0°, dopo le 23:59 vengono le 00:00. I valori fuori dall'intervallo ricadono al suo interno.

Quando il risultato di un'operazione esce dai valori rappresentabili si ha un errore:

  • overflow: il risultato è maggiore di max oppure minore di min;
  • risultato non rappresentabile: il risultato è nell'intervallo, ma non è uno dei valori ammessi (ad esempio non è un intero).

Calcolatrice decimale con tre cifre

Lavora con gli interi da −999 a +999.

Operazione Esito
200 + 100 = 300 rappresentabile
730 + 510 = 1240 overflow (> 999)
−520 − 720 = −1240 overflow (< −999)
2 / 3 = 0,666… non rappresentabile (non è un intero)

E l'underflow?

In alcuni testi il secondo caso (risultato dentro l'intervallo ma non rappresentabile, come ⅔) è chiamato underflow. Nella lezione 04 vedrai il significato più usato della parola: un numero reale così vicino a zero che il calcolatore non riesce a distinguerlo dallo zero. Le due idee hanno in comune la stessa cosa: il risultato "cade" tra due valori rappresentabili.

Le regole dell'algebra non valgono più

Con la precisione finita, l'ordine delle operazioni conta. Proprietà come l'associativa e la distributiva possono fallire, perché un risultato intermedio può andare in overflow.

a b c Calcolo Esito
100 900 600 a + (b − c) = 100 + 300 = 400 OK
100 900 600 (a + b) − c: a + b = 1000 overflow
200 90 88 a × (b − c) = 200 × 2 = 400 OK
200 90 88 a × b − a × c: a × b = 18000 overflow

Matematicamente le due espressioni di ogni coppia sono uguali, ma la calcolatrice a tre cifre dà un risultato solo per una delle due.

Errori frequenti negli esercizi

Errore Perché è sbagliato Come si corregge
Usare L × n invece di nᴸ le scelte per ogni posizione si moltiplicano 2 simboli e L = 3 danno 2³ = 8 parole, non 6
Arrotondare log₂ K per difetto con meno bit non bastano le configurazioni usa sempre la parte intera superiore: ⌈log₂ 26⌉ = 5
Usare 1000 invece di 1024 qui le unità binarie sono potenze di 2 1 KB = 2¹⁰ = 1024 byte
Confondere MSB e LSB il peso cresce da destra verso sinistra il bit più a destra ha peso 2⁰
Pensare che l'ordine dei calcoli non conti un risultato intermedio può andare in overflow controlla ogni passaggio, non solo il risultato finale

Esercizi

Esercizio 1 · Il codice di una fabbrica. Una fabbrica deve dare un codice binario a 50 macchinari diversi. Quanti bit servono? Quante configurazioni restano inutilizzate?

Soluzione

Serve il più piccolo L con 2ᴸ ≥ 50.

L 2ᴸ Basta?
5 32 no
6 64 sì

Servono 6 bit (⌈log₂ 50⌉ = ⌈5,64⌉ = 6). Restano inutilizzate 64 − 50 = 14 configurazioni: la codifica è ridondante.

Esercizio 2 · Un alfabeto di tre simboli. Un codice usa l'alfabeto A = {X, Y, Z}. (a) Quante parole codice di lunghezza 4 esistono? (b) Che lunghezza minima serve per codificare 100 valori diversi?

Soluzione

(a) n = 3 e L = 4: 3⁴ = 3 × 3 × 3 × 3 = 81 parole codice.

(b) Serve 3ᴸ ≥ 100. Con L = 4 hai 81 parole, non bastano. Con L = 5 hai 3⁵ = 243 parole: bastano. La lunghezza minima è L = 5.

Esercizio 3 · La calcolatrice a tre cifre. Una calcolatrice lavora con gli interi da −999 a +999. Con a = 500, b = 600, c = 400 calcola (a + b) − c e a + (b − c). Che cosa succede? E quanti byte e quanti bit sono 3 KB?

Soluzione
  • (a + b) − c: il primo passaggio dà 500 + 600 = 1100 > 999. È un overflow: la calcolatrice non arriva al risultato.
  • a + (b − c): 600 − 400 = 200, poi 500 + 200 = 700. Tutto rappresentabile.

Le due espressioni sono uguali in matematica, ma non con la precisione finita.

3 KB = 3 × 1024 = 3072 byte = 3072 × 8 = 24.576 bit.

Verifica