Uploaded by andrea.pelamatti3

docsity-informatica-3cfu-unimi-1 220506 093601

advertisement
Informatica 3cfu unimi
Informatica
Università degli Studi di Milano
96 pag.
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
INFORMATICA
Contenuti A0 — Storia dell'informatica e nascita del calcolatore
Perché si possa arrivare all'informatica come la intendiamo oggi è stato necessario sviluppare
parallelamente due diversi aspetti: quello tecnologico e quello filosofico (in particolare logico-matematico).
La serie di eventi, idee e scoperte che culmina con i moderni calcolatori ha quindi una moltitudine di
protagonisti, disseminati in un arco temporale di almeno 4000 anni, con molte storie parallele. Per quanto il
racconto possa essere avvincente e ricco di colpi di scena, non è questa la sede per una esposizione
esaustiva. Ci si limiterà pertanto a citare solo alcuni degli aspetti cruciali: quelli più funzionali alla
comprensione del pensiero informatico e del funzionamento del calcolatore.
Il termine calcolatore designa genericamente un sistema di elaborazione dati, nato in forma meccanica,
sviluppatosi in forma analogica e giunto poi alla forma digitale.
Generazione 0: I calcolatori meccanici
Il più antico strumento di calcolo fu l’abaco, in uso già 4000 anni fa in Cina. Dopo di esso molte furono le
scoperte in questo ambito, ma la maggior parte di esse (come ad esempio la pascalina ideata nel 1642 da
Blaise Pascal) non vennero mai realizzate.
Nel 1702, Gottfried Wilhelm Leibniz sviluppò la logica come disciplina matematica e formale, con i suoi
scritti sul sistema numerico binario. Nel suo sistema, l'uno e lo zero rappresentano i valori vero e falso.
Questo non ebbe un effetto immediato, ma fu decisivo nel secolo successivo.
I primi veri progenitori dell’elaboratore moderno videro la luce agli inizi del XIX secolo. Nel 1804 Joseph
Marie Jacquard introdusse una nuova tecnologia per i telai in grado di controllare il movimento di aghi, filo
e tessuto attraverso schede perforate, automatizzando così la procedura di tessitura.
A metà del XIX secolo, Charles Babbage elaborò una macchina di calcolo in grado di compiere operazioni
aritmetiche, ma non fu mai realizzata. Fu Ada Lovelace (considerata oggi la prima programmatrice della
storia), ad accorgersi delle vere potenzialità della macchina di Babbage: sebbene fosse stata progettata per
svolgere solo calcoli matematici, Ada riconobbe la possibilità di programmare la macchina per altri fini. In
questa versatilità risiede la principale differenza tra una calcolatrice tradizionale e un calcolatore.
Nel 1854, le idee di Leibniz vennero riprese da George Boole, che pubblica la propria algebra booleana,
creando un sistema nel quale è possibile trattare ogni relazione logica attraverso l'utilizzo di formule
algebriche. Le operazioni (come l'addizione, la sottrazione e la moltiplicazione) vengono sostituite da
operazioni logiche con valori di congiunzione, disgiunzione e negazione utilizzando solamente numeri binari
(ossia costituiti dalle sole cifre 0 e 1).
Alla fine del XIX secolo, Herman Hollerith, un funzionario statunitense dell’ufficio per il censimento,
sviluppò una macchina tabulatrice, sempre a schede perforate, per automatizzare le operazioni di
censimento. Il successo e la richiesta di queste macchine fu tale che nel 1896 Hollerith fondò la Tabulating
Machine Company, che nel 1924 divenne la International Business Machine (IBM).
Tra gli antenati degli anni '30 del calcolatore, figura il Memex, macchina immaginaria progettata da
Vannevar Bush. L’idea era quella di un sistema di archiviazione di dati utilizzato a scopi personali. Il
dispositivo era descritto come una scrivania dotata di schermi traslucidi, una tastiera, un set di pulsanti e
delle leve. Il Memex avrebbe reso possibile la creazione da parte dell'utente di collegamenti tra foto e
documenti, e per questo motivo viene oggi ricordato come primo supporto per l'approccio all'ipertesto.
Sempre nella prima metà degli anni '30, Kurt Gödel enunciò i suoi famosi teoremi di incompletezza. Oltre a
rappresentare un caposaldo nel campo della logica matematica, con importanti implicazioni di ordine
filosofico, questi fecero da base per il lavoro di Alan Turing, matematico, logico e crittoanalista inglese. Egli
formalizzò un modello di calcolatore universale (la Macchina di Turing, mai costruita realmente), dimostrò
come ogni funzione calcolabile si possa eseguire attraverso un algoritmo installato su una Macchina di
Turing, ma dimostrò anche come per alcuni algoritmi non sia possibile sapere a priori se siano eseguibili in
un tempo finito o infinito. Tra le implicazioni più importanti della Macchina di Turing si sottolinea come essa
introduca una netta separazione tra la macchina fisica da una parte, e i dati e gli algoritmi astratti dall'altra.
Le basi teoriche per lo sviluppo dei moderni calcolatori sono ora mature.
1
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Generazione 1: I tubi a vuoto (valvole)
Nel 1939, fu la volta del matematico e fisico John Vincent Atanasoff e del suo allievo Clifford Berry i quali
costruirono l’Atanasoff Berry Computer, meglio noto come ABC. Si tratta del primo calcolatore digitale
totalmente elettronico, ma mai brevettato.
Nel 1945, John von Neumann definisce l'architettura per calcolatori digitali programmabili tutt'ora in uso
nella maggior parte dei dispositivi moderni di questo tipo. La peculiarità dell'architettura di von Neumann
risiede nel fatto che dati e programmi condividono la stessa memoria.
Nel 1946 venne presentato l’ENIAC, il primo calcolatore elettronico basato interamente su tecnologia a
valvole. Progettato presso l’Università della Pennsylvania, fu il primo vero calcolatore dell’era elettronica in
quanto eliminava tutti i dispositivi meccanici. L’ENIAC era in grado di compiere operazioni molto complesse
in pochissimo tempo per l'epoca, ma pesava 300 tonnellate e occupava 170 metri quadrati. Quella delle
dimensioni rimase per lungo tempo una delle più grandi sfide dell’industria dei calcolatori.
Nel 1948, Claude Shannon introdusse il termine bit (contrazione di binary digit), da lui coniato per
designare l'unità elementare binaria di informazione (vero e falso, o 0 e 1).
Generazione 2: I transistor
Nel 1954, l’IBM propose il primo calcolatore commerciale con memoria su nastro magnetico. Tra le più
importanti innovazioni di quegli anni, vi furono l'uso dei transistor al posto dei tubi a vuoto e l’evoluzione
dei linguaggi di programmazione.
Nel 1959 venne lanciato l’IBM 705, che usava il FORTRAN, un linguaggio di programmazione molto più
vicino a quello umano rispetto alle istruzioni comprensibili dal calcolatore. I problemi principali che
ostacolavano la diffusione commerciale del calcolatore restavano i costi elevati e la dimensione di queste
macchine.
Generazione 3: I circuiti integrati
Il problema delle dimensioni durò fino al 1964, quando l'azienda italiana Olivetti introdusse Programma
101, da molti considerato il primo personal computer (PC) della storia, in quanto disponeva delle principali
caratteristiche dei grandi calcolatori dell'epoca, ma era sufficientemente compatto da stare su una
scrivania. Tuttavia non aveva uno schermo: le informazioni erano trasmesse all'utente per mezzo di un
nastro di carta stampata.
Parallelamente, la Digital Equipement Corporation introdusse il suo primo minicomputer, il PDP-8, dotato di
uno schermo molto rudimentale (sostanzialmente un oscilloscopio).
Generazione 4: Il microprocessore
Agli inizi degli anni ’70, la Intel Corporation sviluppò il microprocessore, il primo circuito integrato capace di
contenere l’intera unità di calcolo di un calcolatore. In seguito venne commercializzato quello che viene
oggi considerato il primo PC della storia per come lo intendiamo oggi, l'Apple II, con il suo sistema operativo
chiamato Apple Dos.
Solo quattro anni dopo, nel 1981, l’IBM brevettò il suo primo PC, destinato a imporsi come standard di
riferimento con il sistema operativo MS-Dos prodotto dalla software house Microsoft.
Generazione 5: Il calcolo parallelo e la rete
Tra gli anni '80 e '90 si sono affermate in rapida successione tecnologie come le interfacce grafiche, la
possibilità di compiere più operazioni in parallelo, e l'avvento di Internet, coadiuvate da un costante
incremento della potenza di calcolo e delle capacità di memorizzazione.
Problemi, algoritmi e programmi
Un algoritmo può essere definito come un metodo per risolvere in modo efficiente, univoco, universale,
formalmente preciso e finito un problema.
Nella sua accezione più ampia, è possibile includere nella categoria degli algoritmi anche una semplice
ricetta di cucina oppure il libretto di istruzioni di un elettrodomestico. Entrambi infatti sono una successione
di istruzioni precise per la realizzazione di un risultato.
2
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Il termine algoritmo deriva dal nome del matematico Muhammad ibn Musa al-Khuwarizmi.
Le proprietà fondamentali di un algoritmo sono:
 finitezza delle operazioni da svolgere;
 non ambiguità del linguaggio in cui sono scritte le operazioni da effettuare. Questo significa che le
istruzioni devono essere scritte in un linguaggio codificato e formale;
 universalità della procedura algoritmica, nel senso che essa deve valere per tutti i problemi dello stesso
genere;
 completezza delle operazioni, nel senso che ogni operazione necessaria allo svolgimento del compito
deve essere explicitamente dichiarata.
Nonostante sia più semplice affrontare algoritmicamente calcoli matematici, o geometrici, è possibile
affrontare nello stesso modo qualsiasi problema, a patto che se ne possa fornirne una definizione
formalmente corretta e non ambigua. Questo esercizio di formalizzazione trascende l'uso del computer e
aiuta gli individui ad affrontare i problemi in modo astratto.
Va notato che ogni problema può essere affrontato e descritto in molti modi diversi; quindi non esiste un
unico algoritmo per la risoluzione di un problema. Questo significa che lo sviluppo di algoritmi è un'attività
che richiede, tra le altre cose, creatività e ingegno. A tal proposito, vale la pena citare una famosa battuta di
Bill Gates (co-fondatore della Microsoft): "Sceglierò sempre un pigro per fare un lavoro difficile perché
troverà il modo più facile per farlo".
Si sottolinea inoltre come l'efficacia e la complessità di un algoritmo dipendano anche dall'organizzazione
dei dati a disposizione dell'algoritmo per la risoluzione del problema. Esistono molti modi di organizzare i
dati, ognuno dei quali ha pregi e difetti. In genere gli aspetti più rilevanti di cui tenere conto sono:
 la quantità di spazio occupato;
 la velocità con cui è possibile reperire un determinato dato;
 la facilità con cui si possono aggiungere, modificare o eliminare dati.
Infine, un programma può essere definito come un algoritmo scritto in un linguaggio comprensibile al
calcolatore, che utilizza dati organizzati secondo una determinata strategia ed è vincolato alle risorse
disponibili e alle condizioni al contorno del calcolatore sul quale il programma viene eseguito.
3
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Contenuti G1 —Informazione e codifica
L’informazione può essere definita come un insieme di dati espressi mediante una rappresentazione
simbolica ed inseriti in un contesto interpretativo. In generale, per rappresentare le informazioni è possibile
adottare sistemi di simboli diversi. Ad esempio, come mostrato nella Figura 2.1, le lettere dell’alfabeto, i
numeri arabi, i numeri romani o ancora i segnali stradali sono sistemi di simboli comunemente usati per
rappresentare e comunicare informazioni.
Figura 2.1. Sistemi di simboli per la rappresentazione di informazioni.
Esiste dunque una corrispondenza arbitraria fra ogni singolo simbolo e l’informazione che esso intende
rappresentare. Questa corrispondenza viene chiamata codifica dell’informazione.
Un codice è un insieme di simboli e di regole. Queste ultime sono necessarie a definire l’uso e il significato
dei simboli. Codificare un’informazione significa determinare una corrispondenza fra i segni di un codice e i
dati che costituiscono l’informazione e il suo significato.
Figura 2.2. Due diverse codifiche del divieto di fumo.
Di una stessa informazione sono possibili diverse codifiche che usano regole e segni diversi. Ad esempio, in
un ristorante si può trovare un cartello con la scritta “vietato fumare” o più semplicemente il simbolo della
sigaretta con il divieto. Nonostante l’informazione sia sempre la stessa, ossia che in quel ristorante non si
può fumare, per trasmetterla si possono utilizzare codici (cioè simboli) anche molto diversi tra loro.
Come costruire un codice
Si voglia costruire un codice per comunicare a uno studente il voto conseguito a un esame universitario
senza usare la normale numerazione in trentesimi. Le possibili informazioni che il codice deve poter
rappresentare sono: “insufficiente”, i voti da diciotto a trenta e il voto “trenta e lode”.
Per prima cosa, si deve individuare un insieme di simboli che costituisca il codice, avendo cura di definire un
simbolo per ognuna delle informazioni da rappresentare. Ci sarà quindi bisogno di 15 simboli diversi e si
dovrà associare ad ogni simbolo la corrispondente informazione, definendo un’opportuna tabella di codifica
come nell'esempio della Figura 2.3.
4
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Figura 2.3. Esempio di codice per i voti di un esame universitario.
In questo modo, dato un voto (messaggio), è possibile derivarne una rappresentazione conforme al codice
definito (attività di codifica). Viceversa, dato un messaggio espresso con tale codice, è possibile ricavare il
voto corrispondente (attività di decodifica). Ad esempio, dato il simbolo #, è possibile decodificare il
messaggio e affermare che il voto conseguito è 24.
E’ importante che a ogni simbolo corrisponda una e una sola informazione, in modo che il messaggio non
risulti mai ambiguo.
Riduzione del numero di simboli
Nell'esempio della Figura 2.3, è stato mostrato un codice che richiedeva 15 simboli per rappresentare
altrettante informazioni diverse. Un codice costruito in questo modo è molto semplice e di rapida
realizzazione, ma comporta che il numero di simboli che compongono il codice e la tabella di codifica
crescano con il numero di informazioni da rappresentare. È facile intuire che la gestione di un codice con un
elevato numero di simboli possa essere molto complessa.
È possibile costruire un codice che consenta di rappresentare lo stesso numero di informazioni diverse
utilizzando un numero inferiore di simboli. Ciò significa ridurre il numero di simboli a disposizione senza
tuttavia ridurre il numero di informazioni che possono essere codificate. E' evidente che, avendo meno
simboli a disposizione, la rappresentazione di un’informazione richiederà una combinazione di più simboli e
quindi una maggiore lunghezza dei messaggi codificati.
Con riferimento all'esempio del codice per rappresentare i voti di un esame universitario, si supponga di
poter utilizzare soltanto i simboli ! £ $ %. Nella Figura 2.4, si mostra un esempio di tabella di codifica basata
sui quattro simboli considerati.
Figura 2.4. Esempio di codice per i voti di un esame universitario basato su quattro simboli.
5
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
In questo modo, dato un voto, la lunghezza del messaggio codificato sarà pari a due simboli, il doppio
rispetto all'unico simbolo richiesto dal codice della Figura 2.3. Si noti inoltre che sono importanti tanto i
simboli quanto la posizione che questi occupano nel messaggio. Infatti il significato di “!$” è ben diverso da
“$!”.
Codifica binaria
La rappresentazione dell’informazione numerica può adottare varie tecniche. Normalmente si usa la
numerazione decimale posizionale, dove una cifra assume un valore dipendente dalla posizione che occupa
nel numero. Per esempio, la cifra “2” nel numero 12 vale 2*100 (dove 0 è la posizione occupata dal 2 nel
numero in esame) e nel numero 2987 vale 2*103 (dove 3 è la posizione occupata dal 2 nel numero in
esame).
Adottando una numerazione in base 10 si hanno 10 cifre con le quali costruire i numeri: 0, 1, 2, 3, 4, 5, 6, 7,
8 e 9. Esistono molti altri tipi di numerazione in cui il numero di cifre è minore a 10, come ad esempio nella
numerazione binaria. Questa fu inventata nel XVII secolo da Gottfried Liebniz e si basa sull’utilizzo di
soltanto due cifre: 0 e 1. La differenza è che mentre nella numerazione decimale il valore si misura in
potenze di 10, nel caso della numerazione binaria il valore si misura in potenze di 2. A parità di valore da
scrivere con la numerazione binaria, è necessario impiegare molte più cifre. Questo tipo di numerazione
divenne fondamentale con l’avvento dei calcolatori elettronici, poiché le due cifre 0 e 1 sono intuitivamente
associabili ai due possibili stati fisici del calcolatore, come ad esempio passaggio/non-passaggio di corrente
attraverso un cavo elettrico; polarizzazione/non-polarizzazione di una sostanza magnetizzabile; c arica
elettrica positiva/negativa di una sostanza.
Per manipolare ed elaborare informazioni (numeri, testo, immagini, audio, video), il calcolatore ha bisogno
che queste siano codificate attraverso un codice composto dai soli simboli di 0 e 1. Tale rappresentazione
dell’informazione prende il nome di rappresentazione binaria o rappresentazione digitale.
Un bit (binary digit) rappresenta l’unità minima di informazione, ossia una sola unità informativa che può
avere valore 0 o 1. Per poter rappresentare un numero maggiore di informazioni sarà necessario combinare
i bit in sequenze.
Ad esempio, si supponga di voler fornire una rappresentazione binaria del codice della Figura 2.4. Ogni
informazione, cioè ogni possibile voto, deve avere una rappresentazione binaria diversa dalla codifica degli
altri voti, come mostrato nella Figura 2.5.
Figura 2.5. Esempio di codifica binaria per i voti di un esame universitario.
6
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Si noti che, poiché il numero di simboli che costituiscono il codice binario è due (0 e 1), la lunghezza di ogni
informazione è maggiore rispetto all'esempio della Figura 2.4 in cui si erano usati quattro simboli.
All'aumentare del numero di bit di un simbolo, aumenta la quantità di informazioni rappresentabili. Ad
esempio, nel caso in cui si voglia rappresentare un numero naturale (intero), il numero di bit determina il
valore massimo rappresentabile, mentre nel caso di un numero irrazionale (con virgola), il numero di bit
determina implicitamente anche la precisione con cui è possibile rappresentarlo. Nel primo caso sono
frequenti le rappresentazioni a 8, 16 e 32 bit, mentre nel secondo caso sono più comuni rappresentazioni a
32 e 64 bit.
A titolo di esempio, se si volesse rappresentare un numero intero non negativo con 8 bit, le combinazioni
possibili sarebbero 28=256, quindi i valori rappresentabili andrebbero da 0 a 255.
Unità di misura dell'informazione digitale
In informatica, dopo il bit, un'altra unità di misura fondamentale è il byte. Un byte è formato da una
sequenza di 8 bit contigui. Un byte può rappresentare 256 informazioni diverse. Questo dipende dal fatto
che, avendo 8 bit a disposizione e potendo assumere ogni bit due valori (0 e 1), è possibile definire 28=256
diverse combinazioni di bit.
Come per ogni unità di misura, anche il byte possiede multipli che consentono di rappresentare maggiori
quantità di informazioni, tuttavia esistono due diverse scale di misura, spesso confuse anche dagli
informatici. Errore comune (riscontrabile anche in Windows o MacOS) è infatti usare i nomi del Sistema
Internazionale (SI) per riferirsi ai multipli binari, i cui nomi corretti sono stati standardizzati nel 1998 dalla
Commissione Elettronica Internazionale (IEC):
Multipli del byte
Prefissi Binari IEC
Nome Simbolo
byte B
1B
kibibyte
KiB
mebibyte
MiB
gibibyte
GiB
tebibyte
TiB
pebibyte
PiB
Prefissi SI
Multiplo
Differenza
(8 bit) 0 %
byte B
210 B (1024 B)
2.4 %
220 B (1024 KiB)
4.9 %
230 B (1024 MiB)
7.4 %
240 B (1024 GiB)
10 %
250 B (1024 TiB)
12.6%
Nome Simbolo
1B
(8 bit)
kilobyte
KB
megabyte
MB
gigabyte
GB
terabyte
TB
petabyte
PB
Multiplo
103 B
106 B
109 B
1012 B
1015 B
(1000 B)
(1000 KB)
(1000 MB)
(1000 GB)
(1000 TB)
Ad esempio, se si vogliono memorizzare 5000 numeri, ognuno con una precisione di 16 bit (cioè 2 byte),
saranno necessari: 5000*2 = 10000 byte = 9.76 KiB = 10 KB
Rappresentazione digitale del testo
La codifica binaria può essere utilizzata anche per rappresentare i caratteri alfanumerici, cioè i caratteri
alfabetici, i numeri e gli altri simboli usati nella scrittura di testi. A tal fine, è necessario che ogni carattere di
scrittura possieda una propria rappresentazione binaria univoca. Si noti che pure segni come le parentesi, le
cifre numeriche, gli operatori aritmetici, i segni di punteggiatura e le lettere maiuscole devono avere la
propria rappresentazione binaria univoca.
I codici attualmente più utilizzati per rappresentare digitalmente i testi sono
 ASCII Esteso: un codice di 8 bit (1 byte)
 UNICODE: un codice che può essere usato a 8, 16 o 32 bit (1, 2 o 4 byte) e che codifica i caratteri usati in
quasi tutte le lingue vive e in alcune lingue morte, nonché simboli matematici e chimici, cartografici,
l'alfabeto Braille, ideogrammi, ecc. In base al numero di bit usati prende il nome di UTF-8, UTF-16 o
UTF-32 (per garantire la compatibilità tra i diversi sistemi, la codifica dell'ASCII Esteso è uguale a quella
di UTF-8).
Il fatto che un codice “sia di 8 bit” significa che la rappresentazione di un singolo carattere occupa 8 bit (ad
esempio, la lettera “a” nella codifica ASCII è rappresentata dal codice 01100001) e che, complessivamente,
il codice è in grado di rappresentare fino a 28=256 caratteri diversi. Questa considerazione è
7
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
generalizzabile: dato un codice di N bit possiamo dire che ogni carattere di quel codice occupa N bit e che
complessivamente il codice può rappresentare fino a 2N caratteri diversi.
Il primo alfabeto codificato è stato l’alfabeto anglosassone. Questo primo codice venne chiamato ASCII
(American Standard Code for Information Interchange). In origine l’ASCII era a 7 bit, cioè esistevano 27=128
diverse combinazioni di bit per la rappresentazione dei caratteri. Questo significa che ASCII a 7 bit è in
grado di rappresentare fino a 128 caratteri diversi.
Figura 2.6. Il codice ASCII a 7 bit.
In questo primo standard (mostrato nella Figura 2.6) non era possibile rappresentare caratteri come le
lettere accentate, di uso comune nei paesi di influenza neolatina. A questo primo codice ne fece seguito
una sua estensione, detta ASCII esteso. Questa si serve di un byte (8 bit) consentendo la rappresentazione
di 28= 256 caratteri diversi nei quali sono contenute anche le lettere accentate e altri simboli.
Per codificare una parola occorre recuperare dalla tabella ASCII la sequenza di bit corrispondenti ad ogni
lettera che la compone. Ad esempio si voglia rappresentare la stringa “Inf”. Essa richiede 3 byte, uno per
ogni carattere, e l’insieme dei bit corrispondente ad ogni lettera sarà:
I = 01001001
n = 01101110
f = 01100110
Per decodificare un testo ASCII il procedimento è inverso rispetto a quello di codifica. Data la sequenza
010010010110111001100110, dobbiamo suddividerla in gruppi di otto bit, e poi decodificare ogni gruppo
con il carattere corrispondente mediante la tabella ASCII:
01001001 = I
01101110 = n
01100110 = f
Si noti come alla lettera maiuscola corrisponde un simbolo diverso rispetto alla corrispettiva minuscola,
infatti la lettera “i” corrisponde alla sequenza 01101001. I caratteri maiuscoli e minuscoli sono a tutti gli
effetti diversi dal punto di vista della codifica binaria.
Si noti inoltre che per decodificare un messaggio è necessario conoscere a priori il tipo di codifica usato.
8
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Dall'analogico al digitale
La codifica di elementi come suoni, immagini e animazioni presenta aspetti molto diversi rispetto a quella di
testi e singoli numeri. Il testo è naturalmente composto da un insieme discreto di simboli (che diventano
quindi l'unità minima di informazione), mentre per i numeri ciò che conta è il loro valore (codificato
direttamente in binario con la precisione desiderata). Ma quali sono le unità informative minime di un
suono o di un'immagine?
Suoni e immagini sono descrivibili come segnali, cioè variazioni di una certa grandezza fisica lungo una o più
dimensioni: la pressione che varia in funzione del tempo nel caso di un suono, la luce che varia in funzione
dello spazio nel caso di un'immagine, o la posizione di un corpo che varia in funzione del tempo nel caso di
un'animazione.
La particolarità di questi segnali è che sono continui (Figura 2.7): perchè la pressione sonora passi da un
valore ad un altro, devono essere attraversati tutti gli infiniti valori intermedi. Lo stesso vale per una
fotografia (la transizione tra due colori, per quanto repentina e impercettibile, non può essere immediata) e
per il movimento (per andare da un punto ad un altro occorre passare per infiniti punti intermedi).
Immagine di due onde, una rappresentata con una linea continua e una come un insieme di punti separati
fra loro. Per andare da un punto ad un altro su di una curva continua bisogna attraversare infiniti punti, ma
non se la curva è discontinua e composta da un insieme discreto di punti
Figura 2.7. Un segnale analogico e il rispettivo segnale digitale
Se si volesse dunque usare tutti i valori assunti dal segnale come unità minime informative di suoni e
immagini, ci si scontrerebbe con la necessità di una memoria infinita. Per questo motivo, per poter
rappresentare suoni e immagini in un calcolatore, è necessario passare dal dominio analogico (continuo) a
quello digitale (discreto, composto da un numero finito di punti) attraverso un processo chiamato
campionamento.
Il campionamento (Figura 2.8) è una tecnica che consiste nel convertire un segnale continuo nel tempo o
nello spazio in un segnale discreto, valutandone l'ampiezza a intervalli temporali o spaziali solitamente
regolari, in modo da ottenere un numero finito di punti (chiamati campioni). Perché questa operazione non
comporti una perdita di informazione o la comparsa di difetti percepibili (chiamati aliasing), è necessario
che gli intervalli temporali o spaziali a cui si legge il valore del segnale siano più piccoli della metà del più
piccolo dettaglio a cui si è interessati (teorema di Nyquist-Shannon).
Un numero finito di campioni però non basta a permettere la rappresentazione di un segnale nel
calcolatore, è infatti necessario che ogni campione abbia anche una precisione finita, cioè sia
9
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
rappresentabile con un numero finito di bit. L'operazione con cui il valore di un campione viene
arrotondato alla precisione desiderata prende il nome di quantizzazione (Figura 2.8).
A differenza del campionamento, l'operazione di quantizzazione non è reversibile, non è cioè possibile
ricostruire i valori reali assunti originariamente dal segnale analogico. La quantizzazione è dunque una fonte
di distorsione del segnale, che può solo essere mascherata con una tecnica chiamata dithering, ma non può
essere eliminata.
Figura 2.8. Campionamento e quantizzazione per rappresentare il segnale con un numero finito di numeri a
precisione finita.
Grazie a campionamento e quantizzazione è possibile ottenere una sequenza digitale di numeri (discreta
nel tempo o nello spazio e nell'ampiezza) che approssimi a piacere il segnale continuo originale.
Nel caso dei suoni la frequenza di campionamento (il numero di volte al secondo con cui si misurano le
variazioni di pressione) determina quali siano i suoni più acuti rappresentabili, mentre la quantizzazione
determina la soglia del volume minimo rappresentabile.
Nel caso delle immagini il campionamento corrisponde alla risoluzione, e la quantizzazione determina la
quantità di colori rappresentabili.
Nel caso di un filmato il campionamento nel tempo corrisponde al numero di fotogrammi al secondo,
mentre ogni singolo fotogramma lo si può considerare come un'immagine a sé.
Rappresentazione digitale delle immagini
Per le immagini l’unità minima di informazione è rappresentata dal pixel (picture element – elemento
dell’immagine). In sostanza si campiona l’immagine attraverso una griglia regolare in cui ogni cella è un
pixel e a ogni pixel è associato un colore. Più la griglia è fitta, maggiore sarà il numero di pixel e di
conseguenza migliore sarà la risoluzione dell’immagine. Un esempio di griglia di pixel applicata a
un’immagine è mostrato nella Figura 2.9. La codifica di un'immagine realizzata in questo modo è chiamata
bitmap o raster.
10
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Figura 2.9. Esempio di griglia di pixel.
La risoluzione e la dimensione di un’immagine dipendono dal numero di pixel da cui è composta:
un’immagine la cui griglia misura 800 colonne x 600 righe sarà divisa in 480000 pixel (0.48 megapixel).
Ogni pixel rappresenta un punto di colore, la cui tonalità è descritta mediante una sequenza di bit. Se
l’immagine è in bianco e nero sarà sufficiente un unico bit per descrivere ciascun pixel: 0 per il nero e 1 per
il bianco. Se l’immagine è a colori sarà necessario un numero maggiore di bit per pixel, che dipende da
come vengono codificati i colori.
Un sistema per la rappresentazione digitale dei colori viene detto modello di colore, e ne esistono molti. La
maggior parte usa i colori primari convenzionali per derivare tutte le possibili tonalità. Il più utilizzato è lo
schema RGB, (Red Green Blue, rosso verde blu) che sono i colori primari su cui il modello è costruito. Per
distinguere i colori l’occhio umano utilizza fotorecettori di tre tipi, rispettivamente più sensibili al rosso, al
verde o al blu. Questi colori sono quindi detti primari perchè miscelandoli è possibile evocare la percezione
di qualsiasi altro colore.
Solitamente in RGB per ognuno dei tre colori primari è utilizzato un byte, per un totale di 24 bit per pixel. E'
quindi possibile rappresentare 256 sfumature diverse per ogni colore primario, quindi complessivamente
256 x 256 x 256 colori diversi, cioè circa 16 milioni di tonalità di colore.
In definitiva, la rappresentazione binaria di un’immagine è costituita da una sequenza di pixel, cioè gruppi
di bit che descrivono il colore associato a ciascun punto. Se consideriamo un’immagine di dimensione 640 x
480 espressa secondo lo schema RGB, possiamo calcolare quanti byte saranno necessari per memorizzare
tale immagine:
640 x 480 = 307200 pixel, ognuno dei quali richiede 3 byte per rappresentare il colore associato, quindi
307200 x 3 = 921600 byte = 900 KiB.
Rappresentazione digitale dei suoni
Per i suoni l’unità minima di informazione è rappresentata da un campione di ampiezza, cioè il valore di
ampiezza dell'onda sonora in un determinato istante. Gli esempi in Figura 2.7 e 2.8 si riferiscono proprio al
suono (questa codifica prende il nome di Pulse Code Modulation, PCM).
Un suono può essere descritto come la sensazione causata dall'oscillazione più o meno periodica dell'aria
che incide sul timpano dell'ascoltatore. Oscillazioni di diversa ampiezza danno origine alla sensazione di
volumi più o meno elevati, mentre il periodo delle oscillazioni incide sulla percezione di suoni gravi o acuti.
L'orecchio umano può sentire suoni che oscillano da 20 fino a 20000 volte al secondo (da 20 a 20000 hertz,
o Hz). Dunque, per il teorema di Nyquist-Shannon, in genere si campiona il segnale più di 40000 volte al
secondo (solitamente 44100 o 48000). Tuttavia, per suoni particolari come la voce, tutte le oscillazioni
sopra i 4000 Hz non hanno un particolare contenuto informativo; non è quindi raro vedere codifiche a 8000
campioni al secondo per applicazioni come telefonia o messaggistica vocale.
11
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Riguardo alla precisione di ogni campione audio, si è scelto un numero di bit consono a rappresentare la
gamma di volumi a cui si è normalmente esposti, dal sussurro fino a rumori forti (ma sotto la soglia del
dolore); questo valore è stato fissato a 16 bit. Tuttavia non è raro trovare suoni registrati a 24 bit, in modo
da poter sfruttare una precisione maggiore durante le fasi di lavorazione di un prodotto, come può essere
un disco musicale.
Infine si noti che l'essere umano, in genere, è dotato di due orecchie. Questo gli permette di localizzare la
direzione da cui provengono i suoni. Per poter codificare (almeno in parte) questo tipo di informazione,
solitamente vengono rappresentati segnali audio stereofonici, cioè composti da due sequenze di campioni,
una relativa al canale sinistro ed una al canale destro. Esistono poi codifiche a più canali (come il 5.1,
composto da 6 canali indipendenti), che permettono una maggiore precisione spaziale.
In definitiva, la rappresentazione binaria di un suono è costituita da una sequenza di campioni, cioè gruppi
di bit che descrivono il valore di pressione sonora di ciascun canale. A scopo esemplificativo si può calcolare
la memoria necessaria a memorizzare un minuto di musica in qualità CD:
60 secondi x 44100 campioni al secondo x 16 bit per campione x 2 canali = 84672000 bit = 10584000 byte
=10336 KiB = 10.1 MiB
Elaborazione dei dati multimediali
La comodità di codificare il materiale multimediale nei modi descritti in precedenza risiede nel fatto che è
possibile applicare modifiche ai dati in maniera molto efficiente sfruttando semplici operazioni
matematiche.
Consultando la tabella in Figura 2.4, ad esempio, si può notare come la conversione di una lettera
maiuscola in una lettera minuscola si può ottenere sommando 32 al numero con cui è codificata. Lo stesso
vale per i formati multimediali: se si volesse conferire una tinta rossa ad una foto basterebbe sommare una
piccola costante a tutti i byte relativi a quel colore primario, tale da aumentare la quantità totale di rosso
che giunge all'occhio. Analogamente, si può simulare l'eco in una registrazione sommando ad ogni
campione il campione che lo precede ad una certa distanza.
Principali formati multimediali
Lo studente più attento si sarà accorto che il numero di bit necessario alla memorizzazione di suoni,
immagini e video è decisamente superiore a quanto suggerisce l'esperienza: quasi 1 MiB per una piccola
immagine, 10 MiB per un audio di 1 minuto e addirittura 10 GiB per un breve video ad alta qualità.
Questa discrepanza trova una giustificazione nel fatto che il modo in cui viene rappresentato nativamente
un dato non corrisponde necessariamente al modo in cui viene archiviato in un contenitore.
Vi sono infatti 3 modi di memorizzare l'informazione: in modo non compresso, in modo compresso senza
perdita di informazioni (lossless), e in modo compresso con perdita di informazioni (lossy).
I metodi di memorizzazione non compressi comportano un'occupazione di memoria che corrisponde alla
memoria necessaria per la rappresentazione originale. A fronte di questo utilizzo smodato di memoria vi è il
vantaggio di poter manipolare il materiale multimediale in modo diretto, senza passaggi intermedi
necessari a convertire le informazioni in una forma comprensibile al calcolatore. Formati di questo tipo
sono ideali per le fasi di lavorazione del bene multimediale. Nella tabella seguente si illustrano i nomi di
alcuni formati e contenitori di questo tipo:
Esempi di codifiche non compresse
I metodi di compressione lossless si basano sull'idea di eliminare ciò che è ridondante, si evita cioè di
memorizzare informazioni inutilmente ripetute. Questo comporta un risparmio di memoria che in media si
12
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
aggira intorno al 50% dell'occupazione originale. Il costo di questo risparmio si riflette nella necessità di
reintrodurre la ridondanza (decompressione) per poter elaborare le informazioni (fosse anche solo per
visualizzare l'immagine su schermo o sentire il suono). Va comunque notato che la decompressione di un
file lossless dà origine alle stesse informazioni di partenza, senza che sia scartato alcun dettaglio. Formati di
questo tipo sono quindi l'ideale per l'archiviazione o la trasmissione di dati nella forma più conservativa,
senza che però sia sprecata memoria. Nella tabella seguente si illustrano i nomi di alcuni formati e
contenitori di questo tipo:
Esempi di codifiche lossless
Infine, i metodi di compressione lossy si basano sull'idea di eliminare ciò che è irrilevante, si evita cioè di
memorizzare informazioni non percepibili dall'utente. Viene quindi persa in modo definitivo tutta
quell'informazione che in media non viene percepita. Questo comporta un oggettivo degrado
dell'informazione, con la potenziale introduzione di artefatti e distorsioni non presenti nel dato originale. Il
risparmio che ne deriva può arrivare fino al 90% dell'occupazione originale. Oltre all'oggettiva perdita di
informazioni, il costo è che la decompressone in genere è più onerosa per il calcolatore in termini di
potenza di calcolo richiesta. Inoltre, sebbene la decompressione sia sempre necessaria per la fruizione del
dato originale, è caldamente sconsigliata la manipolazione dei dati e la successiva ricompressione lossy, in
quanto si affronterebbe una nuova perdita di informazioni, con l'introduzione di sempre più distorsioni e
artefatti. Formati di questo tipo sono ideali per la fruizione in streaming da parte dell'utente finale. Nella
tabella seguente si illustrano i nomi di alcuni formati e contenitori di questo tipo, mentre in Figura 2.10 si
può vedere un esempio di immagine che ha subito diverse ri-codifiche (decompressione e ricompressione)
in formato JPEG.
Esempi di codifiche lossy
13
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Figura 2.10: A sinistra l'immagine originale, a destra la stessa immagine dopo diversi cicli di salvataggio in
JPG. La comparsa di difetti visibili si verifica ad esempio quando si salva sul proprio computer un'immagine
e poi la si condivide sui social network, che solitamente ricomprimono le immagini.
Contenuti G2 — Anatomia di un calcolatore
Grazie al lavoro intellettuale di Alan Turing, è possibile modellare il funzionamento di un calcolatore come
l’interazione tra componenti fisiche hardware e programmi software. Il termine hardware, letteralmente
“ferraglia”, designa la parte fisica della macchina, composta da tutte le componenti materiali che ne
consentono il funzionamento sulla base dei principi dell’elettronica.
Ogni componente svolge una sua funzione di base:
l'unità di calcolo o Unità Centrale di Elaborazione (CPU) si occupa di elaborare i dati ed in genere
coincide con uno o più microprocessori;
 la memoria centrale, o di lavoro (Random Access Memory, RAM) contiene i dati in uso e/o i
programmi in esecuzione;
 i bus permettono il trasferimento dei dati tra le diverse componenti;
 le periferiche di input/output permettono la comunicazione tra il calcolatore e l'utente;
 la memoria di massa, un caso particolare di periferica di input/output, permette di memorizzare
dati e programmi quando non sono in uso.
Esistono diversi modi di combinare questi elementi. La maggior parte dei calcolatori moderni segue quella
che è chiamata architettura di von Neumann, caratterizzata dall'utilizzo di un'unica memoria di lavoro, in
cui sono memorizzati sia i dati sia i programmi (contrapposta all'architettura Harvard, dove dati e
programmi risiedono in spazi di memoria distinti), e dove tutte le componenti sono collegate tra loro da
bus.
Oltre a queste parti, il calcolatore si compone anche di una scheda madre (la piastra sulla quale si
inseriscono le varie componenti) e un alimentatore elettrico (che ha il compito di adattare la corrente della
rete elettrica per poter essere utilizzata dai dispositivi all'interno del calcolatore). Nei calcolatori portatili
l’alimentatore è affiancato da una batteria che permette il funzionamento del dispositivo anche senza il
collegamento alla rete elettrica. Questi elementi sono contenuti nel case: la scatola di metallo o di plastica
che racchiude tutti i componenti.

14
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Alcune delle componenti principali dell’hardware sono esemplificate in Figura 3.1.
Figura 3.1. Esempi di dispositivi hardware di un calcolatore.
Unità di calcolo
La CPU (Central Processing Unit) è l’unità centrale del calcolatore. Si occupa di eseguire i programmi che
sono scritti in linguaggio macchina. Attualmente le CPU sono costituite da microprocessori che racchiudono
in un unico circuito integrato le seguenti componenti di calcolo.
 L’unità di controllo (CU, Control Unit) esegue le istruzioni dei programmi, coordina le attività del
microprocessore e controlla il flusso delle istruzioni tra il microprocessore e la memoria. Inoltre svolge
la sua attività in modo ciclico: preleva dalla memoria principale la “prossima” istruzione da eseguire,
preleva gli operandi specificati nell'istruzione, decodifica ed esegue l’istruzione, e infine ricomincia
(ciclo macchina).
 I registri di memoria sono delle unità di memoria estremamente veloci con capacità ridotta, ma con
tempo di accesso molto breve. Attualmente le loro dimensioni variano da 16 a 64 bit e i registri
vengono utilizzati per immagazzinare le istruzioni e i dati che stanno per essere processati o sono
appena stati processati.
 L’unità logico aritmetica (ALU, Arithmetic-Logic Unit) è il nucleo di esecuzione dei calcoli, essendo in
grado di eseguire operazioni come somma, sottrazione, moltiplicazione e divisione, oltre che le
principali operazioni logiche come AND, OR e NOT. Una volta prelevati gli operandi dai Registri di
memoria, la ALU esegue l'operazione richiesta e ne deposita il risultato nuovamente in memoria. La
ALU, insieme all'unità di controllo, collabora al completamento di un ciclo macchina.
 I bus sono canali di comunicazione tra le varie componenti dell’elaboratore e si differenziano a seconda
della funzione svolta.
Tra i principali produttori di microprocessori è possibile citare Intel, AMD, Motorola, Qualcomm e ARM.
Ogni microprocessore è caratterizzato da un clock che scandisce la sequenza delle operazioni da eseguire.
Ogni operazione può richiedere uno (nel caso di operazioni elementari) o più cicli di clock. La frequenza di
clock è uno dei parametri con i quali si valuta la velocità di calcolo di un microprocessore. L’unità di misura
della frequenza di clock è l’hertz (1 hertz corrisponde ad un ciclo al secondo). I microprocessori attualmente
in commercio raggiungono frequenze di clock nell'ordine dei Gigahertz (109 hertz). Microprocessori più
15
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
piccoli e veloci sono difficili da costruire per via di alcuni limiti fisici, dunque per la produzione di calcolatori
più performanti la tecnologia moderna si sta concentrando nella realizzazione di microprocessori che
contengono più CPU (chiamate core) in modo che queste possano svolgere più compiti in parallelo.
Memoria primaria
Un calcolatore possiede due tipi di memoria: la memoria primaria (chiamata anche centrale o di lavoro) e la
memoria secondaria o di massa.
La memoria primaria è quella che conserva i programmi in esecuzione e i dati in uso all'interno della CPU. E’
organizzata come una successione di bit raggruppati in unità dotate di indirizzo (un numero progressivo a
partire da 0) dette celle. La velocità di accesso a questa memoria è cruciale perché da essa dipende la
reattività del calcolatore alle richieste dell’utente. Il metodo di accesso alla memoria primaria è casuale, nel
senso che, conoscendo l’indirizzo, è possibile accedere a una qualsiasi cella di memoria in modo diretto e il
tempo di accesso alla cella non dipende dalla sua posizione. Per questo motivo, la memoria primaria è
anche detta Random Access Memory o RAM. Un’ulteriore caratteristica distintiva della memoria primaria è
la sua volatilità: questo significa che, spegnendo il calcolatore, il contenuto delle celle di memoria viene
cancellato e non è più recuperabile.
Memoria secondaria
La memoria secondaria è la memoria dei dischi e delle unità di memorizzazione permanente, quali ad
esempio i dischi fissi (hard disk), i dischi ottici (CD-ROM, DVD, Blu-Ray) e le memorie flash (utilizzate, per
esempio, nelle chiavette USB). Questo tipo di memoria è in grado di memorizzare grandi quantitativi di
informazioni che, nel caso dei dischi ottici, può andare da qualche centinaio di MB fino a qualche decina di
GB e, nel caso dei dischi fissi, può arrivare a decine di TB. Nella memoria secondaria l’informazione viene
memorizzata in maniera permanente, ma, a differenza della memoria primaria, questo tipo di memoria ha
tempi di accesso molto più elevati. Le memorie basate su dischi (hard disk, CD-ROM, DVD-ROM, ...) non
possono accedere a una cella di memoria in modo diretto ma richiedono un tempo di posizionamento del
dispositivo di lettura e scrittura per raggiungere la zona di memoria richiesta. Per questo motivo, il tempo di
accesso ad un dato dipende dalla posizione della cella sul disco.
I principali dispositivi di memoria secondaria (Figura 3.2) sono:
 dischi fissi (hard disk): utilizzati per l’archiviazioni di programmi e dati e generalmente collocati
all'interno del calcolatore. Esistono anche hard disk esterni, di solito collegabili tramite porte USB.
Questi dispositivi sono composti da una pila di dischi metallici rotanti collegati a due testine di
lettura/scrittura ciascuno (una per lato del disco). Le testine possono spostarsi dalla parte più esterna
del disco alla parte più interna (il funzionamento è pressoché identico a quello dei vecchi lettori di
dischi in vinile) e possono magnetizzare o smagnetizzare i vari blocchi dati in cui i dischi sono suddivisi;
 supporti a lettura ottica (CD-ROM, DVD, Blu-Ray): sono utilizzati per la distribuzione del software e di
grossi archivi di dati multimediali (testi audio, foto, video). Sono generalmente usati come supporto alla
memorizzazione di dati in sola lettura e richiedono dispositivi dedicati, cioè i masterizzatori, per poter
eseguire operazioni di scrittura. Il funzionamento meccanico di questi dispositivi è praticamente
identico a quello degli hard disk: la principale differenza riguarda l'interazione della testina con il disco
che, in questo caso, è basata su un principio ottico (la testina emana luce e riceve la luce riflessa dal
disco);
16
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)

memorie flash (chiavette USB, Solid State Drive, memory card): questa tipologia di memorie è di
recente introduzione e funziona, come la memoria primaria, senza l'ausilio di parti meccaniche. Le
memorie flash, generalmente basate su principi di fisica quantistica (come l'effetto tunnel), sono ad
accesso casuale, molto più veloci di tutte le altre tipologie di memorie secondarie e permettono una
notevole riduzione dei consumi (dovuta all'assenza di parti meccaniche). Negli ultimi anni si sta
assistendo all'introduzione di supporti chiamati SSD (Solid State Drive) utilizzati come sostituti dei
vecchi hard disk: questi nuovi dischi sono ancora molto costosi e non riescono a raggiungere la capacità
di memorizzazione dei vecchi hard disk, ma garantiscono enormi incrementi della velocità di lettura e
scrittura oltre che consumi ed emissioni sonore estremamente ridotte.
Figura 3.2. Dispositivi di memoria secondaria.
Le periferiche
Oltre alla CPU e alla memoria primaria e secondaria, il calcolatore ha bisogno di dispositivi di input e output
chiamati periferiche per supportare l'interazione con l’ambiente esterno.
Le periferiche si collegano al calcolatore mediante interfacce di comunicazione (comunemente dette porte),
e possono variare a seconda del tipo e della velocità di trasmissione. Inoltre, per ogni tipo di periferica
esiste una scheda chiamata controller che viene connessa alla scheda madre e che ha il compito di gestire il
comportamento della periferica.
I dispositivi di input consentono di comunicare al calcolatore informazioni provenienti dall'utente o
dall'ambiente esterno. I principali dispositivi di input (Figura 3.3) sono: la tastiera, gli strumenti di
puntamento (mouse), lo scanner, il microfono, le macchine fotografiche e le videocamere digitali. La
tastiera è il dispositivo di input principale ed è comunemente affiancata dagli strumenti di puntamento.
Oltre al popolarissimo mouse, un esempio di strumento di puntamento è il touchpad, molto diffuso sui
calcolatori portatili e con funzionalità analoghe a quelle del mouse. In particolare, il touchpad è costituito
da un’area sensibile al movimento e alla pressione delle dita che è collegata con il puntatore sullo schermo.
Lo scanner è una periferica che si collega alla macchina, spesso usando una porta che è detta USB
(Universal Serial Bus), che permette di rappresentare digitalmente una sorgente cartacea (una fotografia o
un documento scritto). Microfoni, macchine fotografiche e videocamere digitali sono dispositivi analoghi a
quelli tradizionalmente conosciuti, con la differenza che sono in grado di comunicare al calcolatore una
versione digitale del suono, delle fotografie e dei video realizzati.
17
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Figura 3.3. Esempi di periferiche di input.
I dispositivi di output consentono al calcolatore di comunicare all'esterno informazioni in esso contenute. I
principali dispositivi di output (Figura 3.4) sono: lo schermo, la stampante e le casse per la riproduzione del
suono.
Figura 3.4. Esempi di periferiche di output.
E’ importante notare che nella maggior parte dei casi il collegamento al calcolatore di una periferica
richiede, oltre al collegamento dei cavi alla porta adeguata, l’installazione di uno specifico software
chiamato driver che ha il compito di gestire il flusso di dati diretto al e proveniente dal dispositivo, facendo
in modo che la periferica funzioni correttamente. Esso rappresenta in pratica il vocabolario contenente il
"linguaggio" di comunicazione della periferica.
Oltre a quelle menzionate, esistono altre tipologie di periferiche. Tra le più comuni è possibile citare la
scheda di rete, che permette di collegare un calcolatore ad altri calcolatori tramite una rete locale o la rete
Internet, e il modem, che consente di far comunicare due calcolatori tramite la rete telefonica. Si tratta di
due esempi di periferiche che sono simultaneamente di input e di output.
Contenuti G3 — Il ruolo del software
Se l'hardware è la componente materiale di un calcolatore, il software ne costituisce la componente
immateriale.
Il termine software (letteralmente "materia morbida") è l'insieme dei programmi che possono essere
eseguiti da un calcolatore. In particolare, un singolo programma software è un insieme di istruzioni che un
calcolatore, e più precisamente la CPU, deve eseguire per portare a compimento un certo compito (task).
Microsoft Word è un esempio di programma software che contiene istruzioni per la creazione e la gestione
di documenti. Nel contesto di Word, il pulsante che consente di formattare in grassetto un testo selezionato
è una funzione software associata a un insieme di istruzioni che consentono di raggiungere l’obiettivo (cioè
visualizzare in grassetto una data porzione di testo).
Firefox o Chrome sono invece esempi di programmi software che si propongono come strumenti per
reperire e visualizzare pagine web. E’ facile pensare a numerosi altri esempi di programmi software,
ciascuno con le proprie caratteristiche e finalità.
Ne risulta che esistono diverse tipologie di programmi software di cui è opportuno conoscere le specificità.
18
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Tipologie di software
E’ consuetudine suddividere il software in due macro-categorie: il software di sistema e il software
applicativo.
Il software di sistema è l’insieme dei programmi che gestiscono le risorse e il comportamento del
calcolatore. In questa categoria, il software più importante è il sistema operativo, un insieme di programmi
che controlla e gestisce le funzionalità legate a CPU, memoria, periferiche e dispositivi di input/output
collegati al calcolatore.
Nel software di sistema sono inclusi i firmware e i driver. Il firmware è un software integrato in un
dispositivo elettronico per svolgere funzioni specifiche, come l’avvio del dispositivo stesso. Un esempio di
firmware è il BIOS (Basic Input-Output System) che è un firmware integrato sulla scheda madre del
calcolatore con il compito di eseguire la procedura di avvio all'accensione della macchina.
Il driver è un software che affianca uno specifico dispositivo e ne consente il corretto funzionamento. Il
driver è normalmente installato all'interno del sistema operativo e consente al calcolatore di utilizzare il
dispositivo. Ogni dispositivo possiede il proprio driver, e il driver è composto da un insieme di procedure
che controllano le varie funzionalità del dispositivo. Ad esempio, una stampante, come ogni dispositivo
collegabile a un calcolatore, è dotata del proprio driver, la cui installazione è necessaria affinché il
calcolatore possa correttamente farne uso.
Il software applicativo comprende tutti i programmi che consentono all'utente di eseguire compiti specifici.
Sono esempi di software applicativo i programmi per la creazione e la gestione di documenti (es. Microsoft
Word), i fogli di calcolo (es. Microsoft Excel), i browser per la navigazione su web (es. Mozilla Firefox), i
programmi per la gestione della posta elettronica (es. Microsoft Outlook), i programmi per l’elaborazione
delle immagini (es. Adobe Photoshop) e così via.
Il sistema operativo
Il sistema operativo (SO) è il software di sistema più importante per il corretto funzionamento di un
calcolatore e presiede numerose funzionalità. Da un lato, il sistema operativo si occupa di gestire le
componenti fisiche del calcolatore. In particolare, sono di sua competenza funzioni come:
 la gestione della CPU e della memoria principale (RAM). In ogni istante, il calcolatore esegue numerosi
programmi. Per questo motivo, il sistema operativo deve stabilire come e in quale ordine questi
programmi avranno accesso alla CPU, allocando inoltre lo spazio in memoria principale per ciascuno di
essi;
 la gestione dei file e la memorizzazione sui dispositivi di memoria secondaria. Il sistema operativo è
dotato di un modulo denominato file system per la gestione dei file. Questo modulo presiede le
operazioni di salvataggio/memorizzazione dei file e le corrispondenti operazioni di lettura/caricamento
dei medesimi. Il file system utilizza un’organizzazione dei file in cartelle (directory) per favorire una
gestione ordinata e intuitiva dello spazio disponibile da parte dell’utente;
 l’interazione con le periferiche. Tramite i driver, il sistema operativo è in grado di comunicare con i
dispositivi collegati al calcolatore consentendone il corretto funzionamento.
Inoltre, il sistema operativo si occupa di gestire l’interazione fra l’utente e il calcolatore. In particolare, è
compito del sistema operativo intercettare i comandi dell’utente e fare in modo che essi siano
correttamente eseguiti orchestrando il funzionamento delle varie componenti del calcolatore che si
rendessero necessarie. A tal fine, il sistema operativo è dotato di un’interfaccia, normalmente visuale, che
consente all'utente di comunicare in maniera intuitiva e naturale con il calcolatore. Questa interfaccia è
chiamata GUI (Graphical User Interface) e utilizza strumenti come finestre, pulsanti e puntatori per fornire
all'utente gli strumenti necessari per invocare l’esecuzione dei comandi. Ad esempio, tramite gli strumenti
di input come la tastiera e il mouse, l’utente può invocare la stampa di un documento. Il sistema operativo
intercetta il comando e fa in modo che il documento richiesto sia passato alla stampante. Tramite il driver
della stampante, il sistema operativo manda in stampa il documento e produce l’output richiesto.
Quale sistema operativo?
Il sistema operativo è lo stesso per tutti i calcolatori? La risposta è no: esistono sistemi operativi diversi,
ognuno con le proprie caratteristiche e peculiarità. I sistemi operativi più diffusi e conosciuti sono Microsoft
Windows, Linux, Apple Mac OS X e Android.
19
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Windows è un prodotto della società statunitense Microsoft e prende il nome dall'elemento che ne
caratterizza l’interfaccia grafica: la finestra (window). Nel corso degli anni, le versioni di Microsoft Windows
che sono andate succedendosi sono piuttosto numerose: Windows 95, 98, 2000, XP, Vista, 7, 8 e 10, solo
per citarne alcune. Si tratta di un SO disponibile per numerose piattaforme, cioè installabile su calcolatori
con diverse tipologie di microprocessore e scheda madre. Microsoft Windows è un SO commerciale, è
dunque necessario pagare l’acquisto di una licenza per poterlo installare su un calcolatore.
Linux è un SO non commerciale e può essere installato su un calcolatore senza dover pagare alcuna licenza.
La prima versione nasce nel 1991 a opera di Linus Torvalds, un giovane studente da cui il sistema ereditò il
nome. Si tratta di un SO estremamente versatile (ispirato ad un importante sistema dell'epoca chiamato
UNIX) e, come Microsoft Windows, installabile su numerose piattaforme. Oggi questo SO è disponibile in
svariate distribuzioni. Le diverse distribuzioni Linux condividono l’uso del medesimo nucleo (kernel) del
sistema e si differenziano nei restanti moduli. Ne risulta che le varie distribuzioni possono presentare
differenze anche sostanziali per l’utente. Sono esempi di distribuzioni Ubuntu, Fedora e SuSE.
Mac OS X è un prodotto della società statunitense Apple ed è concepito per essere installato solo ed
esclusivamente sui dispositivi di questo stesso produttore (PC o dispositivi mobili). Come Microsoft
Windows, anche Mac OS X è un prodotto commerciale ed è necessario pagare una licenza per installarlo su
un calcolatore; come Linux, anche questo SO è ispirato al SO UNIX.
Android è un sistema operativo non commerciale sviluppato da Alphabet (azienda nota anche col nome
Google) basato su Linux, ma ottimizzato per i dispositivi mobili (smartphone, tablet ecc).
E’ possibile scegliere il sistema operativo da installare sul proprio calcolatore? In genere, all'acquisto del
calcolatore, il sistema operativo è già installato (e l’eventuale licenza d’uso già pagata in caso di prodotto
commerciale). Installare un nuovo sistema operativo può implicare l’acquisto di un’ulteriore licenza d’uso
nel caso si scelga un prodotto commerciale come Microsoft Windows. Certamente, la scelta di installare un
sistema operativo non commerciale come Linux è sempre possibile e non comporta alcun aggravio di costi.
Programmi applicativi
I software applicativi si affiancano al software di sistema e completano la dotazione di programmi di un
calcolatore.
Il software applicativo comprende innumerevoli programmi, ognuno concepito per realizzare specifiche
funzionalità di interesse per l'utente finale. Il software applicativo non è pre-installato sul calcolatore:
l'utente sceglie quali software applicativi sono di suo interesse e procede con l'installazione.
La scelta può richiedere una riflessione: a volte la medesima funzionalità è offerta da più software
applicativi e si pone il dubbio di come procedere. In generale, i software applicativi non sono in conflitto fra
loro e possono coesistere sul calcolatore senza recarsi reciproco danno. Esistono eccezioni a questa regola
generale, come ad esempio il caso dei software antivirus per i quali è raccomandato l'uso di un unico
prodotto alla volta. Fatta eccezione per questi casi, i software applicativi, anche quando analoghi per
funzionalità, possono essere installati e usati contemporaneamente sul calcolatore. Si pensi al caso dei
browser, i software applicativi per la navigazione su web. Esistono numerosi prodotti che offrono questa
funzionalità come ad esempio i noti Chrome e Firefox. Entrambi possono essere installati sul calcolatore e
possono essere usati contemporaneamente senza alcun problema.
Dunque, come scegliere quali software applicativi installare sul proprio calcolatore? Un fattore di scelta è
certamente il costo. Numerosi software sono prodotti commerciali ed è necessario pagare il costo di una
licenza per poterli installare e utilizzare. Spesso questi software possono essere installati in versione di
prova (trial version) che ha una durata limitata nel tempo (tipicamente 30 giorni) oppure offre funzionalità
limitate rispetto alla versione ufficiale. Esistono anche software cosiddetti freeware per i quali non è
necessario pagare una licenza e possono essere liberamente installati sul calcolatore. Una ulteriore
categoria è quella del software open source, programmi di cui è reso disponibile pubblicamente il codice
sorgente scritto in linguaggi di alto livello in nome della trasparenza e della possibilità da parte di chiunque
di contribuire allo sviluppo.
L'installazione richiede l'esecuzione di una procedura di configurazione. Tale procedura installa il
programma sul calcolatore e lo rende disponibile per tutte le successive esecuzioni. L'installazione
comporta l'occupazione di una porzione di spazio sulla memoria secondaria del calcolatore (disco fisso).
20
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Fatta eccezione per lo spazio occupato su memoria secondaria, il software applicativo utilizza (e consuma)
risorse del calcolatore solo quando è in esecuzione.
Il software applicativo interagisce con il software di sistema e in particolare con il sistema operativo per
l'accesso e l'utilizzo delle risorse del calcolatore, come ad esempio la memoria principale e quella
secondaria. Pertanto il software applicativo è costruito per funzionare con uno specifico sistema operativo.
Il software applicativo è distribuito in diverse versioni, una per ogni sistema operativo su cui può essere
installato. Si pensi al caso di Mozilla Firefox che è disponibile per sistema operativo Windows, Linux, Mac
OS X e Android. Tuttavia, si tenga presente che numerosi software sono concepiti e distribuiti per
funzionare solo con uno specifico sistema operativo e non è possibile utilizzarli su altri sistemi. Si pensi al
caso di Microsoft Access, un software applicativo della suite di Microsoft Office che è disponibile solo per
sistema operativo Windows.
File system e gestione delle memorie di massa
Dopo che un testo, un'immagine o qualsiasi altro dato è stato creato, acquisito mediante conversione
analogico-digitale, o modificato, è necessario memorizzarlo in maniera persistente nella memoria di massa.
Questo in genere viene fatto memorizzando i dati (contenuto) in un file (dall'inglese"schedario", il
contenitore). Un file non è altro che una zona di memoria non volatile localizzata mediante un file system,
ovvero un modo usato dal SO per suddividere ed organizzare una memoria di massa.
Esistono diversi file system, in genere caratteristici di un sistema operativo e non sempre compatibili tra
loro. Tuttavia tutti i file system più diffusi supportano l'organizzazione di file in cartelle (raggruppamenti
logici che hanno il solo scopo di aiutare l'utente a reperire i propri file, ma non necessariamente
identificano aree diverse del dispositivo di memoria) e la memorizzazione di dati satellite relativi ad un file
(come la data di creazione, la visibilità del file negli elenchi e i permessi di accesso da parte di diverse
categorie di utenti).
Per citare alcuni nomi a scopo di esempio, Windows può utilizzare file system come NTFS o exFAT; Mac OSX
in genere supporta HFS+ o exFAT; Linux e Android supportano Ext, JFS, exFAT.
In ogni caso, lo spostamento di un file in una cartella sullo stesso dispositivo o la cancellazione di un filenon
necessitano di una effettiva lettura e riscrittura dei dati, sarà il file system a tenere traccia della posizione
logica del file o a segnalare come libera la porzione di memoria precedentemente occupata.
In generale i file sono organizzati in cartelle mediante una struttura ad albero che consente molteplici livelli
di annidamento. Per localizzare un file da un punto di vista logico ci si riferisce al suo percorso, ossia il nome
delle cartelle e sottocartelle separate da un carattere speciale (non utilizzabile quindi all'interno del nome
di un file o di una cartella). Ad esempio, il percorso del file pippo.txt posto all'interno di una cartella pluto, a
sua volta all'interno di paperino, tutte residenti sul disco identificato dal SO con la lettera C: sarà:
C:\paperino\pluto\pippo.txt
Esempi di programmi applicativi
Di seguito proponiamo un elenco di software applicativi raggruppati per funzionalità offerte:
 Software di videoscrittura o word processor. Alcuni software di questo tipo sono molto semplici e
offrono funzionalità minimali per lo più legate alla semplice scrittura (es. Blocco Note o Notepad++) o
alla formattazione del testo (es. Wordpad o Text Edit). Altri software offrono funzionalità avanzate per
la videoscrittura che comprendono strumenti di revisione e supporto all'inserimento di immagini e altri
elementi grafici (es. Microsoft Word e OpenOffice Writer). Altri ancora sono concepiti per la scrittura in
ambito scientifico e facilitano l'uso di notazioni matematiche sofisticate (es. LaTeX).
21
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)









Fogli di calcolo o spreadsheet. Consentono la memorizzazione di dati sui quali eseguire funzioni di
calcolo di varia natura (ad esempio calcoli matematici, statistici, finanziari). Esempi di software di
questo tipo sono Microsoft Excel, OpenOffice Calc e Lotus 123.
Software per la gestione di basi di dati o DBMS (Database Management System). Questi software
supportano l'interazione con le base di dati, cioè oggetti capaci di memorizzare dati in forma
strutturata. Esempi di software di questo tipo sono Microsoft Access e OpenOffice Base.
Software per realizzare presentazioni. Consentono di creare presentazioni composte da diapositive
(slide) in sequenza. Esempi di software di questo tipo sono Microsoft PowerPoint e OpenOffice Impress.
Software di intrattenimento. Consentono di giocare e di usare il calcolatore come uno strumento
ludico. Questi software possono essere semplici emulazioni di giochi esistenti nella realtà (come ad
esempio giochi di carte, dama, scacchi) o giochi più complessi di avventura e strategia.
Software per grafica (disegno, fotoritocco, progettazione). Consentono la modifica e la manipolazione
di immagini e oggetti di tipo grafico. Esempi di software di questo tipo sono Adobe Photoshop, Adobe
Illustrator, Autocad e Gimp.
Software per la riproduzione audio e video. Esempi di software di questo tipo sono Windows Media
Player, Video Lan Player, iTunes, QuickTime player e FooBar.
Software per la navigazione su web (browser). Consentono di reperire e visualizzare pagine web.
Esempi di software appartenenti a questa categoria sono Microsoft Edge, Google Chrome, Safari, Opera
e Mozilla Firefox.
Software per scrivere (sviluppare) software. Si tratta di complessi ecosistemi composti (nella forma più
basilare) da un semplice applicativo capace di scrivere del testo non formattato e da un secondo
applicativo (il compilatore) in grado di tradurre il testo scritto in un linguaggio di alto livello (il codice
sorgente) in linguaggio comprensibile dal calcolatore (il codice macchina).
Software gestionali, concepiti e sviluppati per soddisfare le esigenze di realtà specifiche. I software di
gestione di ospedali, biblioteche, uffici, magazzini sono esempi di questo tipo. I software gestionali sono
commissionati dall'interessato (l'azienda che necessita del software per le proprie esigenze gestionali)
ad una o più società di sviluppo software (software house) concordando le funzionalità da sviluppare e
il prezzo da corrispondere.
Come il calcolatore capisce come interpretare un file
Quando l'utente vuole visualizzare o modificare il contenuto di un file, il sistema operativo si occupa di
eseguire l'applicazione più adatta per decodificare e manipolare i dati in esso contenuti.
Ogni sistema operativo ha una strategia diversa per riconoscere la tipologia di un file (immagine, testo,
suono, ecc). Le tecniche principali sono le seguenti:
Estensione: In Windows i caratteri successivi all'ultimo punto (".") determinano l'estensione del file
(nascosta per impostazione predefinita). Ad ogni estensione è associata una applicazione predefinita, che
può essere cambiata dall'utente. Si tratta di un metodo molto veloce per capire di che tipo è un file, ma se
per errore l'estensione viene cancellata o cambiata possono insorgere dei problemi.
Metadati espliciti: In Mac OS X ogni file è accompagnato da un file nascosto con lo stesso nome, ma
preceduto da un punto. Questo contiene informazioni aggiuntive che permettono al sistema operativo di
tenere traccia di quale sia stata l'ultima applicazione che ha elaborato il file, e quindi di usarla nuovamente
per l'interpretazione (senza l'obbligo che i file dello stesso tipo condividano la stessa applicazione
predefinita).
Magic number: Un sistema più robusto dei precedenti perchè indipendente dal nome del file o da altri file
collaterali (informazioni che si perdono facilmente) prevede l'utilizzo di dati addizionali salvati in testa al file
(chiamate header o intestazione), e di convenzioni per interpretare tali dati. Questo metodo era utilizzato
in sistemi UNIX, ma è in uso ancora oggi da parte di applicazioni specifiche. Una volta eseguita
l'applicazione più adatta (secondo uno dei metodi precedenti) ad aprire ad esempio un'immagine con
estensione ".tif", questa riconosce che il tipo di contenitore sia effettivamente TIFF grazie ad un codice
salvato nei primissimi byte del file (in questo caso "4D 4D 00 2A"). Ogni tipo di file inoltre comprende
22
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
nell'header anche informazioni circa la codifica utilizzata (che nel caso di un TIFF lossy o lossless, con
indicazioni anche sulle dimensioni dell'immagine, la risoluzione e il profilo colore).
Contenuti G4 — Introduzione ai pericoli legati all'informatica
In meno di 60 anni l'informatica ha cambiato il mondo. Questa ondata di novità ha aperto molte possibilità
e ha migliorato la vita di molte persone, ma si è abbattuta sulla società ad una velocità superiore alla sua
capacità di adattamento, esponendo quindi la popolazione a rischi notevoli, specialmente per chi non ha
una alfabetizzazione informatica. Che piaccia o meno, conoscere le dinamiche dell'informatica è ormai
necessario per mantenere gli standard a cui si è abituati senza incorrere nei possibili rischi.
23
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Uno dei rischi più grandi per la società è proprio quello di dipendere da sistemi così complessi senza
conoscerli: da un lato diventa difficile interpretarne il comportamento e si tende a pensarli come un oracolo
infallibile (quando invece sono fallibili, in quanto prodotto umano), dall'altro perchè la complessità
comporta una certa difficoltà di manutenzione, e dipendere da qualcosa che non si sa riparare è un rischio
notevole, che trasforma la tecnologia in una vulnerabilità.
Un ulteriore rischio è quello del sovraccarico cognitivo (o information overload). Fenomeno che di per sé è
sempre esistito, ma che ha avuto un grande impatto con l'avvento dell'informatica e di Internet. Si tratta di
un disturbo che si manifesta quando si ricevono troppe informazioni, rendendo impossibile prendere
decisioni o riuscire a concentrarsi su una singola informazione.
Nel contesto dell'informatica, si parla di information overload in due circostanze: nel piccolo può essere
causato da interfacce grafiche o siti web mal progettati, che inibiscono la capacità di discernere ciò che è
importante da ciò che non lo è per via della mole di dati e del modo in cui le informazioni sono presentate.
Esiste però anche una dimensione patologica del fenomeno, condizione in cui l'utente passa il tempo
navigando compulsivamente da un sito all'altro o scorrendo la pagina di un social network, cercando
informazioni sempre più complete o aggiornate, non riuscendo a fermarsi o a ricordarne alcuna, provando
un iniziale ed effimero senso di piacere alla comparsa di nuove informazioni, che però lascia subito il posto
al bisogno di ulteriori aggiornamenti, ricerca che viene percepita come un dovere o una necessità.
La società odierna è plasmata dall'informazione e dalle tecnologie informatiche, attraverso un'influenza
reciproca tra ciò che accade nel mondo reale e ciò che accade online. Questo estende il concetto di
cittadinanza: la definizione di diritti e doveri deve tenere il passo con le possibilità offerte dalla tecnologia.
Si tratta di un lavoro di aggiornamento legislativo e culturale tutt'altro che semplice, in cui non è sempre
possibile applicare paradigmi tradizionali, e dove l'informatica stessa propone nuovi paradigmi (come ad
esempio la radicalizzazione del principio di trasparenza e libero accesso ai dati che, insieme ai modelli di
sviluppo partecipativi, è uno degli aspetti caratterizzanti la cultura Open Source e l'etica hacker).
In sintesi, il calcolatore (in ogni sua forma) ha davvero una funzione strategica, e per questo l'infrastruttura
va difesa, ma senza che vengano minate la libertà e la privacy dei singoli (ad esempio a seguito
dell'introduzione di politiche di priorità di alcuni dati rispetto ad altri, che comprometterebbero la
neutralità della rete senza che sussista alcuna ragione tecnica). A loro volta, però, gli utenti hanno
responsabilità legate alla sicurezza del sistema e alla diffusione delle informazioni.
Questa lezione è dedicata ai problemi di sicurezza informatica (ossia come difendere l'infrastruttura) e alle
insidie sociali che sfruttano il mezzo informatico.
Perchè la privacy è importante?
Quella corrente è definita da alcuni come l'epoca del capitalismo cognitivo, dove ciò che ha valore sono le
idee e i beni immateriali (come i dati) più che i prodotti materiali. In questo contesto vale la pena chiedersi
cosa si possa celare dietro ad un servizio gratuito come un social network, un servizio di messaggistica o un
motore di ricerca.
Per i servizi di questo tipo, caratterizzati dalla possibilità di caricare contenuti propri (dati personali e non), i
dati stessi costituiscono la forma di pagamento per il servizio ricevuto. Nella maggior parte dei casi, infatti,
chi offre il servizio monetizza il suo investimento attraverso la profilazione dell'utente (sotto l'esplicito
consenso dell'utente stesso, fornito al momento della registrazione). Per profilazione si intende la raccolta
di informazioni al fine di suddividere l'utenza in categorie di comportamento.
I fornitori di servizi possono fare un triplice uso dei dati in loro possesso, e ognuno di questi usi nasconde
potenziali insidie:
 Utilizzo dei dati per la scelta di contenuti personalizzati: dalla cronologia delle ricerche o da ciò che si
scrive nei servizi di messaggistica e di condivisione, il fornitore di servizi (attraverso opportuni algoritmi)
può presentare all'utente contenuti conformi a quelli che sono i suoi interessi e le sue opinioni. Per
quanto apparentemente utile, questo può portare all'involontario offuscamento di contenuti contrari al
24
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
suo sentire, creando di fatto una bolla nella quale tutto sembra confermare il suo punto di vista,
allontanandolo da una corretta percezione della realtà.
 Vendita a terze parti di servizi basati sui dati di un utente: un fornitore di servizi può vendere a terze
parti spazi pubblicitari personalizzati, dedicati cioè ad una specifica categoria di utenti. Sebbene possa
fare piacere non vedere pubblicità completamente casuali, il rischio in questo caso risiede nel fatto che
dai dati è possibile evincere con precisione anche quale sia la personalità dell'utente, inserzionisti
malevoli interessati alla manipolazione dell'opinione pubblica potrebbero confezionare contenuti e
pubblicità adatti a cambiare la percezione di un tema politico o sociale.
 Vendita dei dati a terze parti: i dati raccolti da un fornitore di servizi possono infine essere venduti a
terze parti per svariati tipi di indagine, ad esempio per progettare nuovi prodotti in linea con i desideri
dei possibili acquirenti. Tuttavia una volta che i dati sono in possesso di altri non è sempre facile capire
l'uso che ne sarà fatto. Emblematico è il caso di Cambridge Analitica, che sfruttando la raccolta illegale
di dati di milioni di utenti ha estratto il profilo psicologico di tutti coloro fossero indecisi riguardo alle
preferenze di voto, ed in seguito, mediante pubblicità mirate al punto precedente, ha influenzato
l'opinione pubblica cambiando le sorti di almeno due importanti votazioni del biennio 2016-2017,
ingerendo così sugli equilibri geopolitici degli anni successivi.
In risposta a questo tipo di pericoli, la Comunità Europea ha proposto la direttiva GDPR (Regolamento
generale sulla protezione dei dati), che impone a chi ospita i dati degli utenti di esplicitare in sede di
registrazione l'uso che ne verrà fatto, e di fornire gli strumenti per poterli interrogare ed eventualmente
cancellare.
Va infine sottolineato che ogni tipo di azione svolta online (visitare un sito web, mandare un messaggio,
cercare qualcosa, ecc) lascia sempre tracce, sia sul proprio dispositivo sia in rete. Casi di utilizzi malevoli di
queste tracce non sono rari, e per difendersi (almeno in parte) da questo tipo di pericoli si possono adottare
soluzioni basate su:
 l'anonimizzazione, ossia l'offuscamento della propria identità attraverso strumenti specifici (sebbene
sia un comportamento malvisto da alcuni fornitori di servizi, perchè il motivo dell'anonimizzazione
potrebbe essere anche criminoso);
 modelli comportamentali, ossia adottare comportamenti intrinsecamente sicuri, come ad esempio
considerare di pubblico dominio qualsiasi cosa si faccia con un calcolatore (fosse anche solo salvare una
foto sul telefono, scrivere una mail personale o ricevere un messaggio privato) o compiere azioni
casuali per inquinare i dati relativi al proprio comportamento;
 implementazioni normative, ossia leggi più severe che regolamentino la memorizzazione dei dati
(sebbene scrivere queste leggi non sia affatto semplice, soprattutto alla luce del fatto che sono spesso i
governi stessi a compiere azioni di massivo monitoraggio della rete, sfruttando le zone grigie della
legislazione).
Manipolazione sociale e fake news
Quello della manipolazione dell'opinione pubblica attraverso internet è un tema molto importante, tanto
da essere oggetto di studio da parte della NATO. Unitamente al resto delle infrastrutture tecnologiche nel
loro insieme, è considerato dagli eserciti nazionali alla stregua di un vero e proprio campo di battaglia
(insieme a terra, mare, aria e spazio). Le operazioni tattiche svolte in questo dominio vengono perpetrate
(da forze armate, governi, o semplici privati) attraverso un monitoraggio estensivo della rete e la diffusione
di: notizie falsificate (fake news); notizie reali presentate in modo tendenzioso; condivisione di contenuti
originali da parte di account fasulli (fake account). Il tutto confezionato ad arte per manipolare l'opinione
pubblica.
Un esempio lampante riguarda le violenze nel Myanmar del 2016, in cui è stata documentata un'attività di
propaganda basata su fake news e utilizzo di fake account, diffusa attraverso i social network da parte
dell'esercito di regime, che ha portato ad atti di violenza ai danni della minoranza musulmana Rohingya,
tanto da essere classificata come genocidio dal Commissariato delle Nazioni Unite per i Diritti Umani.
25
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
A complicare la situazione si consideri poi che, oltre a quello ideologico, ci può essere un secondo movente
per la diffusione di fake news: quello economico. Alcuni social network infatti permettono all'utente di
guadagnare denaro attraverso la pubblicità mostrata contestualmente alla fruizione di un suo contenuto.
Alcuni soggetti sfruttano questo meccanismo di monetizzazione creando contenuti estremamente virali per
massimizzarne la diffusione, e quindi il guadagno. Una delle caratteristiche che può rendere virale un
contenuto è proprio la sua capacità di polarizzare l'opinione pubblica, facendo leva su temi controversi e
divisivi. Spesso fake news indistinguibili da quelle confezionate per fini ideologici rientrano in questa
categoria.
Un esempio che spicca per creatività riguarda un'agenzia che diffondeva fake news riguardanti i temi più
disparati, e al tempo stesso gestiva un sito di debunking (demistificazione) che smontava tutte le false
notizie, garantendosi così un gran volume di condivisioni, sia da parte di chi credeva alle fake news, sia da
parte di chi condivideva le smentite. In questo caso il movente era economico, ma il danno ideologico è
stato ingente, perchè ha screditato l'importante operato di altri debunker, onesti e appassionati.
Esistono infine fornitori di servizi illegali a cui spesso si appoggiano i soggetti interessati alla diffusione di
contenuti malevoli (sia per fini economici che ideologici) chiamati click farm. Queste realtà forniscono in
genere due tipi di prodotto: click e fake account. Nel primo caso si tratta di centinaia di agenti (fisici e/o
virtuali) che passano il tempo cliccando e visualizzando i contenuti del cliente per aumentarne
artificialmente il numero di interazioni con il pubblico, in modo da ingannare gli algoritmi preposti al
riconoscimento dell'interesse generale di un contenuto ed aumentarne la diffusione. Nel secondo caso
vengono venduti account di social network confezionati su misura per impersonificare una specifica
tipologia di persona, utilizzati come vettore per influenzare l'opinione pubblica riguardo a temi specifici con
commenti e provocazioni (troll). Questi account sono confezionati così bene da sembrare reali: hanno una
storia, foto, e una fitta rete di amici. Spesso vengono creati partendo dal furto di credenziali di un vero
account, motivo per cui chiunque può essere una potenziale vittima del furto di credenziali.
Come forma di difesa dai fake account, molti social network stanno impiegando algoritmi in grado di
riconoscere i comportamenti inautentici, ma non si tratta di un compito facile: sebbene vengano cancellati
migliaia di account ogni giorno, molti riescono a superare le maglie di sicurezza.
Difendersi dalle fake news
Ogni volta che si vede una notizia condivisa da qualcuno bisognerebbe chiedersi se sia genuina o meno,
abituarsi ad essere scettici:
 per prima cosa non ci si deve fermare al titolo, ma va letto l'intero articolo;
 chi ha condiviso l'informazione? E' un esperto in tema? Se non lo è, meglio non ricondividere
l'informazione;
 quali sono le prove? Controllare l'autenticità di eventuali fotografie (ad esempio con la ricerca tramite
immagini di Google);
 ci sono riferimenti o link a fonti ufficiali? O solo ad altri articoli simili? Cosa dicono fonti diverse da
