13
1 Lab. Programmazione - aa 2013/14 Rappresentazione digitale dei dati 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) Lab. Programmazione - aa 2013/14 E’ una rappresentazione di tipo DISCRETO (il numero di elementi con cui posso descrivere un fenomeno anche continuo è finito; 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. Rappresentazione digitale Lab. Programmazione - aa 2013/14

Rappresentazione digitale dei dati - Computer Engineering ... · Rappresentazione digitale dei dati Cosa possiamo rappresentare ? ... I numeri di riga crescono dall’alto in basso

  • Upload
    dokhanh

  • View
    222

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Rappresentazione digitale dei dati - Computer Engineering ... · Rappresentazione digitale dei dati Cosa possiamo rappresentare ? ... I numeri di riga crescono dall’alto in basso

1

Lab. Programmazione - aa 2013/14

Rappresentazione

digitale dei dati

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)

Lab. Programmazione - aa 2013/14

E’ una rappresentazione di tipo DISCRETO (il

numero di elementi con cui posso descrivere un

fenomeno anche continuo è finito; 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.

Rappresentazione digitale

Lab. Programmazione - aa 2013/14

Page 2: Rappresentazione digitale dei dati - Computer Engineering ... · Rappresentazione digitale dei dati Cosa possiamo rappresentare ? ... I numeri di riga crescono dall’alto in basso

2

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

Lab. Programmazione - aa 2013/14

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

Lab. Programmazione - aa 2013/14

Sin(x): rappresentazione continua

fc = 2

fc = 10

fc = 1

Lab. Programmazione - aa 2013/14

Page 3: Rappresentazione digitale dei dati - Computer Engineering ... · Rappresentazione digitale dei dati Cosa possiamo rappresentare ? ... I numeri di riga crescono dall’alto in basso

3

1

1/5

1/10

1/100

Lab. Programmazione - aa 2013/14

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 del campione più vicino,

(cioè alla rappresentazione discreta delle ascisse):

produce nel grafico i ‘gradini’ verticali.

Lab. Programmazione - aa 2013/14

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: produce come effetto i ‘gradini’

orizzontali.

Lab. Programmazione - aa 2013/14

Page 4: Rappresentazione digitale dei dati - Computer Engineering ... · Rappresentazione digitale dei dati Cosa possiamo rappresentare ? ... I numeri di riga crescono dall’alto in basso

4

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

Lab. Programmazione - aa 2013/14

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)

Lab. Programmazione - aa 2013/14

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

Lab. Programmazione - aa 2013/14

Page 5: Rappresentazione digitale dei dati - Computer Engineering ... · Rappresentazione digitale dei dati Cosa possiamo rappresentare ? ... I numeri di riga crescono dall’alto in basso

5

Codifica dei caratteri alfanumerici

Lab. Programmazione - aa 2013/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’intesità 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 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)

Lab. Programmazione - aa 2013/14

Memoria

Lab. Programmazione - aa 2013/14

Page 6: Rappresentazione digitale dei dati - Computer Engineering ... · Rappresentazione digitale dei dati Cosa possiamo rappresentare ? ... I numeri di riga crescono dall’alto in basso

6

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.

Lab. Programmazione - aa 2013/14

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

Lab. Programmazione - aa 2013/14

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)

Lab. Programmazione - aa 2013/14

Page 7: Rappresentazione digitale dei dati - Computer Engineering ... · Rappresentazione digitale dei dati Cosa possiamo rappresentare ? ... I numeri di riga crescono dall’alto in basso

7

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)

Lab. Programmazione - aa 2013/14

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.

Lab. Programmazione - aa 2013/14

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.

Lab. Programmazione - aa 2013/14

Page 8: Rappresentazione digitale dei dati - Computer Engineering ... · Rappresentazione digitale dei dati Cosa possiamo rappresentare ? ... I numeri di riga crescono dall’alto in basso

8

Memorie di massa

Recentemente si sono affermate le memorie di massa

allo stato solido (es. “chiavette” USB) che 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).

Lab. Programmazione - aa 2013/14

Rappresentazione dei dati

in un linguaggio di

programmazione

Lab. Programmazione - aa 2013/14

Variabile (scalare)

E’ un’astrazione della cella di memoria utile 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

Lab. Programmazione - aa 2013/14

Page 9: Rappresentazione digitale dei dati - Computer Engineering ... · Rappresentazione digitale dei dati Cosa possiamo rappresentare ? ... I numeri di riga crescono dall’alto in basso

9

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;

...

...

4 1328

Lab. Programmazione - aa 2013/14

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.

int x; in C, dichiara l’esistenza di x come variabile intera senza assegnarle ancora un valore

speed = 124.6; C/MATLAB assegna un valore a speed e time

time = 1.6; in C però bisogna che siano state dichiarate prima

km = speed*time; definisco la variabile km assegnandole il

prodotto speed*time

Lab. Programmazione - aa 2013/14

Caratteristiche delle variabili

Campo d’azione (scope): è la parte di programma

(unità di codifica) entro cui la variabile è nota e può

essere usata

Tipo: specifica l’intervallo di valori che la variabile

può assumere (e quindi gli operatori applicabili)

Tempo di vita: l’intervallo di tempo in cui rimane

valida l’associazione simbolo/cella di memoria

Valore: è rappresentato (secondo la codifica

adottata per il tipo cui la variabile appartiene)

nell’area di memoria associata alla variabile.

Lab. Programmazione - aa 2013/14

Page 10: Rappresentazione digitale dei dati - Computer Engineering ... · Rappresentazione digitale dei dati Cosa possiamo rappresentare ? ... I numeri di riga crescono dall’alto in basso

10

Strutture di dati

Non sempre è sufficiente 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.

Ad es. le temperature massime giornaliere registrate in

un anno, i risultati ottenuti da ciascun pilota nel

campionato di F1, ecc.

Lab. Programmazione - aa 2013/14

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

Lab. Programmazione - aa 2013/14

Strutture di dati

La modalità di identificazione dei singoli dati,

consente che una stessa istruzione possa operare

selettivamente solo su specifici dati della struttura (e

non su tutti) utilizzando un opportuno indice

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

Lab. Programmazione - aa 2013/14

Page 11: Rappresentazione digitale dei dati - Computer Engineering ... · Rappresentazione digitale dei dati Cosa possiamo rappresentare ? ... I numeri di riga crescono dall’alto in basso

11

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 (coordinata x) in cui si

trova la cella

Un numero che indica la riga (coordinata y) 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.)

Lab. Programmazione - aa 2013/14

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

Vettore: contiene una sequenza di dati, associabile ad una

singola coordinata. Ogni elemento del vettore è denotato

dal nome della variabile e da un numero (fra parentesi) che

ne identifica la posizione all’interno della sequenza.

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

Lab. Programmazione - aa 2013/14

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)

Lab. Programmazione - aa 2013/14

Page 12: Rappresentazione digitale dei dati - Computer Engineering ... · Rappresentazione digitale dei dati Cosa possiamo rappresentare ? ... I numeri di riga crescono dall’alto in basso

12

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(n3)

Lab. Programmazione - aa 2013/14

Lab. Programmazione - aa 2013/14

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)

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.

Lab. Programmazione - aa 2013/14

Page 13: Rappresentazione digitale dei dati - Computer Engineering ... · Rappresentazione digitale dei dati Cosa possiamo rappresentare ? ... I numeri di riga crescono dall’alto in basso

13

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)

Lab. Programmazione - aa 2013/14