Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Codifica e Elaborazione dei Dati Multimediali, Dispense di Informatica gestionale

Una panoramica sulle specializzazioni dell'informatica, con particolare focus sulla codifica e l'elaborazione dei dati multimediali. Vengono discussi i concetti di informazione e codifica, l'elaborazione di dati audio, immagini e video, nonché l'utilizzo di fogli di calcolo per l'organizzazione e l'analisi dei dati. Inoltre, il documento introduce il concetto di basi di dati relazionali e il processo di creazione di un database con libreoffice base. Infine, vengono presentati alcuni aspetti relativi all'ottimizzazione dei siti web statici e dinamici per il miglioramento del posizionamento sui motori di ricerca.

Tipologia: Dispense

2022/2023

Caricato il 10/05/2024

silvia-serra-4
silvia-serra-4 🇮🇹

2 documenti

1 / 94

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Contenuti A0 - Introduzione all'informatica
Informatica come disciplina
La progettazione dei contenuti di questo insegnamento di Informatica si fonda sulla concezione
dell'informatica come disciplina scientifica e non soltanto sul ruolo che l'informatica ha assunto nella
società contemporanea. A tal fine, si riporta di seguito un passo significativo del Manifesto
dell'Informatica, un documento ufficiale che il GRIN (http://www.grin-informatica.it), l'Associazione
Italiana dei Docenti di Informatica, ha sottoscritto per definire il corretto approccio alla disciplina
informatica e al suo insegnamento.
L'informatica è un elemento essenziale della società moderna, non solo perché necessaria al
normale svolgimento di quotidiane attività, ma anche in quanto il suo sviluppo plasma e determina
quello dell'intera società. Non esiste campo dell'attività umana in cui le scoperte dell'informatica
non abbiano lasciato il segno. L'uso del calcolatore, infatti, è uscito dai campi tradizionali del
calcolo scientifico per entrare in tutte le aree della produzione industriale, dalla medicina
all'editoria. Due miliardi di persone si collegano ad Internet. Centinaia di milioni di miliardi (il
numero non è un errore di battitura) di transistor – i componenti elementari delle tecnologie
dell'informazione – popolano i prodotti che ci circondano, dall'automobile all'elettrodomestico,
dalla pompa di benzina al videogioco, per l'equivalente della metà del valore economico di questi
oggetti. Centinaia di miliardi di istruzioni software, manifestazioni di intelligenza umana, animano
questi componenti e attraverso di essi tutti i processi che caratterizzano la nostra società
moderna.
Nel linguaggio comune il termine “informatica” viene usato per riferirsi a tre aspetti tra loro distinti,
seppur collegati:
1. operativo: un insieme di applicazioni e manufatti (i computer);
2. tecnologico: una tecnologia che realizza quelle applicazioni;
3. culturale: una disciplina scientifica che fonda e rende possibile quella tecnologia.
L’informatica come insieme di applicazioni è la percezione della persona comune; “conoscere
l’informatica” significa “saper usare le applicazioni”. L’informatica come tecnologia è la percezione
del tecnico (del perito, del laureato, dello specialista, ciascuno al suo livello di competenza);
“conoscere l’informatica” significa in questo caso “saper realizzare le applicazioni”. L’informatica
come scienza dovrebbe essere invece patrimonio di ogni persona con educazione superiore.
Come i principi della fisica, della matematica o della chimica sono utili anche e soprattutto come
modello interpretativo della realtà, e non perché chi li conosce possa diventare un fisico, un
matematico, o un chimico, così i principi fondamentali dell’informatica sono in grado di fornire
modelli di interpretazione e una strumentazione culturale utile nella vita comune della persona
colta che deve affrontare le sfide del mondo moderno.
In altre parole, si può pensare all'informatica come alla scienza che si occupa dei seguenti temi:
lo studio dei fondamenti teorici della scienza dell'informazione;
la definizione di algoritmi per l'elaborazione automatica delle informazioni;
la realizzazione (implementazione) di questi algoritmi;
e, infine, l’uso del calcolatore.
In definitiva, l’informatica non riguarda i computer più di quanto l’astronomia riguardi i telescopi.
Lo studio dell'informatica è quindi importante perché:
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58
pf59
pf5a
pf5b
pf5c
pf5d
pf5e