quella condivisa?
Inoltre ci possono essere anche indizi nel modo in cui l'informazione è presentata che suggeriscono scarsa
attendibilità:
 uso di click-bait (esche per i click): si tratta di tecniche usate nel giornalismo meno professionale per
spingere gli utenti a cliccare su un titolo; tra queste si citano: toni sensazionalistici, domande nel titolo,
presenza di elenchi (es. "10 cose che la scienza non dice!");
 grande mole di pubblicità (che spesso rende difficile anche la fruizione del contenuto);
 errori grossolani nel testo e anomalie tipografiche;
 gli articoli sono privi di data, non sono firmati e non citano alcuna fonte ufficiale.
Tuttavia, se la fake news è ben confezionata, o se testate giornalistiche affidabili hanno creduto alla notizia
e l'hanno ridistribuita, questi segni potrebbero essere stati eliminati, a quel punto il fact checking (cioè il
lavoro di accertamento degli avvenimenti citati e dei dati usati in un testo o in un discorso) è l'unico modo
per capire se una news è genuina.
Esistono diversi blog e pagine di social network che si occupano di debunking e di fact checking, alcune
delle quali riportano elenchi di pagine web associate alla insistente diffusione di fake news.
26
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Truffe e altri rischi simili
Nella sfera personale, quando non si ha una grande dimestichezza con la fenomenologia del linguaggio
testuale e visuale di internet, i rischi che si incontrano più di frequente sono: le insistenti pubblicità non
richieste (Spam), i tentativi di truffa perpetrati per via telematica (Scam), e i tentativi di furto di credenziali
per mezzo di false comunicazioni ufficiali (Phishing).
Quasi tutti i sistemi di messaggistica e di posta elettronica oggi incorporano algoritmi
anti-spam/scam/phishing, tuttavia alcune minacce a volte riescono a superare questi controlli automatici, è
quindi bene imparare a riconoscerle. Elementi che possono suggerire la scarsa attendibilità di un messaggio
sono:
 il mittente è sconosciuto o (in caso di mittente noto) il contenuto è atipico per quel mittente;
 il messaggio fa leva su presunte vincite, risparmi, fatture, spedizioni, personaggi facoltosi o attraenti e
