Il 0% ha trovato utile questo documento (0 voti)
10 visualizzazioni107 pagine

Lab Informatica 3cfu

Caricato da

cincinnatus72
Copyright
© All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
10 visualizzazioni107 pagine

Lab Informatica 3cfu

Caricato da

cincinnatus72
Copyright
© All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd

lOMoARcPSD|48443500

LAB. Informatica 3CFU

Comunicazione e società (Università degli Studi di Milano)

Scansiona per aprire su Studocu

Studocu non è sponsorizzato o supportato da nessuna università o ateneo.


Scaricato da maurizio cincinnatus (cincinnatus72@[Link])
lOMoARcPSD|48443500

ACCERTAMENTO COMPETENZE INFORMATICHE 3CFU


A0. INTRODUZIONE ALL'INFORMATICA

Informatica come disciplina

La progettazione dei contenuti di questo insegnamento di Informatica si fonda sulla concezione


dell'informatica come disciplina scientifica e non soltanto sul ruolo che l'informatica ha assunto
nella società contemporanea. A tal fine, si riporta di seguito un passo significativo del Manifesto
dell'Informatica, un documento ufficiale che il GRIN ([Link]
l'Associazione Italiana dei Docenti di Informatica, ha sottoscritto per definire il corretto approccio
alla disciplina informatica e al suo insegnamento.

L'informatica è un elemento essenziale della società moderna, non solo perché necessaria al
normale svolgimento di quotidiane attività, ma anche in quanto il suo sviluppo plasma e determina
quello dell'intera società. Non esiste campo dell'attività umana in cui le scoperte dell'informatica
non abbiano lasciato il segno. L'uso del calcolatore, infatti, è uscito dai campi tradizionali del
calcolo scientifico per entrare in tutte le aree della produzione industriale, dalla medicina
all'editoria. Due miliardi di persone si collegano ad Internet. Centinaia di milioni di miliardi (il
numero non è un errore di battitura) di transistor – i componenti elementari delle tecnologie
dell'informazione – popolano i prodotti che ci circondano, dall'automobile all'elettrodomestico,
dalla pompa di benzina al videogioco, per l'equivalente della metà del valore economico di questi
oggetti. Centinaia di miliardi di istruzioni software, manifestazioni di intelligenza umana, animano
questi componenti e attraverso di essi tutti i processi che caratterizzano la nostra società moderna.

Nel linguaggio comune il termine “informatica” viene usato per riferirsi a tre aspetti tra loro
distinti, seppur collegati:

1. operativo: un insieme di applicazioni e manufatti (i computer);


2. tecnologico: una tecnologia che realizza quelle applicazioni;
3. culturale: una disciplina scientifica che fonda e rende possibile quella tecnologia.

L’informatica come insieme di applicazioni è la percezione della persona comune; “conoscere


l’informatica” significa “saper usare le applicazioni”. L’informatica come tecnologia è la
percezione del tecnico (del perito, del laureato, dello specialista, ciascuno al suo livello di
competenza); “conoscere l’informatica” significa in questo caso “saper realizzare le
applicazioni”. L’informatica come scienza dovrebbe essere invece patrimonio di ogni persona con
educazione superiore. Come i principi della fisica, della matematica o della chimica sono utili
anche e soprattutto come modello interpretativo della realtà, e non perché chi li conosce possa
diventare un fisico, un matematico, o un chimico, così i principi fondamentali dell’informatica sono
in grado di fornire modelli di interpretazione e una strumentazione culturale utile nella vita
comune della persona colta che deve affrontare le sfide del mondo moderno.

In altre parole, si può pensare all'informatica come alla scienza che si occupa dei seguenti temi:

• lo studio dei fondamenti teorici della scienza dell'informazione;


• la definizione di algoritmi per l'elaborazione automatica delle informazioni;
• la realizzazione (implementazione) di questi algoritmi;
• e, infine, l’uso del calcolatore.

In definitiva, l’informatica non riguarda i computer più di quanto l’astronomia riguardi i telescopi.

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

Lo studio dell'informatica è quindi importante perché:

• lo sviluppo di algoritmi consente di accrescere le facoltà creative, logiche e


cognitive dell'individuo;
• l’informatica è intrinsecamente multidisciplinare: ogni disciplina prevede una opportuna
forma di organizzazione e trattamento delle informazioni;
• l’informatica offre strumenti per modellare i formalmente problemi e poterne affrontare
la risoluzione in modo efficiente ed efficace;
• le tecnologie dell'informazione sono diventate strategiche in numerosi ambiti applicativi.
Esse non solo semplificano lo svolgimento di compiti realizzabili anche senza
calcolatore, ma offrono vantaggi sul lungo termine altrimenti non accessibili.

Branche dell'informatica

Nel sentire comune, l'informatica è vista come una disciplina monolitica. Ogni volta che si pensa ad
un informatico, si immagina un esperto capace di risolvere qualsiasi problema legato all'uso dei
calcolatori. In realtà l'informatica è una disciplina complessa dove si possono riconoscere numerose
specializzazioni. Pertanto è possibile, per non dire frequente, che un esperto sviluppi le proprie
competenze rispetto a un sottoinsieme di specializzazioni.