Anteprima parziale del testo

Scarica Codifica e Elaborazione dei Dati Multimediali e più Dispense in PDF di Informatica gestionale solo su Docsity!

Contenuti A0 - Introduzione all'informatica

Informatica come disciplina

La progettazione dei contenuti di questo insegnamento di Informatica si fonda sulla concezione dell'informatica come disciplina scientifica e non soltanto sul ruolo che l'informatica ha assunto nella società contemporanea. A tal fine, si riporta di seguito un passo significativo del Manifesto dell'Informatica , un documento ufficiale che il GRIN (http://www.grin-informatica.it), l'Associazione Italiana dei Docenti di Informatica, ha sottoscritto per definire il corretto approccio alla disciplina informatica e al suo insegnamento. L'informatica è un elemento essenziale della società moderna, non solo perché necessaria al normale svolgimento di quotidiane attività, ma anche in quanto il suo sviluppo plasma e determina quello dell'intera società. Non esiste campo dell'attività umana in cui le scoperte dell'informatica non abbiano lasciato il segno. L'uso del calcolatore, infatti, è uscito dai campi tradizionali del calcolo scientifico per entrare in tutte le aree della produzione industriale, dalla medicina all'editoria. Due miliardi di persone si collegano ad Internet. Centinaia di milioni di miliardi (il numero non è un errore di battitura) di transistor – i componenti elementari delle tecnologie dell'informazione – popolano i prodotti che ci circondano, dall'automobile all'elettrodomestico, dalla pompa di benzina al videogioco, per l'equivalente della metà del valore economico di questi oggetti. Centinaia di miliardi di istruzioni software, manifestazioni di intelligenza umana, animano questi componenti e attraverso di essi tutti i processi che caratterizzano la nostra società moderna. Nel linguaggio comune il termine “informatica” viene usato per riferirsi a tre aspetti tra loro distinti, seppur collegati:

  1. operativo: un insieme di applicazioni e manufatti (i computer);
  2. tecnologico: una tecnologia che realizza quelle applicazioni;
  3. culturale: una disciplina scientifica che fonda e rende possibile quella tecnologia. L’informatica come insieme di applicazioni è la percezione della persona comune; “conoscere l’informatica” significa “saper usare le applicazioni”. L’informatica come tecnologia è la percezione del tecnico (del perito, del laureato, dello specialista, ciascuno al suo livello di competenza); “conoscere l’informatica” significa in questo caso “saper realizzare le applicazioni”. L’informatica come scienza dovrebbe essere invece patrimonio di ogni persona con educazione superiore. Come i principi della fisica, della matematica o della chimica sono utili anche e soprattutto come modello interpretativo della realtà, e non perché chi li conosce possa diventare un fisico, un matematico, o un chimico, così i principi fondamentali dell’informatica sono in grado di fornire modelli di interpretazione e una strumentazione culturale utile nella vita comune della persona colta che deve affrontare le sfide del mondo moderno. In altre parole, si può pensare all'informatica come alla scienza che si occupa dei seguenti temi: ● lo studio dei fondamenti teorici della scienza dell'informazione; ● la definizione di algoritmi per l'elaborazione automatica delle informazioni; ● la realizzazione (implementazione) di questi algoritmi; ● e, infine, l’uso del calcolatore. In definitiva, l’informatica non riguarda i computer più di quanto l’astronomia riguardi i telescopi. Lo studio dell'informatica è quindi importante perché:

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

Branche dell'informatica

Nel sentire comune, l'informatica è vista come una disciplina monolitica. Ogni volta che si pensa ad un informatico, si immagina un esperto capace di risolvere qualsiasi problema legato all'uso dei calcolatori. In realtà l'informatica è una disciplina complessa dove si possono riconoscere numerose specializzazioni. Pertanto è possibile, per non dire frequente, che un esperto sviluppi le proprie competenze rispetto a un sottoinsieme di specializzazioni. A titolo esemplificativo, senza alcuna pretesa di completezza, elenchiamo alcune specializzazioni della disciplina informatica: ● Informatica teorica ○ Teoria dell'informazione ○ Teoria della computazione ○ Algoritmi e strutture dati ○ Teoria dei linguaggi di programmazione ● Informatica applicata ○ Architettura dei calcolatori ○ Sistemi e architetture ( Information Technology - IT) ○ Reti di calcolatori ○ Basi di dati ○ Sicurezza informatica e crittografia ○ Interazione uomo-macchina ○ Intelligenza artificiale ○ Elaborazione digitale dei segnali ○ Programmazione ■ Sviluppo software ■ Sviluppo web ■ Sviluppo sistemi integrati Inoltre l'informatica può essere coniugata ad altre discipline per dare vita a branche multidisciplinari comead esempio bioinformatica , chimica computazionale , robotica , computer grafica e musicologia computazionale.

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

