• Non ci sono risultati.

Rappresentazione digitale dei dati

N/A
N/A
Protected

Academic year: 2022

Condividi "Rappresentazione digitale dei dati"

Copied!
39
0
0

Testo completo

(1)

Rappresentazione

digitale dei dati

(2)

Cosa possiamo rappresentare ?

Numeri (interi e reali)

Simboli (codifica di concetti o simboli: es. vero e falso, caratteri alfanumerici, ecc.)

Dati multimediali

- testi sequenze di simboli (lettere dell’alfabeto) - suoni sequenze di campioni (misure nel tempo) - immagini sequenze di campioni (misure nello spazio)

(3)

E’ una rappresentazione di tipo DISCRETO (il numero di elementi con cui posso descrivere un fenomeno anche continuo è finito; inoltre ogni elemento può assumere un numero finito di valori)

Se devo rappresentare in modo digitale grandezze continue variabili nel tempo (es. suoni, temperature,

grandezze fisiche come velocità e posizione, ecc.) o nello spazio (es. luminosità/colore delle immagini, altitudini in una carta geografica, ecc.) devo CAMPIONARLE

(rappresentarle come sequenze discrete di valori) e

QUANTIZZARLE (approssimare ogni valore col valore più simile che il computer può rappresentare in modo esatto)

Rappresentazione digitale

(4)

Campionare una grandezza significa approssimarla attraverso una sequenza ordinata nel tempo (o nello spazio) di dati, detti campioni, che descrivono i

valori di tale grandezza in un numero limitato di

istanti di tempo (punti nello spazio) sufficientemente vicini.

La distanza fra due campioni consecutivi è detta tempo (intervallo, se nello spazio) di

campionamento; il suo inverso frequenza di campionamento (risoluzione spaziale, se nello spazio): indica quanti campioni ho a disposizione per la descrizione nell’unità di tempo (spazio)

Rappresentazione digitale

(5)

La frequenza di campionamento si misura in campioni/secondo

La risoluzione spaziale in campioni (pixel)/millimetro (pixel = PICTure Element)

Quanto più sono elevate, tanto più precisa è l’approssimazione (discreta) della realtà (che è continua) che si può ottenere.

Rappresentazione digitale

(6)

Sin(x): rappresentazione continua fc = 2

fc = 10 fc = 1

(7)

1

1/5

1/10

1/100

(8)

In conclusione

La rappresentazione digitale, essendo discreta, introduce due tipi di approssimazioni:

1. Errore di campionamento: dovuto all’approssimazione del valore effettivo della grandezza che sto rappresentando con il valore dell’ultimo campione acquisito, fino all’acquisizione di un nuovo campione (cioè alla rappresentazione discreta delle ascisse).

(9)

In conclusione

2. Errore di quantizzazione: dovuto all’approssimazione del valore effettivo della grandezza che sto rappresentando con il valore rappresentabile più vicino (rappresentazione discreta delle ordinate)

Dipende dal numero di bit disponibili per la rappresentazione e quindi dalla precisione con cui posso rappresentare l’effettivo valore di un campione.

(10)

Rappresentazione di simboli

Con N bit posso rappresentare qualunque insieme numerabile (cioè che può essere messo in corrispondenza con gli interi) di simboli.

Con due bit è possibile generare 4 configurazioni distinte (00, 01, 10, 11) che possono essere associate a 4

informazioni distinte

Esempi di insiemi diversi di informazioni rappresentabili:

00 -> a 1 verde

01 -> b 2 rosso

10 -> c 3 giallo

11 -> d 4 blu

(11)

Codifica dei caratteri alfanumerici

26 lettere minuscole e 26 lettere maiuscole, 10 cifre, 10 segni aritmetici, 20 segni di interpunzione (spazi inclusi) e 3 caratteri non stampabili (a capo, tabulazione,

backspace) = 95 caratteri, che rappresentano la lingua Inglese

Per 95 simboli sono necessari 7 bit: log2M =7

Una consolidata rappresentazione a 7-bit è il codice ASCII (American Standard Code for Information

Interchange)

(12)

Codifica dei caratteri alfanumerici

A metà degli anni ‘60 divenne chiaro che il codice a 7 bit non bastava per rappresentare anche i caratteri dei

