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