macchina fisica da una parte , e i dati e gli algoritmi astratti dall'altra. Le basi teoriche per lo sviluppo dei moderni calcolatori sono ora mature.

L'evoluzione del calcolatore

Generazione 1: I tubi a vuoto (valvole)

Nel 1939, fu la volta del matematico e fisico John Vincent Atanasoff e del suo allievo Clifford Berry i quali costruirono l’Atanasoff Berry Computer, meglio noto come ABC. Si tratta del primo calcolatore digitale totalmente elettronico, ma mai brevettato. Nel 1945, John von Neumann definisce l'architettura per calcolatori digitali programmabili tutt'ora in uso nella maggior parte dei dispositivi moderni di questo tipo. La peculiarità dell'architettura di von Neumann risiede nel fatto che dati e programmi condividono la stessa memoria. Nel 1946 venne presentato l’ENIAC, il primo calcolatore elettronico basato interamente su tecnologia a valvole. Progettato presso l’Università della Pennsylvania, fu il primo vero calcolatore dell’era elettronica in quanto eliminava tutti i dispositivi meccanici. L’ENIAC era in grado di compiere operazioni molto complesse in pochissimo tempo per l'epoca, ma pesava 300 tonnellate e occupava 170 metri quadrati. Quella delle dimensioni rimase per lungo tempo una delle più grandi sfide dell’industria dei calcolatori. Nel 1948, Claude Shannon introdusse il termine bit (contrazione di binary digit ), da lui coniato per designare l'unità elementare binaria di informazione ( vero e falso , o 0 e 1).

Generazione 2: I transistor

Nel 1954, l’IBM propose il primo calcolatore commerciale con memoria su nastro magnetico. Tra le più importanti innovazioni di quegli anni, vi furono l'uso dei transistor al posto dei tubi a vuoto e l’evoluzione dei linguaggi di programmazione. Nel 1959 venne lanciato l’IBM 705, che usava il FORTRAN, un linguaggio di programmazione molto più vicino a quello umano rispetto alle istruzioni comprensibili dal calcolatore. I problemi principali che ostacolavano la diffusione commerciale del calcolatore restavano i costi elevati e la dimensione di queste macchine.

Generazione 3: I circuiti integrati

Il problema delle dimensioni durò fino al 1964, quando l'azienda italiana Olivetti introdusse Programma 101 , da molti considerato il primo personal computer (PC) della storia, in quanto disponeva delle principali caratteristiche dei grandi calcolatori dell'epoca, ma era sufficientemente compatto da stare su una scrivania. Tuttavia non aveva uno schermo: le informazioni erano trasmesse all'utente per mezzo di un nastro di carta stampata. Parallelamente, la Digital Equipement Corporation introdusse il suo primo minicomputer, il PDP-8, dotato di uno schermo molto rudimentale (sostanzialmente un oscilloscopio).

Generazione 4: Il microprocessore

Agli inizi degli anni ’70, la Intel Corporation sviluppò il microprocessore , il primo circuito integrato capace di contenere l’intera unità di calcolo di un calcolatore. In seguito venne commercializzato quello che viene oggi considerato il primo PC della storia per come lo intendiamo oggi, l'Apple II, con il suo sistema operativo chiamato Apple Dos. Solo quattro anni dopo, nel 1981, l’IBM brevettò il suo primo PC, destinato a imporsi come standard di riferimento con il sistema operativo MS-Dos prodotto dalla software house Microsoft.

Generazione 5: Il calcolo parallelo e la rete

Tra gli anni '80 e '90 si sono affermate in rapida successione tecnologie come le interfacce grafiche, la possibilità di compiere più operazioni in parallelo, e l'avvento di Internet, coadiuvate da un costante incremento della potenza di calcolo e delle capacità di memorizzazione.