A titolo esemplificativo, senza alcuna pretesa di completezza, elenchiamo alcune specializzazioni


della disciplina informatica:

• Informatica teorica
o Teoria dell'informazione
o Teoria della computazione
o Algoritmi e strutture dati
o Teoria dei linguaggi di programmazione

• Informatica applicata
o Architettura dei calcolatori
o Sistemi e architetture (Information Technology - IT)
o Reti di calcolatori
o Basi di dati
o Sicurezza informatica e crittografia
o Interazione uomo-macchina
o Intelligenza artificiale
o Elaborazione digitale dei segnali
o Programmazione
▪ Sviluppo software
▪ Sviluppo web
▪ Sviluppo sistemi integrati

Inoltre l'informatica può essere coniugata ad altre discipline per dare vita a branche multidisciplinari
comead esempio bioinformatica, chimica computazionale, robotica, computer grafica
e musicologia computazionale.

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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.

L'evoluzione del calcolatore

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.

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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.

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

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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.

G1. INFORMATICA GENERALE Codifica dell'informazione

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.

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.

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.

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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.

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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.

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

Figura 2.5. Esempio di codifica binaria per i voti di un esame universitario.

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):

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

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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 è 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

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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.

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).

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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
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.

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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.

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 si utilizza un byte per ognuno dei tre colori primari, per un totale di 24 bit per
pixel (cioè 3 byte). 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:

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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.

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

Rappresentazione digitale dei video

Per un video l’unità minima di informazione è rappresentata dal fotogramma, a sua volta composto
da pixel. Un video quindi eredita quanto detto relativamente alle immagini, con l'aggiunta però di
avere tante immagini quanti sono i fotogrammi di cui è composto, riprodotte ad una velocità
sufficientemente alta da fornire, all'occhio umano, l'illusione del movimento.

Per via del fenomeno di persistenza delle immagini sulla retina, l'occhio umano fatica a percepire
come separate tra loro immagini che si susseguono ad una velocità minima di 10 o 15 fotogrammi
al secondo (fps), dunque tale velocità è sufficiente per creare l'impressione del movimento. Tuttavia

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

velocità più elevate consentono di creare un'illusione più realistica, e non è raro trovare codifiche a
25, 30, 50 o 60 fps. Va inoltre considerato che anche in questo caso vale il teorema di Nyquist-
Shannon: sarà capitato di vedere video in cui le pale di un elicottero sembrino ferme o girino molto
lentamente; questo è il tipico effetto di aliasing temporale che ha luogo quando il movimento da
codificare è molto superiore alla velocità con cui si campiona.

Materiale registrato a fps più alti (come 120, 240, 300 o addirittura >1000) viene impiegato per la
riproduzione in "slow motion" (movimento rallentato), viene cioè riprodotto ad una velocità
inferiore per osservare nel dettaglio i movimenti del soggetto del video, altrimenti troppo veloci per
essere notati. La tecnica opposta prende invece il nome di "stop motion"; in questo caso i
fotogrammi sono registrati a distanza di diversi minuti l'uno dall'altro e poi riprodotti a fps
tradizionali, in modo da rendere percepibili movimenti altrimenti troppo lenti per essere notati.

Infine si noti che l'essere umano, in genere, è dotato di due occhi, che consentono la
cosiddetta visione stereoscopica. Questo permette di valutare la distanza a cui si trovano gli oggetti
grazie alle diverse informazioni che ogni occhio riceve. Per poter codificare (almeno in parte)
questo tipo di informazione è possibile codificare video stereoscopici, cioè composti da due
sequenze di fotogrammi, una relativa all'occhio sinistro ed una all'occhio destro. Queste due
sequenze possono essere memorizzate: come aree diverse dello stesso fotogramma; come alternarsi
di fotogrammi dell'una e dell'altra sequenza; come sequenze distinte (una successiva all'altra).

In definitiva, la rappresentazione binaria di un video è costituita da una sequenza immagini,


complete di un'indicazione della velocità a cui vanno riprodotte. A scopo esemplificativo si può
calcolare la memoria necessaria a memorizzare un minuto di video in Full-HD a 30 fps:

60 secondi x 30 fps = 1800 immagini, ognuna delle quali con una risoluzione di 1920 colonne x
1080 righe = 2073600 pixel (circa 2 megapixel)

1800 immagini x 2073600 pixel x 24 bit per pixel = 89579520000 bit = 11197440000 byte = 10.43
GiB

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à.

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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:

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 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:

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

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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.

G2 - STRUTTURA DEL CALCOLATORE

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.

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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.

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

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

ciclo al secondo). I microprocessori attualmente in commercio raggiungono frequenze di clock


nell'ordine dei Gigahertz (109 hertz). Microprocessori più 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

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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);
• 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.

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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.

G3 – PROGRAMMI E SOFTWARE
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).

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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à.

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

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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.

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).