linguaggi diversi dall’inglese

IBM estese il codice ASCII a 8 bit e 256 simboli

Chiamato "Extended ASCII", la prima metà (codici da 0 a 127) è costituita dall’originale codice ASCII (con uno 0 aggiunto all’inizio di ogni gruppo di bit)

Permette di esprimere la maggior parte dei caratteri

degli alfabeti occidentali e include molti altri simboli utili

(13)

Codifica dei caratteri alfanumerici

(14)

Colori nelle immagini digitali

Codifica RGB per le immagini a colori

Ogni colore è diviso in 3 componenti fondamentali:

Rosso (R), Verde (G), Blu (B).

L’intensità di ogni componente è di solito rappresentata su 8 bit => ogni colore è rappresentato su 24 bit.

Posso quindi rappresentare (quantizzazione) 224 colori diversi (circa 16 milioni).

Se almeno una delle componenti è diversa dalle altre ho percezione del colore, altrimenti vedo una tonalità grigia più o meno intensa (0,0,0 è il nero; 255,255,255 il bianco)

(15)

Memoria

(16)

Memoria Centrale

Spazio di lavoro del calcolatore: contiene i dati da elaborare, le istruzioni da eseguire e i risultati delle elaborazioni durante il funzionamento del calcolatore.

Insieme di celle di dimensione 1 byte, ciascuna delle quali è individuata da un indirizzo, che indica la posizione della

cella all’interno della memoria

Se ogni indirizzo è lungo 32 bit posso distinguere e accedere singolarmente a 232 celle diverse.

232 celle = 4 Gcelle -> 4 Gbyte (circa 4 x 109 celle)

Si usano normalmente indirizzi a 32 o 64 bit (16x1018 celle)

Poiché è possibile accedere direttamente a ogni cella, una memoria di questo tipo si chiama Random Access Memory (RAM), cioè, alla lettera, memoria ad accesso casuale.

(17)

Memoria Centrale

La memoria centrale contiene codici binari

interpretabili come dati o istruzioni (che costituiscono i programmi) durante il funzionamento del

calcolatore. I dati possono essere modificati durante l’esecuzione dei programmi (elaborazione dati) come risultato delle istruzioni eseguite.

Sulla memoria centrale deve quindi essere possibile fare operazioni di lettura (ad es. delle istruzioni da eseguire o dei dati da elaborare) e scrittura (ad es.

dei dati elaborati).

(18)

Memoria Centrale

Caratteristiche fondamentali:

Dimensione o capacità (n. di celle, quindi di byte)

Tempo di accesso (il ritardo dopo l’invio del comando di lettura con cui il dato diviene effettivamente disponibile per l’elaborazione)

Tipicamente la dimensione della memoria centrale è dell’ordine del GByte.

Il tempo di accesso è dell’ordine delle decine di nanosecondi.

(1 ns = 10-9 s = un miliardesimo di secondo)

(19)

Memoria Centrale

La capacità di una memoria si misura in byte:

240  1.000.000.000.000 (10244) T (tera)

230  1.000.000.000 (10243) G (giga)

220  1.000.000 (10242) M (mega)

210  1000 (1024)

K (kilo)

(20)

Memorie di massa

Memorie permanenti: mantengono il loro contenuto anche dopo lo spegnimento del calcolatore.

Diverse rispetto alla memoria centrale: il loro funzionamento è basato su fenomeni di tipo ottico o magnetico, non su fenomeni elettrici.

Tipicamente organizzate in dischi, fissi o asportabili.

Più economiche rispetto alle memorie RAM/ROM.

Il loro tempo di accesso è tuttavia molto maggiore, cioè, a parità di dati da leggere, il processo di lettura avviene in modo più lento.

(21)

Memorie di massa

I dischi sono suddivisi in settori circolari e tracce. Ogni blocco di dati è identificabile dal settore e dalla traccia in cui è memorizzato.

Una testina di lettura/scrittura si muove lungo il raggio.

La posizione della testina mi indica la traccia. Per contare i settori si usa un riferimento (gap) consistente in un’area «vuota» riconoscibile dalla testina.

La formattazione del disco consiste nella creazione di questi riferimenti, che dipendono da sistema a sistema.

(22)

Memorie di massa