Problemi, algoritmi e programmi

Un algoritmo può essere definito come un metodo per risolvere in modo efficiente, univoco, universale, formalmente preciso e finito un problema. Nella sua accezione più ampia, è possibile includere nella categoria degli algoritmi anche una semplice ricetta di cucina oppure il libretto di istruzioni di un elettrodomestico. Entrambi infatti sono una successione di istruzioni precise per la realizzazione di un risultato. Il termine algoritmo deriva dal nome del matematico Muhammad ibn Musa al-Khuwarizmi. Le proprietà fondamentali di un algoritmo sono: ● finitezza delle operazioni da svolgere; ● non ambiguità del linguaggio in cui sono scritte le operazioni da effettuare. Questo significa che le istruzioni devono essere scritte in un linguaggio codificato e formale; ● universalità della procedura algoritmica, nel senso che essa deve valere per tutti i problemi dello stesso genere; ● completezza delle operazioni, nel senso che ogni operazione necessaria allo svolgimento del compito deve essere explicitamente dichiarata. Nonostante sia più semplice affrontare algoritmicamente calcoli matematici, o geometrici, è possibile affrontare nello stesso modo qualsiasi problema, a patto che se ne possa fornirne una definizione formalmente corretta e non ambigua. Questo esercizio di formalizzazione trascende l'uso del computer e aiuta gli individui ad affrontare i problemi in modo astratto. Va notato che ogni problema può essere affrontato e descritto in molti modi diversi; quindi non esiste un unico algoritmo per la risoluzione di un problema. Questo significa che lo sviluppo di algoritmi è un'attività che richiede, tra le altre cose, creatività e ingegno. A tal proposito, vale la pena citare una famosa battuta di Bill Gates (co-fondatore della Microsoft): " Sceglierò sempre un pigro per fare un lavoro difficile perché troverà il modo più facile per farlo ". Si sottolinea inoltre come l'efficacia e la complessità di un algoritmo dipendano anche dall'organizzazione dei dati a disposizione dell'algoritmo per la risoluzione del problema. Esistono 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.

Contenuti G1 - Codifica dell'informazione

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. 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. 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*10 0 (dove 0 è la posizione occupata dal 2 nel numero in esame) e nel numero 2987 vale 2*10 3 (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

  1. 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. 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 2 8 =256, quindi i valori rappresentabili andrebbero da 0 a 255.

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 2 8 =256 caratteri diversi. Questa considerazione è generalizzabile: dato un codice di N bit possiamo dire che ogni carattere di quel codice occupa N bit e che complessivamente il codice può rappresentare fino a 2N caratteri diversi. Il primo alfabeto codificato è stato l’alfabeto anglosassone. Questo primo codice venne chiamato ASCII ( American Standard Code for Information Interchange ). In origine l’ASCII era a 7 bit, cioè esistevano 2 7 =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 2 8 = 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

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 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. 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. megapixel). Ogni pixel rappresenta un punto di colore, la cui tonalità è descritta mediante una sequenza di bit. Se l’immagine è in bianco e nero sarà sufficiente un unico bit per descrivere ciascun pixel: 0 per il nero e 1 per il bianco. Se l’immagine è a colori sarà necessario un numero maggiore di bit per pixel, che dipende da come vengono codificati i colori. Un sistema per la rappresentazione digitale dei colori viene detto modello di colore , e ne esistono molti. La maggior parte usa i colori primari convenzionali per derivare tutte le possibili tonalità. Il più utilizzato è lo schema RGB , (Red Green Blue, rosso verde blu) che sono i colori primari su cui il modello è costruito. Per distinguere i colori l’occhio umano utilizza fotorecettori di tre tipi, rispettivamente più sensibili al rosso, al verde o al blu. Questi colori sono quindi detti primari perchè miscelandoli è possibile evocare la percezione di qualsiasi altro colore. Solitamente in RGB si utilizza un byte per ognuno dei tre colori primari, per un totale di 24 bit per pixel (cioè 3 byte). E' quindi possibile rappresentare 256 sfumature diverse per ogni colore primario, quindi complessivamente 256 x 256 x 256 colori diversi, cioè circa 16 milioni di tonalità di colore.