È 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

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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). 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.

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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 file non 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 [Link] 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\[Link]

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).
• 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

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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.

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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 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).

G4 - I RISCHI DELLA INFOSFERA

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.

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).

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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: il fornitore di servizi (attraverso
opportuni algoritmi) può presentare all'utente contenuti conformi a quelli che sono i suoi
interessi e le sue opinioni analizzando la cronologia delle ricerche, le condivisioni sui social
network o ciò che scrive nei servizi di messaggistica. Per quanto apparentemente utile,
questo può portare all'involontario offuscamento di contenuti contrari al 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,
le preferenze di un utente permettono di evincere quale sia la sua personalità. 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 scopi 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 (si veda il 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.

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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.

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

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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:

• non ci si deve fermare al titolo, ma va letto l'intero articolo;


• si deve valutare la credibilità della fonte. Chi ha condiviso l'informazione? E' un esperto in
materia?
• si deve valutare la qualità della notizia. Quali sono le prove? E' bene verificare l'autenticità
di eventuali fotografie (ad esempio con la ricerca tramite immagini di Google);
• ci sono riferimenti o link a fonti ufficiali? 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.

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

Esistono diversi blog e pagine di social network che si occupano di debunking e fact checking,
alcune delle quali riportano elenchi di pagine web associate alla insistente diffusione di fake news.
Come raccomandazione generale, è bene non diffondere notizie qualora si abbiano dubbi sulla
veridicità del contenuto.

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

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

involontario o in modo doloso. La disponibilità dei dati è inoltre necessaria perchè un software
possa svolgere le funzioni cui è preposto.

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

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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 è.

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.

G5 - APPLICAZIONI PER LE SCIENZE MEDICHE

Sistemi informativi sanitari

Con il nome di Sistema Informativo Sanitario (SIS) si intende il patrimonio informativo che ha
permesso, in ambito sanitario, di fotografare periodicamente attività, costi e risorse del Servizio
Sanitario Nazionale (SSN) italiano, attraverso flussi sistematici di dati provenienti dalle aziende
sanitarie e ospedaliere delle diverse regioni.
Nell’anno 2005 è nato il progetto chiamato Nuovo Sistema Informativo Sanitario (NSIS) in quanto
è emersa la necessità di costruire una base dati nazionale, condivisa con le regioni, all’interno della
quale collocare tutte le informazioni necessarie al bilanciamento tra qualità e costi del sistema
sanitario.
L’elemento chiave su cui si sviluppa il NSIS è rappresentato dal sistema di informazioni sanitarie
individuali che, raccogliendo i dati riguardanti le prestazioni sanitarie erogate al singolo cittadino,
consente di disporre degli elementi di base per esaminare l’appropriatezza della domanda, la
mobilità sanitaria, i tempi di attesa dei cittadini, i costi generati per livello di assistenza, ecc.
La realizzazione di un sistema nazionale di informazioni sanitarie individuali richiede:

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

• l’esistenza di uno strumento che consenta l’identificazione certa e univoca dei cittadini su
tutto il territorio nazionale; necessità che viene affrontata dal progetto “tessera sanitaria”,
che prevede la realizzazione di un’anagrafe sanitaria unitaria, basata sul codice fiscale di un
individuo come chiave unica di identificazione;
• la piena condivisione di un sistema di classificazioni, codifiche e metodologie di misura che
costituiscono il livello “semantico” del sistema informativo.

Altro elemento fondamentale per lo sviluppo del NSIS è rappresentato dal Monitoraggio delle rete
di assistenza, che consente di censire le strutture ospedaliere e territoriali.

NSIS: il modello concettuale

Il modello concettuale del NSIS è costituito da un insieme di elementi costitutivi che corrispondono
ad altrettante fonti originatrici di informazioni (vedi Figura 6.1).

Figura 6.1. Modello concettuale del NSIS:

Tali fonti sono:

• il Monitoraggio dei Livelli Essenziali di Assistenza (LEA) e


dell’appropriatezza consiste nel controllo delle prestazioni erogate sui diversi livelli di
assistenza e nell’analisi dell’appropriatezza delle prestazioni stesse;
• il Monitoraggio dei costi consiste nella rilevazione dei costi relativi alle strutture di
erogazione (costi dell’offerta) e dei costi relativi all’assistenza sanitaria erogata al singolo
cittadino (costi della domanda);
• il Monitoraggio delle liste di attesa introduce la duplice prospettiva di lettura dei tempi di
attesa, sia dal punto di vista delle strutture erogatrici, sia dal punto di vista del cittadino;
• il Monitoraggio e tutela della salute mentale consiste nell’integrazione delle informazioni
relative alle strutture di erogazione, alle prestazioni erogate ed ai cittadini destinatari
dell’assistenza;
• il Monitoraggio del ciclo di vita del farmaco e dell’impiego dei medicinali consiste
nell’integrazione delle informazioni relative alle diverse fasi che compongono il ciclo di vita
del farmaco e nel monitoraggio dell’impiego dei medicinali, collegandosi alle informazioni
sanitarie individuali;
• infine, grazie all’osservatorio degli Investimenti pubblici in sanità, il Sistema Informativo
consente di programmare e valutare i progetti d’investimento, nonché di monitorarne lo
stato di avanzamento.

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

Aspetti di sicurezza e privacy nel trattamento di dati sanitari

Il Codice della Privacy ([Link]. 196/2003) comprende tra i dati sensibili quei dati personali idonei a
rivelare lo stato di salute di un individuo. In questo caso, il trattamento è consentito solo ed
esclusivamente se è autorizzato da una legge, che specifichi quali sono i dati trattabili e le
operazioni eseguibili, nonché le rilevanti finalità di interesse pubblico che si intendono perseguire.
Al cittadino che entra in contatto con le strutture sanitarie per diagnosi, cure, prestazioni mediche,
operazioni amministrative, deve essere garantita la più assoluta riservatezza e il più ampio rispetto
dei suoi diritti fondamentali e della sua dignità.
Il Codice della Privacy individua le misure minime di sicurezza che tutti i titolari del trattamento,
siano essi soggetti privati o pubblici, devono adottare. I dati personali oggetto del trattamento
devono essere custoditi in modo da ridurre al minimo i rischi di distruzione o perdita, anche
accidentale, nonché di accesso non autorizzato o di trattamento non consentito e non conforme alle
finalità di raccolta.
A tale scopo devono essere predisposte tutte le idonee misure di sicurezza in relazione alle
conoscenze acquisite in base al progresso tecnico, alla natura dei dati e alle specifiche
caratteristiche del trattamento.

Organizzazione e trattamento delle immagini


Il trattamento delle immagini in ambito medico, chiamato imaging medicale, si pone come obiettivo
quello di ottenere il massimo dell’informazione da un paziente, mediante una serie di tecniche che
consentono di creare delle immagini digitali a partire dal corpo umano o da una parte di esso.
I vantaggi principali delle immagini digitali sono:

• possibilità di modificare “a posteriori” alcune caratteristiche delle immagini, senza dover


ripetere l’esame al paziente;
• possibilità di archiviare rapidamente e in spazi limitati (CD, DVD, nastri magnetici, ecc.)
grandi quantità di immagini;
• possibilità di teletrasmissione via cavo o trasmissione mediante reti telematiche di immagini,
utile nei casi di consultazione e discussione con altri esperti del settore.

La possibilità di scambiare immagini mediche, attraverso reti telematiche, ha fatto sorgere


l’esigenza di uno standard di comunicazione globale, in quanto i formati di codifica lossy di utilizzo
comune (come ad esempio JPEG e GIF) non possono essere applicati in ambito sanitario, dove sono
necessari alti livelli di qualità delle immagini, che devono essere in grado di interfacciarsi con le
altre apparecchiature mediche.
Lo standard che si è affermato fra i produttori di hardware in campo medico è lo standard DICOM
(Digital Imaging and COmmunications in Medicine), giunto alla versione 3 nel 1993: esso definisce
i criteri per la comunicazione, la visualizzazione, l’archiviazione e la stampa di informazioni di tipo
biomedico. Nel contesto dello standard DICOM, le immagini sono solitamente comprese senza
perdita di informazioni (lossless), tuttavia alcuni sistemi supportano anche la codifica lossy. La
definizione di questo standard ha, di fatto, risolto i problemi di incomunicabilità tra apparecchi di
case costruttrici differenti.
Un settore dove viene maggiormente utilizzato è quello relativo alle immagini radiologiche, dove il
formato DICOM permette di creare un modello esplicito e dettagliato di tutte le informazioni che
formano il dato radiologico, a partire dal paziente e dalle immagini ottenute, e di descrivere come
sono tra loro collegate.

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

PACS: un sistema informativo per le immagini

Attualmente in un ospedale sono presenti tre tipologie di sistema informativo sanitario (vedi Figura
6.2):

• il Sistema Informativo Ospedaliero (HIS, Hospital Information System);


• il Sistema Informativo Radiologico (RIS, Radiological Information System);
• il Sistema per l’Archiviazione e la Comunicazione delle Immagini (PACS, Picture Archiving
and Communication System).

Figura 6.2. Tipologie di sistema informativo sanitario.

Di particolare interesse in questo caso è il sistema PACS, componente del sistema RIS, in quanto
l’ambito radiologico è il settore nel quale si fa maggiormente uso di tecnologie avanzate e nel quale
l’informatica occupa un posto di primo piano.
L’importanza e le problematiche del trattamento delle immagini hanno contribuito, fin dagli anni
‘80, a delineare il concetto di PACS come sistema integrato per la gestione digitale delle immagini
diagnostiche, finalizzato all’eliminazione delle pellicole radiografiche.
Le motivazioni che hanno portato alla definizione di questo Sistema Informativo sono le seguenti:

• aumentare la produttività delle apparecchiature (eseguendo l’analisi e l’elaborazione delle


immagini su sistemi secondari);
• realizzare un archivio digitale di tutte le immagini prodotte, riducendo il rischio di perdita
delle informazioni;
• distribuire le immagini diagnostiche ai reparti in forma digitale, con risparmi di tempo e di
pellicole.

Per raggiungere questi scopi l’architettura del sistema PACS è basata su una rete in grado di
connettere le apparecchiature di acquisizione delle immagini, le stazioni di visualizzazione e i
dispositivi di archiviazione. La maggior parte dei sistemi RIS/PACS presenti sul mercato seguono il
modello client/server, un sistema centralizzato dove l’elaborazione avviene su macchine
dette server e la fruizione avviene su macchine più semplici dette client. Lacomunicazione verso i
client avviene attraverso protocolli standard.

Banche dati mediche

Le banche dati (o database) sono uno strumento ampiamente utilizzato anche in ambito medico,
biomedico e sanitario. In genere, si tratta di grandi archivi di informazioni dotati di opportune
funzionalità di ricerca che consentono agli utenti di fruire i contenuti di interesse in modo rapido e
funzionale. Le principali banche dati in ambito medico sono online, cioè dispongono di

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

un’interfaccia web che permetti agli utenti, siano essi soggetti comuni o professionisti del settore, di
accedere alle funzionalità di ricerca e quindi ai contenuti mediante una qualsiasi connessione
Internet. Si parla di banca dati ad accesso libero (open access) quando i contenuti sono fruibili da
qualsiasi utente senza necessità di autenticazione, mentre si parla di banca dati ad accesso
protetto quando è necessario specificare delle credenziali di accesso o sottoscrivere un
abbonamento (talvolta a pagamento) per poter fruire i contenuti della banca dati.
Tra le numerose banche dati in ambito medico si possono citare: MEDLINE, una banca dati che
raccoglie una grande varietà di pubblicazioni biomediche relative a diverse
specializzazioni; Cinahl, la banca dati sulle discipline infermieristiche e le professioni
sanitarie; PsycINFO, la banca dati nel campo della psicologia e discipline collegate; il Veterinary
Science Database, che raccoglie dati relativi agli aspetti della medicina veterinaria o
l’italiana VDA Net, ovvero la Banca Dati Sanitaria Farmaceutica.

La ricerca di pubblicazioni

La ricerca di pubblicazioni mediche può essere svolta mediante motori di ricerca appositi, che
permettono di inserire come chiavi di ricerca diversi elementi, come l'anno di pubblicazione, il
nome di uno o più autori, o semplici parole chiave relative al tema di interesse. In genere le basi di
dati citate in precedenza hanno un motore di ricerca interno, ma esistono anche motori in grado di
cercare in più basidi dati contemporaneamente.

Il motore di ricerca più noto in medicina (che si appoggia principalmente sulla base di dati
MEDLINE) è PubMed. Esistono poi motori che coprono più basi di dati come Ovid (richiede che
l'istituzione per cui si lavora abbia delle credenziali di accesso) e motori come Web of
Science, Science Direct, Scopus e Google Scholar, che sono strumenti di uso più generale (non solo
medico), che si appoggiano a moltissime basi di dati.

Tra i risultati delle ricerche possono comparire sia pubblicazioni open access che a pagamento. Le
prime saranno subito disponibili per la lettura, mentre per le seconde prevedono il pagamento di un
abbonamento alla rivista o relativamente al solo documento di interesse. Si tenga però presente che
molto spesso le grandi istituzioni hanno delle convenzioni con gli editori, è quindi possibile che
anche le pubblicazioni a pagamento possano essere accessibili liberamente se sussistono queste
convenzioni.

La telemedicina

La telemedicina è l’insieme di tecniche mediche e informatiche che permettono la cura di un


paziente a distanza. Essa rappresenta una particolare modalità di erogazione dell’assistenza
sanitaria, attraverso cui si rendono disponibili le risorse mediche sia di base, sia specialistiche, a
pazienti che non possono accedere direttamente ai servizi sanitari per difficoltà di varia natura.
Nell’ambito della diagnostica clinica, è possibile per un medico effettuare la diagnosi su un paziente
che non è fisicamente nello stesso posto del medico, attraverso la trasmissione a distanza di dati
prodotti da strumenti diagnostici. La second opinion medica è una delle applicazioni più comuni
nell’ambito della telemedicina: essa consiste nel fornire una opinione clinica a distanza, supportata
da dati acquisiti inviati ad un medico remoto che li analizza e li referta, producendo di fatto una
seconda valutazione clinica su un paziente. Le tecniche telemediche, inoltre, favoriscono anche
applicazioni di formazione a distanza, nelle quali il medico remoto può specializzare i medici che
chiedono una second opinion su un caso clinico attraverso tecniche di e-learning. La classificazione
più comune della telemedicina è effettuata a partire dal settore medico al quale viene applicata:

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

• Telepatologia: branca della telemedicina che prevede il trasferimento di immagini digitali


macroscopiche e microscopiche a scopo diagnostico o educativo mediante la tecnologia
informatica.
• Teleradiologia
• Telecardiologia
• Teledermatologia
• Teleriabilitazione: erogazione di servizi riabilitativi attraverso le reti di telecomunicazione
ed Internet.

I primi esperimenti di telemedicina sono stati condotti per permettere un’adeguata assistenza nelle
aree geografiche più remote o in situazioni disagiate come ad esempio perforazioni petrolifere su
piattaforma off-shore e spedizioni artiche o spaziali.

La telemedicina in Italia

L’obiettivo della telemedicina in Italia è quello di realizzare un sistema efficiente che consenta di
affrontare i problemi della medicina d’urgenza e che offra gli strumenti per permettere un
decentramento territoriale delle competenze specialistiche previsto dalla Legge 833/78, istitutiva del
Servizio Sanitario Nazionale.
La possibilità di applicare soluzioni e servizi basati sulle tecnologie telematiche all’ambito sanitario
ha permesso la creazione di soluzioni nuove ad esigenze e problematiche finora irrisolte. Nello
specifico rende possibile la creazione di Sistemi di Telemedicina per:

• la medicina d’urgenza (es. Telecardiologia, Primo e Pronto Soccorso, Centrali operative del
118, Elisoccorso, ecc.);
• espandere territorialmente l’utilizzo sistematico delle competenze specialistiche, per una
migliore distribuzione qualitativa dell’assistenza sanitaria ed un migliore rapporto
costi/prestazioni (es. Televideoconsultazione ospedaliera, Telecardiologia ospedaliera,
Teledialisi ospedaliera, ecc.);
• effettuare monitoraggi nell’ambito domiciliare (es. Telemonitoraggio cardiaco, dialitico,
delle gestanti, Home Care, ecc.);
• l’impiego ottimale nel sistema sanitario dell’informatica distribuita (terminali e mezzi
elaborativi) allo scopo di migliorare i servizi e ridurre le spese di gestione (es. Centri CUP
per prenotazione esami, creazione di archivi specialistici per diagnosi integrate, ecc.);
• la didattica (es. Teledidattica, Videochirurgia/Telechirurgia, trasmissione tra reparti
ospedalieri ed Università e tra Istituti universitari, gestione di Banche Dati, ecc.);
• la diffusione telematica dell’informazione verso i cittadini (es. lo Sportello del Cittadino,
Customer Care - Call Center con Numero Verde, ecc.).

F. FOGLI DI CALCOLO
F1 - FOGLI DI CALCOLO

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.

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

possibilità di 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).

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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

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.

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

• 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

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

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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.

F2 - FUNZIONI DI CALCOLO IN EXCEL

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

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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
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

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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 (€ 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.

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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.

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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.

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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.

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.

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

F3 - FUNZIONI STATISTICHE IN EXCEL

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:

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

=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:

=[Link](num1;num2;…)
=[Link](num1;num2;…)

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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
[Link] e [Link].

Funzioni di conteggio numerico

Le funzione statistica [Link] esegue il conteggio delle celle che contengono un valore
numerico considerando un insieme di celle specificato. La sintassi della funzione
[Link] è la seguente:

=[Link](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
[Link]. La funzione [Link] 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 [Link] per conteggiare il numero di


rilevazioni eseguite per ciascuno dei tre test considerati. Per Test1, la funzione [Link] è
inserita nella cella B23 come segue:

=[Link](B4:B18)

Come mostrato nella Figura 3.2, il risultato di questo conteggio è il valore 15.

figura 3.2. Esempio di funzione statistica [Link]

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 [Link], Excel mette a disposizione altre funzioni di conteggio.

=[Link](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 [Link], la funzione [Link]
conteggia anche le celle che contengono valori logici o testuali.

=[Link](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.

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

=[Link](intervallo;criteri)
Esegue il conteggio delle celle che si trovano in un intervallo specificato e soddisfano una
condizione assegnata. La funzione [Link] presenta argomenti diversi rispetto a
[Link], [Link] e [Link], pertanto verrà approfondita nella
prossima pagina di contenuti.

Le funzioni [Link] e [Link]

[Link] è 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.

La sintassi della funzione [Link] è la seguente:

=[Link](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
[Link], si propongono i seguenti esempi. Per ciascun criterio, si mostra l’effetto sulla funzione
di conteggio.

Criterio Effetto sul conteggio


3 Il conteggio restituisce il numero di celle di intervallo che
contengono esattamente il valore numerico 3.
"3" Il conteggio restituisce il numero di celle di intervallo che
contengono esattamente la stringa "3". Celle che contengono il
valore 3 come numero vengono comunque conteggiate, in quanto
si tratta di una differenza nel formato di rappresentazione, non
nell'effettivo contenuto.
"ND" Il conteggio restituisce il numero di celle di intervallo che
contengono esattamente la stringa ND.
B20 Il conteggio restituisce il numero di celle di intervallo il cui
valore è uguale al contenuto della cella B20.
">30" Il conteggio restituisce il numero di celle di intervallo il cui
valore è maggiore del valore costante 30.

Excel mette inoltre a disposizione la funzione [Link], la cui sintassi è analoga a [Link],
il cui scopo è eseguire la somma dei valori contenuti in un insieme di celle in base al verificarsi di
una condizione.

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

Esempio con la funzione [Link]

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 [Link] va inserita nella cella B24 come segue:

=[Link](B4:B18;">"&B22)

In questo esempio, l’intervallo di celle da considerare per il conteggio è B4:B18 e


l’argomento criterio passato alla funzione [Link] è determinato dall’espressione ">"&B22. Il
risultato della funzione [Link] è mostrato nella Figura 3.3.

Figura 3.3. Esempio di funzione statistica [Link]

Il risultato della funzione [Link] 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.

Sintassi della funzione Descrizione della funzione


=[Link](num1;num2;…) Restituisce una stima della deviazione
standard sulla base di un campione
assegnato, i cui valori sono contenuti nelle
celle num1;num2;…
=[Link](num_s;n_prove;prob_s;cumulativo) Restituisce la distribuzione binomiale per
il termine individuale.
L’argomento num_s è il numero di
successi ottenuto nelle prove, n_prove è il
numero di prove indipendenti
eseguite, prob_s è la probabilità di
successo di ciascuna prova, cumulativo è
un valore booleano che indica se si intende
adottare la funzione distribuzione
cumulativa.
=MEDIANA(num1;num2;…) Restituisce la mediana dei valori contenuti
in un intervallo di celle
assegnato num1;num2;...

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

=MODA(num1;num2;…) Restituisce la moda dei valori contenuti in


un intervallo di celle
assegnato num1;num2;…
=PERCENTILE(mat;k) Restituisce il k-esimo dato percentile
considerando i valori contenuti in una
matrice mat di celle assegnata.
L’argomento k è il valore percentile
richiesto (nell'intervallo tra 0 e 1, estremi
inclusi).
=PERMUTAZIONE(num;cl) Restituisce il numero di permutazioni
possibili per un numero num di oggetti
selezionati da una classe complessiva cl.
=VAR(num1;num2;…) Restituisce una stima della varianza sulla
base di un campione assegnato, i cui valori
sono contenuti nelle celle num1;num2;…

F4 - CREAZIONE DI GRAFICI IN EXCEL

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:

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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.

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.

Tipo di grafico Sottotipo


Istogramma Colonne raggruppate. Ciascuna serie di dati e
ciascuna categoria sono rappresentate
Confronta i valori relativi a serie di dati mediante una colonna.
diverse rispetto a una o più categorie. Colonne in pila. Ciascuna categoria è
Le categorie sono disposte sull'asse rappresentata mediante una pila. In ogni pila
orizzontale (x), mentre i valori sono sono rappresentate tutte le serie di dati
disposti sull'asse verticale (y). considerate.
Colonne raggruppate 3D e colonne in pila 3D.
Varianti dei grafici mostrati sopra
rappresentati in uno spazio tridimensionale.

Grafico a barre Barre raggruppate. Ciascuna serie di dati e


ciascuna categoria sono rappresentate
È analogo all'istogramma, ma dispone i mediante una barra. Anche di questo grafico
valori sull'asse orizzontale (x) e le esiste la versione 3D.
categorie sull'asse verticale (y). Barre in pila. Ciascuna categoria è
rappresentata mediante una pila disposta
orizzontalmente. In ogni pila sono
rappresentate tutte le serie di dati
considerate. Anche di questo grafico esiste la
versione 3D.

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.

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

Grafico a linee Linee. Ciascuna serie di dati è rappresentata


mediante una linea e ciascuna categoria determina un
Confronta i valori di serie di intervallo di confronto.
dati diverse a intervalli
predefiniti.
Grafico a torta Torta. Ciascun elemento della serie di dati
rappresenta una fetta della torta la cui ampiezza è
Mostra le proporzioni dei vari data dal contributo di quell'elemento rispetto al
elementi che costituiscono una totale. Una variante è la cosiddetta torta esplosa, in
serie di dati rispetto alla loro cui le fette sono distanziate per mettere in evidenza i
somma. Nei grafici a torta è singoli valori rispetto al totale.
possibile rappresentare una sola Torta della torta. È una torta in cui ogni fetta può
serie di dati. essere associata a una seconda torta che mostra le
proporzioni dei valori che la costituiscono.
Grafico a dispersione Dispersione. Ciascuna serie di dati è rappresentata
nel diagramma cartesiano mediante un insieme di
Mostra in un diagramma punti, ognuno dei quali corrisponde a un valore nella
cartesiano la correlazione tre serie.
serie di dati diverse.

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.

Grafico ad area Area. Ciascuna serie di dati è rappresentata


mediante un’area la cui dimensione rispecchia
Confronta i valori relativi a serie di l’andamento dei valori della serie. È possibile
dati diverse rappresentando i valori dimensionare le aree rispetto a una o più
corrispondenti mediante aree di categorie.
dimensione variabile.
Grafico ad anello Anello. Ciascuna serie di dati è rappresentata
mediante un anello concentrico. Ciascun anello
Analogo al grafico a torta, ma può mostrare le proporzioni tra i valori della
consente di confrontare più di una serie rispetto a più categorie.
serie di dati.
Grafico a superficie Superficie 3D. Visualizza le tendenze dei valori
relativi a due dimensioni in una curva continua
Confronta i valori di due serie di in uno spazio tridimensionale.
dati rappresentandoli su una
superficie continua.
Grafico a bolle Bolle. Visualizza la correlazione fra i valori
disponendo le bolle su un diagramma cartesiano
Analogo al grafico a dispersione, e dimensionandole opportunamente.
ove però il valore delle serie di dati
è rappresentato mediante bolle di
dimensione variabile.

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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.

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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 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

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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.

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 [Link] 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 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

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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.

B. BASE DI DATI

B1 - GESTIONE DELLE INFORMAZIONI

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,

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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

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

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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

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.

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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.

----------------------------------------------------------------------------------------------------------------

B2 - MEMORIZZAZIONE DEI DATI E BASI DI DATI

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

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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.
• È 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 2.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 2.1: Esempi di oggetti, attributi e associazioni per una base di dati cinematografica

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

B3 - BASI DI DATI RELAZIONALI

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 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

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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:

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:

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

• 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.

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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.

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

Livelli di astrazione nei DBMS: un esempio

In Figura 3.8, riportiamo un esempio relativo alla base di dati relazionale cinematografica.

• 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.

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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 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.

B4 - CREAZIONE DI UNA BASE DI DATI

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 [Link] 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).

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).

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

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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 collegare ed eseguiamo fisicamente l’associazione cliccando sull’attributo della
nostra prima tabella e trascinandolo fin sopra l’attributo corrispondente della seconda tabella.

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.

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

Il risultato finale sarà analogo a quello mostrato in Figura 4.4.

Figura 4.4: Tabelle che compongono il database db_cinema

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 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.

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

B5 - COMPOSIZIONE DI QUERY

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.

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

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

disponibile l’operatore NOT per eseguire la negazione del risultato di un’operazione di confronto.
Ad esempio, con il seguente comando SQL:

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 [Link], [Link], [Link]


FROM film JOIN regista ON film.id_regista = regista.id_regista

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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 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 [Link], [Link], [Link]


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.

B6 - BASI DI DATI SU WEB

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.

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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.

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.

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.

I1 - RETI DI CALCOLATORI

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

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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 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

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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).

Figura 1.1: Tipologie di rete

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.

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.

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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).

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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, 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.

I2 - LA RETE INTERNET

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.

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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 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.

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

I3 - ARCHITETTURA DEL WEB

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 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.

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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.

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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 firnisce 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.

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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.

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).

I4 - STANDARD PER IL WEB

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

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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 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 è [Link].

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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 è
[Link]. Ovviamente, per un utente, memorizzare un indirizzo IP è piuttosto scomodo e
innaturale. Il Nome di Dominio ([Link] 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.

Nel nome di un dominio possono essere impiegati caratteri alfanumerici (lettere e numeri) e tratti (i
cosiddetti hyphen - ). Non sono quindi ammessi i caratteri speciali come spazi, tratti bassi (i
cosiddetti underscore _ ) e segni di interpunzione, quali ad esempio punti esclamativi e punti di
domanda.

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 [Link]):

• 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:

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

[Link]

in cui:

• http identifica il protocollo di comunicazione da utilizzare per il reperimento;


• [Link] 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

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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.

I5 - I CONTENUTI SUL WEB

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 fino al relativo tag di chiusura sarà inteso come struttura del codice

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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 [Link] ed è collocata nella stessa directory della pagina HTML, la si
inserisce con <img src="[Link]">. Se l'immagine si trova nella sottodirectory images della
directory in cui si trova la pagina HTML, allora si dovrà scrivere <img src="images/[Link]">.

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="[Link]" controls>


<p>Your browser doesn't support HTML5 video. Here is a <a href="[Link]">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="[Link]" controls>


<p>Your browser doesn't support HTML5 audio. Here is a <a href="[Link]">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.

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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:

<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="[Link]">
</head>

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

dove “[Link]” 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 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 [Link]) 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;

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

• 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

I6 - I motori di ricerca

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.

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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.

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.

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).

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

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

e Outbound link, rispettivamente).

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.

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.

Evoluzioni di PageRank

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

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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 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

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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.

I7 - EVOLUZIONI DEL WEB

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

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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.

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.

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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 [Link]. 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

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="[Link] typeof="SportsTeam">


<span property="name">San Francisco 49ers</span>
<div property="member" typeof="OrganizationRole">
<div property="member" typeof="[Link]
<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": "[Link]
"@type": "SportsTeam",
"name": "San Francisco 49ers",
"member": {

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

"@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 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.

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])


lOMoARcPSD|48443500

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.

Scaricato da maurizio cincinnatus (cincinnatus72@[Link])

Potrebbero piacerti anche