Le memorie di massa allo stato solido (es.

“chiavette” USB) non sono basate su supporti magnetici o ottici.

Sono basate su circuiti (flash memory) strutturati in modo simile alle RAM. Tuttavia, nel loro uso come memorie di massa, vengono utilizzati (e gestiti dal computer) come le altre memorie di massa (hard disk).

(23)

Rappresentazione dei dati in un linguaggio di

programmazione

(24)

Variabile (scalare)

E’ un’astrazione della cella di memoria e serve per rappresentare dati e manipolarli in un programma

Formalmente, è un simbolo che viene associato ad un indirizzo fisico (posizione, nella memoria, occupata

dalla cella o dalle celle associate al simbolo, che

contengono la rappresentazione binaria di un valore)

Es.

Il simbolo x denota il contenuto della cella con

indirizzo 1328 (l’indirizzo è invisibile all’utente). Se

l’utente stampa x, sul video apparirà il valore 4, cioè il contenuto della cella con indirizzo 1328.

Simbolo indirizzo contenuto x (1328) 4

(25)

Variabile (scalare)

L’indirizzo fisico di una variabile, associato dal sistema al simbolo che la identifica, è fisso e

immutabile all’interno del programma; può però cambiare il suo contenuto, cioè il valore della variabile

esempio: x=4;

...

...

1328 4

(26)

Inizializzazione di variabili

Una variabile ‘esiste’ all’interno di un programma dal momento in cui viene dichiarata o in cui le viene

assegnato un valore

In alcuni linguaggi (ad es. il C) è obbligatorio dichiarare la variabile prima di usarla

In altri (es. MATLAB) basta assegnarle un valore.

(27)

Inizializzazione di variabili

Esempi

int x; (in C) dichiara l’esistenza di x come variabile intera

senza assegnarle ancora un valore e le riserva spazio in memoria

speed = 124.6; assegna un valore a speed e time.

time = 1.6; in C però bisogna dichiararle prima

km = speed*time; definisco la variabile km assegnandole come valore il prodotto speed*time

(28)

Caratteristiche delle variabili

Tipo: specifica come deve essere interpretata l’area di memoria associata alla variabile (e quindi gli

operatori che le possono essere applicati)

Valore: è la decodifica, dipendente dal tipo della variabile, del contenuto dell’area di memoria

associata alla variabile.

Campo d’azione (scope): è la parte di programma entro cui la variabile è nota e può essere usata

Tempo di vita: l’intervallo di tempo in cui rimane valida l’associazione simbolo/cella di memoria

(29)

Strutture di dati

Non sempre basta un solo valore per descrivere/quantificare un concetto, ma è necessario utilizzare un insieme di valori e riferirsi ad essi in modo omogeneo (in pratica, con lo stesso nome), mantenendo però la possibilità di considerare ciascun valore singolarmente.

Es. le temperature massime giornaliere registrate in un anno, i risultati ottenuti da ciascun pilota nelle diverse gare del campionato di F1, ecc.

(30)

Strutture di dati

Una struttura di dati ha le seguenti proprietà:

è un insieme di dati

Es. una struttura contenente il totale dei ricavi di un’azienda in ognuno dei dodici mesi di un anno

ogni dato dell’insieme può essere singolarmente identificato rispetto agli altri

Es. si deve poter conoscere il totale venduto in un certo mese

(31)

Strutture di dati

La possibilità di identificare i singoli dati che compongono una struttura fa sì che un’istruzione possa operare selettivamente su specifici elementi della struttura, utilizzando un opportuno indice (un valore che identifica un elemento della struttura indicandone la posizione)

Es. deve essere possibile leggere tutte le fatture emesse da un’azienda in un ordine arbitrario specificato dall’utente

Si possono quindi eseguire operazioni a livello dell’intera struttura e operazioni che operano su singoli elementi della struttura stessa

(32)

Strutture di dati

In Excel la memoria è organizzata in «fogli»:

Ogni foglio è una griglia (matrice) di dati suddivisa in celle

Ogni cella è identificata da due coordinate:

Una lettera che indica la colonna (ascissa) in cui si trova la cella

Un numero che indica la riga (ordinata) in cui si trova la cella

Le lettere crescono da sinistra a destra (A, B, C, D … AA, AB ….)