Per un video l’unità minima di informazione è rappresentata dal fotogramma, a sua volta composto da pixel. Un video quindi eredita quanto detto relativamente alle immagini, con l'aggiunta però di avere tante immagini quanti sono i fotogrammi di cui è composto, riprodotte ad una velocità sufficientemente alta da fornire, all'occhio umano, l'illusione del movimento. Per via del fenomeno di persistenza delle immagini sulla retina, l'occhio umano fatica a percepire come separate tra loro immagini che si susseguono ad una velocità minima di 10 o 15 fotogrammi al secondo (fps), dunque tale velocità è sufficiente per creare l'impressione del movimento. Tuttavia velocità più elevate consentono di creare un'illusione più realistica, e non è raro trovare codifiche a 25, 30, 50 o 60 fps. Va inoltre considerato che anche in questo caso vale il teorema di Nyquist- Shannon: sarà capitato di vedere video in cui le pale di un elicottero sembrino ferme o girino molto lentamente; questo è il tipico effetto di aliasing temporale che ha luogo quando il movimento da codificare è molto superiore alla velocità con cui si campiona. Materiale registrato a fps più alti (come 120, 240, 300 o addirittura >1000) viene impiegato per la riproduzione in "slow motion" (movimento rallentato), viene cioè riprodotto ad una velocità inferiore per osservare nel dettaglio i movimenti del soggetto del video, altrimenti troppo veloci per essere notati. La tecnica opposta prende invece il nome di "stop motion"; in questo caso i fotogrammi sono registrati a distanza di diversi minuti l'uno dall'altro e poi riprodotti a fps tradizionali, in modo da rendere percepibili movimenti altrimenti troppo lenti per essere notati. Infine si noti che l'essere umano, in genere, è dotato di due occhi, che consentono la cosiddetta visione stereoscopica. Questo permette di valutare la distanza a cui si trovano gli oggetti grazie alle diverse informazioni che ogni occhio riceve. Per poter codificare (almeno in parte) questo tipo di informazione è possibile codificare video stereoscopici , cioè composti da due sequenze di fotogrammi, una relativa all'occhio sinistro ed una all'occhio destro. Queste due sequenze possono essere memorizzate: come aree diverse dello stesso fotogramma; come alternarsi di fotogrammi dell'una e dell'altra sequenza; come sequenze distinte (una successiva all'altra). In definitiva, la rappresentazione binaria di un video è costituita da una sequenza immagini, complete di un'indicazione della velocità a cui vanno riprodotte. A scopo esemplificativo si può calcolare la memoria necessaria a memorizzare un minuto di video in Full-HD a 30 fps: 60 secondi x 30 fps = 1800 immagini, ognuna delle quali con una risoluzione di 1920 colonne x 1080 righe = 2073600 pixel (circa 2 megapixel) 1800 immagini x 2073600 pixel x 24 bit per pixel = 89579520000 bit = 11197440000 byte = 10.43 GiB

Elaborazione dei dati multimediali

La comodità di codificare il materiale multimediale nei modi descritti in precedenza risiede nel fatto che è possibile applicare modifiche ai dati in maniera molto efficiente sfruttando semplici operazioni matematiche. Consultando la tabella in Figura 2.4, ad esempio, si può notare come la conversione di una lettera maiuscola in una lettera minuscola si può ottenere sommando 32 al numero con cui è codificata. Lo stesso vale per i formati multimediali: se si volesse conferire una tinta rossa ad una foto basterebbe

sommare una piccola costante a tutti i byte relativi a quel colore primario, tale da aumentare la quantità totale di rosso che giunge all'occhio. Analogamente, si può simulare l'eco in una registrazione sommando ad ogni campione il campione che lo precede ad una certa distanza.

Principali formati multimediali