qualsiasi altro tipo di esca che stimoli la curiosità;
 si riscontrano errori grossolani nel testo e anomalie tipografiche;
 i collegamenti presenti nel messaggio non portano dove dovrebbero (link sui quali è bene non cliccare
mai);
 sono presenti allegati sospetti e non richiesti.
Figura 5.1: Quando fermiamo il puntatore su un link senza cliccare, solitamente nella parte bassa dello
schermo vediamo l'indirizzo della pagina di destinazione
Introduzione alla sicurezza informatica
Quello della sicurezza informatica è un tema complesso, ma di fondamentale importanza. I tre obbiettivi di
questa branca dell'informatica si possono riassumere come:
 garantire la confidenzialità dei dati;
 garantire l'integrità dei dati;
 garantire la disponibilità dei dati.
L'interesse nel garantire la confidenzialità dei dati può essere quello ovvio del segreto industriale (o simili),
ma anche un più generico concetto di privacy e di protezione della persona dai rischi della manipolazione
dell'opinione o dal furto di dati come password o numeri di carte di credito. Inoltre impedire l'accesso di
estranei al proprio dispositivo è essenziale affinché questi non usino il calcolatore come tramite (schiavo)
per perpetrare ulteriori attacchi a terzi.
Perdere l'integrità dei dati significa che alcuni di questi hanno subito una modifica accidentale o malevola,
diventando quindi non affidabili. Scenari tipici sono: non sapere che i dati hanno perso integrità (si pensi ad
esempio ad un elenco in cui sono state contraffatte alcune voci) o l'eliminazione di alcuni dati in seguito ad
un guasto.
La disponibilità dei dati infine è necessaria per poterli usare. E' inutile avere dati integri e ben protetti se
non vi si può accedere. Anche in questo caso è possibile perdere l'accesso in modo involontario o in modo
doloso. La disponibilità dei dati è inoltre necessaria perchè un software possa svolgere le funzioni cui è
preposto.
27
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
I modi in cui confidenzialità, integrità e disponibilità possono essere messe a rischio sono innumerevoli,
tanto che, in maniera semiseria, si definisce sicuro un sistema solo quando l'amministratore è soddisfatto
del suo lavoro. Si tratta cioè di una misura soggettiva, perché da un punto di vista oggettivo non è possibile
garantire la sicurezza totale.
Infine, vista la confusione che a volte si riscontra su questo tema, vale la pena definire le due figure che
spesso si associano al concetto di "violazione della sicurezza". In informatica si definiscono Cracker (o pirati
informatici) coloro che si introducono in reti di calcolatori senza autorizzazione allo scopo di danneggiare il
sistema informatico (per motivi ideologici, economici o politici). Si definiscono invece Hacker gli operatori
molto esperti, che amano esplorare qualsiasi tipo di sistema informatico, sperimentando nuovi usi delle
tecnologie, senza mai nuocere intenzionalmente. Questi ultimi sono caratterizzati da una particolare cultura
ed etica, ed in genere è grazie a questi che le vulnerabilità vengono scoperte e corrette.
I fattori di rischio
Da un lato la sfida della sicurezza si gioca sul campo delle tecnologie, ma non è da sottovalutare anche il
lato umano.
Per quanto riguarda le tecnologie, si adottano contromisure per combattere i tentativi di infrazione per
mano di malintenzionati. Questi possono agire sfruttando la rete da una posizione remota (sfruttando
anche il lavoro di altri calcolatori di cui hanno preso il controllo) o per mano mediata da software malevoli
(malware) come virus, trojan, worm, spyware, ransomware e altre categorie di programmi che in un modo
o nell'altro compromettono la sicurezza del sistema.
I software malevoli possono essere distribuiti in modi diversi: inviati via mail, scaricati inavvertitamente da
internet, installati credendo che siano un altro software. La principale linea di difesa verso queste minacce è
il software storicamente chiamato antivirus (in realtà i sistemi moderni, detti di protezione degli endpoint,
funzionano in modo diverso dai vecchi antivirus propriamente detti).
Gli attacchi remoti invece fanno leva su vulnerabilità del sistema, difetti del software o dell'hardware che
sono sfuggiti al controllo degli sviluppatori, non necessariamente per incompetenza, ma per l'intrinseca
complessità del sistema nel suo insieme.
Per evitare che si possano sfruttare le vulnerabilità del sistema, i prodotti commerciali segretano il loro
codice sorgente confidando nella difficoltà di trovare falle semplicemente leggendo il codice macchina
(sicurezza tramite segretezza). Tuttavia il segreto come unica forma di protezione è decisamente
inaffidabile, il modello di software open source ad esempio opera all'opposto: attraverso la divulgazione del
codice sorgente chiunque può controllare se vi siano problemi di sicurezza, inoltre è possibile accertare che
il programma sia privo di malware nascosto al suo interno.
L'altro lato del problema della sicurezza informatica è il fattore umano. Di fatto, quest'ultimo aspetto causa
più danni nella sicurezza del fattore tecnologico. Sono le persone infatti il sistema più facile da penetrare:
password deboli, magari svelate ad un amico in luoghi pubblici; convinzione di non essere obiettivi
interessanti per un attacco malevolo; installazione di software dalla dubbia provenienza; apertura di mail
chiaramente sospette; nessun backup. Questi sono solo alcuni dei comportamenti che mettono a rischio la
sicurezza di intere aziende o anche solo del proprio dispositivo personale. Tutti i tentativi di circuizione degli
utenti ricadono nella categoria del social engineering (ingegneria sociale), una delle tecniche più usate dai
pirati informatici.
Alcune tecniche di difesa
Per proteggere la confidenzialità dei dati, esistono tecnologie come la cifratura dei dati. Queste tecnologie
sono sempre più diffuse ed efficaci, ma fanno leva sul fatto che gli utenti imparino a considerare le loro
password come qualcosa di molto importante. Ci sono tecnologie alternative al basare la sicurezza su
informazioni che l'utente sa, come fare leva su oggetti che l'utente ha con sé (ad esempio le chiavi OTP one time password, o i codici di verifica ricevuti sullo smartphone), per arrivare fino alla lettura di proprietà
biometriche come le impronte digitali, che fanno leva su ciò che l'utente è.
28
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Per proteggere l'integrità dei dati da manomissioni il modo migliore rimane quello delle copie di sicurezza
(backup). I backup possono essere fatti su dispositivi di archiviazione di massa di nostra proprietà o su spazi
di archiviazione remoti. Una tecnologia che permette di controllare l'integrità dei dati è l'hashing, ossia la
creazione di un codice di verifica molto piccolo, che però dipenda dalla totalità dei dati di interesse: se i dati
cambiano, anche solo di una piccola quantità, l'hash cambierà di conseguenza, dando la possibilità
all'utente di accorgersi che l'integrità rispetto ad un hash di riferimento è stata persa.
La disponibilità dei dati può essere compromessa da diversi fattori: ransomware che criptano la memoria
chiedendo un riscatto per decifrarla; tecnologie di memorizzazione o di codifica obsolete e non più
supportate; connettività assente; permessi negati; sovraccarico dei server. Ognuna di queste cause prevede
una sua tecnologia di prevenzione, ma (come per l'integrità) non per tutte esiste la possibilità di correzione
del problema una volta che si manifesta.
Infine, il modo migliore per proteggersi dalle vulnerabilità del software rimane quello di tenere il software
aggiornato, in modo che possano essere corrette le vulnerabilità appena vengono trovate, e (per le
aziende) di affidarsi a dei professionisti per lo sviluppo e la gestione dell'infrastruttura tecnologica, anche se
apparentemente meno economici.
29
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Contenuti F1 — Definizione di foglio di calcolo
Un foglio di calcolo, detto anche foglio elettronico o spreadsheet in lingua inglese, è un programma
applicativo di produttività personale. Operando su dati organizzati in una griglia di celle, esso offre
strumenti di elaborazione e automazione del calcolo, quali ad esempio l’inserimento di funzioni predefinite,
la definizione di formule personalizzate e la produzione di grafici e diagrammi.
Esistono molti esempi di fogli di calcolo. A partire da VisiCalc (1978), che è considerato il primo programma
di questo tipo, passando per Lotus-1-2-3 (1983), che è stato il primo foglio di calcolo di grande successo
commerciale, si arriva ai più recenti e diffusi Microsoft Excel e OpenOffice Calc.
Nelle prossime pagine, si presenteranno i principali aspetti che caratterizzano i fogli di calcolo e, dove
necessario, si farà riferimento allo strumento Microsoft Excel (in seguito denominato semplicemente Excel)
per illustrare nozioni e esempi. Tuttavia, si precisa che tali contenuti sono facilmente applicabili a tutti i
principali fogli di calcolo oggi disponibili.
Organizzazione di un foglio di calcolo
Un foglio di calcolo si presenta come una griglia di celle, ciascuna risultante dall’intersezione di una riga e
una colonna. Convenzionalmente, le colonne e le righe di un foglio di calcolo sono identificate
rispettivamente da un indice progressivo alfabetico (A, B, …) e da uno numerico (1, 2, …). Ne consegue che
ogni cella possiede coordinate univoche rappresentate dalla combinazione degli indici di colonna e riga che
la determinano. Ad esempio, nella Figura 1.1 è rappresentata una porzione di foglio di calcolo in cui è stata
selezionata la cella B4.
Figura 1.1. Porzione di foglio di calcolo con evidenziazione della cella B4
In un foglio di calcolo, esiste sempre almeno una cella selezionata che indica la posizione corrente. La cella
selezionata è evidenziata mediante una bordatura più marcata rispetto a quella delle altre celle. Inoltre,
essa è dotata di un quadratino sporgente nell’angolo in basso a destra chiamato maniglia di riempimento
che, come spiegato in seguito, consente di accedere a particolari funzionalità legate al riempimento
automatico di celle e al trascinamento di formule. Nell’esempio della Figura 1.1, è possibile notare la
maniglia di riempimento della cella selezionata.
Sopra alla griglia delle celle, il foglio di calcolo mostra la barra della formula (fx), che visualizza il contenuto
della cella correntemente selezionata. Nell’esempio della Figura 1.1, la barra della formula è vuota dal
momento che la cella B4 selezionata non ha alcun contenuto.
Inserimento di dati
Una cella di un foglio di calcolo può ospitare tre diverse tipologie di contenuto: valori testuali, cioè una
sequenza di caratteri alfanumerici (anche denominata stringa di testo); valori numerici, cioè una sequenza
di cifre; formule, cioè espressioni di calcolo che consentono di eseguire operazioni riferendosi (in generale)
al contenuto di altre celle.
Una formula può essere composta manualmente utilizzando i consueti operatori aritmetici di somma (+),
sottrazione (-), prodotto (*), divisione (/) ed elevamento a potenza (^). A questi, si aggiunge la possibilità di
30
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
costruire una formula utilizzando, anche in modo combinato, le funzioni predefinite che il foglio di calcolo
mette a disposizione per eseguire calcoli complessi. Una formula ha sempre inizio con il simbolo di
uguaglianza (=), al quale segue l’espressione della formula da calcolare. Una volta completato l’inserimento
della formula (ad esempio premendo il tasto Invio sulla tastiera o un apposito pulsante nell'interfaccia), la
cella mostra il risultato calcolato mediante l’espressione inserita. Selezionando una cella che contiene una
formula, l’espressione corrispondente è visualizzata nella barra della formula.
Un esempio di inserimento di dati in un foglio di calcolo è mostrato nella Figura 1.2 dove:
 le celle A1, A2 e A4 contengono stringhe di testo;
 le celle B1 e B2 presentano valori numerici;
 la cella B4 contiene una formula.
Figura 1.2. Esempio di inserimento dati in un foglio di calcolo
In particolare, si noti che la cella B4 visualizza il risultato della somma delle celle B1 e B2. Essendo la cella
selezionata, l’espressione aritmetica calcolata in B4 è mostrata nella barra della formula sopra la griglia di
celle.
Riempimento automatico di celle
Talvolta, i dati di un foglio di calcolo appartengono a un elenco predefinito e possono richiedere una lunga
attività di inserimento. In questi casi, è possibile utilizzare una funzionalità chiamata riempimento
automatico di celle che consente di inserire automaticamente gli elementi relativi alle serie di dati
predefinite. Sono disponibili serie di dati testuali, come i mesi dell’anno o i giorni della settimana, e
numeriche, come le progressioni aritmetiche di ragione impostata dall’utente. La funzionalità di
riempimento automatico di celle è accessibile tramite la maniglia di riempimento.
Ad esempio, si supponga di voler inserire in un foglio di calcolo il resoconto giornaliero delle prestazioni
erogate da un laboratorio di analisi nell’arco di un anno solare. Come mostrato nella Figura 1.3, è possibile
disporre i nomi dei dodici mesi dell’anno sulla prima riga del foglio di calcolo (celle da B1 a M1) e numerare
progressivamente le righe del foglio (celle da A2 a A32) per denotare i giorni, in modo tale da avere una
cella per ogni giorno dell’anno in cui inserire gli importi relativi alle prestazioni erogate (celle da B2 a M32).
31
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Figura 1.3. Riempimento automatico di celle
La funzionalità di riempimento automatico di celle agevola la predisposizione di questo foglio di calcolo,
inserendo automaticamente sia l’elenco dei mesi sia i numeri relativi ai giorni. Per l’inserimento dei mesi, è
necessario inserire il primo elemento dell’elenco (Gennaio) nella cella B1. Selezionando la cella B1 e
posizionando il mouse sulla maniglia di riempimento, si attiva la funzionalità di riempimento automatico
trascinando il mouse nella direzione in cui si vogliono inserire gli altri mesi (nell'esempio di Figura 1.3, si
tratta di trascinamento orizzontale), come mostrato sotto:
Analogamente, è possibile inserire i numeri da 1 a 31 per denotare i giorni. Si tratta di una progressione
aritmetica di ragione 1 (questo significa che la differenza fra due elementi consecutivi della progressione è
costante e uguale a 1). È necessario inserire i primi due elementi della progressione (la cifra 1 in A2 e la cifra
2 in A3). Selezionando le due celle A2 e A3 e utilizzando la maniglia di riempimento è possibile completare
la progressione trascinando il mouse nella direzione opportuna (nell'esempio di Figura 1.3, si tratta di
trascinamento verticale), come mostrato sotto:
Si noti che nel caso di giorni della settimana o di mesi dell'anno è sufficiente evidenziare una cella, mentre
nel caso di valori numerici ne vanno selezionate (almeno) due, il che consente al programma di calcolare la
ragione della progressione. Tale caratteristica e può essere sfruttata per replicare i valori di una cella o per
creare progressioni di natura differente.
Ad esempio, se l'operazione venisse invocata su una singola cella contenente il valore 0, questo verrebbe
replicato su tutte le celle consecutive, così come se il contenuto fosse il valore 1, il carattere a o la stringa
pippo. Se invece le celle oggetto di selezione e trascinamento fossero due e contenessero i valori 1 e 3, il
programma riempirebbe le celle successive con 5, 7, ecc. Va sottolineato che questo comportamento è
tipico dei valori numerici: se i valori fossero invece a e b, il programma, anziché portare avanti la sequenza
alfabetica con c, d, ecc., applicherebbe il criterio di replicazione, compilando le celle successive con a, b, a,
b, e via dicendo.
Dimensionamento di righe e colonne
Inizialmente, le colonne e le righe di un foglio di calcolo sono impostate alla medesima dimensione,
creando l’effetto di una griglia omogenea di celle tra loro identiche. La larghezza di ogni colonna e l’altezza
di ogni riga, possono essere modificate in base al contenuto da ospitare. È possibile modificare la larghezza
di una colonna o l'altezza di una riga utilizzando il dispositivo di puntamento (mouse), come mostrato
nell'esempio della Figura 1.4 per la colonna A. Se questa operazione viene compiuta avendo evidenziato più
colonne o più righe, il dimensionamento viene applicato a tutti gli elementi della selezione.
Figura 1.4. Dimensionamento di una colonna in un foglio di calcolo
32
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
In alternativa, mediante le opzioni di formato, è possibile impostare il valore numerico esatto di larghezza
di ciascuna colonna (in Excel, tramite il comando di menù Formato > Colonna > Larghezza). Allo stesso
modo, è possibile modificare l’altezza di una riga del foglio di calcolo.
Alcuni programmi, tra cui Excel, implementano un altro metodo efficace per dimensionare le celle. Un
doppio clic sul bordo di separazione tra colonne (o righe) nell'intestazione, come mostrato in Figura 1.4,
dimensiona in maniera ottimizzata, sulla base del contenuto dell'intera colonna (riga), la sua larghezza
(altezza). Il bordo su cui cliccare è quello che separa la colonna (riga) da dimensionare da quella successiva.
È bene notare che la griglia di un foglio di calcolo deve sempre possedere una struttura regolare, quindi non
è possibile modificare la dimensione in larghezza o altezza di una singola cella.
Nell’esempio della Figura 1.2, la larghezza della colonna A e l’altezza delle righe 1 e 2 sono state
incrementate per ottenere una migliore disposizione del testo nelle celle A1 e A2.
Formattazione di celle
I fogli di calcolo mettono a disposizione numerose funzionalità di formattazione delle celle e del loro
contenuto. Tali funzionalità possono essere suddivise nelle seguenti categorie:
 Numero. Le funzionalità di questa categoria consentono di personalizzare la visualizzazione dei valori
numerici contenuti nelle celle. Ad esempio, si può indicare che il valore numerico contenuto in una
cella esprime una percentuale, facendo in modo che il simbolo percentuale (%) sia visualizzato a fianco
del numero. Analogamente, sono disponibili opportuni formati per personalizzare la visualizzazione dei
numeri che esprimono valute, date/orari, frazioni e numeri esponenziali.
 Allineamento. Riguarda la disposizione del contenuto di una cella. Ad esempio, è possibile specificare
l’allineamento orizzontale (sinistra, centro, destra, giustificato) e verticale (in alto, al centro, in basso). È
anche possibile indicare l’orientamento della cella (orizzontale, verticale, diagonale secondo una
specifica angolazione). Infine, esiste un’opzione per fare in modo che il contenuto di una cella possa
essere disposto su righe diverse qualora superi la larghezza della cella.
 Carattere. Si tratta di funzionalità analoghe a quelle offerte dai programmi di videoscrittura come
Microsoft Word e OpenOffice Writer per la formattazione del testo. Esempi di questa categoria sono la
selezione di tipo, colore e dimensione del font e l’impostazione di stili come il testo grassetto, corsivo e
sottolineato.
 Bordo. Le funzionalità di questa categoria consentono di personalizzare la bordatura della cella. Ad
esempio, è possibile specificare il colore e lo spessore del bordo anche per singoli lati della cella.
 Motivo. Contiene funzionalità relative alla colorazione dello sfondo delle celle.
Nell’esempio della Figura 1.2, si noti la disposizione su due righe del testo contenuto nelle celle A1 e A2
ottenuta mediante la corrispondente opzione di formato allineamento. Inoltre, si noti che le celle B1, B2, B4
sono state impostate al formato numerico di valuta. Questo comporta la visualizzazione del simbolo della
divisa Euro (€) e del separatore delle migliaia accanto ai valori numerici contenuti nelle celle.
Esempio di foglio di calcolo
Consideriamo il foglio di calcolo riportato nella Figura 1.5, che sarà utilizzato come esempio di riferimento
nelle prossime unità di contenuto. Il foglio mostra un report trimestrale con gli importi complessivi delle
prestazioni mediche erogate da un ipotetico laboratorio di analisi.
Figura 1.5. Esempio di foglio di calcolo
33
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
In questo esempio, sono state applicate varie opzioni di formattazione. In particolare, è stata aumentata la
dimensione del font del testo (righe 1 e 2), è stato applicato lo stile grassetto (celle A1, A2, A4, B4, C4 e D4)
ed è stata modificata la larghezza delle colonne (colonna A) e l’altezza delle righe (righe 5, 6, 7, 8, 9).
Inoltre, è stato impostato il formato valuta per le celle che contengono gli importi delle prestazioni (celle
nell’intervallo B5:D9).
A seconda della lunghezza del testo inserito, può capitare che il contenuto di una cella occupi visivamente
lo spazio delle celle attigue. Nell’esempio di Figura 1.5, questo avviene per le celle A1 e A2, che occupano
rispettivamente parzialmente lo spazio della cella B1 e delle celle B2 e C2. In questi casi, si ricordi che,
nonostante la visualizzazione possa trarre in inganno, il testo è interamente contenuto nelle celle A1 e A2
mentre le celle B1, B2 e C2 sono vuote.
Infine, si noti che nelle celle dell’intervallo B5:D9 sono stati inseriti esclusivamente i valori numerici degli
importi. Il simbolo di divisa e il separatore delle migliaia sono effetti di visualizzazione derivanti
dall’applicazione del formato valuta, ma non incidono sul contenuto delle celle. Ad esempio, nella Figura
1.5, si osservi come alla visualizzazione di € 70.000 della cella D9 corrisponda il valore numerico 70000
mostrato nella barra della formula.
34
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Contenuti F2 — Tipologie di funzione
Il foglio di calcolo mette a disposizione numerose funzioni predefinite in grado di eseguire calcoli complessi
che richiederebbero altrimenti l’inserimento di formule lunghe e complicate.
Ad esempio, sono disponibili funzioni relative all’ambito matematico e trigonometrico, come logaritmo,
seno e coseno, o a quello finanziario, come ammortamento e calcolo di interessi. Dato il numero elevato, le
funzioni di un foglio di calcolo sono organizzate in diverse categorie di cui si riportano sotto quelle più
frequentemente utilizzate.
 Le funzioni finanziarie servono alla gestione di piani di ammortamento, tassi e calcolo di interessi.
 Le funzioni di data e ora servono alla manipolazione di date e orari come il calcolo del giorno
settimanale associato a una data e il calcolo dei giorni lavorativi in un intervallo di date.
 Le funzioni matematiche e trigonometriche includono funzioni semplici, come sommatoria e
produttoria, e funzioni più complesse, come il calcolo di logaritmo, potenza, seno, coseno e tangente.
 Le funzioni statistiche servono al calcolo combinatorio e della probabilità, includendo media aritmetica,
media armonica, moda, distribuzione binomiale, varianza, covarianza e scarto.
 Le funzioni testo sono dedicate alla manipolazione di stringhe di testo, come ad esmepio la sostituzione
automatica di una sequenza di caratteri e l’estrazione di una porzione di testo in una posizione specifica
di una cella.
 Le funzioni logiche sono legate agli operatori logici AND, OR, NOT. Inoltre, figura in questa categoria la
funzione condizionale IF (detta funzione SE nella versione di Excel in italiano).
Una funzione prevede uno o più argomenti racchiusi fra parentesi che indicano i valori o i riferimenti alle
celle da considerare per il calcolo della funzione.
La funzione SOMMA
La funzione SOMMA è una funzione matematica che permette di eseguire la somma dei valori numerici
contenuti in un intervallo di celle specificato. La sintassi della funzione è la seguente:
=SOMMA(num1;num2;…)
Nella formula, num1;num2;… sono i riferimenti alle celle contenenti i valori da sommare. In alternativa, è
possibile utilizzare una sintassi più sintetica con un unico argomento che rappresenta un intervallo di celle.
In questo caso, tutti i valori numerici contenuti nelle celle dell’intervallo specificato saranno considerati
nell’operazione di somma.
Con riferimento all’esempio della Figura 1.5, supponiamo di voler calcolare l’importo complessivo delle
prestazioni erogate nel mese di gennaio. A tal proposito, si inserisce nella cella B11 la seguente formula:
=SOMMA(B5:B9)
In questo esempio, l’intervallo di celle B5:B9 costituisce l’unico argomento della funzione SOMMA. La cella
B11 visualizzerà l’importo di € 366.700, risultato dell’operazione di somma. Si osservi che un intervallo di
celle è espresso attraverso i riferimenti alle due celle poste alle estremità dell'intervallo stesso, separati dal
carattere ":" (due punti). Non è necessario che un intervallo si espanda su un'unica riga o colonna; B5:E9 è
un esempio di intervallo valido, e include tutte le celle dalla colonna B alla colonna E il cui numero di riga sia
compreso tra 5 e 9.
Dunque, la sintassi con il carattere due punti va utilizzata all'interno di un singolo argomento per denotare
un intervallo. Gli argomenti di una funzione, invece, sono separati dal carattere ";" (punto e virgola).
Volendo calcolare l’importo complessivo delle prestazioni erogate nel trimestre dal laboratorio di
microbiologia degli alimenti, va inserita la seguente formula nella cella F5:
=SOMMA(B5:D5)
In questo caso, la cella F5 visualizzerà l’importo di € 456.000.
Si noti che il risultato prodotto dalla funzione SOMMA può essere ottenuto anche mediante l’inserimento di
una formula manuale in cui si utilizza l’operatore aritmetico di addizione (+) concatenando i riferimenti alle
celle contenenti gli addendi. Per esempio, la funzione =SOMMA(B5:B9) è equivalente alla seguente formula
inserita manualmente:
= B5+B6+B7+B8+B9
35
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
L’utilità della funzione SOMMA risulta evidente quando è necessario sommare i valori di un intervallo di
celle molto ampio. In questo caso, l’inserimento di una formula manuale è sconsigliabile, poiché richiede
l’inserimento di tutti i riferimenti alle celle che contengono i valori da sommare.
Trascinamento di formule e funzioni
Spesso, una formula deve essere invocata diverse volte in un foglio di calcolo, ma su intervalli di celle
differenti. La medesima situazione può accadere per una funzione. Ad esempio, nel foglio di calcolo della
Figura 1.5, volendo calcolare l’importo complessivo delle prestazioni rispetto a diversi mesi o rispetto a
diversi laboratori, andrebbe inserita la funzione SOMMA in varie celle del foglio, specificando di volta in
volta l’intervallo di celle opportuno su cui eseguire l’operazione.
Il foglio di calcolo offre una funzionalità di trascinamento di formule e funzioni che lavora in modo analogo
al riempimento automatico di celle. In particolare, mediante la maniglia di riempimento, è possibile
trascinare una cella che contiene una formula o una funzione copiandola da una cella di origine a una cella
di destinazione. Il trascinamento ha come effetto quello di traslare automaticamente i riferimenti alle celle
contenuti nella formula o funzione di un numero di righe/colonne pari alla differenza tra le coordinate della
cella di origine e quelle della cella di destinazione.
Nell’esempio della Figura 1.5, la funzione SOMMA(B5:B9) contenuta nella cella B11 può essere copiata
mediante trascinamento nelle celle C11 e D11. Per effetto del trascinamento, l’argomento della funzione
SOMMA in C11 e D11 è traslato di una e due colonne, rispettivamente. Dunque, in C11 avremo la funzione
SOMMA(C5:C9) che calcola l’importo complessivo delle prestazioni erogate in febbraio, mentre in D11
avremo la funzione SOMMA(D5:D9) che calcola l’analogo importo per il mese di marzo. Questo risultato è
osservabile nella Figura 2.1, dove la barra della formula mostra la funzione contenuta nella cella D11
correntemente selezionata.
Figura 2.1. Trascinamento di funzioni
Allo stesso modo, la funzione SOMMA(B5:D5) della cella F5 può essere trascinata nelle celle dell’intervallo
F6:F9 per calcolare l’importo complessivo delle prestazione erogate nel trimestre dai vari laboratori di
analisi. L’effetto di questa operazione di trascinamento è anch'esso osservabile nell’esempio della Figura
2.1.
Aggiornamento dei risultati di formule e funzioni
Una caratteristica fondamentale dei fogli di calcolo è l’aggiornamento automatico dei risultati di formule e
funzioni quando il contenuto di una cella riferita subisce una modifica. Questo significa che ogni volta che il
contenuto di una cella viene cambiato, le formule e le funzioni presenti all’interno del foglio di calcolo che
lavorano su quella cella vengono automaticamente ricalcolate per aggiornare il risultato.
Nell'esempio in Figura 1.5, si supponga di modificare l’importo delle prestazioni erogate dal laboratorio di
microbiologia degli alimenti nel mese di gennaio (cella B5). In particolare, si sostituisca l’importo esistente
36
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
(€ 123.000) con un nuovo importo pari a € 125.000. Automaticamente, le somme calcolate nelle celle B11 e
F5 sono aggiornate dal foglio di calcolo e sono impostate al nuovo valore di € 368.700 e € 458.000,
rispettivamente. I risultati delle altre operazioni di somma rimangono invece invariati, dal momento che la
cella B5 modificata non rientra negli intervalli di celle considerati dalle formule nelle celle C11:D11 e F6:F9.
Il risultato di questa operazione di aggiornamento è mostrato nella Figura 2.2.
Figura 2.2. Aggiornamento dei risultati della funzione SOMMA
Riferimenti relativi e assoluti
Negli esempi mostrati in precedenza, sono state utilizzate formule e funzioni contenenti riferimenti relativi
alle celle. Questo consente di fare in modo che, in caso di trascinamento della formula o della funzione, i
riferimenti siano automaticamente traslati. Tale comportamento può non essere auspicabile quando,
trascinando una formula, si vuole mantenere fisso il riferimento a una o più celle. In questi casi, è
necessario utilizzare nella formula o funzione un riferimento assoluto alle celle per fare in modo che,
durante l’operazione di trascinamento, tale riferimento resti invariato e non subisca traslazione. Un
riferimento assoluto è creato anteponendo il carattere $ alla coordinata della cella che deve restare fissa
durante l’operazione di trascinamento. Nell'inserire le coordinate di una cella, è possibile combinare l’uso
di riferimenti relativi e assoluti.
Si supponga di voler inserire in una formula o funzione il riferimento alla cella B5. Esistono quattro
possibilità:
 inserire il riferimento B5. Il riferimento è completamente relativo, dunque sia il riferimento alla colonna
sia quello alla riga scorrono in caso di trascinamento;
 inserire il riferimento $B5. Il riferimento alla colonna è assoluto ($B) e resta fisso, il riferimento alla riga
è relativo (5) e scorre in caso di trascinamento;
 inserire il riferimento B$5. Il riferimento alla colonna è relativo (B) e scorre, il riferimento alla riga è
assoluto ($5) e resta fisso in caso di trascinamento;
 inserire il riferimento $B$5. Il riferimento è completamente assoluto, dunque sia il riferimento alla
colonna sia quello alla riga restano fissi in caso di trascinamento.
Esempio con riferimenti relativi e assoluti
Si consideri l’esempio in Figura 1.5. Si supponga che, in base a una disposizione interna, il centro di analisi
riceva ogni mese un premio pari a una percentuale fissata rispetto all'importo complessivo delle prestazioni
erogate in quel mese da parte di tutti i laboratori. Come mostrato nella Figura 2.3, si inserisce nella cella
B13 la percentuale da utilizzare per il calcolo del premio mensile, e nella cella B14 la formula per calcolare
l’importo effettivo del premio.
37
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Figura 2.3. Riferimenti assoluti alle celle
La formula della cella B14 è la seguente:
= B11 * $B$13
Calcolando la formula, l’importo del premio per il mese di Gennaio risulta pari a € 73.740. Per calcolare
l’importo del premio per i mesi di Febbraio e Marzo va trascinata la formula della cella B14 rispettivamente
nelle celle C14 e D14. Nella formula inserita, i riferimenti alla cella $B$13 sono assoluti. In questo caso, l’uso
dei riferimenti assoluti è necessario poiché trascinando la formula in C14 e D14 si desidera che i riferimenti
alla cella $B$13 restino fissi e non siano traslati. Al contrario, i riferimenti alla cella B11 sono relativi perché
si vuole che siano traslati e che vadano a considerare gli importi complessivi delle prestazioni per i mesi di
Febbraio e Marzo (celle C11 e D11, rispettivamente).
Come mostrato nella Figura 2.3, l’importo del premio per i mesi di Febbraio e Marzo è pari rispettivamente
a € 73.520 e € 88.880.
La funzione condizionale SE
La funzione condizionale SE è una funzione logica che consente di variare il contenuto di una cella in base al
verificarsi o meno di una condizione prefissata. La sintassi della funzione è la seguente:
=SE(test;se_vero;se_falso)
La funzione prevede tre argomenti.
Il primo argomento è test, che esprime la condizione da verificare. Generalmente, test è costituito da
un’operazione di confronto aritmetico nel quale il contenuto di una cella è comparato con un valore
costante o con il contenuto di un’altra cella. Esempi di test sono B11>50 e F4=D7. L’esito di test è un valore
booleano; questo significa che il risultato di test può assumere soltanto due valori: VERO o FALSO.
Il secondo argomento se_vero esprime la formula o funzione che deve essere eseguita nel caso in cui test
sia risultato VERO.
Il terzo argomento se_falso esprime la formula o funzione che deve essere eseguita quando test produce
un risultato FALSO.
In altre parole, la funzione condizionale SE consente di eseguire la formula o funzione espressa in se_vero o
se_falso in base al valore di verità (VERO o FALSO) della condizione test.
Esempio di funzione condizionale SE
Con riferimento all’esempio della Figura 2.3, si supponga che il premio mensile da destinare al centro di
analisi sia pari al 20% dell’importo complessivo delle prestazioni (premio minimo) se queste sono inferiori a
€ 400.000, e sia pari al 30% (premio massimo) in caso contrario. In questo caso, per calcolare l’importo del
premio per il mese di Gennaio, va utilizzata la funzione SE inserendo nella cella B16 la seguente formula:
=SE(B11<400000;B11*20%;B11*30%)
Per calcolare gli importi del premio per i mesi di Febbraio e Marzo è necessario trascinare la formula nella
cella B16 rispettivamente nelle celle C16 e D16.
38
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Tanto la soglia di € 400.000 quanto le percentuali del 20% e 30% possono subire variazioni nel tempo a
seguito di cambiamenti nella politica di assegnazione dei premi. Per rendere l'esempio più flessibile rispetto
a questo genere di modifiche, si consideri l’esempio della Figura 2.4.
Figura 2.4. Esempio di funzione condizionale SE
In questo esempio, la soglia e le percentuali per il calcolo del premio sono inserite rispettivamente nelle
celle B13, B14 e B15. La formula nella cella B16 che calcola l’importo del premio è la seguente:
=SE(B11<$B$13;B11*$B$14;B11*$B$15)
In caso di variazioni alla soglia o alle percentuali, è sufficiente modificare il contenuto delle celle B13, B14 e
B15 per aggiornare l’importo dei premi mensili. Si noti l’uso di riferimenti assoluti per consentire il corretto
trascinamento della formula nelle celle C14 e D14.
39
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Contenuti F3 — Le funzioni statistiche
Una categoria di funzioni Excel particolarmente utile è quella delle funzioni statistiche. Essa contiene
numerose funzioni di utilizzo molto frequente sia per utenti generici sia per utenti esperti con competenze
professionali in materia statistica. Ad esempio, le funzioni che permettono di eseguire conteggi e calcolare i
principali indicatori statistici, come media, massimo e minimo, risultano utili in numerosi contesti, ogni
qualvolta si rende necessario derivare dati di sintesi a partire da una certa serie dati. Si pensi a un ciclo di
esperimenti medici in laboratorio, dove si vuole calcolare e mettere in evidenza il comportamento medio e i
picchi positivi/negativi di una serie consecutiva di osservazioni.
Inoltre, le funzioni statistiche di Excel consentono di supportare l’utente in analisi statistiche più avanzate
quali modelli di regressione, analisi della varianza, test di ipotesi, stima di parametri e calcolo di intervalli di
confidenza. Si pensi alla divisione marketing di una azienda di vendite nella quale l’analisi dei dati è
fondamentale per eseguire valutazioni e stimare le linee di tendenza e le previsioni di crescita.
Nel seguito, saranno illustrate e discusse le funzioni statistiche di Excel di utilità generale. Per una
trattazione più approfondita degli strumenti di analisi statistica nei fogli di calcolo si rimanda a pubblicazioni
specializzate.
Funzioni per determinare massimo e minimo di una serie di dati
Le funzioni statistiche MAX e MIN restituiscono rispettivamente il massimo e minimo dei valori contenuti in
un insieme di celle considerato. La sintassi delle funzioni è la seguente:
=MAX(num1;num2;…)
=MIN(num1;num2;…)
Nelle formule, num1;num2;… rappresentano i riferimenti alle celle contenenti i valori da considerare. Il
risultato è il valore numerico massimo o minimo tra quelli contenuti nelle celle passate alla funzione come
argomento (num1;num2;…). In alternativa, è possibile utilizzare una sintassi più sintetica in cui la funzione
riceve un unico argomento che rappresenta un intervallo di celle, utilizzando la consueta sintassi in cui gli
estremi dell'intervallo sono separati dal carattere ":". In questo caso, saranno considerati i valori numerici
contenuti nelle celle dell’intervallo specificato ai fini della determinazione del valore massimo o minimo.
Esempio con le funzioni MAX e MIN
Si consideri l’esempio in Figura 3.1, nel quale sono mostrati i dati delle rilevazioni relative a tre test di
laboratorio nel periodo dal 01/09/2010 al 15/09/2010.
Figura 3.1. Esempio di funzione statistica MAX
Per ognuno dei tre test si voglia calcolare mediante la funzione MAX il valore massimo rilevato nei giorni in
cui è stata eseguita l’osservazione (1-15/09/2010). Per quanto riguarda Test1, i dati rilevati sono contenuti
nelle celle B4:B18. Come mostrato nella barra della formula della Figura 3.1, la funzione MAX inserita nella
cella B20 è la seguente:
40
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
=MAX(B4:B18)
Il risultato è il valore 32. Per calcolare il valore massimo relativo a Test2 e Test3, si copia mediante
trascinamento la funzione in B20 rispettivamente nelle celle C20 e D20. I valori massimi delle rilevazioni
relative a Test2 e Test3 sono 35.8 e 33.9.
La funzione MIN ha sintassi identica a quella della funzione MAX. Nell’esempio della Figura 3.1, i valori
minimi rilevati per ciascuno dei tre test sono calcolati mediante la funzione MIN e i risultati sono contenuti
nelle celle B21:D21.
Nella determinazione del valore massimo e minimo, si tenga presente che MAX e MIN considerano soltanto
valori numerici, ignorando i valori logici o testuali eventualmente contenuti nell’intervallo di celle
considerato. Nell’esempio in Figura 3.1, si può notare che alcuni valori di rilevazione non sono disponibili
(celle C12 e C13) o non sono stati inseriti (cella C8). Questo non è un problema per il calcolo delle funzioni
MAX e MIN, in quanto il contenuto di queste celle viene semplicemente ignorato.
Funzioni per il calcolo di medie
La funzione statistica MEDIA restituisce la media aritmetica dei valori contenuti in un insieme di celle. La
sintassi della funzione MEDIA è la seguente:
=MEDIA(num1;num2;…)
Nella formula, num1;num2;… sono i riferimenti alle celle contenenti i valori da considerare. In alternativa, è
possibile utilizzare una sintassi più sintetica in cui la funzione MEDIA riceve un unico argomento che
rappresenta un intervallo di celle. In questo caso, verranno considerati i valori numerici contenuti nelle
celle dell’intervallo specificato.
Nell’esempio in Figura 3.1, si usa la funzione MEDIA per calcolare la media aritmetica delle rilevazioni
osservate sui tre test. Per Test1, la funzione MEDIA è inserita nella cella B22 come segue:
=MEDIA(B4:B18)
Il risultato è il valore 30.32. Per calcolare la media aritmetica relativa a Test2 e Test3, si copia mediante
trascinamento la funzione in B22 rispettivamente nelle celle C22 e D22. I valori di media delle rilevazioni
relative a Test2 e Test3 risultano essere 33.67 e 33.32.
Come nel caso delle funzioni MAX e MIN, anche la funzione MEDIA considera soltanto valori numerici,
ignorando i valori logici o testuali eventualmente contenuti nell’intervallo di celle considerato. Per questo
motivo, nell’esempio della Figura 3.1, le celle C8, C12 e C13 sono ignorate nel calcolo della funzione MEDIA.
Oltre alla funzione MEDIA, Excel metta a disposizione funzioni per il calcolo di altre tipologie di media, come
ad esempio la media armonica (ossia il reciproco della media aritmetica dei reciproci) e la media
geometrica (ossia, dati n termini, la radice n-esima del prodotto degli n valori). La sintassi delle funzioni che
implementano tali tipologie di media è la seguente:
=MEDIA.ARMONICA(num1;num2;…)
=MEDIA.GEOMETRICA(num1;num2;…)
Nelle formule, num1;num2;… sono i riferimenti alle celle contenenti i valori da considerare. In analogia con
la funzione MEDIA, è possibile specificare un intervallo di celle come unico argomento delle funzioni
MEDIA.ARMONICA e MEDIA.GEOMETRICA.
Funzioni di conteggio numerico
Le funzione statistica CONTA.NUMERI esegue il conteggio delle celle che contengono un valore numerico
considerando un insieme di celle specificato. La sintassi della funzione CONTA.NUMERI è la seguente:
=CONTA.NUMERI(val1;val2;…)
Nella formula, val1;val2;… sono i riferimenti alle celle contenenti i valori da considerare. In alternativa, è
possibile specificare un intervallo di celle come unico argomento della funzione CONTA.NUMERI. La
funzione CONTA.NUMERI considera soltanto valori numerici, ignorando i valori logici o testuali
eventualmente contenuti nell’intervallo di celle considerato.
Nell’esempio in Figura 3.1, si usa la funzione CONTA.NUMERI per conteggiare il numero di rilevazioni
eseguite per ciascuno dei tre test considerati. Per Test1, la funzione CONTA.NUMERI è inserita nella cella
B23 come segue:
41
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
=CONTA.NUMERI(B4:B18)
Come mostrato nella Figura 3.2, il risultato di questo conteggio è il valore 15.
Figura 3.2. Esempio di funzione statistica CONTA.NUMERI
Per eseguire il medesimo conteggio su Test2 e Test3, si copia mediante trascinamento la funzione in B23
rispettivamente nelle celle C23 e D23. Il conteggio per Test2 restituisce il valore 12 dal momento che le
celle C8, C12 e C13 contengono valori non numerici e sono quindi ignorate. Il conteggio per Test3
restituisce il valore 15 (cella D23, Figura 3.2).
Altre funzioni di conteggio
Oltre alla funzione CONTA.NUMERI, Excel mette a disposizione altre funzioni di conteggio.
=CONTA.VALORI(val1;val2;…)
Esegue il conteggio delle celle non vuote in un intervallo di celle specificato, esprimibile come un insieme di
argomenti in cui ogni argomento è il riferimento a una cella (carattere separatore ";") oppure come un
singolo argomento intervallo (carattere separatore ":" tra le celle che lo delimitano). A differenza della
funzione CONTA.NUMERI, la funzione CONTA.VALORI conteggia anche le celle che contengono valori logici
o testuali.
=CONTA.VUOTE(val1;val2;…)
Esegue il conteggio delle celle vuote in un intervallo di celle specificato, esprimibile come un insieme di
argomenti in cui ogni argomento è il riferimento a una cella (carattere separatore ";") oppure come un
singolo argomento intervallo (carattere separatore ":" tra le celle che lo delimitano). Una cella è
considerata vuota quando non contiene alcun valore. È bene ricordare che il carattere spazio (blank) è a
tutti gli effetti un valore, dunque le celle apparentemente vuote ma in realtà contenenti spazi non sono
conteggiate.
=CONTA.SE(intervallo;criteri)
Esegue il conteggio delle celle che si trovano in un intervallo specificato e soddisfano una condizione
assegnata. La funzione CONTA.SE presenta argomenti diversi rispetto a CONTA.NUMERI, CONTA.VALORI e
CONTA.VUOTE, pertanto verrà approfondita nella prossima pagina di contenuti.
Le funzioni CONTA.SE e SOMMA.SE
CONTA.SE è la funzione di conteggio più flessibile tra quelle offerte da Excel, poiché consente all'utente di
specificare quali celle (tra quelle considerate dall'intervallo) includere nel conteggio in base a una
condizione.
42
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
La sintassi della funzione CONTA.SE è la seguente:
=CONTA.SE(intervallo;criterio)
La funzione prevede due argomenti. L'argomento intervallo stabilisce l’intervallo di celle da considerare per
il conteggio. L'argomento criterio esprime la condizione che deve essere soddisfatta affinché una cella di
intervallo sia inclusa nel conteggio. Generalmente, criterio è costituito da un’operazione di confronto per
cui il contenuto di una cella è comparato con un valore costante, il contenuto di un’altra cella o
un'espressione. La condizione espressa in criterio è valutata per ogni cella di intervallo e, per ciascuna di
esse, restituisce un valore booleano (VERO o FALSO) che determina se quella cella debba essere inclusa nel
conteggio o meno.
Per fare chiarezza sulle condizioni di confronto impiegabili come criterio della funzione CONTA.SE, si
propongono i seguenti esempi. Per ciascun criterio, si mostra l’effetto sulla funzione di conteggio.
Excel mette inoltre a disposizione la funzione SOMMA.SE, la cui sintassi è analoga a CONTA.SE, il cui scopo è
eseguire la somma dei valori contenuti in un insieme di celle in base al verificarsi di una condizione.
Esempio con la funzione CONTA.SE
Si consideri l’esempio in Figura 3.1 e si voglia conteggiare il numero di rilevazioni che hanno restituito un
valore sopra la media per ciascuno dei tre test considerati. Secondo quanto visto alla pagina precedente, il
criterio andrebbe espresso attraverso la stringa ">30.32". Questo però introduce un problema: se i valori
nella tabella cambiassero, tale valore non sarebbe più corretto e ci si dovrebbe ricordare di aggiornarlo
manualmente all'interno di tutte le formule di confronto che ne fanno uso.
Questo problema viene risolto attraverso una variante sintattica, in cui il criterio si compone di una parte
testuale (l'operatore di confronto ">") e di un riferimento a una cella contenente il valore soglia (B22). La
concatenazione delle parti che insieme costituiscono il criterio viene effettuata attraverso il carattere
ampersand (&).
Per Test1, la funzione CONTA.SE va inserita nella cella B24 come segue:
=CONTA.SE(B4:B18;">"&B22)
In questo esempio, l’intervallo di celle da considerare per il conteggio è B4:B18 e l’argomento criterio
passato alla funzione CONTA.SE è determinato dall’espressione ">"&B22. Il risultato della funzione
CONTA.SE è mostrato nella Figura 3.3.
43
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Figura 3.3. Esempio di funzione statistica CONTA.SE
Il risultato della funzione CONTA.SE stabilisce che 7 rilevazioni di Test1 sono superiori al valore di media
30.32 contenuto nella cella B22. Per eseguire il medesimo conteggio su Test2 e Test3, si copia mediante
trascinamento la funzione in B24 rispettivamente nelle celle C24 e D24.
Altre funzioni statistiche di Excel
Sintetizziamo nella tabella seguente altre funzioni statistiche di Excel non ancora presentate.
44
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Contenuti F4 — Lo strumento di creazione grafici di Excel
I grafici sono uno strumento di analisi molto efficace e, per questo motivo, sono frequentemente impiegati
all’interno dei fogli di calcolo. Un grafico offre una visualizzazione complessiva dei dati, mediante la quale è
immediato osservare tendenze, variazioni relative e correlazioni tra gruppi di valori diversi. Inoltre, dal
momento che un grafico è aggiornato automaticamente al variare dei dati, esso costituisce un valido
strumento per evidenziare cambiamenti nei dati che rischierebbero altrimenti di passare inosservati. Ad
esempio, considerando un foglio di calcolo contenente i dati relativi alle rilevazioni sperimentali relative a
un certo fenomeno di interesse, è possibile realizzare un grafico che consenta di osservare in maniera
visuale l’andamento dell’esperimento in un certo arco temporale, ponendo in evidenza le variazioni relative
che corrispondono agli aumenti o alle diminuzioni dei valori rilevati di volta in volta.
Un grafico è realizzato a partire da una serie di dati, cioè un insieme di valori relativi a uno specifico
oggetto/fenomeno di interesse. Una serie di dati è memorizzata in un intervallo di celle di un foglio di
calcolo e ogni cella dell’intervallo contiene uno specifico valore che dovrà essere visualizzato nel grafico. Ad
esempio, i valori rilevati per un esperimento nell'arco temporale di un mese costituiscono una serie di dati.
È anche possibile costruire un grafico a partire da più di una serie di dati, in modo da poterne confrontare i
valori. Ogni dato all'interno di una serie può essere associato a una categoria che descrive la natura del
dato stesso. Spesso, l’obiettivo di un grafico è confrontare i valori relativi a più serie di dati rispetto a un
unico insieme di categorie. Ad esempio, si considerino due serie di dati costituite dalle rilevazioni relative a
due esperimenti. In questo caso, l’insieme delle categorie è rappresentato dalle date in cui le rilevazioni dei
due esperimenti sono state eseguite. Ovviamente, affinché il confronto sia significativo, è necessario
considerare un unico insieme di categorie per le due serie di dati, ovvero un unico insieme di date di
rilevazione per entrambi gli esperimenti.
Procedura guidata per la creazione di un grafico
Excel mette a disposizione una procedura guidata per la realizzazione di un grafico. La procedura si articola
nei seguenti passaggi:
1. scelta del tipo di grafico - L'utente imposta il tipo di grafico da utilizzare scegliendo tra una lista di
possibilità (grafici cartesiani, istogrammi, diagrammi a barre, diagrammi a torta, grafici a linea);
2. selezione dei dati di origine - L'utente indica i dati del foglio di calcolo (serie di dati e categorie) su cui
basare la costruzione del grafico;
3. personalizzazione e formattazione - L’utente definisce l’aspetto del grafico utilizzando una lista di
opzioni disponibili.
4. finalizzazione e posizionamento - Il grafico viene completato e collocato nel foglio di calcolo corrente o
in un nuovo foglio.
Nelle prossime pagine verranno analizzati i dettagli di ciascun passaggio.
45
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Scelta del tipo di grafico - 1
Il primo passo per la costruzione di un grafico è la scelta da parte dell’utente del tipo di grafico che si
intende realizzare. Excel mette a disposizione diversi tipi di grafico, fra cui gli istogrammi e i grafici a barre.
46
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Scelta del tipo di grafico - 2
Altri tipi di grafico offerti da Excel sono i grafici a linee, i grafici a torta e i grafici a dispersione.
Scelta del tipo di grafico - 3
Altri tipi di grafico offerti da Excel sono i grafici ad area, ad anello, a superficie e a bolle.
47
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Scelta del tipo di grafico - 4
Nella maggioranza dei casi, le varie tipologie di grafico offrono la medesima potenza rappresentativa e la
scelta del tipo di grafico da utilizzare è dettata dall'efficacia comunicativa. Tuttavia, in alcuni casi, ciò può
non essere vero. Ad esempio, i grafici a torta sono adatti a rappresentare solo dati che descrivono la
percentuale espressa da ciascuna voce rispetto al totale.
Si consideri l’esempio in Figura 3.1 ove sono mostrati i dati delle rilevazioni relative a tre test di laboratorio
nel medesimo periodo. Si voglia costruire un grafico che consente di confrontare visivamente i valori
rilevati per ciascun test in ciascuna data. Come mostrato nella Figura 4.1, un tipo di grafico adatto allo
scopo è quello a linee.
Figura 4.1. Esempio di grafico a linee
In questo esempio, ogni serie di dati, una per ogni test, è rappresentata mediante una linea di colore
diverso (vedi legenda all’interno della Figura 4.1). I valori di ciascuna serie sono rappresentati sull'asse
verticale (y), mentre l’insieme delle categorie è rappresentato sull'asse orizzontale (x) ed è costituito
dall'insieme delle date in cui sono state effettuate le rilevazioni dei test.
Selezione dei dati di origine di un grafico
Dopo la scelta del tipo di grafico, l’utente deve indicare l’intervallo di celle, detto intervallo dati, in cui sono
memorizzati i valori da rappresentare al suo interno. Excel richiede di specificare un unico intervallo dati
che contenga sia le serie di dati sia le categorie del grafico. Per questo motivo, è necessario che l’utente,
dopo aver specificato l’intervallo dati, indichi come sono disposte nell'intervallo le serie di dati e le
categorie. Sono possibili due scenari:
 serie in righe - Ciascuna riga dell’intervallo dati memorizza i valori di una serie di dati da visualizzare nel
grafico, e ciascuna colonna dell’intervallo ospita una categoria;
 serie in colonne - Ciascuna riga dell’intervallo dati memorizza una categoria, e ciascuna colonna
dell’intervallo ospita una serie di dati da visualizzare nel grafico.
La scelta tra serie in righe e serie in colonne non è univoca. Spesso, i valori nell'intervallo dati possono
essere considerati una serie sia considerando la riga sia considerando la colonna. In questi casi, è l’utente
che deve operare la scelta tra le due possibilità in base a ciò che vuole evidenziare nel grafico.
Excel mette inoltre a disposizione una funzionalità per raffinare la selezione dei dati di origine facendo in
modo di leggere dalle celle del foglio di calcolo non solo i valori da visualizzare nel grafico, ma anche le
etichette di testo che identificano ciascuna serie e ciascuna categoria.
Considerando l’esempio della Figura 3.1 e il corrispondente grafico a linee mostrato nella Figura 4.1,
l’intervallo dati è B4:D18, che ospita i valori delle rilevazioni dei tre test nel periodo di osservazione dal
01/09/10 al 15/09/10. In questo caso, la disposizione è del tipo "serie in colonne" poiché ciascuna colonna
dell’intervallo (B, C, D) ospita i valori di una serie di dati, cioè di un test e ciascuna riga dell’intervallo
48
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
memorizza i valori di una categoria, cioè i dati rilevati per i tre test in una specifica data. Nel grafico in
Figura 4.1, i nomi delle tre serie di dati sono riportati nella legenda e corrispondono rispettivamente al
contenuto delle celle B3, C3 e D3 del foglio di calcolo. Analogamente, i nomi delle categorie visualizzati
sull'asse orizzontale corrispondono ai valori delle celle nell'intervallo A4:A18.
Personalizzazione e finalizzazione di un grafico
Il terzo passo per la costruzione di un grafico prevede una fase di personalizzazione che consente di
intervenire sugli aspetti di visualizzazione. A tal proposito, Excel mette a disposizione varie opzioni.
 Titoli. Consente di assegnare un titolo al grafico e di dare un nome agli assi, sia quello orizzontale (x)
delle categorie, sia quello verticale (y) dei valori.
 Assi. Consente di modificare l’aspetto degli assi, eventualmente eliminando la visualizzazione di questi
oggetti.
 Griglia. La griglia è costituita dalle linee guida disposte orizzontalmente e verticalmente nell'area del
grafico a intervalli regolari. Esse favoriscono la lettura del grafico, facilitando la comparazione di valori
appartenenti a serie diverse. È possibile impostare una griglia più o meno fitta di linee, differenziando
eventualmente la granularità delle linee guida orizzontali della griglia rispetto a quelle verticali.
 Legenda. Consente di scegliere se mostrare il riquadro della legenda e dove posizionarlo.
 Etichette dati. Consente di visualizzare nell'area del grafico alcune informazioni che possono facilitare
la lettura dei valori, come ad esempio il nome della serie di dati e il nome della categoria di
appartenenza.
 Tabella dati. Consente di accostare alla visualizzazione del grafico una tabella che contiene le serie di
dati e le categorie che hanno generato il grafico. Si tratta di un’opzione utile quando si ipotizza di dover
estrarre il grafico dal foglio di calcolo per utilizzarlo in un altro programma.
Nell'esempio della Figura 4.1, il titolo del grafico è stato impostato a “Rilevazione dati dei test”, mentre i
nomi degli assi orizzontale e verticale sono rispettivamente “Data rilevazione” e “Valore rilevato”. Gli assi
sono visibili e la griglia è limitata alle linee guida orizzontali che favoriscono il confronto fra i valori delle
serie di dati rappresentate. La legenda è visualizzata alla destra del grafico. Non è visualizzata alcuna
etichetta dati e neppure la tabella dati.
L’ultimo passaggio per la creazione di un grafico consiste nel posizionamento del grafico. È possibile
memorizzare il grafico nello stesso foglio di calcolo che ospita i dati che lo hanno generato, oppure
posizionarlo in un nuovo foglio di calcolo appositamente creato.
Al termine dei quattro passaggi, l’utente può sempre intervenire per modificare il grafico in tutte le sue
componenti. In particolare, Excel mette a disposizione alcuni strumenti di formattazione aggiuntivi rispetto
a quelli proposti in fase di personalizzazione. Tali strumenti consentono di modificare l’aspetto di un grafico
in ogni sua caratteristica, come il tipo di font usato nelle etichette di testo, i colori degli elementi del grafico
e quelli di sfondo, la scala di rappresentazione dei valori sugli assi e così via.
Esempio di grafico di tipo istogramma - 1
Si consideri l’esempio mostrato in Figura 1.5 in cui sono evidenziati gli importi delle prestazioni erogate dai
laboratori di un centro di analisi in un dato trimestre. Si voglia costruire un grafico di tipo istogramma che
permetta di confrontare in modo visuale i risultati prodotti dai vari laboratori. Come intervallo dati
impostiamo le celle B5:D9, nelle quali sono memorizzati gli importi delle prestazioni per i vari laboratori nei
tre mesi osservati. A questo punto è necessario scegliere tra la rappresentazione delle serie in righe o
colonne. In questo caso, entrambe le possibilità sono sensate, ma producono due diversi confronti dei dati
nell'intervallo considerato.
Considerando le serie in colonne, si ottiene il grafico della Figura 4.2.
49
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Figura 4.2. Esempio di istogramma con serie di dati in colonne
In questo grafico, le serie di dati sono i tre mesi considerati e le categorie sono i vari laboratori confrontati.
Ciò che il grafico della Figura 4.2 consente di analizzare efficacemente è l’andamento di ciascun laboratorio
nel trimestre considerato. Da questo grafico si deduce facilmente che il laboratorio di microbiologia degli
alimenti ha avuto nel mese di marzo un significativo incremento delle prestazioni erogate, il laboratorio di
microbiologia delle acque ha un andamento negativo, il laboratorio di microbiologia cosmetica evidenzia un
comportamento altalenante, quello di parassitologia e batteriologia umana è costante e quello di sierologia
delle malattie infettive ha un andamento costantemente positivo, senza particolari scostamenti.
Esempio di grafico di tipo istogramma - 2
Nell'esempio precedente si è scelto di considerare le serie in colonne.Optando invece per le serie in righe, si
ottiene il grafico della Figura 4.3.
Figura 4.3. Esempio di istogramma con serie di dati in righe
In quest’altro grafico, le serie di dati sono i vari laboratori e le categorie sono i mesi di osservazioni
considerati. Il grafico della Figura 4.3 evidenzia il contributo di ogni laboratorio al raggiungimento del
risultato complessivo di ogni mese. Da questo grafico è facile osservare che i laboratori di microbiologia
degli alimenti e di microbiologia cosmetica sono preponderanti nella determinazione del risultato mensile
del centro di analisi, il laboratorio di sierologia delle malattie infettive è in crescita e sta assumendo un
50
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
ruolo sempre più significativo, quelli microbiologia delle acque e di parassitologia e batteriologia umana
contribuiscono in modo marginale al risultato complessivo del centro di analisi.
In definitiva, quale delle due alternative è preferibile? La risposta dipende da quale obiettivo si intende
raggiungere con il grafico, e in particolare quale confronto l’utente desidera rappresentare con maggiore
efficacia.
Esempio di grafico di tipo torta
Nel foglio di calcolo mostrato nella Figura 2.1, gli importi mensili delle prestazioni erogate sono sommati
per produrre un importo complessivo trimestrale di ciascun laboratorio. Si voglia costruire un grafico di tipo
torta per visualizzare qual è la proporzione tra gli importi trimestrali prodotti da ciascun laboratorio. Come
intervallo dati vanno impostate le celle F5:F9 in cui sono memorizzati gli importi complessivi trimestrali di
ciascun laboratorio. Dunque, in questo caso, l’unica serie di dati considerata è rappresentata in colonna e
ciascuna riga rappresenta una categoria. Il grafico risultante è mostrato nella Figura 4.4.
Figura 4.4. Esempio di grafico a torta
In questo grafico, i contributi preponderanti del laboratorio di microbiologia degli alimenti e del laboratorio
di microbiologia cosmetica sono ancora più evidenti che nel grafico di tipo istogramma.
Per aumentare l'efficacia comunicativa, nel passaggio di personalizzazione si è scelto di mostrare le
etichette dati facendo in modo che ciascuna categoria nella torta sia affiancata dal valore corrispondente,
fornendo dunque un’informazione numerica in aggiunta a quella visuale.
51
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Contenuti B1 —Introduzione alla gestione dell’informazione e dei dati
Il reperimento e la gestione di dati sono processi comuni, presenti in numerose attività che svolgiamo
quotidianamente, come ad esempio, la consultazione del catalogo di una biblioteca, l’esplorazione di un
portale web cinematografico contenente recensioni di pellicole, la stampa degli esami attraverso il sistema
informativo di un ateneo, o ancora il versamento di una somma su un conto corrente. In tutte queste
attività, siamo interessati a reperire le informazioni che soddisfano le nostre specifiche esigenze in un
preciso momento. Ad esempio, possiamo essere interessati a reperire le informazioni disponibili su uno
specifico libro di cui conosciamo l’autore, oppure le informazioni sui film realizzati da un certo regista. In un
ulteriore scenario di esempio, quando ci presentiamo allo sportello bancario per effettuare un’operazione
di versamento, l’operatore della filiale inserisce il nostro numero di conto corrente ed è così in grado di
reperire i dati relativi al nostro credito e registrare l’avvenuta operazione di versamento all’interno del
sistema informativo della banca aggiornando il nostro saldo in tempo reale.
È chiaro che in tutti questi scenari, c’è un sistema informatico in grado di memorizzare e gestire le
informazioni di interesse (trasformandole in dati), rendendo possibile le operazioni di reperimento e
gestione (inserimento, aggiornamento, cancellazione) delle informazioni di interesse in un dato momento.
Dato e informazione
Nella precedente scheda, abbiamo utilizzato sia il termine dato sia il termine informazione.
Per dato si intende la descrizione di una caratteristica della realtà costituita da simboli che ne garantiscano
la comprensione e registrata su un supporto che ne garantisca la conservazione.
Se prendiamo in considerazione il valore 2005 scritto su un foglio, questo è un dato. Siamo infatti in grado
di leggere e comprendere il valore 2005 e il foglio ne garantisce la conservazione. Tuttavia, non siamo in
grado di comprendere il significato del valore 2005, ovvero che cosa rappresenti questo insieme di simboli.
Per informazione si intende l’interpretazione di un dato, in grado di arricchire la nostra conoscenza.
Se il valore 2005 è associato a una descrizione del tipo “Titolo: Be Cool – anno di produzione: 2005”, allora
siamo in presenza di una informazione, ovvero di un dato interpretato. Al dato è associato un contesto
interpretativo che consente di comprendere il significato del dato rispetto alla sua funzione descrittiva di
una certa realtà. Nel nostro caso, il dato rappresenta l’anno di produzione di un certo film. I sistemi
informatici per la gestione dei dati normalmente sono in grado di memorizzare i dati nel tempo e di fornire
un contesto interpretativo ai dati facendoli diventare informazioni utili per gli utenti.
Organizzare i dati in fogli di calcolo
Gli strumenti di gestione delle informazioni consentono di organizzare e memorizzare i dati in modo
efficace rispetto all’impiego che se ne deve fare. L’esempio di uno strumento software tipicamente usato
dagli utenti per l’organizzazione dei dati è il foglio di calcolo, di cui Microsoft Office Excel è un esempio
molto diffuso.
Si consideri un insieme di dati relativi a film, ciascuno descritto mediante le proprie caratteristiche come ad
esempio il titolo, il regista e l’anno di produzione. Tipicamente, il foglio di calcolo che memorizza questo
insieme di dati è organizzato in modo tale da presentare le caratteristiche dei film nelle colonne e i valori
associati alle caratteristiche nelle righe. Leggendo i valori colonna per colonna su una specifica riga si
osserva la descrizione di un certo film attraverso le sue caratteristiche (vedi Figura B1.1).
Figura 1.1: Foglio di calcolo contenente un insieme di film
52
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Limiti dell’organizzazione dei dati in fogli di calcolo
L’organizzazione dei dati illustrata nella scheda precedente è valida, tuttavia presenta alcuni limiti. Con
riferimento alla tabella di Figura B1.2, i limiti che si possono riscontrare sono relativi a:
Validità dei dati: in un foglio di calcolo, non è possibile effettuare controlli sull’ammissibilità dei valori
inseriti per una specifica caratteristica. Ad esempio, è possibile inserire un testo a piacere nella cella
corrispondente all’anno di produzione di un film e il foglio di calcolo non ha modo di rilevare che il dato non
è valido.
Ridondanza dei dati: in un foglio di calcolo, uno specifico dato deve essere inserito in tutte le celle nelle
quali il valore è richiesto anche se presente in una riga precedente. Ad esempio, in ogni riga relativa a film
di Christopher Nolan sarà necessario inserire l’anno di nascita del regista nella cella della colonna relativa a
questa informazione.
Propagazione delle modifiche: come conseguenza della ridondanza, l’aggiornamento di un dato presente in
numerose celle richiede l’individuazione e la modifica manuale di tutte le celle interessate. Si supponga di
voler modificare la descrizione dei registi dei film cambiando i valori delle celle relative all’anno di nascita in
favore della data precisa di nascita. Per ciascun regista, come ad esempio Christopher Nolan, è necessario
individuare tutte le righe relative ai film di questo regista e modificare l’anno di nascita (1970) inserendo la
data di nascita (30/07/1970).
Figura 1.2: Foglio di calcolo relativo a film con evidenza in rosso di valori errati o ridondanti
Mettere in relazione fogli di calcolo
Si supponga di avere due fogli di calcolo. Il primo foglio memorizza dati relativi a film e ciascuna riga mostra
le caratteristiche di una specifica pellicola tra le quali il nominativo del regista in una certa colonna (si veda
la Figura B1.1). Il secondo foglio memorizza i dati relativi ai registi e ciascuna riga mostra le informazioni
anagrafiche e biografiche di uno specifico individuo. Volendo conoscere la nazionalità del regista di un film
di interesse, è necessario mettere in relazione i dati contenuti nei due fogli di calcolo. Identificata la riga del
film di interesse nel primo foglio di calcolo, sarà necessario trovare la colonna relativa al regista e prelevare
il nominativo, trovare la riga nel secondo foglio di calcolo che corrisponde a tale nominativo e consultare la
colonna relativa alla nazionalità.
Il procedimento descritto si basa sull’assunto implicito che il nominativo sia una caratteristica univoca nella
descrizione di ciascun regista. In altre parole, stiamo assumendo che non esistano due registi con il
medesimo nominativo. In caso contrario, passando dal foglio dei film al foglio dei registi potremmo avere il
dubbio di quale sia la nazionalità corretta del nostro regista quando il medesimo nominativo è associato a
individui diversi e cioè compare in righe diverse.
Questa assunzione è evidentemente molto pericolosa perché i casi di omonimia fra individui sono tutt’altro
che rari e questo rischia di compromettere la correttezza delle informazioni reperite dovuta a un errato
collegamento fra le righe appartenenti ai fogli di calcolo diversi.
I vantaggi delle basi di dati
53
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Una base di dati è una soluzione pensata per organizzare e gestire dati in modo strutturato offrendo
soluzioni appropriate per superare i limiti che tipicamente affliggono i dati memorizzati nei fogli di calcolo.
Spesso, gli utenti che si avvicinano per la prima volta al mondo delle basi di dati si pongono alcuni
interrogativi: “quale differenza c'è fra una base di dati e un foglio di calcolo?”, “quando è opportuno
utilizzare una base di dati per memorizzare le informazioni di interesse?” e ancora “quando è meglio
impiegare un foglio di calcolo?”.
In verità il confronto fra basi di dati e fogli di calcolo è improprio: si tratta di due software con finalità molto
diverse, accomunati soltanto dal fatto che entrambi memorizzano dati in strutture di forma tabellare.
I fogli di calcolo consentono la memorizzazione dei dati in una griglia di celle in cui non esiste alcuna
distinzione fra schema e istanza: l'organizzazione dei dati dipende dall'utente che predispone il foglio di
calcolo in base alle sue necessità. La scelta di avere serie di dati omogenei disposti per riga o per colonna è
una convenzione che facilita la lettura del foglio e l'inserimento di formule, ma non è obbligatoria e
neppure suggerita in qualche modo dagli strumenti. Inoltre, i fogli di calcolo sono concepiti come strumenti
di elaborazione e analisi dei dati, predisposti per l'inserimento di formule e funzioni di calcolo
eventualmente complesse. La possibilità di correlare dati appartenenti a fogli di calcolo diversi esiste ma è
scarsamente impiegata e di non facile utilizzo.
Al contrario, in una base di dati, l'organizzazione dei dati è basata sul concetto di tabella nella quale sono
ben distinte le nozioni di schema e istanza come caratteristiche essenziali e distintive, così come la
possibilità di correlare fra loro i dati appartenenti a tabelle diverse. Questo favorisce la memorizzazione dei
dati in modo da minimizzare le ridondanze e facilitare la gestione degli aggiornamenti nel corso del tempo.
54
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Contenuti B2 —Introduzione alle basi di dati
Consideriamo nuovamente gli esempi di consultazione del catalogo di una biblioteca, esplorazione di un
portale web cinematografico, stampa degli esami universitari, e versamento di una somma su un conto
corrente. In tutte queste attività, i dati di interesse (ovvero i dati relativi a libri, film, esami e conti correnti)
sono reperiti all’occorrenza estraendoli da un archivio elettronico dove sono memorizzati e conservati nel
tempo.
Una base di dati (o database in lingua Inglese) è una collezione di dati coerenti creata allo scopo specifico di
rappresentare e memorizzare adeguatamente le informazioni di una realtà d’interesse. Come anticipato
nella precedente scheda, un database memorizza i dati in modo strutturato, cioè organizzati secondo
schemi e tabelle dotati di una precisa e rigida definizione. Ad esempio, la base di dati relativa al portale web
cinematografico conterrà tabelle per memorizzare dati su film, attori, registi e così via. Analogamente, la
base di dati relativa al sistema informativo universitario conterrà tabelle con dati su studenti, corsi di
laurea, esami, docenti e così via.
Un’ulteriore caratteristica fondamentale delle basi di dati è quella di semplificare il continuo aggiornamento
dei dati memorizzati, al fine di fornire dati sempre attuali agli utenti e alle applicazioni che ne hanno
necessità per lo svolgimento delle loro specifiche attività. Ad esempio, ogni volta che uno studente supera
un esame, questa nuova informazione viene registrata nella base di dati universitaria. In questo modo, i
certificati rilasciati allo studente conterranno l’elenco aggiornato degli esami sostenuti fino a quel
momento.
Per eseguire il reperimento dei dati di interesse da una base di dati, è possibile fare uso di appositi
programmi software che mettono a disposizione strumenti, spesso di tipo visuale, per guidare l’utente nella
corretta formulazione delle sue specifiche richieste.
I sistemi di gestione di basi di dati (DBMS)
Un sistema di gestione di basi di dati (DBMS, database management system) è un sistema software
realizzato per supportare la definizione e la manipolazione della base di dati da parte di differenti tipologie
di utenti, specialistici e non. Di conseguenza ogni utente può accedere al DBMS, a patto che abbia gli
opportuni diritti di lettura ed eventualmente scrittura (cioè modifica) sul database. In particolare, un DBMS
offre le seguenti funzionalità:
 Fornisce agli utenti una visione di alto livello dei dati contenuti nella base di dati attraverso l’uso di un
modello dei dati, nascondendo i dettagli di basso livello relativi alla memorizzazione fisica dei dati.
 Fornisce supporto per la condivisione della base di dati da parte di molteplici utenti e applicazioni
diverse, garantendo la corretta gestione degli accessi anche contemporanei ai dati da parte di utenti
diversi.
 Garantisce la sicurezza dei dati, ovvero che solamente utenti autorizzati abbiano accesso alla base di
dati, compiendo operazioni autorizzate.
 Fornisce la possibilità di definire una visione personalizzata dei dati per le diverse tipologie di
utenti/applicazioni, contenente il sottoinsieme di dati di utilità per quell’utente/applicazione.
 Può integrare le funzionalità di salvataggio e ripristino (backup e recovery) dei dati contenuti nella base
di dati, per garantire che non ci siano perdite di dati anche in caso di guasti e malfunzionamenti del
software o dei dispositivi hardware del sistema di elaborazione.
55
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
È in grado di assicurare la consistenza dei dati contenuti nella base di dati, facendo in modo che
vengano rispettati i vincoli di integrità sui dati stessi.
Negli anni ‘80/90 si assiste all'affermazione della tecnologia dei DBMS relazionali, che sono diventati uno
standard di mercato e una componente essenziale per la gestione delle informazioni nell’ambito di
organizzazioni pubbliche e private. Esistono numerosi esempi di DBMS relazionali, tra i quali vale la pena
menzionare Oracle, MySQL, Microsoft SQL Server, PostgreSQL, MariaDB.

Struttura e organizzazione di una base di dati
Per modello dei dati si intende la descrizione della struttura dei dati che caratterizzano la realtà di interesse
a cui si riferisce la base di dati. Un modello dei dati comprende:
 Un insieme di costrutti,
 Una notazione per specificare i dati tramite i suddetti costrutti,
 Un insieme di operazioni per esprimere le interrogazioni e le modifiche da eseguire sui dati organizzati
secondo quel modello.
Un modello dei dati deve permettere la rappresentazione degli (insiemi di) oggetti del mondo reale, dei
legami (associazioni) fra tali oggetti e delle caratteristiche (attributi) degli oggetti e/o delle loro associazioni.
Un attributo consiste quindi in un campo non scomponibile il cui insieme di valori possibili è definito dagli
oggetti che appartengono a quest’ultimo. Esempi di oggetti, attributi e associazioni di interesse nel caso di
una base di dati cinematografica sono mostrati in Figura B2.1. Allo scopo di definire correttamente lo
schema della base di dati è necessario procedere a una concettualizzazione delle informazioni che
riguardano la realtà osservata. Per concettualizzazione intendiamo qui la rappresentazione di una realtà di
interesse in termini di insiemi di oggetti, caratteristiche e legami.
Figura B2.1: Esempi di oggetti, attributi e associazioni per una base di dati cinematografica
56
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Contenuti B3 — Il modello relazionale
Come esempio di modello dei dati per basi di dati, consideriamo il modello relazionale introdotto nel 1970
da Ted Codd, che rappresenta il modello dei dati sul quale si basa la maggior parte dei DBMS oggi
disponibili.
In un modello relazionale i dati sono memorizzati in tabelle, dette relazioni, composte da un certo numero
di colonne, dette attributi, e da un certo numero di righe, dette tuple. Ad esempio, la tabella seguente,
denominata regista, rappresenta un insieme di registi di film.
Figura 3.1: Tabella dei registi
Ogni riga della tabella rappresenta un singolo regista. Osserviamo inoltre che in una tabella di una base di
dati relazionale, tutti i valori presenti in una colonna appartengono allo stesso tipo di dato o dominio. Ad
esempio, il nome di un regista è un valore di tipo testuale, come anche il cognome e la nazione. In generale,
le righe di una tabella di una base di dati relazionale rappresentano specifici oggetti o legami fra oggetti del
mondo reale; gli attributi definiti per la tabella forniscono l’interpretazione dei dati che compaiono nelle
varie righe.
Basi di dati relazionali
Una base di dati relazionale è quindi una collezione di tabelle che rappresentano gli oggetti e le associazioni
fra oggetti che caratterizzano la realtà di interesse. Osserviamo che i legami fra i dati di tabelle diverse
57
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
vengono espressi per mezzo di valori comuni presenti nelle tuple di tali tabelle. Questi valori dovranno per
forza essere univoci in entrambe le tabelle. Un esempio, è costituito dalla seguente base di dati che
descrive registi e film e l'associazione che sussiste fra i film e i corrispondenti registi.
Figura 3.2: Esempio di base di dati relazionale
Come si può vedere dalla Figura 4.2, nella relazione film, un film fa riferimento al relativo regista attraverso
il valore dell'attributo id_regista, che è il codice del regista del film e che corrisponde a uno dei codici
contenuti nella tabella regista.
Schema di una base di dati relazionale
Vediamo ora come è definito lo schema di una base di dati relazionale.
Per prima cosa, introduciamo la nozione di schema di relazione, che è costituito dal nome r della relazione
e dall'insieme degli attributi che costituiscono la relazione. Ad esempio, lo schema di relazione della
relazione "regista" è definito come segue
Figura 3.3: Esempio di schema della relazione regista
Sulla base di quanto appena detto ne consegue che lo schema dell'intera base di dati cinematografica che
costituisce il nostro esempio è il seguente:
Figura 3.4: Schema dell'intera base di dati
Istanza di una base di dati relazionale
I dati che compongono le relazioni di una base di dati ne costituiscono l’istanza. In particolare, si definisce
istanza di una relazione r l’insieme delle tuple definite sugli attributi di r.
Si definisce istanza di base di dati l’insieme delle istanze di relazione di ciascuna relazione che costituisce la
base di dati.
Ad esempio, un’istanza valida dello schema di base di dati mostrato in precedenza è la seguente:
58
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Figura 3.5: Esempio di istanza di una base di dati relazionale
Vincoli del modello relazionale
Gli attributi di una base di dati possono avere differenti vincoli che possono essere inseriti in fase di
progettazione. Questi vincoli obbligano a seguire un determinato criterio di inserimento o forniscono delle
regole di inserimento per i valori degli attributi. Alcuni esempi di vincoli sono:
 Not null: richiede di inserire un valore per l’attributo sul quale è impostato il vincolo. Ad esempio, nel
caso della relazione regista, specificare un vincolo not null sull’attributo cognome significa che non sarà
possibile memorizzare una tupla nella relazione qualora essa sia priva di valore sull’attributo cognome.
 Default: comporta l’inserimento di un valore predefinito nel caso in cui non sia stato specificato alcun
valore per l’attributo in fase di inserimento o modifica. Ad esempio, nel caso della relazione attore,
impostare il valore di default “USA” per l’attributo nazione significa che qualora si intenda memorizzare
una tupla in questa relazione e qualora essa sia priva di valore sull’attributo nazione, il valore USA sarà
inserito come valore dell’attributo per quella tupla.
 Unique: richiede di inserire un valore univoco per l’attributo sul quale è impostato il vincolo. Questo
significa che non sarà possibile avere due tuple della relazione con il medesimo valore per l’attributo
definito unique. As esempio, nel caso della relazione film, specificare un vincolo unique sull’attributo
titolo significa che non potranno essere memorizzate due pellicole distinte con il medesimo valore
sull’attributo titolo.
Chiave primarie
Un concetto di fondamentale importanza nelle basi di dati relazionali è la nozione di chiave primaria
(primary key) utilizzata per identificare in modo univoco ogni tupla di una tabella. Una chiave primaria può
essere costituita da un singolo attributo oppure può essere composta da più attributi.
Ogni tabella possiede una chiave primaria; in questo modo ogni tupla della tabella è univocamente
riconoscibile. Facendo riferimento alla tabella regista del nostro esempio, id_regista è la chiave primaria
della tabella, ovvero non possono essere memorizzate nella tabella regista due tuple distinte con il
medesimo valore per l’attributo id_regista. Un ulteriore esempio di chiave primaria è la coppia di attributi
titolo, id_attore della tabella partecipazione. Questo significa che non possono essere memorizzate tuple
distinte aventi la medesima coppia di valori per titolo e attore.
Se un utente tentasse di inserire una tupla con un valore di chiave primaria già presente in una certa
tabella, il sistema di gestione della base di dati, cioè il DBMS, impedirebbe l’inserimento e segnalerebbe un
errore. L’utente dovrà modificare il valore della chiave primaria per poter concludere con successo
l’inserimento della nuova tupla.
In genere, la chiave primaria di una tabella è indicata sottolineando i nomi degli attributi che la
costituiscono.
59
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Figura 3.6: Esempio di base di dati relazionale cinematografica con le relative chiavi primarie per ciascuna
tabella
Chiavi esterne
Nel nostro esempio, le tuple delle tabelle film e regista sono legate fra loro tramite l'attributo id_regista,
ovvero ogni singolo film fa riferimento per mezzo dell'attributo id_regista, alla tupla del suo corrispondente
regista. Affinché la base di dati sia corretta, l'identificatore di regista presente all'interno di una tupla di film
deve essere un valore già presente come valore di chiave primaria nella tabella dei registi. Se ciò non
avvenisse, non sarebbe possibile associare ciascun film con il corrispondente regista qualora un utente
volesse conoscere questa informazione relativamente a una pellicola di interesse. In altri termini, il regista
di ciascun film deve essere presente nella base di dati. Per garantire che questo controllo sia effettuato dal
DBMS, nelle basi di dati relazionali l'attributo id_regista viene dichiarato come chiave esterna nella tabella
film, ovvero si richiede che i valori di questo attributo siano presenti come valori dell’attributo id_regista
nella tabella regista.
Valori nulli
Ogni tupla di una relazione possiede la struttura definita nello schema di quella relazione anche quando
uno o più valori non sono presenti. Ad esempio, supponiamo di non conoscere la nazione del regista Gray.
La tupla memorizzata nella tabella regista sarà comunque caratterizzata dagli attributi id_regista, nome,
cognome e sesso, come previsto dalla relazione regista. Quale valore dovrà essere dunque specificato in
corrispondenza dell'attributo nazione?
A tale scopo, nelle basi di dati relazionali, si usa un particolare valore, detto valore NULL. Nel nostro
esempio, la tupla assumerebbe dunque la seguente forma:
Figura 3.7: Rappresentazione di dati mancanti: il valore NULL
Livelli di astrazione nei DBMS
Una base di dati gestita da un DBMS può essere vista a tre livelli di astrazione, a ciascuno dei quali
corrisponde una descrizione dei dati sotto forma di uno specifico schema.
Lo schema logico fornisce la descrizione dell'intera base di dati per mezzo del modello dei dati del DBMS
utilizzato. Nel nostro caso, abbiamo considerato DBMS relazionali, nei quali il modello dei dati utilizzato è
appunto quello relazionale.
Lo schema fisico descrive l'organizzazione fisica dei dati in termini di strutture fisiche di memorizzazione e di
accesso, come ad esempio, file sequenziali su disco.
Uno schema esterno o vista descrive una porzione dell'intera base di dati, limitata ai dati che costituiscono
la specifica visione di singoli utenti o gruppi di utenti, facendo uso del modello dei dati utilizzato dal DBMS,
che per noi è il modello relazionale.
Livelli di astrazione nei DBMS: un esempio
In Figura 3.8, riportiamo un esempio relativo alla base di dati relazionale cinematografica.
60
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Al livello fisico, la visione dei dati è quella di più basso livello, ovvero si considerano direttamente i
valori delle tuple, memorizzati in file su un supporto fisico di memorizzazione. Questo livello è nascosto
all'utente finale ed è gestito internamente direttamente dal DBMS.
 A livello logico la rappresentazione dei dati è di alto livello, vicino alla concettualizzazione della realtà e
presenta i dati in formato tabellare, secondo il modello dei dati relazionale del DBMS utilizzato. A
questo livello, possiamo quindi fare riferimento agli attori utilizzando la tabella corrispondente, in cui
ciascuna colonna rappresenta un attributo che caratterizza gli attori e ogni riga descrive uno specifico
attore.
 Al livello esterno, i dati possono essere presentati a utenti diversi secondo schemi esterni diversi, detti
viste, che contengono un sottoinsieme di tutti i dati, quelli di interesse per lo specifico utente. Ad
esempio, nel nostro caso abbiamo la vista relativa agli attori americani e quella relativa agli attori
francesi, rispettivamente. Alcuni DBMS, come ad esempio quelli mono-utente per la gestione di basi
dati personali, possono non supportare il livello esterno, che è invece molto importante nel caso di
DBMS che operano in ambienti multi-utente, tipici delle organizzazioni pubbliche e private.
L'aspetto importante di questa architettura è che gli utenti formulano le loro richieste facendo riferimento
allo schema logico oppure agli schemi esterni, quindi facendo riferimento a descrizioni di alto livello dei dati
contenuti nella base di dati e non a una descrizione di basso livello in termini di file memorizzati su disco. Il
DBMS tradurrà internamente le richieste di accesso formulate sugli schemi esterni oppure sullo schema
logico in opportune richieste di accesso a file nelle strutture di memorizzazione per reperire i dati di

interesse.
Figura 3.8: Esempio dei diversi livelli di astrazione dei dati in un DBMS relazionale
Linguaggi per le basi di dati
I DBMS mettono a disposizione i seguenti linguaggi per definire e manipolare una base di dati:
Linguaggio di definizione dei dati o DDL (Data Definition Language), ovvero un linguaggio per la definizione
dello schema logico e degli eventuali schemi esterni.
Linguaggio di manipolazione dei dati o DML (Data Manipulation Language), cioè un linguaggio per
formulare estrazioni e modifiche sui dati (cioè, inserimenti, cancellazioni, modifiche) della base di dati.
Spesso si indica con linguaggio di interrogazione (query language) il sottoinsieme delle istruzioni DML per
l’estrazione di dati da una base di dati.
Nei DBMS relazionali le funzionalità DDL e DML confluiscono in un unico linguaggio denominato SQL
(Structured Query Language),, che è uno standard per i DBMS relazionali. Analizzando i prodotti DBMS sul
mercato, si notano differenze, a volte anche sostanziali, tra lo standard e le implementazioni del linguaggio
61
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
SQL offerte dai diversi DBMS. Molto spesso, l’aderenza allo standard è garantita solo per i costrutti
consolidati del linguaggio, mentre ogni sistema realizza le funzioni evolute di SQL in modo fortemente
dipendente dall’implementazione.
Contenuti B4 — Creazione di una base di dati
Vogliamo ora illustrare il procedimento che consente la creazione di una base di dati relazionale (db) con
l’ausilio di LibreOffice Base.Pur non essendo un vero e proprio DBMS e pur non offrendo tutte le
funzionalità tipiche di un DBMS, LibreOffice Base consente la creazione di una base di dati relazionale e
mette a disposizione funzionalità per l'inserimento di tuple e la loro conseguente estrazione in base ai
criteri di selezione di volta in volta definiti dall’utente. Quindi, si tratta di uno strumento valido e facile da
reperire per un’esperienza pratica di lavoro con le basi di dati relazionali. LibreOffice Base è uno strumento
software libero e open source appartenente alla suite per ufficio LibreOffice. Analogamente agli altri
pacchetti della suite LibreOffice, Base è supportato su più piattaforme tra cui Microsoft Windows, macOS e
Linux.
Di seguito mostreremo la fase di definizione della base di dati cinematografica di Figura 3.x. Una volta
avviato il programma, andiamo nel menù File > Nuovo e selezioniamo la voce Database. Chiamiamo la
nostra base di dati db_cinema. A questo punto compare una finestra che rappresenta la nostra base di dati
per mezzo della quale sarà possibile agire sulla base di dati db_cinema creando, modificando o cancellando
tabelle (Figura 4.1).
Figura 4.1: Creazione di un database
Definizione delle tabelle
Per creare una tabella posizioniamoci nell’elenco Attività (Figura 4.1) e selezioniamo la voce Crea tabella in
vista struttura (altre possibilità di creazione guidata sono presenti ma questa offre il maggiore controllo).
62
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Compare così la struttura di una tabella in cui andremo a definire per ogni riga un attributo del record e il
tipo o dominio corrispondente (Figura 4.2). Si noti che il tipo di dato da associare a ciascun attributo può
essere scelto da un menù a tendina dove sono disponibili le tipologie di dato più comuni come i tipi di dato
testuali, numerici e temporali. Supponiamo di voler definire la tabella regista; i nomi dei campi (ovvero gli
attributi) che andremo a definire sono: id_registaal quale assegneremo il tipo di dato numerico Intero,
nome, cognome, sesso e nazione ai quali assegneremo il tipo di dato Testo. Notiamo che per ogni campo
possono essere impostate una serie di opzioni aggiuntive (come ad esempio, un valore predefinito o una
lunghezza massima del valore che può essere inserito). Una volta definiti tutti gli attributi della tabella, si
dichiara la chiave primaria selezionando gli attributi che la costituiscono, posizionandosi sulla colonna più a
sinistra e facendo Clic tasto destro > Chiave primaria. A questo punto non ci resta che salvare la nostra
tabella e assegnarle il nome regista. In modo analogo andremo poi a creare le tabelle film(utilizzando
l’attributo titolo come chiave primaria), attore (id_attore chiave primaria) e partecipazione (la coppia titolo,
id_attore è utilizzata come chiave primaria).
Figura 4.2: Struttura di una tabella
Definizione delle associazioni
Creata la struttura delle tabelle, si può procedere a stabilire le associazioni che intercorrono tra loro,
ricordando che le associazioni nelle basi di dati relazionali vengono espresse mediante valori di attributi
opportuni. Andiamo quindi a selezionare la voce Relazioni nel menù Strumenti. Scegliamo ora le tabelle da
63
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
collegare ed eseguiamo fisicamente l’associazione cliccando sull’attributo della nostra prima tabella e
trascinandolo fin sopra l’attributo corrispondente della seconda tabella.
Figura 4.3: Associazioni tra le tabelle del database db_cinema
Popolamento della base di dati - 1
Una volta stabiliti i collegamenti tra le tabelle, si può procedere con l’inserimento dei dati, ovvero con il
popolamento della base di dati. Per fare ciò, torniamo nella finestra che rappresenta la nostra base di dati
(quella con intestazione db_cinema) e clicchiamo su una delle tabelle precedentemente create. Comparirà
una struttura in cui ogni colonna rappresenta uno degli attributi definiti per la tabella, mentre ogni riga
dovrà contenere i dati che andremo ora a inserire. A partire dalla prima riga della tabella andremo ad
inserire i nostri dati in ogni colonna e al termine dell’operazione ci sposteremo sulla riga successiva
iterando il processo fino a quando non avremo completato la fase di inserimento dati.
Il risultato finale sarà analogo a quello mostrato in Figura 4.4.
Popolamento della base di dati - 2
È bene porre l’attenzione all’ordine da seguire nel popolamento della base di dati. Per prima cosa, vanno
inseriti i dati delle tabelle in cui non sono presenti chiavi esterne, nel nostro caso le tabelle attore e regista.
Successivamente, andremo a popolare la tabella film, la cui chiave esterna fa riferimento all’attributo
id_regista della tabella regista. Infine, possiamo popolare la tabella partecipazione i cui attributi sono chiavi
esterne sulle tabelle film e attore, rispettivamente. Nel caso in cui non rispettassimo questo ordine, il
sistema rileverebbe il nostro tentativo di inserire dati che non rispettano i vincoli di chiave esterna (ad
esempio, l’inserimento di un film il cui regista non è ancora stato inserito) e ci impedirebbe di salvarli
causando un messaggio di errore.
Interrogazione della base di dati
L’operazione di interrogazione consente di reperire i dati di interesse da una base di dati, specificando in
modo dichiarativo le condizioni di selezione che tali dati devono soddisfare affinché possano appartenere
al risultato dell’estrazione. Con riferimento alla base di dati db_cinema, un esempio di interrogazione è il
reperimento del nominativo degli attori americani nati dopo il 1950. Il risultato di un’interrogazione è
presentato sotto forma di tabella dove le righe rappresentano le tuple estratte dalla base di dati che
soddisfano il criterio di selezione fissato e le colonne rappresentano gli attributi di interesse fra quelli
disponibili nelle tabelle della base di dati. Nel nostro esempio, le righe del risultato della query
comprendono le tuple della tabella attore con valore corrispondente a “USA” per l’attributo nazione e
valore superiore a 1950 per l’attributo anno_nascita. Visto che l’interrogazione chiede di reperire solo le
64
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
informazioni relative al nominativo degli attori, solo gli attributi nome e cognome costituiranno le colonne
del risultato della query.
Le operazioni di interrogazione sono espresse in linguaggio SQL mediante l’uso del comando SELECT.
Contenuti B5 — Composizione di query in LibreOffice Base
LibreOffice Base mette a disposizione uno strumento visuale per la formulazione di interrogazioni (anche
dette query), denominato query-by-example (QBE). Secondo questa modalità QBE, l’interrogazione viene
formulata in modo dichiarativo descrivendo le caratteristiche che le tuple del risultato dovranno possedere.
L’utente seleziona una o più tabelle della base di dati dalle quali intende estrarre le informazioni di
interesse. Per ciascuna tabella selezionata, l’utente indica gli attributi che saranno utilizzati
nell’interrogazione. In particolare, un attributo può essere coinvolto nell’interrogazione perchè deve essere
incluso nel risultato, come ad esempio l’attributo cognome della tabella attore nell’esempio considerato in
precedenza. Un attributo può essere coinvolto in una interrogazione perché necessario al fine di esprimere
la condizione di selezione sui dati delle tabelle coinvolte. E’ questo il caso dell’attributo data_nascita nel
nostro esempio di interrogazione dove l’attributo, pur non facendo parte del risultato, deve essere
coinvolto per filtrare le righe della tabella relative agli attori nati dopo il 1950.
Esempio di query con QBE
A titolo di esempio, formuliamo in modalità QBE (Figura 5.1) l’interrogazione considerata in precedenza
dove si chiede di reperire il nominativo degli attori americani nati dopo il 1950.
Figura 5.1: Esempio di formulazione di una query tramite QBE.
65
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Selezioniamo nella schermata che rappresenta la base di dati db_cinema la voce Ricerche nell’elenco di
sinistra e poi, nell’elenco a destra, la voce Crea ricerca in vista struttura. Si tenga presente che "ricerca" è il
termine usato da LibreOffice Base per indicare un’operazione di interrogazione/query. A questo punto
selezioniamo le tabelle da includere nella nostra interrogazione (film, attore, partecipazione), cioè le tabelle
contenenti i dati di interesse per l’interrogazione. In una apposita area comparirà la loro rappresentazione
visuale con l’indicazione delle associazioni stabilite in precedenza. Nella zona sottostante possiamo
scegliere i campi che comporranno il risultato dell’interrogazione. Selezioniamo titolo e genere dalla tabella
film, cognome e nome da quella attore. Cliccando su Esegui ricerca dalla barra degli strumenti, oppure
premendo il tasto F5, vedremo comparire, nella parte alta della schermata, il risultato dell’interrogazione.
Una funzionalità molto interessante di LibreOffice Base è la possibilità di visualizzare il comando SQL
corrispondente all’interrogazione formulata con lo strumento QBE. In altri termini, lo strumento QBE è in
grado di generare il comando SQL corrispondente all’interrogazione formulata in modo visuale.
Selezionando il pulsante Vista struttura si/no sarà possibile visualizzare il comando SQL generato da QBE.
Per il nostro esempio, il comando SQL è il seguente:
SELECT nome, cognome
FROM Attore
WHERE anno_nascita > 1950 AND nazione = 'USA'
Ne consegue che l’istruzione SQL per eseguire un’interrogazione alla base di dati è costituita dalle clausole
SELECT, FROM e WHERE.
Il comando SELECT di SQL
SELECT è il comando SQL che permette di interrogare una base di dati per estrarne le informazioni di
interesse. La clausola SELECT permette di specificare gli attributi che vogliamo ottenere nel risultato
dell’interrogazione SQL. La clausola FROM esprime il nome della tabella o delle tabelle della base di dati
dalle quali saranno prelevati i dati di interesse. Ad esempio, con il seguente comando SQL:
SELECT titolo, genere FROM Film;
intendiamo estrarre i valori degli attributi titolo e genere di ciascuna tupla memorizzata nella tabella film. Il
simbolo * (star) è usato come abbreviazione per indicare che tutti gli attributi della tabella indicata nella
clausola FROM devono essere inclusi nel risultato dell’interrogazione. Ad esempio, con il seguente
comando SQL
SELECT * FROM Film;
intendiamo estrarre i valori di tutti gli attributi della tabella film per ciascuna tupla memorizzata in questa
tabella.
La clausola WHERE
La clausola WHERE può seguire la clausola FROM in un comando SELECT di SQL per specificare eventuali
condizioni di selezione di un’interrogazione. In particolare, le tuple delle tabelle indicate nella clausola
FROM sono valutate rispetto alle condizioni della clausola WHERE. Una tupla viene inserita nel risultato
dell’interrogazione se soddisfa le condizioni espresse nella clausola WHERE. Le condizioni sono espresse
mediante operatori di confronto dove il valore di un attributo viene confrontato con un valore costante, il
risultato di un’espressione matematica o il valore di un altro attributo. Ad esempio, con il seguente
comando SQL:
SELECT titolo FROM film WHERE genere = ‘thriller’;
intendiamo reperire il titolo dei film di genere thriller. Si noti che i confronti con i valori di tipo testuale
richiedono di racchiudere tra apici il testo da confrontare con il valore dell’attributo.
I predicati possono essere racchiusi tra parentesi in modo da poter essere combinati in espressioni
articolate qualora sia necessario. Gli operatori AND e OR sono utilizzati per combinare i predicati secondo il
criterio congiuntivo (AND logico) disgiuntivo (OR logico), rispettivamente. E’ inoltre disponibile l’operatore
NOT per eseguire la negazione del risultato di un’operazione di confronto. Ad esempio, con il seguente
comando SQL:
66
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
SELECT titolo FROM film WHERE genere = ‘thriller’ AND nazione = ‘USA’;
intendiamo reperire il titolo delle pellicole di genere thriller che sono state prodotte negli Stati Uniti.
Questo significa che una tupla della tabella film viene inserita nel risultato dell’interrogazione se e solo se
entrambe le condizioni di selezione genere = ‘thriller’ e nazione = ‘USA’ sono soddisfatte dai valori degli
attributi genere e nazione di quella tupla.
Un ulteriore esempio di query con QBE
Consideriamo un secondo esempio di interrogazione di una base di dati. In questo caso vogliamo estrarre
dalla base di dati il titolo dei film e il nominativo (nome e cognome) del corrispondente regista.
La query costruita con lo strumento QBE, insieme ai risultati ottenuti, sono mostrati in Figura 5.2.
Figura 5.2: Query di selezione del titolo dei film e il nominativo del corrispondente regista.
A differenza dell'interrogazione precedentemente descritta, le tabelle da includere saranno film e regista.
Anche in questo caso comparirà la loro rappresentazione visuale con l’indicazione delle associazioni
stabilite in precedenza dalla quale quale andremo a selezionare l’attributo titolo dalla tabella film, nome e
cognome da quella regista. Cliccando su Esegui ricerca dalla barra degli strumenti, oppure premendo il
tasto F5, vedremo comparire, nella parte alta della schermata, il risultato dell’interrogazione.
Un ulteriore esempio di query SQL
Il comando SQL corrispondente alla query dell’esempio precedente costruita con QBE è il seguente:
SELECT film.titolo, regista.cognome, regista.nome
FROM film JOIN regista ON film.id_regista = regista.id_regista
In questa interrogazione sono coinvolte tabelle diverse della base di dati. La tabella film è usata per reperire
il titolo delle pellicole e la tabella regista è usata per reperire il nominativo del corrispondente regista. Il
coinvolgimento di entrambe le tabelle è necessario visto che la tabella film contiene solo l’attributo
film.id_regista che è chiave esterna verso la tabella regista e permette di associare ciascun film con i dati
relativi al regista memorizzati nell’omonima tabella.
La clausola SELECT riporta i nomi degli attributi da mostrare nel risultato dell’interrogazione. Gli attributi
provengono dalla tabella film e dalla tabella regista, per questo motivo è buona norma prefiggere il nome
della tabella al nome dell’attributo per esplicitarne la provenienza ed evitare possibili ambiguità nel caso in
67
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
cui il medesimo nome di attributo sia usato in tabelle diverse. La clausola FROM riporta le tabelle coinvolte
nell’interrogazione (film e regista). La clausola definisce come le tuple delle tabelle considerate debbano
essere poste in relazione. A tale scopo, viene utilizzata un’operazione chiamata JOIN.
Join di tabelle
Consideriamo nuovamente l’esempio di query SQL della scheda precedente:
SELECT film.titolo, regista.cognome, regista.nome
FROM film JOIN regista ON film.id_regista = regista.id_regista
La clausola FROM è caratterizzata dall’uso di una operazione di JOIN che consente di porre in relazione le
tuple di film con le tuple di regista. L’operazione di JOIN è caratterizzata da una condizione di JOIN espressa
da film.id_regista = regista.id_regista che definisce il criterio da usare per stabilire la corrispondenza tra
tuple di film e tuple di regista. Il risultato dell’operazione di JOIN è che la tabella film viene affiancata dalla
tabella regista e ogni tupla di film viene affiancata dalla corrispondente tupla di regista. Per effetto della
condizioni di JOIN, sappiamo che per ogni tupla appartenente al risultato dell’operazione di JOIN varrà la
condizione film.id_regista = regista.id_regista. Mediante l’uso della condizione di JOIN è quindi possibile
ricostruire le corrispondenze tra tuple appartenenti a tabelle diverse lavorando sull’uguaglianza della chiave
esterna di una tabella (attributo film.id_regista) e la chiave primaria di un’altra tabella (attributo
regista.id_regista). Si noti che lo strumento QBE è in grado di definire le operazioni di JOIN in modo
trasparente per l’utente sulla base delle associazioni tra tabelle precedentemente definite.
68
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Contenuti B6 — Basi di dati su Web
Ai suoi albori a metà degli anni Novanta, il Web era formato in gran parte da cosiddette pagine statiche,
cioè documenti HTML che venivano mostrati identici a tutti gli utenti che facevano richiesta di
visualizzazione. Con il passare del tempo e con l'evoluzione dei linguaggi per il web, si iniziò a sentire
l'esigenza di rendere dinamici i contenuti, ovvero di fare in modo che la medesima pagina, detta pagina
dinamica, potesse mostrare contenuti personalizzati in base allo specifico utente che ne faceva richiesta.
Tipicamente, una pagina dinamica è basata su una o più interrogazioni a una base di dati e le condizioni di
selezione di tali interrogazioni dipendono dallo specifico utente che invoca la visualizzazione della pagina.
Una pagina dinamica è realizzata combinando codice in linguaggio HTML (come per le pagine statiche) con
istruzioni espresse mediante un linguaggio di programmazione. Esistono diversi linguaggi di
programmazione per definire pagine web dinamiche. Uno dei più noti e diffusi è PHP.
Il linguaggio PHP
PHP nasce nel 1994, ad opera di Rasmus Lerdorf, come una sequenza di comandi finalizzati a facilitare il
compito dei programmatori nella personalizzazione delle pagine web. In seguito, queste sequenze di
comandi, dette macro, furono riscritte ed ampliate per comunicare con i database.
Oggi PHP è conosciuto come PHP: Hypertext Preprocessor, ed è un linguaggio di programmazione
completo, sofisticato e flessibile. Esso offre la possibilità di interagire con la quasi totalità dei DBMS
relazionali oggi disponibili.
Un esempio reale
Come esempio di pagina dinamica il cui contenuto è generato a partire da una base di dati, consideriamo la
pagina web mostrata nella Figura 6.1.
69
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Figura 6.1: Esempio di pagina web dinamica
L’esempio riporta una pagina web del sito IMDB (Internet Movie DataBase) e mostra la funzionalità di
ricerca avanzata di un film. Dal menù in corrispondenza della voce Genres (Generi), l’utente seleziona i
generi di film a cui è interessato e l’applicazione restituisce l’elenco dei film relativi ai generi selezionati.
L’utente, senza saperlo, ha eseguito un’interrogazione sulla base di dati del sistema IMDB. L’interrogazione
è stata predisposta dai programmatori responsabili dello sviluppo del sito, i quali hanno preconfezionato un
insieme di possibili interrogazioni sulla base delle informazioni che possono essere consultate dagli utenti.
In questo esempio, il sito web IMDB funge da strumento mediante il quale l’utente interagisce con la base
di dati senza conoscerne lo schema e senza conoscere linguaggi specifici per le basi di dati.
Con riferimento all’esempio di Figura 6.1, la pagina web che contiene il risultato della richiesta dell’utente è
mostrata in Figura 6.2 e riporta l’elenco dei film di genere Commedia e Horror.
Figura 6.2: Esempio di pagina web dinamica
Questa pagina è dinamica in quanto generata al momento della richiesta dell’utente in base ai parametri da
lui selezionati (commedia e horror). La richiesta di visualizzazione della pagina comporta l’esecuzione della
query sulla base di dati e il risultato viene utilizzato per costruire il contenuto della pagina che viene infine
mostrato all’utente. Sia chiaro che la richiesta di visualizzazione della medesima pagina effettuata
selezionando generi diversi produce risultati diversi e quindi pagine web diverse.
70
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Contenuti I1 — Comunicare in rete
Con il termine rete di calcolatori si intendono due o più dispositivi connessi tra loro, i quali sono in grado di
scambiare informazioni. La connessione può avvenire attraverso differenti tipi di infrastrutture fisiche,
come ad esempio cavi o onde radio.
Una rete è di conseguenza rappresentabile da un insieme di punti V (detti nodi), i quali rappresentano i
calcolatori, collegati attraverso linee E (detti archi). Di conseguenza una rete G è rappresentabile attraverso
una funzione G = (V, E). Il concetto di nodo è variabile in base alla prospettiva dell’osservatore. In una rete
domestica, come quella che potreste avere nel vostro appartamento, ogni dispositivo è tipicamente
connesso ad un router. In questo caso, il router, oltre alle sue specifiche funzioni di instradamento, ha lo
scopo di interconnettere fra loro i vari dispositivi (nodi) della rete domestica, quali ad esempio smartphone,
computer portatili e tablet. Se però si considera una rete più ampia, ad esempio quella di un intero
condominio, ogni appartamento rappresenta un singolo nodo della rete e quella di ciascun appartamento
diventa una sottorete della rete condominiale.
Comunicazione sincrona e asincrona
La comunicazione tra due o più nodi può avvenire in due modalità: sincrona e asincrona. In una
comunicazione sincrona i nodi coinvolti sono connessi nel medesimo momento alla rete e scambiano
informazioni (detti pacchetti) tra loro. Un esempio di comunicazione sincrona è la telefonata. Al contrario,
una comunicazione asincrona non richiede la connessione alla rete di tutti i nodi nel medesimo momento.
Un nodo invia un messaggio sapendo che i destinatari potrebbero non essere connessi e questi ultimi
riceveranno il messaggio in seguito, al momento della loro connessione alla rete. Un esempio di
comunicazione asincrona è la posta elettronica (email).
Destinatari dei pacchetti
Il destinatario di un pacchetto può essere differente a seconda delle esigenze di comunicazione:
 Point-to-point (o Unicast): la trasmissione dei pacchetti è indirizzata a un unico nodo destinatario (per
esempio i messaggi di posta elettronica)
 Multicast: la trasmissione dei pacchetti è indirizzata a un insieme predefinito di nodi destinatari (per
esempio i contenuti streaming delle pay tv)
 Broadcast: la trasmissione dei pacchetti è indirizzata a tutti i nodi di una rete e l’insieme dei nodi non è
definito a priori (per esempio le trasmissioni dei canali radio FM)
Nelle comunicazioni Point-to-Point lo scambio di messaggi avviene fra coppie di elaboratori non
direttamente connessi. Per trasmettere un pacchetto dal mittente al destinatario, è spesso necessario
passare attraverso numerosi nodi intermedi, i quali hanno il compito di inoltrare il messaggio ai nodi
successivi finché il pacchetto arriva al nodo destinatario. Spesso fra due nodi della rete esistono numerosi
percorsi alternativi lungo i quali si potrebbe effettuare la trasmissione. Per questo motivo, i nodi fanno uso
71
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
di algoritmi di instradamento (routing) che hanno lo scopo di individuare il miglior percorso per fare
arrivare ciascun messaggio fino al nodo destinatario.
Nelle reti Multicast, il mittente inserisce (incapsula) gli indirizzi dei destinatari nel contenuto di ciascun
pacchetto da trasmettere. I pacchetti si propagano nella rete passando tra i nodi che la costituiscono.
Ciascun nodo della rete esamina i pacchetti in transito e valuta se il suo indirizzo figura tra quelli dei
destinatari. In caso negativo, il pacchetto viene ignorato e inoltrato ai successivi nodi della rete. In caso
positivo, il pacchetto viene elaborato per la lettura prima di essere inoltrato ai successivi nodi.
Tipologie di rete
Le reti di calcolatori possono essere classificate in base all’estensione dell’area geografica che interessano:
 Local Area Network (LAN): è una rete locale, cioè una rete di elaboratori localizzati in un’area
circoscritta come ad esempio un appartamento o una sede aziendale. La connessione può avvenire via
cavo, tipicamente utilizzando lo standard Ethernet, o via radio. In quest’ultimo caso si può parlare di
WLAN (Wireless Local Area Network).
 Metropolitan Area Network (MAN): è una rete metropolitana, cioè una rete che interconnette LAN
geograficamente vicine tra loro. Questo tipo di rete permette di collegare nodi troppo distanti per
essere collegati mediante LAN, come ad esempio due sedi cittadine appartenenti a una stessa azienda.
Tipicamente, la connessione avviene mediante Ethernet o fibra ottica.
 Wide Area Network (WAN): è una rete geografica, cioè una rete che interessa elaboratori distribuiti in
una vasta area come quella continentale. Tipicamente, la connessione avviene mediante fibra ottica.
 Global Area Network (GAN): è una rete globale, cioè una rete che collega WAN appartenenti a
continenti diversi. Tipicamente, la connessione avviene mediante dorsali sottomarine internazionali o
trasmissioni satellitari.
Ed eccezione della rete GAN, ciascuna tipologia di rete può essere considerata una sottorete della tipologia
successiva (vedi Figura I1.1). Di conseguenza, ogni sottorete costituisce un sistema autonomo (AS,
autonomous system).
In questo contesto, è comune definire internet una generica rete di calcolatori ottenuta mediante
interconnessione (internetworking) di reti o sottoreti diverse. Il termine internet non deve essere confuso
con il termine Internet (con i maiuscola) che indica la ben nota rete GAN mondiale che offre, tra gli altri, i
servizi di posta elettronica e WWW (World Wide Web).
Gateway e VPN
E’ possibile che due nodi appartenenti a sistemi autonomi diversi vogliano comunicare. A tale scopo,
ciascun AS è dotato di un apparato denominato gateway con due precise funzionalità. Da un lato, il
gateway di un certo AS ha il compito di instradare i pacchetti provenienti dai nodi di AS verso i nodi esterni
appartenenti a un diverso AS. Dall’altro lato, il gateway riceve i pacchetti provenienti da altri AS e li instrada
verso i nodi del proprio AS. In altri termini, la comunicazione fra due AS avviene attraverso i rispettivi
gateway.
72
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Inoltre, due nodi appartenenti a sistemi autonomi diversi che vogliono comunicare possono utilizzare una
VPN (Virtual Private Network). L’obiettivo di una VPN è simulare una comunicazione LAN anche se i nodi
coinvolti sono collocati in sottoreti diverse e potenzialmente distanti geograficamente. Le VPN sono
diffusamente utilizzate in ambito aziendale e consentono di accedere a un elaboratore fisicamente
collocato in una sede da una postazione remota come ad esempio il proprio appartamento o una seconda
filiale dell’azienda.
Definizione di protocollo di rete
Come in una comunicazione tra individui, due nodi della rete che devono comunicare necessitano di un
mezzo di comunicazione fisico e uno o più protocolli che permettono lo scambio di messaggi.
In una rete, i protocolli governano tutti gli aspetti che interessano la comunicazione tra nodi, come ad
esempio la regolamentazione del flusso di informazioni da un nodo all’altro e la gestione delle congestioni
di rete. Ad esempio, consideriamo uno smartphone che fa richiesta di visualizzazione di una pagina web. La
richiesta viene inviata all’elaboratore (server) che ospita la pagina web richiesta. Il server inserisce la
richiesta in una coda di messaggi in attesa di risposta. Al momento opportuno, il server elabora la richiesta,
preleva la pagina web di interesse e la invia in risposta allo smartphone per la visualizzazione. Affinché la
comunicazione sia efficace, è necessario che la struttura (formato) dei messaggi sia comprensibile a tutti i
nodi coinvolti. In definitiva, “un protocollo definisce il formato e l’ordine dei messaggi scambiati tra due o
più entità in comunicazione, così come le azioni intraprese in fase di trasmissione e/o di ricezione di un
messaggio o di un altro evento” (Ross, Kurose).
Protocolli e livelli delle reti
La comunicazione in rete coinvolge numerosi protocolli ognuno dei quali ha il compito di trattare uno
specifico aspetto. I protocolli sono organizzati in livelli, il cui numero è variabile per tipo e funzione a
seconda della tipologia di rete considerata. In ogni caso, è sempre rispettato il principio generale per il
quale lo scopo di un livello è fornire servizi ai livelli superiori, nascondendo loro i dettagli relativi al servizio
svolto. Questo permette al protocollo di un dato livello di non considerare i problemi specifici della
comunicazione che sono risolti dai protocolli di livello sottostante. Con un’analogia, l’organizzazione dei
protocolli di rete non è differente dall’organizzazione delle attività necessarie per la scrittura e l’invio di una
lettera cartacea. Infatti, l’individuo che scrive l’indirizzo del destinatario della lettera (protocollo di alto
livello) può ignorare completamente gli aspetti relativi all’invio e al recapito della missiva. Il mittente sa che
il sistema postale (protocolli di livello inferiore) farà in modo che la lettera arrivi al destinatario
nascondendogli i dettagli relativi alla trasmissione, quali ad esempio gli uffici postali che saranno coinvolti, il
portalettere che prenderà in carico la lettera e il mezzo di trasporto che sarà usato per la consegna.
Lo standard moderno per la comunicazione in rete
Per offrire un’organizzazione di riferimento dei livelli e dei protocolli di rete, è stato definito il modello OSI Open System Interconnection - (comunemente chiamato ISO/OSI, per via del nome dell’ente che lo ha
ideato, International Organization for Standardization) che consiste in un'architettura logica disegnata su 7
livelli (vedi Figura I1.2).
73
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Figura 1.2 Modello OSI a 7 livelli
La fase di spedizione di un messaggio da parte di un nodo mittente è detta incapsulamento poiché,
partendo dal livello più alto fino a quello più basso, ogni livello racchiude (incapsula) l’informazione
prodotta al livello precedente e aggiunge l’informazione relativa al servizio svolto in quel livello. Al
contrario, la fase di ricezione del messaggio da parte di un nodo destinatario è detta estrazione poiché,
partendo dal livello più basso fino a quello più alto, ogni livello estrae l’informazione di sua pertinenza e
passa il contenuto del messaggio al livello successivo. Con un’analogia, possiamo pensare al modello OSI
come a un modello “matrioska” dove ogni livello consiste in una bambola di dimensione crescente. La fase
di incapsulamento consiste nel racchiudere il messaggio iniziale mediante bambole di dimensione
crescente. La fase di estrazione consiste nell’apertura delle bambole fino ad arrivare al messaggio originale
contenuto nella più piccola. Si noti che gli utenti finali sono rappresentati al livello più alto del modello OSI.
Infatti, il mittente ha il compito di preparare il messaggio che intende spedire al suo destinatario,
disinteressandosi degli incapsulamenti previsti ai livelli sottostanti. Analogamente, il destinatario riceverà il
messaggio così come formulato dal mittente, ignorando i passaggi di estrazione eseguiti ai livelli sottostanti.
In altri termini, i due utenti comunicano al livello 7 come se lo scambio di messaggi avvenisse con un canale
virtualmente diretto.
Nel modello OSI, il più alto livello è detto livello applicativo, nel quale si genera il messaggio che si vuole
inviare e si riceve il messaggio da leggere. Per contro, il livello più basso è detto livello fisico e definisce il
mezzo di trasporto (ad esempio, cavo di rete e onde radio).
Connettersi a una internet
Tra i nodi di una internet, distinguiamo i calcolatori (host) i quali offrono servizi, e gli apparati
comunicazione i quali sono costituiti da linee di trasmissione (via cavo o via radio) ed elementi di
commutazione (router).
Un router è un elaboratore dedicato a funzioni di instradamento dei messaggi tra due reti alle quali
appartiene contemporaneamente. Consideriamo l’esempio di una rete domestica. Il router è il dispositivo
della rete domestica attraverso il quale i messaggi vengono instradati verso la rete esterna (la rete del
fornitore di servizio, cioè la rete dell’ISP - Internet Service Provider). Allo stesso tempo, il router è il
dispositivo della rete esterna attraverso il quale i messaggi vengono instradati verso i nodi della rete
domestica.
Alla luce di questa definizione, potrebbe sembrare che router e gateway realizzino il medesimo servizio. Più
precisamente, un gateway è resposabile della traduzione di protocollo quando due dispositivi appartenenti
a reti diverse devono comunicare e il protocollo utilizzato non coincide. Al contrario, un router è
semplicemente un dispositivo che permette l'instradamento e lo scambio di messaggi tra due reti adiacenti.
Spesso le funzioni svolte dal gateway e dal router sono assolte da un medesimo dispositivo che viene
comunemente chiamato router.
Frequentemente, i protocolli utilizzati dalle due reti che devono comunicare coincidono e il servizio di
traduzione svolto dal gateway non è necessario. In questo caso, le sole funzioni di instradamento offerte
dal router sono sufficienti a garantire lo scambio di messaggi tra due reti.
I pericoli della comunicazione in rete
Essere connessi ad una rete, come ad esempio la rete Internet, comporta alcuni pericoli dai quali è
necessario proteggersi. Gli elementi ai quali prestare attenzione sono essenzialmente tre:
1. Evitare intrusioni non autorizzate nella propria rete,
2. Assicurare che ciascun messaggio sia letto solo dal destinatario autorizzato,
3. Permettere a un nodo di accertare che il messaggio ricevuto da un mittente sia stato inviato proprio da
quel mittente.
Per evitare intrusioni in una rete, è possibile utilizzare un software denominato Firewall. Tramite regole, il
Firewall può essere usato per bloccare specifiche tipologie di traffico sia provenienti dall’esterno della rete
sia provenienti dai nodi appartenenti alla rete. Anche se il Firewall è un valido strumento di protezione,
74
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
esso non garantisce la protezione da tutte le minacce provenienti da dispositivi esterni alla rete, come ad
esempio gli attacchi DoS (Denial of Service).
I pacchetti viaggiano in rete e attraversano numerosi nodi intermedi prima di arrivare al destinatario. Per
evitare la lettura del contenuto di un messaggio da parte di utenti/nodi indesiderati, è possibile utilizzare un
meccanismo di cifratura del contenuto. Così facendo, anche se un nodo intermedio avesse accesso al
messaggio non sarebbe comunque in grado di ricostruirne il contenuto. Gli strumenti di cifratura sono
anche impiegati per accertare che un messaggio sia stato spedito da uno specifico mittente. A tale scopo, si
utilizzano strumenti di cifratura asimmetrici basati sulla nozione di chiave di cifratura pubblica e chiave di
cifratura privata.
Contenuti I2 — Caratteristiche della rete Internet
Come accennato nelle precedenti sezioni, Internet è la più grande rete telematica mondiale e connette
attualmente alcune centinaia di milioni di elaboratori. Internet si avvale di apparati e collegamenti di vario
tipo (fibre ottiche, collegamenti satellitari, onde radio) mediante i quali è in grado di connettere dispositivi,
cioè nodi/host, di varia natura appartenenti a sottoreti diverse.
Breve storia di Internet (Parte 1)
Per capire le basi di Internet è istruttivo ripercorrere brevemente la storia. Nel 1957, in risposta al lancio
dello Sputnik da parte dell'Unione Sovietica, gli Stati Uniti si danno l'obiettivo di stimolare la crescita in
ambito scientifico e tecnologico. Nel 1958 costituirono ARPA, una nuova agenzia per lo sviluppo tecnologico
in grado di riunire sotto un'unica direzione tutte le attività gestite all'interno del Dipartimento di Difesa. Tra
i vari progetti promossi da ARPA, nel 1966 venne dato avvio ad ARPANET con l'obiettivo di sviluppare una
rete di calcolatori efficiente che potesse essere utilizzata per aumentare la produttività dei sistemi di
calcolo attraverso la condivisione delle risorse. L'idea centrale del progetto era di evitare che i calcolatori
fossero connessi per mezzo di un'unica unità centrale di smistamento, poiché questa sarebbe stata
inevitabilmente un punto di debolezza dell'intero sistema. Al contrario, disponendo di percorsi alternativi,
la trasmissione poteva passare di volta in volta attraverso i percorsi liberi.
Inizialmente nel progetto vennero coinvolti quattro centri di calcolo universitari, nel 1969 venne effettuata
la prima trasmissione. Nel 1972, fu svolta la prima dimostrazione pubblica del funzionamento della rete
ARPANET durante la quale furono connesse quaranta macchine distribuite lungo l'intero territorio degli
Stati Uniti.
Breve storia di Internet (Parte 2)
Per rendere effettiva la comunicazione in rete di macchine differenti, era necessario assicurare un metodo
standard di trasmissione e ricezione delle informazioni. Questi standard di trasmissione furono chiamati
protocolli. Durante gli anni '80, l'International Standard Organization (ISO) si occupò di definire uno
standard per la connessione di sistemi aperti in grado di colloquiare gli uni con gli altri (modello OSI). Con il
termine standard si identifica un insieme di criteri e procedure che formano un modello predefinito da
seguire.
Grazie a questo lavoro fu possibile offrire una base comune per lo sviluppo di standard per
l'interconnessione di sistemi e fornire un modello di riferimento con cui confrontare le varie architetture di
rete. È bene notare come tale modello non includa la definizione di protocolli specifici (definiti
successivamente, in documenti separati).
Nel 1982, lo sviluppo dei protocolli TCP e IP gettò le basi per la realizzazione dell’attuale rete Internet. Nel
1984, nel Regno Unito fu sviluppata JANET, una rete in grado di collegare università e organizzazioni
75
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
scientifiche e militari che venne a sua volta collegata ad ARPANET. Nel corso degli anni ’80 la tendenza a
collegare tra loro reti differenti si consolidò e nel 1990 cessò l’esistenza di ARPANET. In parallelo si affermò
sempre più Internet, una collezione di reti che comunicavano tra loro adottando i protocolli TCP/IP. In
particolare, furono due i fattori decisivi alla crescita esplosiva di Internet. Il primo fu il rapido incremento di
personal computer adottati sia da utenti privati che da aziende, un fenomeno che riguardò il mondo intero.
I pc divennero sempre meno costosi e sempre più potenti mentre i modem, i dispositivi necessari per
collegare i computer alla rete telefonica, migliorarono le loro prestazioni permettendo di condividere sia
testo che immagini e suoni. Il secondo fattore chiave fu l’introduzione del World Wide Web che permise
agli utenti della rete Internet di ritrovare le informazioni di interesse in modo intuitivo ed immediato sia che
fossero composte da testo o da testo e immagini allo stesso tempo.
Ad oggi la rete Internet è certamente la principale fonte di informazioni e di intrattenimento, sia per le
imprese che per gli utenti privati.
Contenuti I3 — Comunicazione client/server
Come è facile intuire, al fine di usufruire dei differenti servizi presenti sulla rete Internet, i vari host della
rete devono comunicare tra loro. A tale scopo, sono stati progettati due principali approcci: client-server e
peer-to-peer.
I sistemi client-server sono un'evoluzione dei sistemi basati sulla condivisione delle informazioni tra due
calcolatori. L'idea è che vi siano nella rete alcuni host che offrono un servizio (ad esempio un sito Web,
anche se non è l’unico servizio erogato su Internet) e altri host che si collegano ad essi per usufruire di
questo servizio; i primi sono denominati server, i secondi sono denominati client. È importante notare che
client e server possono essere calcolatori dotati delle stesse capacità di calcolo e comunicazione: la loro
distinzione è solo funzionale, ossia legata al ruolo che svolgono nella comunicazione. La presenza di un
server permette a un certo numero di client di condividerne le risorse, lasciando che sia il server a gestire gli
accessi, evitando i conflitti tipicamente presenti nei primi sistemi informatici.
Riassumendo, con il termine client è indicata una componente che accede ai servizi o alle risorse di un'altra
componente, detta server. In questo contesto si può quindi parlare di client riferendosi all'hardware o al
software. Un elaboratore collegato tramite la rete ad un server che richiede uno o più servizi è un esempio
di client hardware. Il programma di posta elettronica installato sul proprio dispositivo che si connette a un
servizio centralizzato per scaricare (download) i messaggi ricevuti e visualizzarli è un esempio di client
software. Sono sempre più numerosi gli strumenti software (come ad esempio web, email, database) che
sono suddivisibili in una componente client (installata su un elaboratore client) ed una componente server
(installata su un elaboratore server). Ad esempio, le App installate sui dispositivi mobili (smartphone e
tablet) dispongono spesso di una componente client che accede a risorse disponibili su un server a partire
da una richiesta dell'utente (unita spesso ad informazioni contestuali del dispositivo, come ad esempio la
posizione) per poi visualizzare i risultati sullo schermo del dispositivo. Si pensi ad esempio alle App che
forniscono suggerimenti rispetto alla strada meno trafficata da percorrere per arrivare a una destinazione o
rispetto al ristorante migliore nelle vicinanze.
Comunicazione peer-to-peer
Al contrario del modello client/server, in una rete peer-to-peer (P2P), due o più host (detti peer)
interagiscono mediante comunicazione alla pari. Un peer non fornisce di per sè un servizio, ma ha la
funzione di server e di client allo stesso tempo. L’idea è che ciascun nodo della rete offra agli altri i servizi e i
contenuti che intende condividere e contemporaneamente possa accedere ai servizi e ai contenuti condivisi
dagli altri nodi. Il principale beneficio dei sistemi peer-to-peer è la scalabilità, in quanto una determinata
risorsa può essere messa a disposizione da più nodi allo stesso tempo e chi ne fa richiesta ha maggiori
76
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
possibilità di ottenerla in breve tempo. Per contro, il principale limite dei sistemi peer-to-peer è la maggiore
complessità dei meccanismi di ricerca (lookup) delle risorse di interesse, che spesso comporta maggiori
latenze nel reperimento. Infatti, le operazioni di ricerca richiedono l'interrogazione di uno o più nodi (peer)
della rete per determinare quale o quali nodi possano fornire la risorse di interesse. Solo dopo aver
determinato i potenziali fornitori della risorsa sarà possibile avviare un contatto per eseguirne l'acquisizione
(download). Nei sistemi client/server, queste operazioni di lookup sono più efficienti poichè i fornitori di
contenuti (server) sono definiti a priori. Il servizio di lookup nei sistemi client/server viene svolto dai motori
di ricerca, i quali sono in grado di restituire un elenco di server in grado di fornire risorse utili rispetto a una
richiesta dell'utente espressa mediante parole chiave di interesse.
Un celebre sistema per lo scambio di file basato sul modello peer-to-peer è BitTorrent.
I protocolli di Internet
Rispetto al modello OSI presentato in precedenza, il funzionamento della comunicazione sulla rete Internet
è affidata a un sottoinsieme di quattro livelli corrispondenti a Applicazione, Trasporto, Rete e Accesso alla
Rete (Figura I2.1). Il modello a quattro livelli adottato su Internet è talvolta chiamato modello TCP/IP o
UDP/IP dal nome dei protocolli di livello Trasporto e Rete che caratterizzano lo scambio di messaggi sulla
rete Internet. Nel modello TCP/IP, il livello Applicazione è responsabile di fornire i servizi di livello utente
come ad esempio il servizio web o il servizio di posta elettronica e riassume le funzionalità fornite dai livelli
Applicazione, Presentazione e Sessione del modello OSI. Il livello Trasporto viene realizzato mediante i
protocolli TCP o alternativamente UDP. La scelta tra TCP e UDP dipende dal servizio di livello Applicazione
che viene invocato. Il livello Rete è denominato livello Internet ed è realizzato mediante il protocollo IP
(Internet Protocol). Il livello Accesso alla Rete è il livello che si occupa della trasmissione, cioè il mezzo
fisico, cavo o segnale radio, che permette la comunicazione. Nel modello TCP/IP, il livello Accesso alla Rete
è responsabile delle funzionalità offerte dai livelli Collegamento e Fisico del modello OSI.
Figura 3.1: Confronto tra modello OSI e TCP/IP e UDP/IP.
Instradamento dei messaggi (protocollo IP)
Nella vastità e nella complessità della rete Internet, individuare un percorso che unisca e metta in
comunicazione due host che necessitano di scambiare messaggi non è banale. Il livello Internet del modello
TCP/IP si occupa di trovare il percorso per la trasmissioni di pacchetti tra due host tramite il protocollo IP
(Internet Protocol). Per fare ciò utilizza due importanti funzioni:
 Inoltro (forwarding), che prevede la trasmissione di un pacchetto ricevuto a un altro nodo della rete in
base a regole di propagazione prestabilite;
 Instradamento (routing) che prevede l’impiego di algoritmi di instradamento per selezionare il nodo al
quale inoltrare un pacchetto ricevuto in base alla destinazione da raggiungere.
77
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Al fine di identificare gli host della rete Internet, ogni nodo possiede indirizzo IP univoco. L’indirizzo IP viene
assegnato dal gestore di ciascuna sottorete in modo da evitare conflitti sull’uso del medesimo indirizzo.
Esistono due versioni di indirizzi IP: IPv4 e IPv6 che si differenziano per la lunghezza degli indirizzi assegnati
e dunque per la numerosità dei dispositivi ai quali è possibile assegnare un indirizzo.
Un indirizzo IPv4 è lungo 32 bit, il che permette di rappresentare 2^32 indirizzi differenti (permettendo di
indirizzare circa 4 miliardi di dispositivi diversi). Questi indirizzi sono rappresentati in notazione decimale e
suddivisi in 4 blocchi separati da un punto. Ciascun blocco ha lunghezza 8 bit e può rappresentare numeri
decimali nell’intervallo 0-255. Un indirizzo IPv6 è lungo 128 bit e può quindi indirizzare un numero molto
superiore di dispositivi rispetto a IPv4. Per questo motivo, IPv6 sta progressivamente sostituendo IPv4
nell’indirizzamento dei dispositivi appartenenti alla rete Internet.
Trasporto dei messaggi (protocollo TCP/UDP)
Il protocollo di trasporto TCP (Transfer Control Protocol) consente lo scambio di messaggi tra due nodi
(host) basato su una connessione affidabile. I due nodi interessati stabiliscono la connessione mediante una
procedura di handshake (stretta di mano) costituita da una sequenza di pacchetti mirati a concordare le
modalità che caratterizzeranno il successivo scambio di messaggi. La connessione TCP viene utilizzata dai
due nodi per comunicare e scambiare dati appartenenti al livello Applicazione. Il protocollo TCP è dotato di
meccanismi di ri-trasmissione e verifica di consegna dei pacchetti mirati a garantisce la consegna dei
messaggi: il protocollo è in grado di verificare che ciascun messaggio in partenza da un nodo mittente su
una connessione TCP sia ricevuto dal nodo destinatario all'altro capo della connessione. A tal scopo, ogni
pacchetto TCP possiede due campi molto importanti:
Il sequence number e l'acknowledgement number rappresentano rispettivamente il numero progressivo
di invio e il numero di conferma di ricezione di un pacchetto nell'ambito di una trasmissione. Essi sono
utili a controllare l’integrità delle informazioni trasmesse, e cioè che le informazioni non siano state
compromesse durante il trasferimento dei dati tra i due nodi;
 la receive window fornisce una stima del tempo di trasmissione del pacchetto, cioè del tempo
necessario affinchè la trasmissione da mittente a destinatario sia completata. Se il nodo mittente di un
messaggio non riceve risposta entro il tempo previsto nella receive window, esso provvederà a inviare
nuovamente l’informazione assumendo che il primo invio non sia andato a buon fine.
Una volta terminata lo scambio di messaggi tra i due nodi, la connessione TCP viene rilasciata, cioè chiusa. Il
protocollo TCP è adatto a situazioni dove l'affidabilità della trasmissione costituisce un aspetto cruciale,
come ad esempio il servizio di navigazione web e la posta elettronica.
Il protocollo di trasporto UDP (User Datagram Protocol) consente lo scambio di messaggi tra due nodi
basato su una connessione non affidabile. UDP non richiede che due nodi stabiliscano una connessione per
poter comunicare e quindi non è prevista alcuna procedura di handshake. Il vantaggio di UDP rispetto a TCP
è che la comunicazione tra i nodi è più semplice e snella: non sono previsti meccanismi di ri-trasmissione o
verifica di consegna dei pacchetti. Per contro, UDP non è in grado di garantire la consegna dei messaggi da
un nodo mittente a un nodo destinatario.
Il protocollo UDP è adatto a situazioni dove l'affidabilità della trasmissione non costituisce un aspetto
cruciale, come ad esempio la telefonia su Internet (VoIP - Voice Over IP) e lo streaming di file multimediali.

Servizi e applicazioni di rete
Il livello Applicazione riguarda l'erogazione dei numerosi servizi offerti dalla rete Internet. Questi servizi
comunicano con il livello Trasporto mediante un’interfaccia denominata socket, la quale si occupa
dell’invio dei messaggi dal livello Applicazione al livello Trasporto e viceversa.
Su un calcolatore connesso alla rete Internet, in un certo istante, possono essere attivi numerosi servizi a
livello Applicazione, i quali dovranno condividere i medesimi livelli Trasporto, Rete e Acceso alla Rete
essendo attivo un unico canale di trasmissione. Il ruolo di una socket è smistare le comunicazioni che i vari
servizi hanno con i diversi interlocutori. Ciascun servizio di livello Applicazione è associato a un numero di
porta univoco che permette alle socket di gestire molteplici comunicazioni contemporaneamente anche se
associate a servizi diversi a livello Applicazione.
78
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Servizi della rete Internet
Nella rete Internet sono presenti differenti servizi a cui si può fare accesso e di cui il più noto è il World
Wide Web (comunemente chiamato Web o WWW). Ideato dal CERN nel 1989, il web offre un metodo
standard per condividere informazioni su Internet. I punti di forza che lo hanno reso così importante sono:
 aver introdotto un metodo standard con cui rappresentare le informazioni e condividere risorse dando
la possibilità di unire testo, grafica, audio e video;
 l’utilizzo di collegamenti ipertestuali (link) che consentono di indirizzare il navigatore verso altre pagine
web del medesimo sito o di siti web differenti;
 l’introduzione dei browser web, software semplici e intuitivi che con un’interfaccia grafica permettono
all’utente di passare da un sito a un altro e visualizzarne le pagine.
Mentre il web è un servizio della rete internet, il protocollo di rete a livello applicativo del Web si chiama
HTTP.
Altri famosi servizi sono la posta elettronica e il file sharing (condivisione file).
La posta elettronica (e-mail) è un metodo standard utile a inviare e ricevere messaggi in modalità asincrona.
Il protocollo utilizzato per l’invio dei messaggi attraverso la posta elettronica si chiama SMTP. Invece i
protocolli utili alla ricezione dei messaggi sono IMAP, il quale lascia i messaggi sul server, e POP3, il quale
scarica i messaggi in arrivo in locale eliminando la copia sul server.
ll file sharing può essere di tre tipi: peer-to-peer, client/server o un ibrido tra i due. Il file sharing permette
la condivisione tra più nodi di un determinato numero di contenuti. Un nodo abilitato all’accesso a questi
contenuti, può quindi fare richiesta di scaricamento del file e leggere le informazioni sul proprio computer
locale. I più comuni protocolli di file sharing sono FTP (disegnato per la comunicazione client/server) e
BitTorrent (usato nelle reti peer-to-peer).
79
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Contenuti I4 — HTTP - descrizione
HTTP è il protocollo mediante il quale un dispositivo client richiede l'accesso e la visualizzazione di una
pagina web memorizzata presso un server web. Allo stesso tempo, HTTP è il protocollo mediante il quale il
server invia la pagina web richiesta al dispositivo client che visualizzerà la pagina tramite un browser.
HTTPS (HyperText Transfer Protocol Secure) è un protocollo basato su HTTP dotato di meccanismi di
autenticazione del server e cifratura della comunicazione tra dispositivo client e server per prevenire la
lettura dei messaggi scambiati da parte di soggetti non autorizzati che potrebbero intercettare la
comunicazione in transito sulla rete.
HTTP - funzionamento
Un utente utilizza il protocollo HTTP (o HTTPS) ogni volta che richiede la visualizzazione di una pagina web.
Digitando l'indirizzo di una pagina web in un browser o cliccando su un link all'interno di una pagina web
visualizzata, il browser compone una richiesta HTTP e la invia al server dove è memorizzata la pagina web
richiesta. Il server interpreta la richiesta e risponde con un messaggio HTTP di risposta contentente la
pagina web richiesta. Ogni messaggio HTTP è costituito da un'intestazione (header) e un corpo (body). Nel
messaggio di richiesta HTTP, l'intestazione contiene l'indirizzo della pagina richiesta, ovvero i dati necessari
a individuare la collocazione della pagina web sulla rete (cioè il server presso il quale la pagina è ospitata).
Nel messaggio di richiesta, il corpo della richiesta HTTP contiene eventuali parametri associati alla richiesta.
Nel messaggio di risposta HTTP, l'intestazione contiene informazioni relative al server che ha risposto e al
tipo di risposta (ad es., richiesta andata a buon fine, errore). Il corpo della risposta HTTP contiene la pagina
effettivamente richiesta (risorsa) che il browser del dispositivo client mostrerà all'utente.
Un'importante caratteristica di HTTP è quella di essere un protocollo privo di stato (stateless). Questo
significa che le connessioni tra dispositivo client e server vengono stabilite e rilasciate (chiuse) per ciascuna
richiesta e corrispondente risposta tra i due dispositivi. Una volta fornita la risorsa al client, il server chiude
la connessione e non mantiene attivo alcun canale di comunicazione con il dispositivo client. Questa scelta
progettuale, ispirata alla semplicità e all'efficienza, favorisce la scalabilità del servizio di navigazione web, in
quanto l'indipendenza tra i collegamenti che possono comparire in una pagina, permette di passare da una
pagina all'altra e da un server all'altro senza dover gestire procedure di de-allocazione di risorse assegnate
presso il server. Questo approccio permette anche di ridurre il carico di lavoro del server che si limita a
gestire e allocare risorse di calcolo per le connessioni attive in uno specifico momento. Questa peculiarità
porta però a non poter mantenere in memoria informazioni fornite dall’utente in richieste HTTP
80
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
precedenti. Supponiamo che un utente richieda la visualizzazione di una pagina web P1 e invii
contestualmente le proprie credenziali di accesso (login e password) necessarie per visualizzare la pagina
web richiesta che richiede l'autenticazione dell'utente per poter essere visualizzata. Dopo aver visualizzato
P1, supponiamo che l'utente voglia accedere a una nuova pagina web P2 presso il medesimo server. Anche
in questa seconda richiesta è necessario specificare le proprie credenziali per poter visualizzare la pagina.
Con il protocollo HTTP, l'utente dovrebbe inviare la server le proprie credenziali in entrambe le richieste
poichè esse sono indipendenti e il server non ha modo di sapere che l'utente che richiede la pagina P2 è lo
stesso che in precedenza ha richiesto P1 (e quindi ha già fornito le proprie credenziali). Per superare questo
limite di HTTP, sono stati sviluppati meccanismi di mantenimento delle informazioni di stato dell'utente
denominati cookie.
Nome di Dominio
Un Nome di Dominio (o semplicemente Dominio) è un nome associato all'indirizzo IP di un dispositivo in
rete. Un esempio di Nome di Dominio è it.wikipedia.org.
Per contattare un server è necessario conoscere l'indirizzo IP che lo identifica sulla rete. Tale indirizzo è una
sequenza di 32 bit che può essere rappresentato mediante 4 blocchi di numeri decimali nell'intervallo 0-255
separati da punto. Ad esempio, l'indirizzo IP del server di Wikipedia è 91.198.174.192. Ovviamente, per un
utente, memorizzare un indirizzo IP è piuttosto scomodo e innaturale. Il Nome di Dominio (it.wikipedia.org
nel nostro esempio) è stato introdotto per affiancare l'indirizzo IP e consentire agli utenti di avere nomi
significativi e facilmente associabili a un server senza dover necessariamente conoscere il corrispondente
indirizzo IP.
In un nome di dominio, possono essere impiegate lettere, numeri, tratti o hypen ( - ) e tratti bassi o
underscore ( _ ). Gli altri caratteri come spazi e caratteri speciali in genere, non possono essere utilizzati.
Ciascun nome di dominio è costituito da sotto-domini, cioè nomi separati dal punto (dot). I sotto-domini
sono organizzati gerarchicamente dal pù generale al più specifico procedendo da destra a sinistra in ordine
inverso rispetto al normale verso di lettura. In altre parole, un nome di dominio termina sempre con un
sotto-dominio di primo livello preceduto da uno o più sotto-domini di livello superiore.
Tipicamente, un nome di dominio è composto da tre sotto-domini così articolati (nella descrizione si
consideri l'esempio del nome di dominio it.wikipedia.org):
 Dominio di primo livello (org): è un insieme finito di domini anche se in continua espansione gestito da
organizzazioni internazionali. I domini di primo livello sono distinti in due categorie principali:
o Nazionali: destinati a descrivere elaboratori collocati in uno specifico paese. Ad esempio, it è il
dominio di primo livello per elaboratori collocati Italia, de è il dominio per la Germania, fr per la
Francia e così via;
o Generici: destinati a descrivere elaboratori con una precisa finalità. Ad esempio com descrive
risorse associate ad attività commerciali, edu è tipicamente impiegato da enti educativi, org da
organizzazioni non a scopo di lucro;
 Dominio di secondo livello (wikipedia): è un insieme virtualmente infinito di domini gestito da
organizzazioni nazionali. Un dominio di secondo livello viene assegnato a un soggetto che ne fa richiesta
per identificare il contenuto o il servizio fornito dal server associato al nome di dominio;
 Dominio di terzo livello (it): è un dominio gestito dal soggetto a cui viene assegnato il dominio di
secondo livello. Lo scopo è fornire un livello ulteriore rispetto al secondo per qualificare le eventuali
specializzazioni dei servizi offerti.
URI e URL
URI (Uniform Resource Identifier) è uno standard per rappresentare l'indirizzo univoco e completo di una
risorse sulla rete Internet (come ad esempio una pagina web, un documento di testo o un'immagine). Una
URI è composta dal nome di dominio del server presso il quale la risorsa è ospitata e dal percorso (path) sul
disco del server che permette di raggiungere la risorsa.
Una URL (Uniform Resource Locator) è una tipologia di URI che oltre a identificare la risorsa descrive anche
il protocollo da utilizzare per reperirla. In un esempio di risorsa identificata per mezzo di URL:
81
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
http://www.di.unimi.it/ecm/home
in cui:
 http identifica il protocollo di comunicazione da utilizzare per il reperimento;
 www.di.unimi.it identifica il nome di dominio del server che ospita la risorsa;
 /ecm/home è il percorso sul server per accedere alla risorsa.
GET E POST
In un messaggio di richiesta HTTP utilizzato per accedere e visualizzare una risorsa web, è possibile che il
richiedente voglia aggiungere alcuni parametri mirati a qualificare ciò che intende ottenere in risposta.
Ad esempio, per visualizzare una pagina web potrebbe essere necessario che l'utente sia tenuto a fornire le
proprie credenziali (username e password). In questo caso, il messaggio di richiesta HTTP del richiedente
dovrà fornire anche le credenziali oltre all'indirizzo (URL) della pagina web di interesse.
Il protocollo HTTP offre due meccanismi per consentire a un utente di inviare parametri in un messaggio di
richiesta HTTP. Il primo meccanismo è GET e permette di inserire i parametri in coda alla URL della pagina
richiesta. Con il metod GET, i parametri sono inseriti nell'intestazione del messaggio di richiesta HTTP. Il
secondo meccanismo è POST e permette di inserire i parametri nel corpo del messaggio di richiesta HTTP.
DNS
Quando un nome di dominio viene assegnato a un host, come può un qualsiasi nodo della rete Internet
conoscere l’indirizzo IP corrispondente a tale nome?
Il DNS (Domain Name System) è un servizio di livello Applicativo che permette la conversione di nomi di
dominio nei corrispondenti indirizzi IP. Questo servizio è realizzato mediante una base di dati distribuita su
numerosi server. Quando si interroga un server DNS per conoscere l'indirizzo IP di un nome di dominio di
interesse, il servizio è organizzato in modo gerarchico e i vari server DNS comunicano fra di loro fino a
risalire all’indirizzo IP del nome di dominio richiesto.
Accedere alla rete Internet
Un Autonomous System (AS) accede alla rete Internet tramite un Internet Service Provider (ISP). Esistono
differenti tipi di ISP, ad esempio residenziali (come Telecom, Vodafone e Fastweb), aziendali, e dedicati a
specifiche attività commerciali o istituzionali (università, aeroporti, etc.). Tramite l’ISP, si definisce la
tecnologia di trasferimento dei dati (ADSL, Fibra Ottica) e la banda massima di trasferimento dati concessa
al richiedente in scaricamento - download - e caricamento - upload.
Ogni ISP utilizza il protocollo IP e si conforma alle regole e alle convenzioni previste da questo protocollo. Di
conseguenza, nel momento in cui un host si collega alla rete Internet, l’ISP fornisce a quest’ultimo un
indirizzo IP, generalmente tramite protocollo DHCP (Dynamic Host Configuration Protocol). Questo
protocollo consente di fornire in maniera automatica un indirizzo IP a un host che fa richiesta di accesso alla
rete. Quest'ultimo manda una richiesta, chiamata DHCP discover, in broadcast alla rete. Quando il server
DHCP riceve la richiesta, esso risponde con l'indirizzo IP che gli sarà assegnato e potrà utilizzare. Con DHCP,
l'indirizzo IP sarà assegnato al dispositivo fintanto che tale dispositivo rimane collegato alla rete. Una volta
scollegato, l'indirizzo IP può essere assegnato a un altro dispositivo. Questo significa che il medesimo
indirizzo IP può essere utilizzato da dispositivi diversi in momenti diversi. Ovviamente, non è possibile che
due dispositivi utilizzino il medesimo indirizzo IP contemporaneamente. E' dunque possibile che un
dispositivo riceva un diverso indirizzo IP in due diverse sessioni di accesso alla rete poichè DHCP assegna
dinamicamente l'indirizzo IP in base alla disponibilità in uno specifico momento.
Riassumendo, normalmente quando un ISP permette l’accesso alla rete a un determinato host, usa il
protocollo DHCP per fornirgli l’indirizzo IP. Esiste anche un meccanismo alternativo a DHCP per assegnare
un indirizzo IP a un host che accede alla rete. E' possibile richiedere al proprio ISP l'assegnazione di un
indirizzo IP statico. Questo significa che l'host avrà sempre il medesimo indirizzo ogni volta che accede alla
rete. Tale scolta è particolarmente adatta quando l'host deve fornire uno o più servizi ad altri nodi della
rete ed è quindi necessario che abbia un proprio nome di dominio e sia facilmente ed intuitivamente
rintracciabile dagli altri nodi della rete.
82
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Contenuti I5 — Pagine HTML
HTML utilizza dei tag (marcatori) per definire le regole di formattazione che il browser deve poi interpretare
per comporre la pagina web. Ad ogni tag di apertura è associato il corrispettivo tag di chiusura usualmente
identificato dal simbolo “/”. Ad esempio <title>Guida introduttiva a HTML</title> delimita il testo “Guida
introduttiva a HTML” entro l’apertura e la chiusura del marcatore “title”. I tag possono essere innestati o
combinati tra loro quando è necessario applicare più stili di formattazione al medesimo testo. Ad esempio
<b><i>World Wide Web</i></b> istruisce il browser in modo che la scritta “World Wide Web” sia
visualizzata in grassetto corsivo. A tutto il testo compreso tra il tag di apertura e quello di chiusura il
browser applica lo stile di formattazione indicato dal tag.
HTML impone ai documenti una struttura entro la quale collocare tutti i singoli elementi. Di seguito è
presentata la composizione della struttura di base di una qualsiasi pagina web.
<!DOCTYPE html>
<html>
<head>
<title> La mia prima pagina web </title>
</head>
<body>
<p> Questa è la mia prima pagina in html. </p>
</body>
</html>
Di tutto il codice scritto sopra, il browser mostrerà a video solamente il testo compreso tra gli elementi
<body> e </body>, ovvero:
Questa è la mia prima pagina in html.
Dove <!DOCTYPE html> ha il solo compito di informare il browser che si tratta di un documento HTML.
<html> è l’inizio del codice html vero e proprio, tutto ciò che sarà posto all'interno di questo documento e
83
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
fino al relativo tag di chiusura sarà inteso come struttura del codice HTML. <head> testata o head del
documento, in questa sezione trovano posto tutti i tag che impartiscono direttive al browser quali: titolo,
comandi Meta, richiami ai fogli di stile, script. <body> è il corpo del documento nel quale vanno inseriti dati
multimediali, testo, form, tabelle, link e quant'altro faccia parte di html.
Dati multimediali: immagini, video e audio
Inizialmente, il Web era costituito solo da testo ed era piuttosto noioso. Fortunatamente, non passò molto
tempo prima che fosse aggiunta la possibilità di incorporare immagini (e altri tipi di contenuti più
interessanti) nelle pagine Web. Il tag <img>, ad esempio, è usato per inserire una singola immagine. Si
tratta di un elemento vuoto, ovvero che non ha un contenuto testuale nè un tag di chiusura, e richiede la
presenza dell’attributo src per poter funzionare. Quindi, ad esempio, se l'immagine è chiamata unimi.jpg ed
è collocata nella stessa directory della pagina HTML, la si inserisce con <img src="unimi.jpg">. Se
l'immagine si trova nella sottodirectory images della directory in cui si trova la pagina HTML, allora si dovrà
scrivere <img src="images/unimi.jpg">.
Con la diffusione della banda larga, veloce abbastanza da supportare la trasmissione di un maggior numero
di contenuti, si è iniziato ad inserire nelle pagine web anche contenuti video e audio. Nei primi tempi,
l'HTML non aveva la capacità di integrare video e audio, così, per poterlo fare, sono diventate popolari delle
tecnologie proprietarie come Flash (e più tardi Silverlight). Tuttavia, questo tipo di tecnologie non sono ben
integrate con HTML/CSS e presentano problemi di sicurezza e di accessibilità. Fortunatamente, nel 2007, la
specifica HTML5 aggiunge gli elementi <video> e <audio>. Analogamente a quanto fatto per le immagini, il
tag <video> permette di aggiungere un contenuto video in modo molto semplice, ovvero con
<video src="unimi.webm" controls>
<p>Your browser doesn't support HTML5 video. Here is a <a href="unimi.webm">link to the video</a>
instead.</p>
</video>
Dove il paragrafo tra i tag <video> è chiamato fallback content (contenuto di ripiego) e sarà mostrato se il
browser che accede alla pagina non supporta il tag <video>.
L'elemento <audio> funziona esattamente come l'elemento <video> ed un esempio tipico potrebbe
apparire così:
<audio src="unimi.ogg" controls>
<p>Your browser doesn't support HTML5 audio. Here is a <a href="unimi.ogg">link to the audio</a>
instead.</p>
</audio>
Cascading Style Sheet
I CSS, ovvero Cascading Style Sheet, sono visti come lo strumento designato per arricchire l’aspetto visuale
ed estetico di una pagina web e al tempo stesso separare l’informazione relativa allo stile grafico degli
elementi HTML dal ruolo strutturale che tali elementi hanno. E’ possibile infatti applicare il medesimo foglio
di stile a diverse pagine di uno stesso sito per ottenere uno stile di impaginazione uniforme senza dover
riscrivere il codice della pagina HTML. L’adozione di fogli di stile permette di ottenere diversi effetti visivi,
come ad esempio il font e il colore preferito per il testo così come usare un sistema di interlinea ovvero
distanziare gli elementi di una pagina con un efficace meccanismo di gestione dei margini.
Esistono tre modi per utilizzare i CSS, che si combinano e integrano tra loro:
 direttamente in linea,
 ad inizio pagina a stile incorporato,
 utilizzando un foglio di stile esterno.
CSS in linea
Questo approccio è utilizzato quando si ha la necessità di apportare delle modifiche relative al solo blocco
di codice che stiamo trattando e non all’intero documento. Per fare ciò si inserisce direttamente l’attributo
style all’interno del tag che racchiude il codice a cui applicare le modifiche.
Ad esempio:
84
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
<p style="color:red;">Questo paragrafo è rosso</p>
CSS incorporato
È adottato in quei casi in cui elementi diversi utilizzano il medesimo stile. In questo caso le istruzioni non
sono più inserite all’interno del singolo elemento bensì all’inizio della pagina, dichiarate dagli elementi
<style> e </style> posti all’interno della sezione <head></head>. Questo metodo può essere combinato con
il precedente. In tal caso le istruzioni definite in linea hanno la priorità.
Ad esempio:
<head>
<style>
p{
color: red;
}
</style>
</head>
CSS esterno
In questo caso si definisce un file esterno a quello html a cui tutte le pagine che lo desiderano possono fare
riferimento. Il file esterno conterrà tutte le istruzioni che tipicamente si indicano nella sezione definita dagli
elementi <style></style> e la sua importazione avviene ad inizio pagina all’interno della sezione
<head></head>. Risulta evidente come tutto ciò sia comodo qualora si desideri utilizzare lo stesso stile su
diverse pagine. Anche in questo caso, usare un foglio di stile esterno è un metodo assolutamente
compatibile con i due precedentemente illustrati.
Ad esempio:
<head>
<link rel="stylesheet" href="style.css">
</head>
dove “style.css” contiene:
p{
color: red;
}
Siti web statici
I siti web statici presentano contenuti di sola ed esclusiva lettura. Solitamente vengono aggiornati con una
bassa frequenza ed è necessario un programmatore che modifichi il codice della pagina HTML (più
eventuali fogli CSS e script Javascript) e che lo carichi sul server. Un sito statico ha sempre un numero finito
di pagine, esattamente quantificabile. A scanso di equivoci bisogna precisare che sito web statico non
significa privo di “animazioni” ma ci si riferisce a semplici pagine ipertestuali, contenenti testo e immagini,
collegate le une alle altre da pulsanti e link di navigazione. Se l’obiettivo è creare un semplice sito web,
senza la necessità di aggiornamenti costanti e non si ha l’esigenza di permettere all’utente finale di
interagire con la pagina web allora il sito web statico è la scelta migliore per una serie di motivi:
 Tempo di caricamento più rapido e visualizzazione rapida della pagina
 Più sicuro, poiché meno vulnerabile agli attacchi di malintenzionati
 Meno costoso da ospitare e mantenere
 Meno complesso da configurare
Per tutti questi motivi, e soprattutto in seguito all’aumentare di attacchi ai siti web dinamici, negli ultimi
anni i generatori di siti statici stanno catturando sempre di più l’interesse della comunità web. Questi sono
85
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
strumenti in grado di creare codice HTML e CSS partendo da file scritti in linguaggi più facili e intuitivi, come
il Markdown.
Siti web dinamici
I siti web dinamici poggiano su un’applicazione scritta in linguaggio server-side (tipicamente PHP o ASP.net)
che provvede a generare e pubblicare le pagine del sito al momento della loro richiesta da parte del
browser. Questo permette ai siti web dinamici di variare il contenuto della pagina sulla base delle scelte
fatte dell’utente, offrendo quindi un elevato livello di interazione. Normalmente, ma non sempre, le
informazioni sono estratte da una base di dati che le contiene. Una volta creata la struttura che
dinamicamente produce le pagine, i contenuti possono essere inseriti e variati senza conoscere tecniche di
programmazione di siti web. È possibile in questo modo aggiungere o rimuovere pagine, immagini e
contenuti autonomamente ricorrendo ad un sistema di gestione dei contenuti (CMS: Content Management
System) quali Wordpress, Joomla, Drupal ecc.
La scelta di usare un sito web statico è poco comune in quanto ogni modifica al sito richiede l’intervento di
una persona con adeguate competenze tecniche del linguaggio HTML. Al contrario, la scelta di usare un sito
web dinamico è quella più diffusa in quanto è l’unico in grado di garantire prestazioni adeguate per
raggiungere gli obiettivi desiderati, quali ad esempio:
 I contenuti debbano essere regolarmente aggiornati: se durante una giornata le informazioni da
modificare, togliere o aggiungere sono molteplici risulta molto più comodo poter compiere queste
operazioni senza mettere mano ogni volta al codice sorgente;
 Debbano essere elaborati dei dati forniti dall’utente : le informazioni vengono mostrate all’utente
dinamicamente o in base ai parametri con i quali è configurata la richiesta (ad esempio, si potrebbe
decidere di pubblicare tutti gli articoli in sconto, tutti gli eventi accaduti in una certa città in un preciso
giorno, ecc…);
 Siano necessarie modifiche all’aspetto grafico del sito in qualsiasi momento e con poco know-how:
l’aspetto grafico di ogni pagina è facilmente editabile, senza dover ricorrere alla scrittura di istruzioni
CSS. Spesso i CMS includono un editor di testo che aiuta a concentrarsi sul contenuto da scrivere,
anziché alla definizione dei fogli di stile.
Programmi e applicazioni web
I browser web sono software usati dai client per accedere alle informazioni del World Wide Web residenti
sui server web. Per fare ciò, il browser deve essere in grado di trovare i contenuti ricercati in Internet; è
quindi fondamentale definire regole certe sulle modalità in cui un browser cerca e successivamente ottiene
le informazioni di interesse. Da qui l’importanza del protocollo HTTP. I browser, quindi, sono
essenzialmente programmi capaci di generare una richiesta HTTP quando ricerchiamo una pagina Web e
interpretare il codice HTML della pagina ottenuta in risposta, visualizzando i suoi contenuti. I browser
maggiormente utilizzati ad oggi, in ordine di diffusione sono: Google Chrome, Safari, Mozilla Firefox,
Internet Explorer ed Opera.
Tuttavia, al giorno d’oggi, pensare ad un browser web come un semplice interprete e visualizzatore di siti
web è decisamente riduttivo. Con l’avvento delle web application (o web app) interi pacchetti applicativi
sono stati resi fruibili attraverso l’utilizzo di un browser web. Ad aiutare questo sviluppo è stata
l’introduzione in HTML5 del supporto esplicito alla creazione di applicazioni che sono caricate come pagine
Web, ma possono archiviare dati localmente e continuare a funzionare offline. Esempi di web application
sono i servizi di webmail per la gestione della casella di posta elettronica o software per ufficio (elaboratori
di testi, fogli di calcolo online e strumenti di presentazione) ma possono anche includere applicazioni più
avanzate come i software CAD, l'editing video fino ad arrivare ai software per i registratori di cassa
86
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Contenuti I6 — Reperimento delle informazioni sul web
Per visualizzare informazioni provenienti da un sito web è necessario:
 Disporre di una connessione di rete con la quale accedere ad Internet.
 Avviare un browser web.
 Inserire l’URL (l’indirizzo del sito) della risorsa desiderata.
Tramite il protocollo HTTP e utilizzando il browser si può accedere a testi, immagini, audio e video
contenuti all’interno del sito selezionato. Se l’URL non è conosciuto a priori dall’utente, è possibile avvalersi
dell’ausilio di un motore di ricerca (Google, Bing, Yahoo!, ecc.) per trovare i siti che trattano gli argomenti di
interesse.
I motori di ricerca scandagliano continuamente l’intero World Wide Web utilizzando dei programmi
chiamati web crawler (o spider o robots) che si occupano di visitare automaticamente gli URI registrati nel
database del motore e ricorsivamente seguire tutti gli indirizzi contenuti nei documenti analizzati
memorizzandone una loro copia. Dopo l’analisi delle pagine, a seconda di criteri che variano da motore a
motore, alcune di esse vengono inserite nel database e nell’indice del motore di ricerca.
Usare un motore di ricerca
In questa sezione vogliamo mostrare in che modo utilizzare un motore di ricerca. In particolare,
prenderemo in considerazione Google che senza ombra di dubbio è uno dei più usati. Quando si esegue
una interrogazione, Google visualizza solo le pagine che contengono tutti i termini ricercati, aggiungendo
automaticamente l’operatore booleano “and”. Per limitare ulteriormente la ricerca, è sufficiente quindi
aggiungere altri termini. Nel caso si volesse escludere una parola dalla ricerca basta inserire il segno “-”
preceduto da uno spazio.
87
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
E’ bene sottolineare come tutti i risultati trovati contengano una o più sintesi della pagina Web, che
mostrano il contesto in cui vengono utilizzati i termini ricercati, in modo tale da rendere più chiaro
all’utente se la pagina trovata è quella desiderata o meno.
Esempio di interrogazione
Facciamo una semplice interrogazione inserendo come termini da cercare “la statale” . I risultati restituiti
sono quelli mostrati nella Figura 6.1 ordinati da Google per rilevanza
Figura 6.1: Esempio di risultati ottenuti con una interrogazione di base
Ricerca avanzata
Oltre all’interfaccia di base Google offre anche una modalità di ricerca avanzata. Andando nell’apposita
sezione del sito, accessibile dalla homepage sotto Impostazioni > Ricerca avanzata, si accede ad una pagina
più elaborata della precedente che offre maggiori possibilità di personalizzazione della richiesta (Figura 6.2).
88
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Figura 6.2: Interfaccia disponibile per le ricerche avanzate
Sono presenti cinque campi per inserire i termini a seconda che si vogliano ritrovare tutte le parole, l’intera
frase, anche un solo termine tra quelli inseriti, escludere delle parole dalla ricerca oppure cercare
attraverso degli intervalli numerici che diventano date o unità di misura. Aggiungendo 2013 e 2015 alla
precedente ricerca otterremo un elenco che, oltre a rispettare i criteri già inseriti, sarà limitato a pagine
contenenti i numeri 2013, 2014 e 2015.
E’ possibile inoltre selezionare la lingua in cui devono essere scritte le pagine restituite, il formato di quanto
ritrovato, ad esempio solo file di tipo .pdf, selezionare le pagine in base a quando sono state aggiornate e
ancora indicare in quale posizione della pagina (titolo, corpo, indirizzo URL o link) ricercare i termini
desiderati. Si possono addirittura cercare tutte le pagine collegate o correlate ad uno specifico sito web.
Il motore di un motore di ricerca
Per stabilire la rilevanza di un sito ogni motore di ricerca sfrutta propri algoritmi di classificazione che
controllano, per esempio, quante volte le parole chiave vengono ripetute, quanti link riceve quel
documento, in quali punti della pagine sono poste le parole chiave, quanti siti del database contengono link
verso quella pagina, o quante volte un utente ha visitato quel sito dopo una ricerca. I risultati ritornati sono
così ordinati in ordine decrescente ed eventualmente suddivisi in gruppi logici (cluster).
Talvolta i motori di ricerca sul web forniscono anche risultati sponsorizzati, ovvero mostrano in maggiore
evidenza nelle pagine di risultato dei motori di ricerca (SERP: Search Engine Result Page), siti web di aziende
che pagano per piazzarsi tra i primi risultati quando si cercano termini (detti keyword o parole chiave) che
sono in relazione all’ambito di competenza dell’azienda stessa.
Il processo di indicizzazione
Il lavoro di un motore di ricerca può essere suddiviso in fasi: un primo momento in cui gli spider trovano le
pagine e ne memorizzano una copia; segue una fase di indicizzazione in cui la pagina viene prelevata dal
database per essere analizzata e scomposta nelle diverse parole che la compongono. Per ogni parola viene
creato un piccolo registro che riporta varie informazioni: l’occorrenza (numero di ripetizioni nella pagina), la
dimensione del carattere, il marcatore HTML in cui è inclusa oltre che, naturalmente, il codice identificativo
della pagina (page IN). Ognuno di questi piccoli registri viene poi salvato nella memoria di uno specifico
server.
Il processo di interrogazione
A questo punto, quando un utente inserisce la propria richiesta, sono individuate le parole che
compongono la stessa ed effettuata un’interrogazione presso i server che contengono i registri appropriati.
Alle pagine individuate viene attribuito un punteggio (ranking), strettamente dipendente dai criteri di base
adottati dal motore di ricerca per valutare le occorrenze delle parole. E’ facile capire come diversi motori
producano risultati differenti pur analizzando la medesima interrogazione; la grandezza del database, la
frequenza di aggiornamento, le opzioni di ricerca fornite e la tecnologia utilizzata sono tutti fattori che
incidono profondamente sul risultato finale.
Gli algoritmi adottati dai diversi motori di ricerca nella maggior parte dei casi non sono mai completamente
conosciuti e molti dei parametri che incidono sulla stima della pertinenza e il relativo peso associato
vengono nascosti. Alcune cose però sono note come il fatto che un ruolo importante lo giocano le parole
chiave che caratterizzano un sito e il posizionamento delle stesse all’interno delle pagine. Altro parametro
molto importante preso in considerazione dalla maggior parte delle tecnologie adottate dai motori di
ricerca sono i link da e verso una pagina web (Inbound e Outbound link, rispettivamente).
89
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Figura 6.3: Inbound e outbound link di una pagina web
L'algoritmo PageRank di Google
Sapere come i motori di ricerca considerino i link fra le pagine Internet è quindi importante per conoscerli
un po' di più e comprendere sempre meglio i motivi che “muovono” le pagine all'interno dei loro database.
Google è stato uno dei pionieri nell'utilizzo dei collegamenti ipertestuali per la valutazione dell'importanza
di un sito web. Grazie alla tecnologia chiamata PageRank, Google riesce oggi a fornire risultati altamente
pertinenti stabilendo in modo del tutto automatizzato una misurazione oggettiva dell'importanza di ogni
singola pagina web presente nel suo database. PageRank utilizza un'equazione di circa 500 milioni di
variabili e 2 miliardi di termini per creare una struttura dei link della rete (Figura 6.4) che poi utilizza come
strumento di organizzazione e valutazione. Questo sistema non esegue semplicemente un conteggio dei
link verso un certo sito a partire da pagine già indicizzate (cioè la Link Popularity) e un conteggio dei link dal
sito stesso verso queste pagine, ma valuta anche la qualità dei link, ovvero la pertinenza rispetto
all'argomento trattato nella nostra pagina.
Figura 6.4: Esempio di una rete di relazioni
Il fattore principale nella determinazione del PageRank sono i link provenienti dall'esterno, quelli più difficili
da ottenere e mantenere se il nostro sito non presenta contenuti validi e facilmente accessibili. Risulta di
conseguenza determinante tessere una rete di relazioni con altri siti del settore, evitando di associarsi a siti
mal strutturati e che a loro volta hanno un numero troppo esiguo di link dall'esterno.
Evoluzione dei motori di ricerca
Gli algoritmi alla base dei motori di ricerca necessitano di aggiornamenti periodici sia per migliorare il
servizio offerto agli utilizzatori, sia per scongiurare eventuali manomissioni che potrebbero modificare i
posizionamenti delle pagine. Attualmente, infatti, i motori di ricerca come Google, non solo restituiscono i
risultati delle query inserite, ma personalizzano anche la ricerca e suggeriscono informazioni pertinenti che
potremmo trovare utili.
90
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Evoluzioni di PageRank
Figura 6.5: Principali evoluzioni introdotte all’algoritmo PageRank di Google.
Google Panda è il nome ufficiale di uno dei più importanti aggiornamenti dell’algoritmo della compagnia di
Mountain View, che nasce per filtrare dai più di 100 miliardi di documenti presenti nel suo indice i content
farm. Questi sono responsabili della presenza di pagine brevi con contenuti di bassa qualità prodotte in
elevato numero al solo fine di inserire paid ads (ovvero annunci a pagamento).
Google Penguin, in azione dal 2012, si pone sulla scia di Panda e si focalizza prevalentemente nel cercare
contenuti nei quali ritiene siano state adottate le due seguenti tattiche di spam:
 link spam - Consiste nel migliorare il ranking aumentando il numero di backlink innaturali (link fuori
contesto che puntano verso un sito) provenienti da siti di bassa qualità o con penalizzazioni
 keyword stuffing - Si tratta di una tattica SEO (Search Engine Optimization) che consiste nel ripetere più
volte nel testo una specifica keyword o long tail keyword al fine di favorirne il posizionamento nei
risultati di ricerca.
Infine, Google Hummingbird è stato progettato per comprendere concetti e relazioni tra keyword in modo
simile ad un umano ed è, nel 2013, la prima volta che l’algoritmo viene così pesantemente riscritto. Si tratta
di un importante passo avanti verso la realizzazione di un motore di ricerca semantico.
Consideriamo la seguente query conversazionale, ovvero una richiesta formulata come una domanda
espressa in tono colloquiale :
“Qual è il posto più vicino a casa mia per comprare un iphone?”
Prima di Hummingbird un motore di ricerca tradizionale, per fornire un risultato utile all’utente, si sarebbe
focalizzato nel cercare pagine che includono le singole keyword (ad es. “comprare” e “iphone”). Google
Hummingbird invece cerca di capire il significato che sta dietro le parole. Grazie alla geolocalizzazione, per
esempio, è in grado di capire dove si trova fisicamente chi esegue la ricerca, dal fatto che deve essere vicino
casa capisce che non si tratta di uno store online ma fisico, poiché parliamo di un iphone capisce che è un
dispositivo elettronico in vendita in certi negozi piuttosto che in altri.
SEO
La Search Engine Optimization (SEO), ovvero l'ottimizzazione dei motori di ricerca, è il processo che
aumenta la qualità e la quantità del traffico web aumentando la visibilità di un sito Web o di una pagina
Web agli utenti di un motore di ricerca. Il SEO si riferisce al miglioramento dei risultati non pagati (noti
come risultati "naturali" o "organici") ed esclude il traffico/visitatori diretti e l'acquisto di posizionamenti a
pagamento. La SEO può indirizzare diversi tipi di ricerche, tra cui ricerca di immagini, ricerca di video,
ricerca di articoli scientifici, ricerca di notizie e motori di ricerca verticali specifici di un settore.
La SEO di ieri e di oggi
La SEO comporta alcune modifiche al design e al contenuto del sito Web che rendono il sito più “attraente”
per un motore di ricerca. In passato, ottimizzare il sito Web per i motori di ricerca significava ottimizzare
91
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
per l'algoritmo e i robot di ricerca. Si trattava di un processo prevalentemente tecnico che si concentrava
esclusivamente sulla creazione di collegamenti e sul modo in cui il sito Web era strutturato. Ciò ha
permesso alle persone di provare a manipolare il sistema con tecniche che ora verrebbero considerate
spam. Come visto nella sezione precedente, Google ha risolto questo tipo di problemi quando ha rilasciato
gli aggiornamenti Panda e Penguin. Questi aggiornamenti hanno penalizzato i siti Web con contenuti
"spammy" e siti Web che hanno utilizzato strategie di costruzione di link non organiche e pertinenti al
contenuto del sito, ma progettate invece per manipolare l'algoritmo di ricerca. Oggi, ottimizzare il sito Web
per i motori di ricerca significa ottimizzare per gli utenti che desideri trovino il tuo sito Web (in altre parole,
il tuo pubblico di destinazione). L'obiettivo dei motori di ricerca, infatti, è quello di fornire agli utenti i
migliori risultati da abbinare alle loro query di ricerca. Fornendo i migliori contenuti per rispondere a tali
query di ricerca, si aumentano notevolmente le possibilità di posizionamento nella SERP (Search Engine
Results Page). Detto questo, la SEO è ancora importante per garantire che i bot di Google possano capire i
contenuti della pagina e indicizzarli correttamente.
Migliorare il posizionamento di un sito web
Se si sta cercando di ottimizzare per parole chiave competitive, i contenuti di alta qualità potrebbero non
essere sufficienti e alcuni passaggi devono essere presi in considerazione per migliorare il posizionamento
del sito web:
 una buona struttura di collegamento interna, che aiuti gli utenti a navigare nel sito e aiuta i robot di
ricerca a comprendere la gerarchia delle pagine;
 più veloce è il caricamento di una pagina, meglio è. Un sito Web veloce offre un'esperienza utente
migliore, riduce la frequenza di rimbalzo e può in definitiva portare ad un aumento nel posizionamento;
 più della metà delle ricerche su Google viene eseguita su smartphone e tablet. Se il sito non è
ottimizzato per i dispositivi mobili, è meno probabile che il motore di ricerca lo mostri nella pagina dei
risultati su tali dispositivi. Ciò significa che si perderebbero circa il 60% di tutti gli utenti possibili.
92
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Contenuti I7 — Web 2.0
Il Web 2.0 è un termine ombrello che raggruppa riferimenti sia sul piano dello sviluppo della tecnologia e
degli standard, sia sul piano dello sviluppo dei modelli di business e dell'user experience applicati al Web. In
generale il termine indica l'evoluzione delle applicazioni web verso strumenti che facilitano la
partecipazione alla costruzione dei contenuti da parte degli utenti. Temporalmente è difficile da situare, si
colloca tra la nascita dei primi blog (1994) all'affermarsi di Wikipedia (2001), Youtube (2005) e altri servizi
simili. Per descrivere questa evoluzione può essere utile concentrarsi sulle evoluzioni avvenute in specifici
contesti. Assistiamo, ad esempio, al passaggio dai siti web personali ai blog; dai sistemi di content
management ai wiki; dal link come strumento di aggregazione delle risorse tramite riferimento al mash-up
come strumento di aggregazione per inclusione e fusione delle risorse. Nel marketing l'affermarsi di questo
paradigma comporta il passaggio dall'approccio stickiness, mantenere l'utente legato a sito web,
all'approccio syndication, far giungere all'utente solo le informazioni a cui attribuisce valore. La differenza
con il Web 1.0 sta nell'approccio con il quale gli utenti si rivolgono al Web, che passa fondamentalmente
dalla semplice consultazione (seppure supportata da efficienti strumenti di ricerca, selezione e
aggregazione) alla possibilità di contribuire popolando e alimentando il Web con propri contenuti. Le
tecnologie che hanno sostenuto questo processo sono rappresentate dai Web Services, le API e i protocolli
REST.
Le tecnologie del Web 2.0
Per Web Service si intende un software in grado di comunicare con altre componenti connesse in rete
tramite lo scambio di dati in un formato standard; tipicamente uno specifico vocabolario XML definito per
tale applicazione. Ad esempio gli orari dei treni sono accessibili tramite Web Service consentendo ad un
programma che seguisse il protocollo definito dal Web Service di accedere ai dati. Per API si intende un
insieme di procedure rese disponibili da un software per accedere alle sue risorse o ai suoi servizi. Queste
procedure vengono definite dal fornitore di un servizio, per consentire ad altri programmatori di usufruire
del proprio servizio (e quindi di diffonderlo). Ad esempio attraverso le API di Google Maps è possibile
configurare la specifica visualizzazione di una mappa e includerla all'interno della propria pagina Web. Per
protocolli REST si intendono protocolli di interscambio dei dati che si basano sui soli metodi resi disponibili
dal protocollo HTTP. Questo tipo di protocolli descrivono i servizi come risorse web, tipicamente documenti
XML o JSON.
93
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Web 3.0
Ogni volta che si acquista qualcosa su Amazon, l'algoritmo del sito Web esaminerà gli altri articoli acquistati
dalle persone che hanno acquistato il nostro prodotto e ce li consiglia. Il sito Web, dunque, sta imparando
da altri utenti quali possono essere le nostre scelte preferite e le utilizza per consigliarci ciò che ci potrebbe
piacere. In sostanza, il sito Web stesso sta imparando e diventando più intelligente. Questa, in poche
parole, è la stessa filosofia alla base del Web 3.0. Il Web 1.0 era principalmente guidato dal contenuto
proveniente dall'azienda o dall'istituzione per i suoi clienti. Il Web 2.0 ha portato le cose un po’ oltre,
consentendo agli utenti di caricare e condividere i propri contenuti sul sito Web stesso. Il Web 3.0 consente
alle applicazioni e ai siti Web online di ricevere informazioni sul Web, elaborarle semanticamente e di
fornire nuove informazioni agli utenti.
Il Web semantico insieme all'intelligenza artificiale sono i due cardini del web 3.0. Il Web semantico
insegnerà al computer cosa significano i dati e questo potrà evolversi in intelligenza artificiale in grado di
utilizzare tali informazioni. L'idea principale è quella di creare una ragnatela di conoscenza su Internet che
possa aiutare a comprendere il significato delle parole per generare, condividere e collegare i contenuti
attraverso la ricerca e l'analisi. Grazie ai dati strutturati, il Web 3.0 contribuirà a una maggiore connettività
tra i dati. Di conseguenza, l'esperienza dell'utente si evolve in un ulteriore livello di connettività che sfrutta
tutte le informazioni disponibili.
La Rete semantica
La semantica è lo studio del significato delle parole. In particolare, studia la relazione tra parole, frasi e
simboli e ciò che rappresentano (il loro significato). Pertanto, la rete semantica è una rete significativa. Il
web semantico non parla di parole chiave e backlink, ma di relazioni tra concetti (o cose). Invece di
guardare alle stringhe stesse, guarda ai concetti dietro di loro e alle loro proprietà. Esistono vocabolari e
grammatiche per la rete semantica molto simili al linguaggio umano. Si utilizzano per formare dichiarazioni
logiche su un sito web che i robot dei motori di ricerca possono raccogliere, analizzare ed elaborare. Ciò che
rende la ricerca semantica diversa dalla ricerca normale è che le regole della logica possono essere
applicate alle informazioni. Se un motore di ricerca trova un'affermazione logica sul sito Web di Barack che
dice "Barack è amico di Michelle" e qualcuno fa una ricerca di "amici di Michelle", allora, anche se il sito
Web di Michelle non menziona Barack, il motore di ricerca semantico ci farà sapere che Barack si considera
amico di Michelle.
I dati strutturati
Dall'esempio precedente vediamo che i motori di ricerca possono derivare nuove conoscenze dai dati con
un alto grado di organizzazione. Possiamo chiamarli dati significativi o strutturati.
Sebbene la comunità di Internet non sia unanime riguardo al modo migliore per contrassegnare i dati
strutturati, in ogni caso, sono necessari due elementi:
 vocabolario, ovvero un insieme di parole che rappresentano coppie significato-rappresentazione;
 grammatica, ovvero un insieme di regole che dicono come usare il vocabolario per trasmettere il
significato.
Google, Microsoft, Yahoo e Yandex nel 2011 hanno pensato bene di creare un enorme vocabolario
chiamato schema.org. Nel sito ufficiale sono rappresentati tutti gli schemas (tipi di dato) che vengono
riconosciuti dai motori di ricerca e questo vocabolario è quello utilizzato dalla maggior parte dei dati
strutturati
Per quanto riguarda la grammatica, non c'è una risposta breve. Tre sono gli attori principali: RDFa (Resource
Description Framework in Attributes), JSON-LD (JSON for Linking Data) e Microdata.
RDFa
94
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
RDFa e Microdata sono concettualmente molto simili. Entrambi consentono di riutilizzare i dati HTML
visibili. In particolare, RDFa è una estensione di HTML5 che supporta i dati strutturati introducendo attributi
di tag HTML che corrispondono al contenuto visibile all'utente che si vuole descrivere per i motori di
ricerca. RDFa è comunemente usato in entrambe le sezioni intestazione e corpo della pagina HTML. Ad
esempio:
<div vocab="http://schema.org/" typeof="SportsTeam">
<span property="name">San Francisco 49ers</span>
<div property="member" typeof="OrganizationRole">
<div property="member" typeof="http://schema.org/Person">
<span property="name">Joe Montana</span>
</div>
<span property="startDate">1979</span>
<span property="endDate">1992</span>
<span property="roleName">Quarterback</span>
</div>
JSON-LD
JSON-LD, al contrario, duplica i dati per utenti e motori di ricerca inserendoli in <head> o <body> di una
pagina come <script>. L’esempio precedente, diventerebbe:
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "SportsTeam",
"name": "San Francisco 49ers",
"member": {
"@type": "OrganizationRole",
"member": {
"@type": "Person",
"name": "Joe Montana"
},
"startDate": "1979",
"endDate": "1992",
"roleName": "Quarterback"
}
}
</script>
Microdata
I Microdata sono, infine, una specifica HTML open-community utilizzata per annidare i dati strutturati
all'interno del contenuto HTML. Come RDFa, utilizza gli attributi del tag HTML per denominare le proprietà
che si desiderano esporre come dati strutturati. Vengono in genere utilizzati nel corpo della pagina, ma
possono essere utilizzati anche nell'intestazione.
Internet delle cose (IoT)
L'Internet of Things (IoT) si riferisce a un gran numero di "cose" che sono connesse a Internet in modo che
possano condividere dati con altre “cose”: applicazioni IoT, dispositivi connessi, macchine industriali e altro
ancora. I dispositivi connessi a Internet utilizzano sensori integrati per raccogliere dati e, in alcuni casi,
agire su di essi. I dispositivi e le macchine connesse IoT possono migliorare il modo in cui lavoriamo e
viviamo. Gli esempi di Internet of Things del mondo reale vanno da una casa intelligente che regola
automaticamente il riscaldamento e l'illuminazione a una fabbrica intelligente che monitora le macchine
industriali per cercare problemi, quindi si regola automaticamente per evitare guasti. Il termine "Internet of
95
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Things" è stato coniato dall'imprenditore Kevin Ashton, uno dei fondatori dell’Auto-ID Center presso il MIT.
Ashton faceva parte di un team che ha scoperto come collegare oggetti a Internet tramite un tag RFID. Ha
usato per la prima volta la frase "Internet of Things" in una presentazione del 1999 - e da allora è rimasta
tale.
Tuttavia, definendo Internet delle cose come "semplicemente il momento in cui più" cose o oggetti "erano
connessi a Internet rispetto alle persone", Cisco Systems ha stimato che l'IoT è "nato" tra il 2008 e il 2009,
con il rapporto cose/persone in crescita da 0.08 nel 2003 a 1.84 nel 2010.
L'architettura IoT
L'architettura del sistema IoT, nella sua visione semplicistica, è composta da tre livelli:
 Livello 1: Dispositivi,
 Livello 2: Edge Gateway
 Livello 3: Cloud.
I dispositivi includono elementi di rete, come i sensori e gli attuatori presenti nelle apparecchiature IoT, in
particolare quelli che utilizzano protocolli come Modbus, Zigbee o protocolli proprietari, per connettersi a
gli Edge Gateway.
Un Edge Gateway è costituito da sistemi di aggregazione dei dati dei sensori che forniscono funzionalità
come la pre-elaborazione dei dati e la protezione della connettività al cloud
Il livello finale include l'applicazione cloud creata per IoT usando l'architettura dei microservizi, che di solito
sono poliglotta e intrinsecamente sicuri usando HTTPS/OAuth. Include vari sistemi di database che
memorizzano i dati dei sensori e presenta un sistema di accodamento e messaggistica di eventi che gestisce
le comunicazioni che avvengono in tutti i livelli.
96
Document shared on www.docsity.com
Downloaded by: sofitonoo (sofia.tonolini23@gmail.com)
Download