I numeri di riga crescono dall’alto in basso (la riga 2 si trova sotto la 1, la 3 sotto la 2, ecc.)

(33)

Strutture di dati

In MATLAB ogni variabile ha un nome e rappresenta un’area di memoria che può essere visualizzata come:

Variabile scalare: contiene un solo dato (es. x)

Vettore: contiene una sequenza di dati, associabile ad una singola coordinata. Ogni elemento del vettore è denotato dal nome della variabile e da un indice (fra parentesi) che ne identifica la posizione all’interno della sequenza (es y(3) rappresenta il valore del terzo elemento del vettore y).

y y(1) y(2) y(3) y(4) …

(34)

Strutture di dati

Matrice: contiene una griglia di dati, che si può immaginare organizzata come un foglio di Excel. Ogni elemento è identificato mediante il nome della variabile e da due coordinate numeriche (fra parentesi) che ne indicano la posizione (riga, colonna)

Es. x(2,4) denota il valore del quarto elemento della seconda riga di x

x X(1,1) X(2,1) X(1,2) X(1,3) X(2,4)

X(3,1)

(35)

Vettori

un vettore (array monodimensionale) è un insieme di elementi dello stesso tipo, inseriti in locazioni consecutive di memoria

ha un nome che lo identifica

gli elementi del vettore vengono identificati, oltre che con il nome del vettore di appartenenza, con il valore di un indice numerico

31 28 31

1 2 3

giorni_mese

nome vettore

indice contenuto

giorni_mese(1) giorni_mese(2) giorni_mese(3)

(36)

Vettori

per identificare un elemento si utilizza il nome del vettore seguito dal valore dell’indice racchiuso tra parentesi.

es. giorni_mese(3)

il valore dell’indice può essere una qualsiasi espressione; ad esempio

es. n=0;

giorni_mese(n

3)

(37)

Array Multidimensionali

Generalizzano il concetto di array

hanno due o più indici (o dimensioni)

i vettori bidimensionali sono denominati matrici Es. a=[1,2,3; 4,5,6]

a(1,2)

a(1,1) 1 2 3 a(1,3)

a(2,1) 4 5 6 a(2,3) a(2,2)

(38)

Array Multidimensionali

Un array monodimensionale (vettore) è un array di variabili scalari

Un array bidimensionale (matrice) è un array di array monodimensionali

a(1,2) denota il secondo elemento del primo array (riga) che compone la matrice

Un array tridimensionale è un array di matrici

ecc.

(39)

Array Multidimensionali

Un array monodimensionale può essere visto come

Un array bidimensionale (matrice) avente una sola riga

Un valore scalare può essere visto come:

Un array monodimensionale di lunghezza 1

Un array bidimensionale (matrice) contenente una sola riga lunga 1, quindi con una sola riga e una sola colonna

In MATLAB le variabili sono considerate tutte matrici. Ad esse possono quindi essere applicati 2 indici, compatibilmente con il loro contenuto.

Es. non posso fare riferimento a f(1,2) se f è scalare perché f(1,2) non esiste, però posso fare riferimento al (singolo) valore di f come f(1,1)

Riferimenti

Documenti correlati

Acquisto di beni e servizi con sistema in economia-cottimo fiduciario - Affidamento diretto. 30% 13% 52% 4%

Acquisizione tramite convezioni Consip o Mepa Acquisto

DC Patrimonio Area B - assessment 2014 rappresentazione di sintesi in % e in valore. Approvvigionamenti e appalto lavori

Grado di esposizione al rischio residuo rappresentazione di sintesi in % per sottoprocesso. 0,7526881

Accertamenti medico-legali ai fini delle erogazioni delle prestazioni economiche assicurative. 50% 50% 0% 0%

Come si nota dal grafico, a variazioni del parametro  , che corrisponde alla moda, alla mediana e al valore atteso della distribuzione, corrisponde uno

Generalizzando l’esempio, se indichiamo con V i il valore della grandezza totale (300 euro), con V f il valore finale (la percentuale 36 euro), con t il tasso percentuale,

• una misura non può avere cifre di posto superiore all’ultima cifra dell’errore, cioè il risultato della misura deve essere scritto in modo che la sua ultima cifra significativa