Lo studente più attento si sarà accorto che il numero di bit necessario alla memorizzazione di suoni, immagini e video è decisamente superiore a quanto suggerisce l'esperienza: quasi 1 MiB per una piccola immagine, 10 MiB per un audio di 1 minuto e addirittura 10 GiB per un breve video ad alta qualità. 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: Tipo di dati Esempio di Codifica Esempio di Contenitore Esempio di funzionamento Audio PCM WAV, AIFF Vengono memorizzati tutti i campioni audio nella loro forma originale Immagini Raster/Bitmap RAW, BMP, TIFF Vengono memorizzati tutti i pixel nella loro forma originale Video Raster/Bitmap AVI, MOV Vengono memorizzati tutti i fotogrammi nella loro forma originale Altro (nativa) (nativo) Vengono memorizzati tutti i dati nella loro forma originale I metodi di compressione lossless si basano sull'idea di eliminare ciò che è ridondante, si evita cioè di memorizzare informazioni inutilmente ripetute. Questo comporta un risparmio di memoria che in media si aggira intorno al 50% dell'occupazione originale. Il costo di questo risparmio si riflette nella necessità di reintrodurre la ridondanza (decompressione) per poter elaborare le informazioni (fosse anche solo per visualizzare l'immagine su schermo o sentire il suono). Va comunque notato che la decompressione di un file lossless dà origine alle stesse informazioni di partenza, senza che sia scartato alcun dettaglio. Formati di questo tipo sono quindi l'ideale per l'archiviazione o la

3GPP, WMV,

Mpeg MKV blocchetti e si memorizzano le coordinate dello spostamento di ogni blocco Altro - - Non conoscendo la tipologia di dati non è possibile sapere cosa si può scartare 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 - Struttura del 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 (10 9 hertz). Microprocessori più piccoli e veloci sono difficili da costruire per via di alcuni limiti fisici, dunque per la produzione di calcolatori più performanti la tecnologia moderna si sta concentrando nella realizzazione di microprocessori che contengono più CPU (chiamate core) in modo che queste possano svolgere più compiti in parallelo.

Memoria primaria

Un calcolatore possiede due tipi di memoria: la memoria primaria (chiamata anche centrale o di lavoro) e la memoria secondaria o di massa. La memoria primaria è quella che conserva i programmi in esecuzione e i dati in uso all'interno della CPU. E’ organizzata come una successione di bit raggruppati in unità dotate di indirizzo (un numero progressivo a partire da 0) dette celle. La velocità di accesso a questa memoria è cruciale perché da essa dipende la reattività del calcolatore alle richieste dell’utente. Il metodo di accesso alla memoria primaria è casuale, nel senso che, conoscendo l’indirizzo, è possibile accedere a una qualsiasi cella di memoria in modo diretto e il tempo di accesso alla cella non dipende dalla sua posizione. Per questo motivo, la memoria primaria è anche detta Random Access Memory o RAM. Un’ulteriore caratteristica distintiva della memoria primaria è la sua volatilità: questo significa che, spegnendo il calcolatore, il contenuto delle celle di memoria viene cancellato e non è più recuperabile.

Memoria secondaria

La memoria secondaria è la memoria dei dischi e delle unità di memorizzazione permanente, quali ad esempio i dischi fissi (hard disk), i dischi ottici (CD-ROM, DVD, Blu-Ray) e le memorie flash (utilizzate, per esempio, nelle chiavette USB). Questo tipo di memoria è in grado di memorizzare grandi quantitativi di informazioni che, nel caso dei dischi ottici, può andare da qualche centinaio di MB fino a qualche decina di GB e, nel caso dei dischi fissi, può arrivare a decine di TB. Nella memoria secondaria l’informazione viene memorizzata in maniera permanente, ma, a differenza della memoria primaria, questo tipo di memoria ha tempi di accesso molto più elevati. Le memorie basate su dischi (hard disk, CD-ROM, DVD-ROM, ...) non possono accedere a una cella di memoria in modo diretto ma richiedono un tempo di posizionamento del dispositivo di lettura e scrittura per raggiungere la zona di memoria richiesta. Per questo motivo, il tempo di accesso ad un dato dipende dalla posizione della cella sul disco. I principali dispositivi di memoria secondaria (Figura 3.2) sono: ● dischi fissi (hard disk): utilizzati per l’archiviazioni di programmi e dati e generalmente collocati all'interno del calcolatore. Esistono anche hard disk esterni, di solito collegabili tramite porte USB. Questi dispositivi sono composti da una pila di dischi metallici rotanti collegati a due testine di lettura/scrittura ciascuno (una per lato del disco). Le testine possono spostarsi dalla parte più esterna del disco alla parte più interna (il funzionamento è pressoché